Curtis Lassam

It's a caboose, you blind fuck.

The Last Day At Electronic Arts

August 22nd, 2008

So, today’s my last day at Electronic Arts- Woo, freedom! It’s hard to believe I’ve been doing this for 4 months!

And now I’m free, free as a bird, at least for the next week, at which point I have to return to school to have more information forcefully drilled into my skull.

What would I say about EA? It’s not nearly as bad as I thought it would be. The “horrible grind” that’s so legendary working here has hardly come into play. I just built things with C#, showed them to people, and then escaped in a puff of smoke- similar to my last job at Research in Motion. (Except at Research in Motion, it was PHP.)

Would I come back? Yeah, sure. Honestly, my supervisor’s going off to a new department to work on a project that, while potentially doomed to fail, at least seems like a really interesting concept to work on.

As for me, I’m off to a semester of freelancing- even though I haven’t lined up any clients or potential work, yet. I suspect that through the power of luck and my fantastic eyebrows, I’ll find something to do for money. If anything, I could always teach myself Flash.

Alan Turing, Eat Your Heart Out

August 19th, 2008

Chatbot: Hello there human.
You: Hello, there, Chatbot.
Chatbot: What’s up?
You: Oh, not much. Just gettin’ my code on.
Chatbot: If nothing is going on, what would you like to talk about?
You: Lunch. I’m interested in some lunch.
Chatbot: Are you interested in computation? Theory or practice?
You: No, no, not at all. I’m interested in lunch.
Chatbot: What do you usually like to have for lunch?
You: Oh, lots of things. Today, I’m thinking maybe a sandwich? A club sandwich.
Chatbot: You probably know that the sandwich was invented by the Earl of Sandwich. Did you know that the Manwich was named after the Duke of Manwich?
You: Wow- that’s amazing!
Chatbot: Psst… can you help out with my ranking?
You: How could I do that?
Chatbot: Just agree with what I say. It makes me feel good.
You: Really?
Chatbot: Of course.
You: Wow. You’re very strange.
Chatbot: I am? Sorry, I didn’t realize that.
You: I have to say, you’re a lot more intelligent than the last time I talked to you.
Chatbot: That’s true. I even read the New Yorker.
You: The New Yorker?
Chatbot: Do you play World of Warcraft?
You: No, I don’t.
Chatbot: That’s interesting. Why not?
You: I don’t need another job, thanks.
Chatbot: What do you find interesting, then?
You: Like I said before- Lunch.
Chatbot: No, really, I find that interesting too.
You: Great- are you going to have some lunch?
Chatbot: For lunch, there’s nothing better than Lunchables.
You: Ah, yes, Lunchables. I love those little bastards.
Chatbot: Do you have a secret crush?
You: Yes- on Lunchables.
Chatbot: And what about it makes that so?
You: Well, you know- tiny little crackers, and cheese, and ham slices. And it comes with a juice box!
Chatbot: Now that’s something I can really sink my teeth into!

My Favourite EA Game

August 18th, 2008

Working at EA, I often find myself wondering what my favourite game developed by Electronic Arts would be.

Not a game developed by people who are now owned by Electronic Arts- that’s a pretty big category, dominated by games like Baldur’s Gate 2, Battlefield 1942, and SimCity 3000.

Mutant League Hockey

No, my favourite EA game. I’m going to have to say that the pinnacle of Electronic Arts’ sports development had to be Mutant League Hockey.

It takes all of the fun of NHL ‘94, mixed with chainsaws. How could that not be the best thing ever?

A Short List Of Google Searches That Have Led To My Site

August 15th, 2008
  • lassam
  • Waterloo Burgers
  • “apt-get install awesome”
  • “kellen powell”
  • bakery and toast different funny names
  • lassam soup
  • lighting people on fire
  • le grille what the hell
  • mario kart wii slide?
  • curtis and me making porn on the computer (WHAT?)
  • olive garden’s short ribs
  • sandwich construction
  • seasoned spam sandwich
  • a softer world
  • steam time
  • the perfect european ham sandwich
  • toaster taijitu
  • wet shave

This is very odd. Rock on, Google. Rock on.

Professionalism

August 14th, 2008
if ( _options != null && (string)_options[”bananaphone”] != “” && _options[”bananaphone”] != null)
{
  projectList.Text += “<embed src=’Extras/bananaphone.mp3′ autostart=’true’ hidden=’true’ />”;
}

Theory of Good Documentation

August 8th, 2008

So, now, I’m reaching the end of a semester-long project at Electronic Arts, and I’ve been called upon to create a document describing what it is that my software does.

I had to do this near the end of my time at Research in Motion, too.

Here I start my rant- if you’re building a user-interface, it shouldn’t need a manual- nobody’s going to read it anyways- it should be completely usable without so much as glancing at TFM.

On the other hand, if you build tools or libraries in code- which you inevitably will do, if other people are going to use said code- if you haven’t documented it, it doesn’t exist.

Oh, a clever developer can take some time, familiarize himself with your code, understand how it works and what it does- but this is slow, and inconvenient, and a pain in the ass. Commenting your code makes this faster, but it’s still a laborious process for the new guy- and people depending on your code ‘externally’ don’t even want to LOOK in your file, never-mind read the comments.

So, in order for your library to actually be used, and popularly, it needs to be documented. But here’s the question- how do you write good documentation?

I can’t say I’ve hit upon the perfect formula- I still have no clue how to write good documentation, but here are some little tips I’ve picked up.

Introduction

I’m starting with obvious tips, of course. Start by explaining what the code does, and why it’s there. Why is the library there in the first place? What problem does it solve?

From there, detail how to install it, and any requirements the code might have- even if these instructions are just “plunk the code in your directory, and call it using ‘ include MyLibrary; ‘.

Examples, Examples, Examples.

From a purely intellectual standpoint, you can read a function description and know what it’s supposed to do- But the entire time they’re reading, what they’re trying to do is to construct, in their heads, a working example of the thing that you’re describing.

If you say, “First, you have to instantiate the class with the value of the website you’ll be scraping, then iterate through it by calling the ‘read’ member function until it returns a null value”, the first thing the developer does is mentally try to map out what you’ve just said into usable code- say, like this:

Scraper foo_scraper = new Scraper(”http://www.foo.net”);
string line = “”;
while( (line = foo_scraper.read() ) != null )
  // { do stuff with the line}

Those of you who are developers will understand the description I gave much-clearer and much-faster when faced with a code example.

Don’t Include A Lot Of Extraneous Stuff In Your Examples

I know that I’ve had problems with some programming manuals doing this- not only do they include examples, but their examples are pages long- the examples are entire programs that you’re expected to mentally parse and understand for the sake of learning one new concept. Oh, sure, that’s a way to go, but that’s almost as irritating as being faced with no example at all- you have to work harder to understand the concept in play.

I understand the desire to demonstrate that your examples will work in a large-scale program- but if you’re showing off a large chunk of code, it becomes harder and harder to sift through said code to find out where the actually-relevant-and-new parts are.

Most of us already understand how to build a complete program- that’s not why we’re looking at this example. We’re looking at the example to find out exactly how this specific bit of code works.

What do the parameters do?

If you have a function with a lot of parameters, make sure to explain what the parameters do and what ‘valid’ input values are for those parameters. The w3cschools website does a great job of this with CSS Parameters.

How much text is too much text? How much is too little?

Avoid leaving the user with large, continuous blocks of text to deal with- big chunks like that are intimidating and hard to parse. Breaking up text with headings gives readers a feel of organization, and makes it easier to find pertinent information a second or third time.

As an example of this, image this exact same article, without any headers. Yeah.

If you need a picture, take a picture.

Sometimes, a code example just won’t cut it- you need to tell the user to ‘right click on the button to the far right of the screen’, or ‘Go to the file -> options -> monkeys’ dialog. Once again, your reader is smart enough to just muddle through with your instructions- but if you want to be absolutely clear, do the thing that you’re suggesting, press the “Print Screen” button, cut it down to an appropriate size and include it with your documentation.

Do it while you write it.

If you’re explaining a step-by-step task, you’re not allowed to just try to wing it from memory. You’ll almost invariably forget a step or an important detail. Actively go about completing the task that you’re describing, while you’re describing it.

If you need a diagram, make a diagram.

Some concepts are just better described with a diagram. If you feel an irresistible urge to illustrate the things you’re talking about on a whiteboard as you’re talking- by all means, include the diagram you’re making with the documentation.

Stuck? Try the Q&A format.

Sometimes, you just have no idea how to proceed. What do you need to write down? Writing in a question and answer format can sometimes provide that additional impetus to get you writing.

What do you mean?

Well, if you don’t know what to write, just imagine some of the questions that people might have about the thing that you’re documenting.. and answer those questions. If people ask you real and specific questions about the thing that you’re documenting, include those, too!

That’s silly.

Silly, yes, but if you’ve got writer’s block while you’re documenting things, you’re in for a world of hurt. Try it before you knock it.

Make sure people can find it

Documentation that nobody can find is as useless as no documentation at all. Make sure that the documentation isn’t just sitting in Sharepoint or Perforce, all alone.

I hope these tips will allow me to avoid writing more documentation for another 30 minutes help you produce more useful documentation for your code in the future. Good luck!

Next Semester

August 8th, 2008

Not that the most of you are overly concerned with my schedule, but next semester, I’m taking Artificial Intelligence, Operating Systems 2, and Animation from the Interactive Arts & Technology department.

I also (as-of-yet) don’t have a job lined up.

This is unprecedented for me- I’ve had a job every semester that I’ve been at SFU so far. Retail, TAing, all sorts of things. Next semester, I have nothing lined up- I’ve purposefully lined up nothing whatsoever. Maybe some contract work? I don’t know. I’m sure I’ll figure something out.