Grow your own moustache!

It is done! I finished my Master study. The defence was held on April 26 and the thesis got published today. For those inclined in reading this kind of literature, here is my thesis: A Scalable Heterogeneous Software Architecture for the Telecommunication Cloud. It is an actor model based framework which can deploy on any cloud and be written with any programming language.

Let me tell you it is a big weight removed from my shoulders. In retrospective I would do it again. However I would not take two courses in the same session. Also I would have started the writing of the thesis and verified it with my thesis director earlier. But now it is done. On the bright side, I think what I have learned in the process really helped improve the end result the research done by my team.

I could not resist long and had to learn something new. Something has been on my back list for a while and I decided to give it a try. But let me put a little bit of context here. Four or five years ago I went to course about innovation in Stockholm. One of the exercises went as follow. In teams of two we had to point randomly in magazines and pick pictures and sentences, and give sense to them. I don’t recall each individual element, but I think we came up with a sentence going like this: “You have to grow your own moustache”. I still recall that sentence because out of the randomness of the sentences and images we picked we ended up with such a profound revelation!

It might not look like it, but “Growing your own moustache” is a really good metaphor for a lot of things in life. I will just show one of those things. As following a course and learning is, growing a moustache is a decision you have to make. Once that decision is made, it will take time, you cannot have it grown over night. Two people won’t grow the same moustache and it won’t grow at the same pace. When you learn, you might struggle more than someone else, but in the end, no matter the struggling, what you have learned is personal, what you retain depends on your background and how the moustache grew… everyone will get its own, there is things you can do to shape it the way you want, but some things you cannot control or change.

That being said, this exercise and many more went a great deal to start a friendship. The course I am following now is from an advice from that friend, Andreas S. who told me about it. So Andreas told me about that book which guide you through the process of building a computer. You start from Nand gates and build a computer from them, an OS, a language and eventually the Tetris game. It happens that the guys who wrote the book made available that course on Coursera: Build a Modern Computer from First Principles: From Nand to Tetris. It is a two parts course and the first part is available now. I finished the first part. Last week I completed the assignment for week five where you have to build a CPU and Memory and assemble them as a computer. This week I completed the 6th week assignment to write an assembler for that computer. It is all simulation, but you know it could work for real if you had the patience to build it physically as in the previous weeks we built every elements leading to this, from the Nand gate. Two transistors and a resistor and you have a physical implementation of a Nand gate. You would need a s**t load of them to build an actual physical version of it, but you get the full understanding with the course. By the way, someone did such a computer from individual transistors. You can get a view of it in this video.

When I did my bachelor degree (in electrical engineering) 25 years ago, I covered a lot of what is shown in this course. But still some pieces were missing. We built/simulated logical gates and from there went to Register and ALU but we didn’t assemble them as a CPU and a Computer. Other course showed us assembly and compilers but it was not linked in a coherent chain. That course bring you from the basic Nand gate up to writing a Tetris game will all the steps in between. You can be a perfectly good software engineer without knowing how a computer is built, but there is a lot you can gain by understanding it. Making it yourself ensures you have a deep understanding of the whole process. I recommend that course to everyone. Thanks Andreas!

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s