Month: March, 2014

Consumer tech

I was reading this article about a startup that is launching satellites for imaging the earth. A line from the article stuck with me, the startup is leveraging technology developed for consumer devices like laptops and mobile phones in their satellites. This is a reversal from the olden days where technology that was developed for defense/space would find their way into consumer tech. Now a days, you see technology that was specifically targeted at consumer tech making ways into defense/space. Another specific example that I can think of is Palantir. Ways found out by engineers during their days at Paypal to fight fraud shaped into Palantir which now focuses on hunting down terrorists/hackers based on data like call records, etc.

Another point of note is consumer tech driving futuristic technology. Take google’s driverless cars for example, where is the money coming from? From consumer tech like search. Where did Elon Musk get his money from to bootstrap Tesla motors? Again consumer tech like paypal etc. As of today, I see consumer tech driving research and development more than defense and space which in a way is good for us as consumers because we get a taste of the shiny new thing without having to wait for decades for it to be made mainstream.

Go lang

Last round of the recently concluded stripectf was in Go lang. This gave me a good opportunity to familiarize myself with the language. Even though my native programming language is Java, I have worked professionally in JavaScript, Perl and PHP; dabbled in Python for my personal projects and can manage to read Ruby, Lisp(and it’s dialects), Erlang and Scala with some Google help. When I ruminate on programming languages, I do not see any of these replacing Java as the de facto lingo of the enterprise world but I see the promise in Go lang.

1. Go lang is strongly and statically typed. This means that a lot of mistakes that could potentially cause your code to blow up in production would be caught at compile time. Apart from this, if the language crosses a critical mass of adoption, someone will come up with an IDE that can possibly match Eclipse, IntelliJ, et al. Also, one of the principles behind the language’s design is to aid tooling which means that a lot of tools could possibly crop up which would help to make code more secure, performant etc.

2. Syntax of Go lang is not revolutionary. I consider this a virtue. I am strongly of the opinion that if a language has to gain mass adoption, it’s syntax should be very close to the prevalent languages. Go lang does not deviate much from the Cish syntax but has subtle improvements which improves programmer productivity.

What makes Java a good programming language for the enterprise? Syntax of Java is very close to C which means that you could possibly train a lot of the computer science graduates out there to code in Java. Try Lisp with an average Joe programmer and you will know what I am talking about. With the people supply problem solved let us move on to other factors. Enterprises gravitate towards stability, security and viewing programmers as replaceable components of a machine. Java gives enough constructs to prevent a reasonably sane headed person from shooting themselves in the foot. Static/strong typing, code analysis tools and IDEs go a long way in helping with this. Without tearing your hairs out, try working with a code base in a dynamic language designed by an architect and then handed to a team for coding and then passed on to a testing team and then shifted over to an offshore team for maintenance. And to top it all, you do not have Eclipse or IntelliJ to help you with this mess.

Go lang has all the pluses of Java minus the verbosity. Of course it has a lot of other features which you can read about in the website.