More Ramblings from a Los Angeles Programmer

July 9, 2007

Expect the Playstation game soon

Filed under: daily life, uk life — Josh DeWald @ 8:48 pm

My wife’s brothers are in town, and one of them brought his skateboard. As you can no doubt imagine, I’m a world class skater. Allow me to demonstrate:

Josh startingJosh continuingJosh slippingJosh down

That was just practice, let’s try that again.

Josh starting againJosh continuing againJosh slipping againJosh down again

I’m expecting the call from a game studio any time now.

July 5, 2007

What frameworks do you use?

Filed under: coding — Josh DeWald @ 11:50 am

Just kidding, I don’t really care. I’ve been wanting to write on this topic for a bit but haven’t been able to figure out how to go about it. In some ways, I probably don’t need to, because there so many absolutely stunningly written blogs out there that can convey the things I want.

I recently saw this entry via reddit which made me go “Eureka!” because it conveys so well the ideas being my posing of the question: “What’s the problem you’re solving, and what’s the algorithm you’re using to do it?” rather than “What framework are you using to solve your problem?”

In it Reginald Braithwaite discusses the idea of certifications and what his certification would test. Most importantly is the idea that it wouldn’t test any specific frameworks, languages, methodologies or tools. Almost as importantly, he says that he wouldn’t be able to pass it without studying. A lot.

His certification would test your knowledge of and ability to… test. This is such an amazing concept because what it really means is that it tests your ability to actually understand what you’re building. Sure, you can make sure that when you click a button that a screen is displayed. But:

* What’s supposed to be on that screen? (And how do you know?)
* What did a user do before clicking on that button?
* Why does the user care what’s on that screen?
* What happened between pressing the button and displaying the screen?

The last question is the most important: you can just have a static “Web 0.5” static HTML site if pressing a button just results in a static screen being rendered without processing occurring.

Being able to design for testing means that you can state, at the beginning that: “Given a set of inputs I with values (A,B,C,…) the end result will be R“. And then you can verify that this is true before you write the code that does it. Using this as a black box, someone on the outside doesn’t have to care how it gets done but merely that it does get done. A non-programmer can use the statement and understand what is supposed to happen, but they don’t have to care how. What they can do is say “Hey, wait a second! When I enter (A,B,C) I actually want R2 to happen!”. This is a powerful notion indeed.

So many of the problems with our (and I include my own here) systems is that they aren’t actually tested or even, more frighteningly, testable. We just hacking on it until it appears to do what we think it might need to be doing. “Yeah, that looks right.” Meanwhile, every time that button is pressed data is being recalculated (what algorithm? why?), a database is being pulled (how do you know the query is correct?), servers are being connected to (securely? what protocol?) and a screen is being rendered (sure you didn’t miss any of the returned data?).

The actual framework you’re using for all this doesn’t matter. Sure, it might help you do it because it makes it easier to quickly generate the application. But that doesn’t make the code correct at all. Even a little bit.

Just because it looks pretty doesn’t mean that it’s actually solving the problem.

Anyhow, please read Reginald’s blog (I’ve just recently subscribed to it, it has a lot of good stuff) and other people’s. Subscribe to my ‘starred’ items which are articles that I think are particularly good (not always about programming). There’s also my ‘programming’ feed which are all the blogs I subscribe to related to software engineering/programming (warning: it includes reddit as well, which tends to have about 50 entries a day). Yes, I group programming and software engineering together because one can’t be done without the other and I don’t want to argue about the differences right now.

Note that I can’t tell whether or not you subscribe to either of these.

Lastly, don’t just go and take my word on anything I say. These are just my opinions, which I’m forming and re-forming all the time as I design, interact and fix systems on a day-to-day basis.

Note: I would consider a programming language just another framework.

Update: Realized that I said “we” instead of “he” when talking about not passing the certification test, which I think is a big distinction.

July 3, 2007

Answer to my “Considered Harmful” poser

Filed under: daily life, linguistics, meta — Josh DeWald @ 3:02 pm

Immediately after I posed my question, I realized I should have asked Language Log (a great “language as it’s used” multi-contributor blog) first. I emailed one of the contributors (Mark Liberman specifically). Rather than just answer my question, he made a full Language Log post!

Of course, the first part of the article makes me realize how little research I did prior to my question. There’s a Wikipedia entry and if you do a Google search for “Considered Harmful” the Dijikstra article that I was thinking of is the first result (as I mentioned in my previous entry). Turns out that that wasn’t in fact the first usage, but seems to have started the trend. But if I hadn’t been thorough, then we wouldn’t all get the full analysis courtesy of Language Log.

Thanks guys!

Update: It helps if I link properly.

July 2, 2007

Considered Harmful?

Filed under: coding, linguistics, technology — Josh DeWald @ 5:55 pm

I’m just curious if anybody knows where the “<Something> Considered Harmful” idea came from? I have a vague sense that it was something LISP or programming language related, but I’m not at all certain of that.

Examples:

Go To Statement Considered Harmful

 “Considered Harmful” Essays Considered Harmful

You know what’s hilarious…. I think the “Go To” one is the original… or at least that’s the one I was thinking of when I said “programming language related”.

My original search was specifically “origin on… ” or “source for…”. Perhaps I should have just searched for “Considered Harmful” as I did to locate references.

Update: I received a comment (and reread my post) and realized that it sounds like I’m saying “X” (as in the windowing system) is considered harmful. I mean basically where does “Considered Harmful” come from. Added examples.

July 1, 2007

This is why Open Source exists

Filed under: coding, technology — Josh DeWald @ 4:09 pm

Stumbled on this page which lists some “traits” of hackers (in the sense of people that like to investigate and hack on things, not ‘hack’ into computers illegally).

Seven Habits of Highly Effective Hackers

Reading this, you realize why open source software exists: passionate and curious people who scratch that itch by writing code in the long hours of the night because they love doing it.

The end result is often quite useful (Linux, Firefox, Gaim, gcc, emacs, apache, perl, WordPress), sometimes just fun (FreeCiv, Tux Racing) and always educational (but possibly only for the person who made it) and hopefully inspirational (“Wow, something that good is both free and I can see exactly how it was made and even contribute!?”).

Software development is one of the few things that a person can do both professionally and as a hobby with the exact same tools: a text editor and a compiler. Something on the scale of Firefox can’t be made in a day, or even a month, but it can actually be done with no cost and lots of dedication. Linux itself was actually created by a single person (Linus Torvalds), but is now worked on by thousands of people in both their spare and professional time.

I encourage any developers out there who read this to look at any code you’ve written in your spare time (or even professional if you can get your employer to agree to it) and ask yourself if this could benefit the community at large even if you haven’t completed it. Maybe you have a pet project that you started but ran out of time for. Release it under one of the Open Source licenses. You can have as much or as little control over what people do with it as you want.  I can’t guarantee someone will pick up the torch and use it, but you never know. And if you’re not using it, why not? If someone does use it, you’ll have the satisfaction of knowing that you made somebody else’s life easier and creating something useful(!).

Go forth and code!

Create a free website or blog at WordPress.com.