Dangerous freedom

--Originally published at conzmr.wordpress.com

All over the world, many people use the Internet to connect, communicate, and interact; can be said to have directly contributed to the enjoyment of human rights, especially in the area of freedom of expression.

The Internet is a medium that has tremendous potential for promoting individual freedom and individual empowerment and everyone should be left in control of the way in which uses it. The free and open internet is a powerful tool for everyone fighting for social change, helping to advance the fight for transparency, human rights, good governance and in holding governments accountable. Unfortunately, as online activism reaches a new height, online freedom of expression is under serious threat from both state and non-state actors.

Our right to Internet freedom, which includes digital rights, freedom of information, the right to internet access, freedom from internet censorship and net neutrality, is constantly being challenged by governmental suppression of accessibility and organized infringement on our ability to openly express and share ideas. Increasingly, internet users especially journalists, bloggers and activists, who criticise government and state officials suffer attacks, arrests, detentions and abductions for the contents of their posts online.

I didn’t know that there were actually a lot of activists and organizations that are fighting to maintain our freedoms online like EFFTurkey BlocksFreedom HouseMovements. Neither I didn’t know that something like the internet freedom festival exists which, according to its page, it is one the largest, most diverse, and most inclusive unconferences in the world and every year brings together more than a thousand activists, journalists, technologists, policy advocates, digital safety trainers, designers and human rights defenders from over 100 countries who defend digital rights.

It is a pity that it happens on many occasions that these activists trying to do good and seek for a better and more transparent world, end Continue reading "Dangerous freedom"

Episode V – The Last DevOps

--Originally published at The Sugar team workspace blog

This is the last part of a DevOps related topics series:

I’ll be talking about the previous blogposts, if you want to read them here they are:

Bring balance to DevOps culture, image from this medium post

So… DevOps?

Though the 3 previous parts, we practiced our Continuos Integration. We built and test (and did some kind of monitoring) to a central repository after “automated” builds tests are run.

“Continuous Integration doesn’t get rid of bugs, but it does make them dramatically easier to find and remove.”

Martin Fowler, another guru of software as Kent Beck

So I learned that DevOps is helpful for finding errors quicker than waiting until the end. Sometimes you don’t know the failures that might happen outside the local environment.

The Goats

Cheating a bit with Jenkins

Jenkins is a good option if you want to build at a bigger scale. This is an open source automatization server written in Java, advantages of using it:

  • Continuous integration an delivery
  • “Easy” installation and configuration
  • Has hundreds of plugins
  • Extensible and Distributed.

I know that a lot of companies use Jenkins because it makes the DevOps practices a lot easier, since it has a lot of flexibility.

But not everything is color pink. One of its advantages can be a double edge sword, the fact that is OpenSource. Therefore some issues might take longer to fix. Also the migration from an old instance to the newest is a big pain (real work-life situation).

Excise Task

By this day, I had this question twice in my Testing course exam, “What’s the deal with excise

Continue reading "Episode V – The Last DevOps"

Episode IV – JUnit Awakens

--Originally published at The Sugar team workspace blog

Welcome back to a series of blogposts about how to set up a little server in a Linux Virtual Machine, in this post we will lean JUnit and status

if you are not familiar to the topic you can go to the first, second or third part of the series

JUnit via command line

Set up (again?)

First be sure you have Java in the machine (We did this in the last part)

Lovely Ubuntu LTS Interface

Be sure you can compile Java files

I created a class so we can see everything is working fine

Download Junit archive

Download latest version of JUnit jar file from http://www.junit.org, the easiest way in Ubuntu TLS is the wget command. (link in image description)

https://github.com/downloads/junit-team/junit/junit-4.10.jar

So type: wget https://github.com/downloads/junit-team/junit/junit-4.10.jar

Create actual tests

