May 4, 2015

You Have To Win The Game


Nice little game, enjoyed it more than I expected. The focus is on the platforming, with some 'Super Meat Boy'-like screens, and light exploration elements. Finished it in about an hour, and spent another hour to get to 98%.

It comes with a very nice overlay effect (the "screen" in the image is part of the game).

April 13, 2015

So That's Why

For many years I've been wondering why in programming, (supposedly) intelligent people spend so much time and effort arguing why their most favorite turd is better than the other's favorite turd.

Finally, I've heard about Sayre's law:

"In any dispute the intensity of feeling is inversely proportional to the value of the issues at stake."

(Addendum: You can also say that - unfortunately - a programming language is a very personal choice for many, so if you insult a language, you insult the person.)

March 19, 2015

Why do many software engineers not like Java?

This is a Quora question, and the response which currently has more votes is so ignorant it hurts. Some of the comments are equally bad:

"Do you remember the rush of joy and accomplishment you felt when you deployed your first app online? If not(because you're a java programmer :P)  you may not understand what I'm saying.
For most people programming is about bringing communities closer, building synergy,  making life easy, maybe even helping save our planet. Java, I feel,  strongly discourages such creativity."

I program mostly in Java and I do feel a rush of joy when developing applications that help people (and I do deploy them online - with a single click, by the way); I've had great times working with colleagues doing Java code (like today); and I've never felt that Java stifled criativity (and I've seen Scala and Clojure).

This is common though. Java was never a cool language, and many software developers are driven by "fashion", believe it or not. For all its faults, Java is a language that works, and it would have never reached wide-spread adoption if it was as "bad" as some peopled wanted it to be.

Although the JVM is one of the strenghs of Java, the language itself has at least one feature that contributed to its current adoption: the language is really easy.

It is small, and in some ways restrictive. I think this is where the "creativity" argument comes from. However, this has a purpose: it also makes the language incredibly easy to read (the verbosity has also a role on this). Some people call it boring; people who do real programming work read more code than they write, and for them this is a blessing.

When I read responses like this one, my guess is that the person is not looking at programming as work and the language as a tool, but instead, as a way to "have fun", or as a "way of life". And by any means, Scala and Clojure are hands down way more "fun" than Java (although this is subjective, I also have a lot of fun with Java). But for large, multi-year, multi-person projects, my choice will most likely be Java (or languages with similar characteristics and support such as C#).

March 7, 2015

Hacknot - Book

I liked the book. Written ages ago, by Internet standard, it is a collection of essays on software, written from the point of view of a seasoned software developer. He explains, sometimes seriously, others sarcastically, what he does not like about the industry he works on.
I really enjoyed reading this book, even if I didn't agree with all of it. Probably it was because considerable space is dedicated to one of the great weaknesses of software developers: their infatuation with newness, fashion and coolness. People who are not programmers might think that programmers, when working, do rational and dispassionate decisions about what tools to use, and try to choose what is the best tool for the job. Nothing farthest from the truth.
In reality, programmers tend to gather around technologies the same way people gather around sport clubs or political parties. People choose tools because it has some "philosophy" that appeals to them; they try unproved, buggy technologies on their clients because they are new and cool; there are millions and millions of posts in the internet in quasi-religious discussions around technology that eventually boil down to "fanboyism".
(As a side-note, I was surprised by the positive view about academy, since usually it is the other way around when we hear from industry types. Instead of deriding academic practices as being out-of-touch with reality, he longed for some kind of systematic study and reproducible practices.)

January 18, 2015

They could have moved it to Fiction

Christian books retailers are pulling the "Boy Who Came Back From Heaven" because what is written in the book is not true. If the trend continues, retailers fear they will be out of books to sell in the near future.

January 5, 2015

Latex, Word and Tool Adoption

So there is a paper out there comparing Word and Latex productivity (An Efficiency Comparison of Document Preparation Systems Used in Academic Research and Development), and concludes that "scholarly journals should request authors to submit their documents in Word or PDF format". In their experiments, for all tasks except equations, a Word novice was a bit better on average than a Latex expert.

Although I use Word for writing scientific articles, I do prefer the Latex approach, it seems it is easier to reuse parts of Latex documents and classes. However, where are Word-level tools for Latex? I've been considering writing an article in Latex, but I haven't found a good-enough tool yet.

----

This article sparked a small discussion in the workplace, about tool adoption, laziness and comfort zones. Unfortunately, in the internet of cool technologies and trendy communities, sometimes people lose sight of the advantages of mature technologies.

Several years ago, I realized that if I wanted to be good on a programming language, I should pick just one and seriously invest on it. I chose Java, as at the time it seemed a good future-proof bet, and several years later, have not regretted it. Mind you, I still pay attention to what's going on around (e.g., just started using Gradle), however it is really difficult to understand, from users and enthusiasts discussions, which tools and technologies will give you a real improvement on your work.

It wouldn't be so hard if new technology advocates wouldn't overlook so easily the advantages of more mature technologies: libraries, tooling/IDEs, support, long-term maintenance, team work, etc... until you realize that since they are defending new technologies, all those points are current disadvantages for them, and it really is better to ignore them. I was shocked when I discovered that Scala, after more than 10 years, does not have binary compatibility between versions (every 6 months, your binaries might not work if you update to the most recent version - but well, at least, they are paying attention to it).

In any case, if you are not using the latest technology or the trendiest programming language, don't worry, contrary to what people have been telling you, you might be doing the right thing.