Friday, December 27, 2013

Rules

We seek definition to understand
the system so that we can discern
the rules so that we
know what to do next so that
we win.

(from "Being Geek")

Friday, August 23, 2013

POP

So last night I finally sat down and read "The Making of Prince of Persia", a compendium of Jordan Mechner's journals from his time developing said game. I really enjoyed it. There were many parts that resonated with me personally. I tried to make note of parts that stuck out to me either with some comedic value or just plain inspirational so I could share them here.

Videotaped David running and jumping in the Reader's Digest parking lot. It'll do for a start.

Microsoft Word 4 arrived via Fed Express. I booted it up and it crashed immediately.

Roland spent the whole morning helping me switch over to Merlin and ProDOS. It was kind of a thrill to watch. Roland is a hacker of the old school. He's polite and unprepossessing in his dress and demeanor, careful about money and contracts. He drives a Saab with license plate SNAB-BIL. But under that conservative surface is a demon -- a guy who will put his day job on hold for 72 hours and sit down and reverse-engineer an Apple II conversion of Tetris, just for the pleasure of it. Watching him do what he did for me today, I felt a little of the old joy come flooding back. I'd almost forgotten the most basic thing: programming is fun.

The more experiences I have, the more I realize that working with people you like and respect is more important than anything else.

Roland came over for breakfast and we installed an extra 1 MB in my Mac. Roland tested it out by creating an 8,000 page document in MS Word.

There's no guarantee the new game (Talking about PoP) will be as successful. Or that there will even be a computer games market a couple of years from now.

Apple II is a piece of shit. Kyle's sound routines are a piece of shit. His user interface is a piece of shit. The music we play on the CD player for inspiration sounds fucking awesome. Maurice Jarre's rousing overture to Lawrence of Arabia -- amazing. Then when we try to recapture some of that drive and ferocity on the Apple II, it sounds like a bunch of frogs' croaking being drowned out by the crinkly of cellophane wrappers. It's depressing.

SHADOW MAN. Credit Tomi with this one. I was explaining to her why there are no enemies in Prince of Persia. The animations for the player's character are so elaborate, there's not enough memory left to add another character. "Why not use the same animations for your enemies, the way you did in Karateka?" "Wouldn't work so well this time. The character is designed to look cute. He has a very specific personality in the way he runs and moves. The enemies would have to be cute too." "Can't you just change the face, or the costume?" "Not possible. If I change anything , it's a whole new set of shapes. There's just no memory." She wouldn't give up. "Couldn't you make him a different color -- say black?" I started to explain: "This is the Apple II..." and then it hit me: What if I exclusive-OR each frame with itself, bit-shifted one pixel over? I visualized a ghostly, shimmering outline-figure, black, with white face and arms, running and leaping, pursuing you. I described it to Tomi. "Shadow Man!" she exclaimed.

Eleven hours at the office on a Sunday, making this my first recorded 72-hour week.

I gotta finish this damn computer game. I have no excuse for slacking off. As Adam Derman once told me in a letter (about Karateka): "You dumb shit. You've dug your way deep into an active gold mine and are holding off from digging the last two feet because you're too dumb to appreciate what you've got and too lazy to finish what you've started."

I know I missed a lot of gems, however this should give you a taste of how it reads. It's definitely not the next adventure thriller, but rather an intimate look into the personal life of an independent programmer.

Wednesday, August 21, 2013

Tom Mast: Professional Vagrant MMXIII

The past 22 days have been a whirlwind. My lease in Muncie was up at the end of July and since then I've been roaming the state of Indiana. I had been gradually packing and moving stuff since the holidays, but it didn't really matter how much preparation I did. 50+ boomboxes, well over 500 records, and 7 bikes are always going to be a pain to move.

When I finally had my car packed with the final load I said my last goodbyes and hit the road with Lisbeth. Seeing the place I had spent so much time growing up in just fade away behind me was a weird, weird feeling. Memories of my entire career as an aspiring computer scientist filled my mind. My mistakes, my successes, enough to fill an entire book (OK, OK, my mistakes alone are enough).

