This week is going to be more focused on the aspect of taking risks, thinking out of the box, and seeing things from another perspective. And the same time I would work on some technical skills and put on a test my perspective in how to code.
Moonshot thinking and risks
Moonshot is a mentality for making things happen, having a mentality of changing the world, but this is not quite easy, its haves some risks… Kind a lot of risks.
This idea can make things that do not happen very often occur for you, most people do secure investments for low profits, but big companies like Google have teams working on creative ideas that can change the world, like google translate and other than just failed, like Google Glasses or Google+.
I would like to make this someday, I think at this point in my life I have a lot to learn about this industry, but someday I want to make that Moonshot and make my own company or co-found something because taking risks is the only way that things can change.
Future and the past of programming
Technology change quickly, people’s minds not quite so fast.
Studying how the programing industry has changed in the last years, I get surprised what the programmers of binary react the first time they see Soap “that’s not programming”, and then those SOAP developers said the same when they see Fortran when it appeared.
Something similar happened to me when I saw Unity Bolt for the first time (and I thought that until this day).
The main point is that we have to have the philosophy of the empty cup because we cannot say we know something in an industry that the answers change constantly.
Side note: Unity Bolt is a draw-and-drop system for programming games.
My personal principle
Having a principle is a vital importance of our lives and what we want to do with it.
One of the big examples of this is Larry Tesler because he put his principle in all the places as a personal label, he is the inventor of the command copy-paste and made big contributions to the UI world, his principle was “no modes”, not only his inventions followed it, but also is his twitter username, his website and inclusive his license plate.
It is not easy to find your personal principle, it requires experience and self-knowledge, now I’m reflexing on it but I don’t have a clear answer yet.
The principle should reflect your: identity, experience, vision of the world, and insights.
One of the most underrated areas of programming is testing, but it is one of the most important pillars for delivering robust, quality, and reliable software.
I had previously wanted to learn automated testing on my own, but I didn’t find enough information about how to develop it.
I learn about the point of making unit testing, they should be fast, independent, repeatable, and self-validating.
Also, there is a programming method called Test-Driven Development (TDD) that is based on first program the test of what you want to program and then coding the solution for that test.
Finally, for most cases, you cannot test a single class because it depends on others to work, for those cases you need to have in mind the Moks, which are copies of classes that you can use for testing purposes.
There are some Moks libraries e.i., iMuck and EasyMuck.
Personally, I will like to try out those concepts in my personal and further professional projects, and give a try the TDD approach.
We have all had to make presentations to an audience at one point in our education or work.
Personally, I like to make it and talk in public to other people. I have been learning about certain tips on how to make it better.
First of all, we have to gain the attention of the audience making them think.
Also, the number of concepts that are in the presentation are important, less is more, so keep things simple and short possible, 20 minutes is a reasonable limit.
In essence, machine learning is composed of features and labels, basically, you can see it like a function f(x) = y.
To have this function you need to train a model with a dataset, and then, the classifier learns how to predict something new with the properties.
There are different types of learning and decision-making algorithms, one of the most common is the decision tree:
Investigating about quantum computers I learn how the normal transistors of the CPUs work storing a value of 0 or 1 and making logic doors are capable of make more complex things.
Unfortunately, we are getting into a limit of how many transistors can been put on certain space, there is where the quantum computers can solve this problem.
Nevertheless, is more unlikely that quantum computers replace our normal computers because QC are better for certain specific tasks, such as databases, security and simulations.
Going through Git
I think most of us “have an idea of git” but at the same time there’s always something new to learn about the usage of git version control.
Checking the “missing semester” website lecture about git a learn some additional commands that I hope not to forget if someday I need them:
- git diff -> show the differences in a file.
- git log –all –graph –decorate –oneline -> a useful way to visualize all the commits and branches.
- git add -p -> stage only the lines you want.
- git stash -> temporary remove modifications.
- git pop -> undo the git stash.
Going through VIM
VIM is one of the favorite and most used text editors in the programming community.
I don’t use it because I always think it is very complicated, and at a certain point, it is.
VIM has a philosophy of being a programing language by itself, that is one why is at some point difficult to get it and master it.
But at the same time is a text editor from programmers by programmers, we don’t write like other people, if you are writing a book, is more common to just write at the end of the file and continue but programmers need to read, search and edit certain parts of the text.
It can be difficult but learning VIM can make you program faster once you get into how to use it and use the shortcuts to delete, insert, select everything you want in a minimum of keystrokes.