January 3, 2014

From the what were they thinking department

Java enums are one of the best additions to the language in recent versions.

But what were they thinking exposing the ordinal function, which returns an integer which is based on the order the enum values were in the file? You can change behavior by reformatting!

The claim in source is to have exposed it for use in EnumMap and EnumSet, two basically pointless data structures. They're so efficient! But their key is an enumeration so if to get big enough that efficiency matters means you will have enumerations with many thousands of members so efficiency is not your first problem. Or you are making millions of these maps in which case maybe you would like to express them as something even more efficient.

Clearly it seemed like a good idea at the time, but in the real world it just invites goofy mistakes for no real benefits.

May 29, 2013

A couple of good articles on the current flood of people getting completely cheated buying CS-lite M.S. degrees from schools who should know better: http://www.forbes.com/sites/quora/2013/05/09/how-different-is-a-b-s-in-computer-science-from-an-m-s-when-it-comes-to-recruiting/ http://blog.regehr.org/archives/953

August 1, 2012

Clever Mistakes

The problem with working with a pile of smart people is that it is a Darwinian environment for mistakes. The dumb mistakes are by and large caught and killed. This leaves only the clever mistakes, which are much longer lived.

A dumb mistake is leaving all your website unable to be customized for different languages.

The clever mistake is inventing a custom data file format which turns into a DSL implemented in XML along the way rather than using a real language built to make DSLs.

A dumb mistake is having no indirection layers that would allow you to switch your code easily from live to test mode.

The clever mistake is having three indirection layers, one in Java, one in the shell script that makes the config file, and one inside the config format itself... only one of which is used for any given item.

It's better to make the clever mistakes. But they can be immensely frustrating. I have a theory that if you have a pile of people who are both smart and experienced and also wise, you would be back to only making the dumb mistakes, but much less often, but such a pile is a rare rare thing even in great companies.

May 25, 2012

Entrepreneurs to Hackers to Hustlers

Call it my own personal sign of a tech bubble.

Among other sites I read is Hacker News, which alternates being a good site for news and an insufferable celebration of startup attitude over substance.

When Hacker News was created calling startup-minded technical people "Hackers" was still new. No longer was attribute one of a hacker the urge to make things and find out how things work, in the world of Hacker News the most important thing was trying to make anything work enough to get someone to buy it. A person who made a company whose product changed through ten superficial things was a hacker, and the guy in his basement programming model railroad controllers by twiddling their bits? Just a kook.

Recently though people have started to claim to be something else on Hacker News. Now they are hustlers. They have "good hustle" or they advertise "hustlers needed". While that may be merely a cute way to say hard worker, it has another meaning that doesn't seem accidental. A hustler will do anything to make money. Which is a pretty good way to describe the startup scene that runs past Hacker News these days.

Maybe it will mean the real hackers can have the word hacker back from the hustlers.

May 5, 2011

The problem and the solution is people

This page starts out in a humorous vein but the more you read the more you nod.

Characterizing people as non-linear, first-order components in software development

"The fundamental characteristics of “people” have a first-order effect on software development, not a lower-order effect. Consequently, understanding this first-order effect should become a first-order research agenda item, and not neglected as a second-order item. I suggest that this field of study become a primary area in the field “software engineering” for the next 20-50 years."