# Plugging the webs together

So I’ve decided that web development isn’t for me and I can see why everyone has a fairly negative view of web development.

I tried to keep an open mind when applying for jobs last term and ended up working at a web development studio. I went through about a week or two of mindless work, doing tasks that really should be scripted. Then, I went through another week or so of learning new technologies that I’d need to know to work on development. So I managed to finally get around to having a look at Flex, PHP, JSP, and get a better understanding of JavaScript, which was a surprisingly interesting language.

After that I began to get smaller development projects, which consisted of adding some sort of functionality in some existing site. It was at this point that I realized that all web programming was was gluing various objects together and sticking a smidgeon of simple logic in between. In other words, I’d gotten into the type of development I so desperately tried to avoid.

But I guess I understand now what it was that I was so interested in. When I have nothing to do, I like to think about myself all meta-like. I thought that I was interested in web development and it turned out I wasn’t. I was really into web standards though, what with the XHTML and CSS and the whole semantic web and separating structure and view.

It turns out I was interested in languages. I’m far more interested in XHTML and understanding its uses and purpose than actually writing it. The most interesting technology I learned was JavaScript, when I learned that it was a functional programming language and I went off to play around with it and learn more about functional programming. I was far more interested in learning the design philosophy and architecture behind Flex than learning how to throw some buttons on a page.

So, note to self: don’t get a job programming for businesses.

# Software and Social Justice Revisited

Several months ago, I posted something about Eben Moglen’s talk on free software and social justice. In it, he goes through how software will control the 21st century and how free software will enable us, the people, to achieve social justice and freedom without the need for violent upheaval.

The guest speaker at CCF was talking about social justice, and it was a very good talk. One of the questions that was asked of him was, what do we do? His answer: right now, we can’t do anything, except to work hard through school and get into a position where you can do something.

Something I’ve always tried to do is to connect everything I do back to my faith. Whether it’s design, math, or programming, there will always be some way to connect what we do with God. And why not? After all, he did make it so that ??¬? can never be true and that ?f?df(x)dx=f(x).

And so I’m always trying to find out what God would have me do with the skills and interests he’s placed in me. How does typography further the kingdom? How do web standards advance the kingdom? How do recursive descent parsers expand the kingdom?

So the obvious thing is to use your gifts at church. And obviously, that’s too easy. It’s great for discovering and developing your gifts, but Jesus called us to the ends of the earth. The extent of our talents should not be the church.

So what other ways are there to excercise your skills? Christ called us to go out and serve the weak, the needy, the broken, and in doing so, show them the love of Christ. The problem is that there’s so much to do. The hungry, the sick, the oppressed, it’s impossible to serve all of them especially with our finite skillsets.

I am studying software engineering. Presumably, I’m going to go on to become a software developer and come up with some hot algorithms to parse some hot language. But how does software accomplish the Great Commission? And that’s when I read and listened to Eben Moglen’s “Software and Community in the Early 21st Century”. Afterwards, what I had to do was made much clearer.

Below, is the transcript from the talk; thanks to Geof Glass who transcribed it.

# Write once

Apparently, in the world of development, Java is a giant joke. It’s a giant in several ways. It’s easy to start learning and using, but in order to really know it, you have to spend immense amounts of time learning just the standard library alone. Add to that all of the extra classes that you’ll undoubtedly come across, and you have one massive language.

It’s also gigantic because it really wasn’t written with efficiency in mind. I mean, char is two bytes and none of the primitives are unsigned. It’s a pain the butt to translate C code over to Java because of this, especially when there are bits to be shifted. Essentially, the way around this is to treat each byte as a larger type, like a short or int.

But once you get into Java development, you’ll learn that Java is the joke and that the punchline will always be, without fail, “Write once, run everywhere”.

# K&R are right

My new hobby at work is slamming my keyboard on my head while changing the code that the previous coop worked on. You’ve heard me whine about coding style before, but holy crap, who the hell codes like this?

public static String function ()throws IOException, SAXException{ and so on.

Who the hell puts a space in between their function name and argument list? Who the hell doesn’t put a space in between their argument list and exception throwing stuff? Who bloody puts the opening brace of a function on the same lines as the function declaration?

You know what’s even better?

if (variable.equals(something.else)) {
bla bla bla;
}
else if (variable.equals(something.again)) {
...

Did you catch that? Because it took me a few looks at it to really see what was going on there. Now you might have seen it immediately, but try looking at it when there are fifteen other branches. It’s even better when another if statement begins after this one ends with no whitespace in between them.

I swear if I ever get put in charge of a team of developers, the first thing I will do is beat them over the head with a copy of The C Programming Language until they respond with “K&R are right” whenever I mention braces.

Don’t make me get the book.

# They’re also for kids

Gather ’round as I impart some wise thoughts:

When puppies do cute tricks, they receive adoration, awwwwwwwwwwws, and puppy treats for being cute and doing tricks.

When developers do cute tricks, they receives stabs in their faces and auras of anger for making it hell for whoever gets to maintain the fantastic pile of rat corpses that they coded.

In conclusion, tricks are for cute puppies, not developers.