Brave New World

author Posted by: whaledawg on date Jun 14th, 2009 | filed Filed under: general

I like my job. It’s 2 minutes from where I live(and I like where I live), it doesn’t take up a huge amount of time and I’m pretty good at it. It’s a teaching job and truthfully there are very few people who can teach technical things. In fact, I could be pretty bad at it and still be pretty good at it if you know what I mean.

But, much as I like it, it’s time for a change. My job is fun but not challenging, I’ve never come across a real ‘problem’ to be solved. It’s doesn’t have a huge amount of corporate bullshit, but it does have some and that’s more than I like. I had to be ‘counseled’ yesterday because I filled out too many Attendance Change Forms. I filled out 2 in 6 months. Because I clicked an ‘A’ instead of a ‘P’. Twice.

And while not working too many hours has been enjoyable I’m not sure it’s the healthiest thing for me right now. Basically it’s a great job to retire to, not from.

But looking for programming jobs, even with a Masters in CS, has been spotty. The interview process is almost always tough(as it should be). But that means that even if they love you they suspect you. “Why is this guy doing well, am I missing something?” And if you have a few years break from programming it’s very easy to assume “Yes I am, lets get the next guy.”

And even if the interview does go well I don’t have any code to give as a sample and my contacts/references are from years ago. My last programming boss was in another state!

And then even when I get passed all that, it’s still a pain in the ass. I applied at a game company, they didn’t contact me for 6 months. Then after I passed their programming test I had to wait a month for a phone interview! Then I had 2 more phone interview(a month apart) before waiting 2 months to come in and take a grueling programming test in their offices(which was kind of fun actually).

After that they told me no about 2 weeks later, then 2 months later said everyone I had interviewed with had left the company and would I like to start the process again. Hm…..fuck your mother. But at least I never expected anything from them.

I actually received a job offer from one company(at the money I asked for, which I didn’t expect) but then the paperwork kept taking forever to go through. I assumed that is was some bullshit with the recruiter but it turned out they were losing money and were about to instigate a hiring freeze. I had already quit! They emailed me 6 months later and said they were hiring again. Once more…fuck your mother.

It’s just stressful and work and for what. What do I get for it? Another job. A longer commute. Especially in California, where every 10 ft takes about 20 minutes. Will I make more money? Sure, but it will still be less than I want and more than they think I’m worth. So essentially I’m killing myself looking for a job so I can have the privilege of putting up with their bullshit.

Fuckem, I’m going mobile. There’s a unique oppourtunity now to make money selling apps for mobile phones. It’s a new market, it’s not entirly settled what people want(that means you can still strike it big). It’s growing every day, especially as Apple slashes prices, Android comes out on over 20 phones this year and Palm releases it’s WebOS. And all the marketing, purchasing and distribution is in place already. All I have to do is code.

Can we just remove “slow” from the programmer vocabulary please?

author Posted by: whaledawg on date Nov 26th, 2008 | filed Filed under: general

Fast

So I answered this question over at Stack Overflow and another poster said this:

glReadPixels/glDrawPixels is slow.

Now, assuming he’s correct(has OpenGL really figured out a way to optimize everything but bit blitting?) you still have to ask “Slow for what?” If you’re only reading and writing pixels every 10 seconds who cares how slow it is.

Working on my game engine, I’ve come up with 4 scenarios:

  1. Happens once at load
  2. Happens every time a user enters input
  3. Happens every time an internal alarm goes off
  4. Happens every frame

So is reading/writing pixels slow at load time? Who cares? Every time a user enteres input? That only happens a few times a second. When an alarm goes off? This could get costly, but you can also control the granularity here. Every frame? Well, that’s 30-60 times a second. Now speed might actually count for something.

But if some asshole on Stack Overflow convinces me that it’s slow, I won’t use it the 75% of the time when its speed is irrelavant. Fuck Your Mother. I’ve just made a whole lot of things I may need to do take 10 times longer for no visible gain.

These “slow” decriers are the same people who convinced me for years not to use virtual functions. They have “overhead”. Do you know what the overhead on a virtual function is vs. a regular function call? A table lookup. Fuck Your Mother it’s just a table lookup to see which function to call. So I cut out a huge amount of object oriented technique(and most of the interesting stuff) to avoid a God Damn table lookup.

Anytime anyone calls a technique slow we should remember that “slow” is a relative term. 9 times out of 10 the “slow” technique takes me much less time. I’ve come to the conclusion that my time is more valueable than the fucking computers, and if you feel differently I have to question your actual knowledge as a programmer.

Ahhh….better

author Posted by: whaledawg on date Sep 29th, 2008 | filed Filed under: general

So last friday I was once again trying to psych myself up for a day of pouring over obscure file processing code when I realized something. This game engine could be broken down into the following parts:

  • Core services(message routing, drawing, error handling)
  • Utilities(3D math, actors)
  • Networking
  • Physics(collision detection, friction)
  • Tools(for making an actual game)
  • File IO
  • User Interface(keyboard input, minimaps and the like)

Why am I killing myself doing the least fun all in one chunk? File IO is important but it doesn’t have to be finished before everthing else.

So I am taking a break from .OBJ files and I’m cracking the UI. And it’s the best decision ever, I’m actually having fun again. Imagine that.

The only problem with the UI is designing it showed me how weak my message routing scheme was. Basically I had a class that processed the windows messages with a giant switch statement(another obscenely over complex code leviathan I’m forced to deal with) and it called a series of pure virtual functions(OnCreate, OnDraw, OnMouseClick and the like).

The user was expected to extend this class and over ride those functions to do what he wanted. Which is great, if all of your game will fit in one class. If you want to have different classes handle different events though you were out of luck.

So I changed it to be more of a “message router” that various “message handlers” register with. Everyone who can handle a mouse event and tells the router that he wants to get them will recieve the proper notices.  Yes, I copied Java. But if it ain’t broke…

Programmers vs System Engineers

author Posted by: whaledawg on date Sep 5th, 2008 | filed Filed under: general

Code MonkeyAn important part of my project(any project) is documentation. Toward this I looked at quite a few documentation systems and decided to go with Doxys. It’s an extension of the open source Doxegen, but they fixed the HTML output. Doxegen tended to make massive, hard to read pages.

The problem is the guy who wrote Doxys is a programmer. Programmers see a problem and work from the ground up to fix it. Since Doxegen is open source the author was able to get right into the code and make the output exactly what he wanted. Which is good, right?

Except that Doxegen can also output in XML. A system engineer would have looked at that and seen how much easier it would have been to write a program that parses the XML and outputs the HTML from that. Let Doxegen do the heavy lifting and your program can work on the actual problem, hard to read HTML pages.

I admire programmers(I obviously consider myself one) but this mini-asperger thing is probably the biggest problem in software engineering today. Guys with incredible knowledge build programs to do a job and then when the job shifts slightly or there’s a problem with it the team has an impossible time fixing it.  A little forethought would have made Doxys a force to be reckoned with. Put a web interface on an XML parser and you have the greatest documentation tool out there.

Instead you have a slightly less annoying auto documentation system. Which would you rather have your name on?

Note: I’m not mentioning the author by name because I really do appreciate his tool and am thankful for his work, but it just could have been so much more