Blog, blogging & blogger – A little piece of heart, a little piece of soul

Okay so, we had a little talk in class about what was the intention behind letting all this blogs assignments for the semester. We mentioned that some of the students did it only to get the activity points, other more actually showed that it was a real joy dedicating this time of reflexion and even fun, and leave it as a blueprint for the rest of the world.

Well, I’m not saying I have many fans on my blog. Actually I am almost sure that the only one that has read any of my post is my professor Ken Bauer. I’m sure about it because he really cares about what students think and feel. And always I give myself time to write one or two (once I even did three) blogs that I should had finish for the past week, he writes a review about it and in some of them I see he likes them more than others. It’s okay, I don’t find it personal. I actually like the feedback as hard or cool it can get.

I find cool how was Ana’s path to start writing, understand her reasons of why she stop. And admire the overcome of the pause she had when she started working. For me, its about a little talking with myself. I guess that’s why I enjoyed I cigarret once in a while riding my car at night, alone. Without anywhere to go, and anything to do. But just enjoy myself, some music, the cold wind, and the relaxation a little posion gives you.

I usually start my blogs by describing how I got the will to start writing it. I gotta say it, I usually never do them on time, sometimes because I do really don’t have the time, other times because I just can’t, don’t have the inspiration, I’m tired, or I simply don’t wanna to them. The good part on doing them when I really want it that words just start coming and coming. And I start writing and writing. I guess that’s why I must have tons of writting errors. Sorry about that, it’s also part of the beauty of it.

It’s really weird I go back once I write a word. It’s kind of when we are talking in real life. Once we say anything, it’s done. We can hurt people, or make them smile. We can teach, or we can damage. We can make someone in love, or hate us. It’s crazy the power of the word. And yeah, we could take it to the extreme and start talking about the responsability it takes, but thats not my flow. Let’s better enjoy this friendly little post.

Once again, this is me, after my monday. After a bow of cereal (crusli is the $h1T, the best cereal ever). I’m gonna be brief about it because I gotta go and study for some subjects I’m currently struggling with.

So, the last week in my rugby team whatsapp chat, they invited me to go to the national tournament. (Long story short, I have been in the team since 2nd semester, now in 8th, but haven’t been able to train as much as I like to, because of work and school, haven’t even go to Tepic, the place where I was born, since christmass) It started a fire in my heart that I was slowly loosing. I would really love to go but since we will have talent land (XR Tales – Astronaut VR experience) and other work,  I see it really dificult to go.

I talk about this great sport and how much I love it with Ken at the end of the class, after it, I had inteligent systems class at 6:30 but since we finish Ken’s class earlier, in the way to my next room I usually past by the rugby field. My schedule usually don’t match and I usually never were shorts or sports clothes at tec. That day was different. I was in the right place, at the right moment with the right clothes (kind of) and decided to go full hardcore on it. Enough to tell that I finished with a big ass morete in my right leg from one tackle (and I was the one tackling), think I should practice again my tackles. Anyway, after the training you have no idea the joy I had for steping once again the field and fight (even on a training) side to side with my brothers.

RugbyMorete

Thats why I’m happy I’m making the time of going to the trainings mondays and thursdays, and some of the other days to the gim for health. I started getting fat again and don’t like that. I do like to take care of myself and feel handsome.

At work we finally got working a new plugin that let us do live sdi input from a professional cine camera to the UE4 engine and do chromakey compositing in real time which is something crazy. The quality we manage to get even on the first day of testing is unbelievable. With the set of tools we are currently developing and I (as the CTO of XR Tales) am really proud because we will be able to start merging the sillicon valley world (technology) with the Hollywood world and do a big BOOM in the Mexican and International industry.

I will keep you tune about my crazy life. It looks like I wrote a bunch but honestly I still have lot’s more to tell. Maybe with the realtime composition I will finally be able to produce my radio or tv show 😉 who knows right?

https://www.ohhelloana.blog/blogging-and-me

 

Late night hours – DevOps 1

Okay, this is not usual but exactly in the night of the few puentes we have in the year, chilling and looking videos here and there about how will the future of the 3d industry will change getting applied engineering such as machine learning, etc.

I found a really cool video which guided me to many different cool Papers, decided to go deep on to DensePose (http://densepose.org/ leave you the link if you get interested on it) and in one of them I found that the OS I needed to work with was Ubuntu (LINUX). And guess whose harddrive with windows was faulty again. YEP, mine again, (thrid one) and I had this ubuntu on a brand new solid disk and well, it felt like all the planets aligned.

Going on with the story, I saw I needed to install Anaconda for managing my enviroments on ubuntu, and started downloading and installing it, then I saw I needed caffe2 but at the same time, for caffe2 I needed CUDA, cuDNN and some more things. And at that time, it hit my mind. If i’m allready getting my enviroments prepared for personal projects, why don’t I finish all the late schoolwork I have left in the meantime I download the heavy frameworks and libraries, so here we go with devops.

RECOMENDED MUSIC FOR THIS POST! (I usually listen a kind of music when I have this crazy episodes, this time I recommend you this song to start with)

Okay so, what the Duck is Devops?

As far as my understanding let me know, DevOps can be divided in three segments. As a whole, engineers participating in a proccess from design, to development and production stage. A constant evolution of the best practices and metodologies for it. If you look for a standarized definition of it, you will come across many of them. So the best is to try to make your own concept.

Now, from this, you don’t just need to do those practices because someone told you to. It is really important to study them concepts (extracted from: https://theagileadmin.com/what-is-devops/):

  • Infrastructure Automation – create your systems, OS configs, and app deployments as code.
  • Continuous Delivery – build, test, deploy your apps in a fast and automated manner.
  • Site Reliability Engineering – operate your systems; monitoring and orchestration, sure, but also designing for operability in the first place.

I decided to investigate about what is the most common issue in many companies where developers are involve. It results that developers are always kind of in a hurry. They focus on innovation, being fast and guide through change. On the side of Operations, they are more focus on implementing, and optimizing this blocks of code for the apropiate code stability. Always having in mind the end user.

Where is the problem in this? At the time where the Devs are generating and generating more and more functions and code and they throw it to the Operators, but since the nature of their activities depends on integrating and analizing in a different level, they usually end up in getting mad with each other.

The solution? Is there one? Well, why do we need to keep both worlds separated? Why not improve the communication between them. How about integrating tools in their pipeline which allow automation and proccess optimization.

Why do this? If their goals are aligned, the speed is increased. The operators needs to undestand the Devs code. They need to receive a playbook of how to handle their code so it can keep running. They need to know how to search for errors and make the devs understand how does the service functions. On the other hand, the developers, they need for the ops to have everything they need so they can build the whole product.

The whole idea behind DevOps its about the company’s culture, about sharing tools and OPTIMIZING PROCCESS. I know I allready said that, but thats (in my humble opinion) the key about this.

When you start doing this, you will be able to start measuring your work progress. The time it takes for fixes to get deployed, how much time does a developer took to do certain things and those are the areas of opportunity. When everybody is in sync, great things can happen.

Resultado de imagen para apes communicating

Sidenote: It’s funny how even if I started this post before than the part 2 & 3, I finnished it later. Interesting ways the procastinating brain works.

DEEEV OOOPS -3rd parts where never good…

Okay, this is the 3rd part of DevOps series. In this chapter we will continue with the setup of the tools that will help us improve our development pipeline and habilities.

This weeks activity is focused on setup of GitHub and connecting it to our server.

  1. Ensure that you have a repository created for testing. I recommend some form of web content, but you can choose your content for the testing. You should put this in the root of your web server that you created in DevOps part 2, Linux Server Setup (Individual)
  2. Setup your GitHub two-factor authentication.
  3. Setup your SSH keys (Enlaces a un sitio externo.)Enlaces a un sitio externo. so that you are able to connect to GitHub repositories using ssh (Enlaces a un sitio externo.)Enlaces a un sitio externo..
  4. Ensure that you can do a git clone (use ssh) to your server from your repository. You should do this.
  5. Make changes to your repository (you can do this any method including via the GitHub site).
  6. Ensure that you can update your server copy with a simple «git pull origin master» at the command line from the directory where you have pulled your data.
  7. Does the webpage update if you reload that this code sits in?
  8. Automate those updates using what you learned about cron in DevOps part 2, Linux Server Setup (Individual). How often should you update? How do you ensure (and you should do this) that you do not end up with two copies of your update script running at the same time?

At this point I hope we all have a github (or other source control tool) account for our now 4 years of engineering. If not, well, you don’t need to be a genius to create it. Just remember to see a few tutorials on how to use git.

https://i.kym-cdn.com/photos/images/original/000/540/816/41d.png

For this activity testing, I will use one of my engineering classes repository (compilers lecture). I recommend you to use one you already have but if you are new to this, just create a new one with some readme file on it.

We need to set the 2factor authentication on our github account. It is as easy as going to github.com, then to settings, then to security and click to enable. You might need to choose an app to handle the authentication, or use your mobile by sms. I chose an app called authenticator.

For generating an SSH key you can follow the instructions in the next link: https://help.github.com/en/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent After you generate your SSH key, you will need to add it to your SSH-Agent. The how to? is in the same link.

What goes next is to add your key to github. For copying the key just use the next commands. You shouldn’t have problems y you followed the tutorial I gave you.

$ sudo apt-get install xclip
# Downloads and installs xclip. If you don't have `apt-get`, you might need to use another installer (like `yum`)

$ xclip -sel clip < ~/.ssh/id_rsa.pub
# Copies the contents of the id_rsa.pub file to your clipboard

Then on github, got to settings

Settings icon in the user bar

then to SSH and GPG keys and click to add key.

Authentication keys

Then click to NEW SSH key. And paste the key. Remember to put a reference of your current device on the title so you know from where you are allowing the SSH communication.

The key fieldThen click on add key, and you will need to input your github password. Then you are done. To make sure that you did it all right, you will need to clone a repo you have. Then make a change, anything you want, from github.com and then from your server (computer with the SSH key) use the command git pull origin master. A message like this will appear.

SSHsuccess

En ese caso, sabemos que nuestra comunicación segura por SSH ha sido exitosa. Lo unico que queda restante es programar en cron los intervalos para realizar la actualización local de nuestro repositorio.

For that, I will let you a tutorial of the basics, and if you need, a crontab generator.

https://crontab-generator.org/

In the process of doing these activities I have met and figure out different really cool ways of augmenting my productivity and automatize  task which is really amazing because I have never done this before. Yeah, now I feel ignorant, but hey, you gotta start somewhere right?

DevOps ++ (2/5)

Hello again, its been a weird long weekend and right now it seems like I’m getting sick again. But a different kind of sickness, probably a virus. I will keep you tuned about that.

Today’s music:

In this second part of the series of activities of DevOps we will start working with our enviroment and preparing the necesary tools for a software testing and quality focus. As I already told you in the first part, my current and only OS available is linux, guess it’s the perfect time for getting use to it and it’s tools. I will guide you to the steps I followed and the final status of this part.

BASE OS

Resultado de imagen para ubuntu

First of all, we need a linux machine, it can be the host OS or a virtual machine, as you wish. In my case I have installed  UBUNTU 18.04. You can download the 18.04 version on https://www.ubuntu.com/download/desktop and if you need a virtual machine I really recommend you to use virtual box. It has been my virtualization software since I was in highschool (7 years at least). And you can download it from: https://www.virtualbox.org/wiki/Downloads

LANGUAGE ENVIROMENT

Resultado de imagen para python

What its next, we need to add support to our coding language. In my case Python 3.6 which you can install with:

$ sudo apt install python3-minimal

Simple right? (for more info look at https://linuxconfig.org/how-to-install-python-in-ubuntu-18-04-bionic-beaver-linux)

GIT

Resultado de imagen para git

Well, after we have our language, we need to install git on our linux distribution. For that we only need to put the next command in the terminal:

As it it always recommended, we start with the OS and package updates.

$ sudo apt-get update

Next goes git

$ apt-get install git-core

And to verify that  it is correctly installed we look at the installed version with:

$ git --version

Which should output something like:

$ git version 3.6

(For more info. about git on linux go to: https://www.liquidweb.com/kb/install-git-ubuntu-16-04-lts/)

Web Deployment

I chose to use nodejs since its a js engine developed by Google, famous and powerful but I have never had the chance of working hardcore on it and think this is the perfect opportunity for it.

First lets start with nodejs. I looked for some tutorials but keep crushing into issues while trying the instalation command to I simply tried with:

$ sudo apt install nodejs

and then

sudo apt install npm

Guess what? It worked like a charm so I don’t see why you would have issues with this commands. You can always verify the installation with:

$ nodejs -v
$ npm -v

I already told you i’m not really familiar with this kind of tools so I decided to go on a noobs tutorial for the basics. I recommend you this tutorial where at the end, you end up with a server deployed on the port you defined. This will help us in the future.

CRON

And finally we will need to setup this tool called CRON. This helps us for automation purposes and the next part. It works by setting custom processes and activities scheduled for their execution in linux.

Again we need to to de updates and upgrade for our server by doing

$ sudo apt-get update
$ sudo apt-get upgrade

To know if we have the package installed we use the next command:

$ dpkg -l cron

If we don’t have it, we just use:

$ sudo apt-get install cron

And verify that the service is running with

$ systemctl status cron

In order to set new jobs for cron, you can look how in the next link:

https://www.rosehosting.com/blog/ubuntu-crontab/