My Hello class was pretty much useless. So I take the example from the JUnit Team. And I created two files (these are literally copy-pasted from their repo: https://github.com/junit-team/junit4

Compile!

We have to do the command javac -cp .:junit-4.XX.jar:hamcrest-core-1.3.jar Calc^CatorTest.java (remove the XX for your version)

In my case since I have the junit-4.10.jar, I put 10

Run the test

Enter the command:

java -cp .:junit-4.10.jar:hamcrest-core-1.3.jar org.junit.runner.JUnitCore CalculatorTest

Oh lala, JUnit is running at Ubuntu LTS!

Setup status page

It’s time to do some testing with our cron jobs. First I’ll power up my server.

Remember node command doesn’t exist in our environment, instead it’s nodejs.

Setup a status page that shows the status of your build. It should be pulling Continue reading "Episode IV – JUnit Awakens"

Blogging and own content

--Originally published at The Sugar team workspace blog

This post will not be about Software Testing and Quality, (sorry JUnit fans). Today I’ll talk about a very well written blogpost called “Blogging and me” from Ana Rodriguez (find her on twitter as @ohhelloana).

I had a Scheme exam two hours ago. So after this test I just wanted to relax myself a little bit. So I decided to read the “Blogging and me” blogpost. I started because I had to, but I finished it because it was so enjoyable to read.

Screenshot of my visual studio code

I don’t even know if I can do a post like that. Writing like two paragraphs takes me forever and it’s filled with syntax/lexical/semantical errors. But the important moral of the post is more about don’t be afraid to share your content. but please use your common sense before publishing

Boring blogging

I tend to write my blogposts thinking that someday some person will find it by mistake. Probably if he just sees a bunch of text without any styling, he will just close the page.

I believe pictures allow you to breathe in the reading and gives personality to the blogpost

And maybe I will never get to anybody besides those Malaysian bots that appear on my WordPress analytics every now and then. But as Ana Rodriguez say:

“Blogging can make memories that you own and are in control of;”

And I believe this is truth, my blog posts are just pictures of myself. Old blogposts show what I was thinking in a previous parts of my life, and may even remember periods of my life I didn’t remember.

Revisiting my first content

2015

  • My first commit: It consisted in a line that said “Hola” (Hello). Not the greatest licensing for my code whatsoever
I’m sure I did this
Continue reading "Blogging and own content"

PyCharm feat. WWW & SmallTalk

--Originally published at The Sugar team workspace blog

Happy Birthday Internet!

Last week was the 30th anniversary of the World Wide Web! 🎉 This is the same year that the Berlin wall came down and sadly the last time that Liverpool became premier league champions. (yes it’s a long time ago).

So thanks to Tim Berners-Lee, inventor of the WWW, now you can be reading this post from almost any part of the world (not the building 2 from Tecnológico de Monterrey, Campus GDL internet is really bad in there). Here is a quote of him that describe his vision of the internet

Suppose all the information stored on computers everywhere were linked. Suppose I could program my computer to create a space in which everything could be linked to everything.

Tim Berners-Lee

Internet has changed our life in sooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo many ways. And I’ll show some of them thanks to a very cool site that took ✌🏻screenshots✌🏻 of old web pages, this is WayBackMachine.

Its awesome to see how internet keeps changing. In 1994 (just 5 years after the WWW was created) Pizza hut was already doing online pizza delivery. The site (image below) looks like a site that didn’t found the css file. But still it’s awesome to see how we integrate the net into our daily life.

Image taken from WayBackMachine

Simple Smalltalk Testing

Changing the topic a little lot, I’ll speak about basic small talk. This is based on this article written by Ken Beck (a guru of testing).

I answer some of the questions because there were so many of them

If you want to see my thoughts about the article directly you can download the hypothesis chrome extension.

PyCharm and PyUnit

If you have Linkedin Learning (before Lynda) a good course you can follow is this. I couldn’t find any place to leave

Continue reading "PyCharm feat. WWW & SmallTalk"

Episode III – The Return of DevOps (SSH & Git)

--Originally published at The Sugar team workspace blog

Welcome back to a series of blogposts about how to set up a little server in a Linux Virtual Machine, in this post we will lean about Github and SSH

if you are not familiar to the topic you can go to the first or second part of the series

Ensure that you have your GitHub account.

Before you start you should have a Github account.

You can follow me @kevintroko (for some reason)

Ensure that you have a repository created for testing.

If you followed the last part we had a web server created in node, we will use this. This will be our root.

Setup your GitHub two-factor authentication.

This part is a step forward process and Github explain it 100 times better than me, but I’ll explain it anyways in case you don’t want to move to another site. It’s really nothing from the other world, is more just following a series of steps:

Go tho the git setting and click in the security tab


Click the enable two factor button

Follow the steps in the site

⚠ ⚠ DONT FORGET TO SAVE YOUR RECOVERY CODES ⚠⚠

They send you a mai anyways

You are ready

Github SSH keys Setup

This is a little bit harder than the last step, the Github team explain it as well (though some commands don’t work the same for ubuntu)

ssh-keygen -t rsa -b 4096 will create a SSH key with a 4096 encryption
ssh-keygen -t rsa -b 4096 -C “put your own email”
They will ask you for the passphrase
Enter your pass phrase from the last step
It will generate the next output
eval the ssh agent
The GitHub page recommend to get the RSA key like this, but ubuntu won’t recognize natively this command, you can just cat
Continue reading "Episode III – The Return of DevOps (SSH & Git)"

New iNapkin (Spoiler alert: Implements blockchain technology)

--Originally published at conzmr.wordpress.com

This week topic was “Should it exist?”.  New technologies can be very useful to improve or optimize processes, but in many cases they are not necessarily the solution. I think that nowadays entrepreneurs in their desire to be innovative and to be at the forefront try to use new tools that they listened to without even analyzing if their product/startup really needs them.
When people find out that you are an engineer in systems they can not avoid saying the classics “Oh I have a good idea that will definitely change the world, it’s an app that …”, “I want to make an Uber type app that …”.

And it’s like no manches. Not everything is solved through an app. And well, do not tell the fact of people who come to request “something” with the magic recipe: “I want a software that makes blah blah blah, that uses machine learning, blockchain and add a pinch of IoT.” It is true that it is very useful that things are connected, that our information is updated and stored without effort, but you have to think, do I really need an intelligent napkin?
I really like the design principle KISS (Keep It Simple, Stupid); which states that most systems work better if they remain simple than if they become complex. I really believe that simplicity should be maintained as a key design objective, and any unnecessary complexity should be avoided. Therefore, it is good to innovate by becoming something “smart” if it will make a process easier, will save time or money and in general it will make your life easier; otherwise, no thanks, definitely should not exist.

Here is a link about some IoT devices that should not have exist, just like neither their inventors 🙂

Chapter 6.1, 6.2

--Originally published at The Sugar team workspace blog

What two properties must be satisfied for an input domain to be properly partitioned? 

  1. The partition must cover the entire domain (completeness)
  2. The blocks must not overlap (disjoint)

What is an Input Domain Model (IDM)?

An input domain model (IDM) represents the input space of the system under test in an abstract way.

A test engineer describes the structure of the input domain in terms of input characteristics. The test engineer creates a partition for each characteristic. The partition is a set of blocks, each of which contains a set of values. From the perspective of that particular characteristic, all values in each block are considered equivalent.

What gives more tests, each choice coverage or pair-wise coverage?

An each case coverage requires one value from each block for each characteristic. A pair-wise coverage a value from each block for each characteristic to be combined with a value from each block for each other characteristic.

Hence, a pair-wise coverage gives more tests.

Episode II – DevOps Strikes Back

--Originally published at The Sugar team workspace blog

Welcome to a series of blogposts about how to set up a little server in a Linux Virtual Machine, if you are not familiar to the topic you can a little more about in here (which is the first part of the series)

Install a Linux distribution

For this task, I chose the Ubuntu 18.04.1 LTS which runs in Virtual Box. This is the same I use for other courses (maybe this is not a good idea). If you would like to download the same Linux distribution, you can install this “old” mini iso from ubuntu.

Lovely ubuntu running in my VM

Other Linux distributions (thanks to @ken_bauer for the links) :

Install support for your development environment.

The next step you can choose the language you like the most, but for this project I will use Java. Here is a very well explained tutorial in case you want to install Java in your Linux system

Java download process example
Java in action

Next step will be to set up the Github for pushing into a git repository

git in action, this is very important for the future steps

Setup web deployment.

I decided to use Node.js as my option for the web development. Be careful because for the Linux 18.04.1 LTS the typical node command has to be instead nodejs as seen in the next example

Node js server running on local host port 8080

Setup your 

Continue reading "Episode II – DevOps Strikes Back"