To reuse or not to reuse

Eric S. Raymond once wrote in How to become a hacker:

No problem should ever have to be solved twice.

Indeed, reuse is one of the central ideals in computer science.

Yet when faced with the vast landscape of open source Java libraries and frameworks, I began to believe that it is sometimes better to solve a problem yourself than to rely on libraries. I have several reasons:

  • Libraries tend to be big, and they tend to solve more than just your problem. This inevitably leads to unnecessary code, with unnecessary dependencies which can easily lead to problems with the Java ClassLoader.
  • The people maintaining the library might have other priorities than you have. Even if it’s open source, it might be easier to maintain your own coherent piece of code than to dive into a huge project written by others.
  • By solving fundamental problems, you can improve your programming skills.
  • By solving your problem, you will understand it better and probably be in a position to chose the right library for it in a future project.

Of course, code reuse is important and there are things people should rely on libraries for. Nonetheless, solving the problem yourself can definitely be the better choice, and reuse is no commandment. Nowadays, software engineering often comes down to combining several different frameworks and libraries with rather simple code. Many programmers don’t seem to understand what’s happening anymore, and feel rather helpless when one of their libraries reports errors. I think that understanding of the underlying processes is vital in this field, and programming lower level logic can really help at that.

As soon as I have a bit of time, I’m finally going to get the Knuth and work on my basics.

There is hope

I’ve been playing computer games since about 1992, and those I used to play were clearly made with love down to the tiniest detail. I’m talking about stuff like Monkey Island and Final Fantasy VII here.

Almost twenty years later, browsing the games in a local store, I see mostly trash: Cheap quiz games, ugly budget games and a huge heap of incredibly shallow games based on movies. There are a few interesting modern games in the stores, but in many cases, they feel quite unfinished, often intolerably buggy. I won’t even go into detail about the insufferable crap dominating mobile phones and Facebook.

But if you look carefully, there are real pieces of art out there – they’re merely hidden by all that mass market trash. Here’s a list of a few exceptional games I’ve played lately:

  • Phoenix Wright – Ace Attorney 1-3
  • Persona 4
  • The World Ends With You
  • Fragile Dreams

All of these employ unconventional concepts and are a real joy to play. I know there’s more like that, it’s just not easy to find. There is hope!

The illusion of privacy

There is quite a ruckus about privacy problems in communities such as Facebook and Battle.Net lately. The problem is apparently that the provider made data available to a group of users that wasn’t supposed to see it.

My opinion: If you have something to hide, don’t entrust it to strangers. This is true for both Facebook and Battle.Net: You don’t have the slightest clue who has access to which part of your data under what circumstances. And even if you do, that could change any time – they could suddenly decide to show it to the government, companies or simply anyone. That happens frequently.

Out of these options, I certainly prefer the last one, merely because it is the only one that seems to make people aware of privacy issues. Some people might think that every Facebook employee or the government will always act in their best interest and never do them wrong (history certainly proves this wrong, but people love to believe in crap). However, if everyone can see what someone is hiding, that person suddenly becomes aware of that and tries to stop it.

For that reason, I’m quite thankful that Facebook does it the way they do: They’ve probably done more for privacy (by raising awareness) than they ever did against it.

The same goes for Google: They collected wifi data, so what? The people whose data was collected were broadcasting it. Instead of informing potential and actual victims of this problem, the media blamed Google for collecting the data – publicly available data. It gets worse: The German government wanted Google to hand the data over instead of deleting it – the same government that wants to secretly search personal computers.

I’ve got another one for this case: If you have something to hide, don’t broadcast it.

Bottom line: Trusting strangers with your data and trying to ignore it will not get you better privacy, it will effectively eliminate privacy. Everyone has to solve their own privacy issues.