Skip to content

Instantly share code, notes, and snippets.

@nodebotanist
Last active June 16, 2016 19:48
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nodebotanist/0b976847f4c68eb389f8 to your computer and use it in GitHub Desktop.
Save nodebotanist/0b976847f4c68eb389f8 to your computer and use it in GitHub Desktop.
On "Real Coding," history, and what it means to be a programmer.

I'm sitting here, on a rainy Sunday morning in June 2015, in front of my MacBook Air, flipping switches on my Android, staring at the computer. A light bulb in my living room flickers from blue, to orange, to some weird green color. I'm tracking Bluetooth LE Characteristics. I have a Bluetooth light bulb, and they don't have a javascript API yet, so I'm using noble and node to write one.

I'm sitting there, a few miles away, in I want to say August 1999. I'm staring at a CRT monitor, and plugged into a USB port on my family's windows tower is a GameBoy GameShark that I took on a lot of chores and time to earn. plugged into that is some Harvest Moon game or another. I want to say I needed more tomato seeds. My child-brain decided that instead of figuring out a way to earn the in-game currency, I would alter the universe.

I wasn't the most straightforward-thinking kid.

Since then I've learned I could've just used Yahoo (or even Ask Jeeves!) for the codes. Instead I looked up how to make them: I found profanity-laced forum posts by people probably not much older than myself: I downloaded my first emulator not knowing the first thing about the possible legal ramifications.

I booted up the game in the emulator, and found a small dialogue box: it would allow me to see the addresses of memory for the "cartridge" (at least, it mapped to the cartridge). I would then spend some in-game currency, and hit a button: filter out all the addresses that hadn't changed. Repeat. Repeat. Repeat. I had one address: the in-game memory address for how much currency I had in-game.

If I'd been a little older, I think I would've stopped to think about what I'd just done. What I thought, instead, was: "Awesome, now I can buy whatever I want! Wait...why are there letters in that number?" Learned hex (promptly to forget), wrote down the code, and ran off to play the game for an astonishing 8 hours straight. Anyone who knew me as a kid...hell, anyone who knows me now knows getting me to focus on one thing for 8 hours is a feat.

Back to the present: I'm doing the same thing child-me did for Harvest Moon, but to change the color of my living room light bulb. Sometimes, now, I do sit back and think about all the amazing things you can do with a little bit of patience, the right tools, and stubbornness (or drive, if you want to frame it in a nicer light).

I've told my gameshark code story before, and the results have been mixed, but I get the following response far too often:

"Yeah, that's cool, but when did you start coding?"

Who gives a/n [various expletives or expletive substitutes]? Also, how is that not coding? We build marvelous abstractions over the same switches that we always have.

Also, nowadays, people make jokes about me not admitting to using a gameshark, lest my various precious gaming credentials be called into question. [expletive expletive expletive].

Anyways, I digress: I want to use this story, and its present parallel, to show people that YES, YOU ARE SMART ENOUGH TO DO THIS. Programming isn't some arcane ability that you're born with, or don with some ridiculous hoodie with a logo on it: you can be a real programmer if you don't have a GitHub accout, or Twitter followers. Stop glorifying what I do: yes, I've worked hard. Yes, I know a lot more now than I did-- and I try to teach others when I can.

But stop glorifying what I do: I sit here, I flip switches, I record results, I try again. Programming is turning problem solving into this skill that goes alongside being able to excrete gold. That's [expletive]. Pure and simple: what I do, everything I do-- from robots, to writing, to code, to being able to pet my cat's belly just the right amount so he doesn't bite-- All of it just me practicing, reading, learning, and trying again.

My skills aren't special. I'm (a little) special because I don't give up working on my skills.

So go find your gameshark code, go find your universe to alter, and just keep practicing. I promise it's not impossible, and I'm pretty sure you'll be better for it.

Oh, and stop telling people their previous, current, or future exploits aren't real coding. Instead, spend that energy trying to make yourself less of an ass (I think everyone could benefit from that, myself included.)

@walterdavis
Copy link

Never stop learning! This is excellent.

@stash
Copy link

stash commented Jun 16, 2015

Great write-up!

Experimentation/breaking, debugging, and coding are all legit and intertwined. Also, sometimes the validation of a hypothesis requires trying the full combination of possibilities (e.g., a truth-table), often to a relentless degree -- and that's pretty much indistinguishable from being a pure scientist! Never give up. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment