Software Engineering at Google

Writing an application is just the start of a long process. A software system requires a continuous development effort to keep it running and working. Software evolution and maintenance is what keeps busy any organization that creates systems that need to be working for many years.

Software needs to continuously be updated, bugs need to fixed and an organization needs to be able to release new features in a timely manner.

Software Engineering is all about software design, creation and evolution. A lot of different tasks that make a system able to be alive and stand the test of the time.

A nice new book explains how Google manages its vast repository of its source code and its software evaluation as scale. A highly recommended read.

Fixing defective MacBook Pros (2011 models)

The old MacBook Pros have a defective AMD Radeon GPU. Mine was from 2011. The solution for Apple was to replace the entire motherboard and I had it replaced 2 times for free. The replaced motherboards had the same defective components, and it was always a matter a time before a new failure happened.

Now my MacBook Pro 2011 is not supported anymore by Apple, so no more hardware fixes and software updates. Fortunately, I have found a solution. You need to bypass the GPU and disable it, by removing a resistor in the motherboard.

I have followed the article at the link below to solve the problem.

Fixing a 2011 MacBook Pro booting to a Grey Screen – AMD Radeon Video Glitch

Some more detailed information on how to disable the GPU is here. I had to change one command line.

Instead of this line

`printf "x07x00x00x00x01x00x00x00" > /sys/firmware/efi/efivars/gpu-power-prefs-fa4ce28d-b62f-4c99-9cc3-6815686e30f9`

I used this line

printf "\x07\x00\x00\x00\x01\x00\x00\x00" > /sys/firmware/efi/efivars/gpu-power-prefs-fa4ce28d-b62f-4c99-9cc3-6815686e30f9

And I have happily installed Ubuntu

How to opt-out Interest-Based advertising

Watching ads based on our interests can be more interesting than having to be exposed to ads that are not relevant to us. At the same time, in order to show targeted advertising companies are creating a profile of all of us, and not everybody like to be profiled.

Below you can find some links that can help you opt-out to interest based advertising.

I recommend the following web page for more info about it.

How to Opt-Out of Interest-Based Advertising and Stop the Ads from Following You

For Facebook, how to opt-out

Building the Software 2.0 Stack

An interesting talk by Andrej Karpathy, currently Tesla’s director of AI and computer vision on how software is increasing being developed.

More and more parts of the software stack is built using data, deep neural networks. The software 2.0 stack will not replace the traditional way of building software but it will increasingly cover a larger area and domains.

Check the video on Vimeo. TRAIN AI 2018 – Building the Software 2.0 Stack

The Case for Learned Index Structures

The Case for Learned Index Structures is the title of a recent article on how using neural network it is possible to create a faster and more efficient way to store and retrieve data.

That’s a case where Neural Networks can improve and change the established field of Data Structures and Algorithms. A great step forward for computer science and machine learning.

More on the paper:
The Case for Learned Index StructuresTim Kraska, Alex Beutel, Ed H. Chi, Jeffrey Dean, Neoklis Polyzotis
(Submitted on 4 Dec 2017 (v1), last revised 11 Dec 2017 (this version, v2))

Online Deep learning courses

Some very good courses are online and many are free of charge.

Practical Deep Learning For Code Free

deeplearning.ai by Andrew Ng on Coursera. You have to pay for this course. But you can access the videos by selecting Enrol and then Audit. Coursera has other Machine learning courses for free.

Deep Learning Nanodegree by Sebastian Thrun and others on Udacity. You have to pay for this course.  In Udacity you can find also free courses, such as  the Deep Learning course by Google.

Life can be much broader than you think

“When you grow up you, tend to get told that the world is the way it is and your life is just to live your life inside the world, try not to bash into the walls too much, try to have a nice family, have fun, save a little money. That’s a very limited life. Life can be much broader, once you discover one simple fact, and that is that everything around you that you call life was made up by people that were no smarter than you. And you can change it, you can influence it, you can build your own things that other people can use. And the minute that you understand that you can poke life and actually something will, you know if you push in, something will pop out the other side, that you can change it, you can mold it. That’s maybe the most important thing. It’s to shake off this erroneous notion that life is there and you’re just gonna live in it, versus embrace it, change it, improve it, make your mark upon it. I think that’s very important and however you learn that, once you learn it, you’ll want to change life and make it better, cause it’s kind of messed up, in a lot of ways. Once you learn that, you’ll never be the same again.”

Steve Jobs

Building a Real-Time Object Recognition App

If you are interested in testing and trying object recognition with TensorFlow, I recommend this Medium post:

Building a Real-Time Object Recognition App with Tensorflow and OpenCV.

I tried it and it works quite well and the available source code allows you to learn how this all works.

 

 

 

 

 

 

 

 

 

 

You should also read Dat Tran follow up post, that shows how to train the NN with your own images, to identify new objects.

How to train your own Object Detector with TensorFlow’s Object Detector API