I am more than happy with the education I received at Ball State. I loved every single one of my Honors courses, and regret not pursuing them in a more focused manner. I have my share of complaints about the CS department, but I feel comfortable with the well-blended knowledge of theory and application that I left with. My personal experiences with a handful of the CS professors have forever shaped my views on the way I approach personal learning, team-based interactions, and how to maintain an excellent work/life balance. On the opposite end of the spectrum, I felt way too often that I was being taught a CS equivalent of the Donnie Darko Fear/Love lifeline.


Our field moves way too fast for you to try and teach me using your slides from 10+ years ago, I'm sorry. 

Life since then has been one long interview process. I sometimes feel that I'm being too picky. I know where I want to work and I know the type of team I want to join. I've turned down potential offers that don't fit this criteria. I was in process at ThoughtWorks, but broke it off. I know I would love the work and it would be great for me professionally, but I just cannot do the 80% travel gig. I know I'll find the place that's right for me. 

Barring the lack of income my life rules right now. I wake up, play with Lisbeth, and then study or work on whatever I want to all day. Want to implement Boyer-Moore or play around with Elasticsearch? Go ahead! One of my goals for the summer was to complete 50 Project Euler solutions, but then I discovered CodeEval where your solutions are ranked based on running speed and memory usage. I set myself a goal to break the top 100 and just recently accomplished it (loadstar81).

I've also been running/cycling on a consistent basis. Growing up we had an old, out of service railroad track right down the road that we used as a walking trail. This has since been converted into a legitimate bicycle trail called the Pumpkinvine Nature Trail


I'm usually not the biggest fan of running, but taking Lisbeth on this trail is awesome. She stays right next to me, even off the leash. While I crave the bustle and technology scene of a big city, it's had to argue with this.





Sunday, July 28, 2013

C++11

I can definitively say that my favorite addition in C++11 is the fact that I can finally write this:
std::vector<std::vector<int>>
Instead of this:
std::vector<std::vector<int> >

Thursday, July 18, 2013

Pimp My Raspi(de)

The summer heat gets to all of us, even our machine friends. I thought I'd give the gift of cool to my Raspberry Pi in the form of some heatsinks.


I realize it's pretty hard to mess up a heatsink, but I'm happy with these little guys. A quick before and after reading (vcgencmd measure_temp) shows a drop of a few degrees Celsius on my stock cpu/voltage Pi. 

My only cosmetic wish is that the second heatsink was more size appropriate for the LAN controller. 

Wednesday, June 26, 2013

Charles Bukowski, Factotum

If you're going to try, go all the way. Otherwise don't even start.
This could mean losing girlfriends, wives, relatives and maybe even your mind. 
It could mean not eating for three or four days.
It could mean freezing on a park bench.
It could mean jail.
It could mean derision.
It could mean mockery--isolation. Isolation is the gift. All the others are a test of your endurance, of how much you really want to do it.
And, you'll do it, despite rejection and the worst odds. And it will be better than anything else you can imagine. 
If you're going to try, go all the way. There is no other feeling like that.
You will be alone with the gods, and the nights will flame with fire. You will ride life straight to perfect laughter.
It's the only good fight there is.

No offense Charlie, but this is complete bullshit. What is success without someone to share it with?

Tuesday, June 11, 2013

Tick Tock


I promised myself I would be better at making lists, so here we go.

Books Tom has read at least halfway through but not finished:
  1. Clean Code
  2. The Ruby Programming Language
  3. Hacking: The Art of Exploitation
  4. The Art of Computer Programming: Fundamental Algorithms
  5. The Pragmatic Programmer
  6. The Algorithm Design Manual
  7. Understanding Comics
Things Tom has plenty of:
  1. Stress from working on Master's thesis
  2. Stress from looking for enjoyable employment
  3. A great girlfriend
  4. A dog that thinks she is a human
  5. Interests
Things Tom will do this summer:
  1. Finish thesis work
  2. Find employment
  3. Complete 50+ Project Euler solutions in at least three different languages
  4. Write some audio effects for Mixxx
  5. Finish the Raspi/Arduino controlled treat dispenser website for Lisbeth
  6. Create a tiled screensaver/installation of public IP cameras using GStreamer
  7. Finish the work I started on a granular synth for Buzztrax

Things Tom does not have, at all:
  1. One focused interest
  2. Free time
  3. A pet Grue
  4. The new Boards of Canada vinyl (why did I order from overseas...)