On Love and Custom Gameboy Mods, But Mostly on Custom Gameboy Mods

I recently found myself in the position of getting married (more on this another time). In the course of being in this position, I was reminded that tradition dictated that I present my 3 groomsmen with a token of appreciation. I appreciated the heck out of these guys, so I wanted to do something really special for them that wasn’t a tie clip or cufflinks. So naturally, I decided to build a customized original Gameboy (often referred to as “DMG” or “Dot Matrix Gameboy”, to distinguish from later models) for each of them.

  • Unfortunately, the screens don’t photograph as well when backlit, but do look much better in person.
  • Also, the screens still have a protective film on them, so there’s some bubbles on the screen that aren’t present when it Is removed.
  • I replaced the blue Gameboy’s LED after these photos were taken, so it still has the stock LED.
  • More photos are at the bottom of this post.

I got all of my parts from ASM Retro; these awesome folks patiently answered my many many questions over email and got my items shipped quickly and safely, all during a busy holiday season. In the end, I had 3 amazing custom backlit Gameboys with custom power LEDs (except the red one), each themed after one of the original Pokemon colors.

Ingredients

Each of the Gameboys used the following parts:

  • 1 transparent white custom shell
  • 1 set of colored silicone buttons/button-board contacts
  • 1 set of colored molded plastic buttons
  • 1 colored ASM Density Backlight
  • 1 colored plastic screen shield/cover
  • 1 Original Gameboy

An important thing to note – when buying original Gameboys ($15-35), there’s a lot you can do to bring a “broken” machine back to life; of the ones I worked with, 2 had a bunch of dead pixel lines (fixable with a little solder), 1 had a dead speaker (switched out with a good speaker from a Gameboy with other problems), and all three no longer had their plastic screen shield/covers (microfiber cloth and isopropyl alchohol works wonders on dirty screens). All this to say: consider bringing new life to “old and busted” Gameboys for these projects – let the “mint condition” systems retire with grace.

The Build Process

The advantage of working with the original Gameboy is that the board layout is pretty spread out, and is very forgiving to less-than-perfect soldering (like mine).

Since there are already some really good walkthroughs of this process, I’ll just cover the things I noticed that weren’t covered in these guides:

Shell Assembly/Disassembly

  • The tri-wing screws strip easily. If you have the alternate cross-head screws (I recommend buying some), this is a good opportunity to replace them – future-you will thank you.
  • Once you get the Gameboy open, take the opportunity to clean everything up with isopropyl alcohol before proceeding. It will save you frustration later when dust keeps getting between your backlight and your screen.
  • When closing everything up with completely new shells, if you tighten the screws in the shell too tight, you’ll get some slight bending, and your screen shield won’t sit flat.
  • Additionally, your power switch may stick when you turn it off, resulting in a half-on state. If your screws are too loose, you may feel the shell shift in your hand when you press buttons and play the Gameboy. Experiment to find the right balance.
  • The new shells can sometimes resist the screws. I found that taking the screws out when meeting resistance and cleaning the threading off helped a ton.
  • If you’re using a clear shell, you’ll be able to see if your silicone buttons and connectors are sitting on top of your backlight wires. With an opaque shell, you can’t, so plan your layout appropriately.

Screen reflector and film removal

  • This is the hardest step in my opinion, so take your time. Messing up this step can mean a completely useless Gameboy. It usually takes me 10-20 minutes to get it off. I recommend watching a few videos of people doing this so you have a good idea of what to expect.
  • Don’t worry about fingerprints at this stage – you’re going to clean the screen anyway, so just make sure you have a nice grip on the screen while distributing force as much as possible.
  • 2014-12-09 22.34.45Most guides explain this removal step well, but most don’t mention how convenient and easy it is to rest the bottom right corner of the screen glass in the same corner of the plastic screen housing. DON’T DO THIS! I wasn’t paying attention and just as I was finishing, heard a crack. When I replaced the polarized film, I could see the damage.
  • When you rest the screen back in the plastic bracket, make sure it’s not pressed up against the bottom of the plastic bracket – this may prevent it from sitting freely and will put undesirable pressure on the screen.
  • When you’re done, the glass should be clear and transparent. If the screen is yellow, you didn’t remove the stock polarized film. Technically, you can leave it (and not use the polarized film included with the backlight), but it’s not going to look as clean.
  • Cotton swabs are fine for cleaning the board, but I recommend using microfiber cloth for the screen as cotton can scratch the glass.

Backlight installation

  • 2014-12-25 16.42.36I highly recommend getting a backlight with the “ribbon-style” connector. This will save you cutting, and is very easy to work with. I unexpectedly received a screen without the ribbon-style connector, and after realizing I had cut in the wrong place and didn’t have enough clearance to do the right cuts with my tools, was fortunate enough to be able to feed the wire in the small space between the bottom of the screen housing and the screen itself to the cut I made.
  • If you’re a particularly skilled solderer, you may want to shorten the backlight wires before connecting. I found that doing so requires much more precision however, and ended up feeding the extra wire down through the back of the board via the cutout for the capacitor below the screen.
  • The polarized film goes above the backlight, but below the screen glass. The backlight has a layer of white, mostly opaque plastic to diffuse the light, and should be left on unless you’re doing something weird.
  • I think some of the backlights look better than others. Pink and Red look great, Green is pretty good, and Blue was a little harsh for my taste (although it had the cool/interesting side-effect of inverting the contrast when the contrast wheel was adjusted far enough). All of them were great improvements over having no backlight.

Power LED replacements

  • If you opt to do this, you need a somewhat steady hand and a desoldering pump. If you mess something up at this stage, the worst that will probably happen is that you won’t have a power light until you finish the job. Because of this, I recommend doing this after backlight installation.
  • Many guides recommend using a resistor for new LEDs, since most colors will be too bright on their own. I found the resistors I used didn’t do much, but more importantly, because the LED has to sit so close to the board to fit properly, it was way too easy to short out the LED with the resistor installed. Instead, I got an extra sheet of polarized film and cut a little circle (use an adjustable hole punch if you can) to fit inside the the power light housing above the LED. This did the trick perfectly.
  • Some LEDs don’t require dimming. I found the pink LEDs were perfectly fine on their own, in contrast to the very bright and distracting blue and green LEDs. You can check this before installation by pressing the legs of the LED to each side of a watch battery.

Speaker Replacement

  • This works pretty much the same way as the LED replacement, but you want to be careful not to burn the solder contact off the board like I did.

All in all, this was an incredibly satisfying project, and would definitely do it again. So much so, I also decided to build a “Hot Neon of the 80s Edition” Gameboy for myself (here I used an original black “Play it Loud” case in conjunction with a Lime Green case from ASM Retro.

An English Major’s Guide to Programming, Part the First: What You Don’t Know

As an English major, you can look forward to a fascinating career filled with solo peek-a-boo sessions.

As an English major, you can look forward to a fascinating career filled with solo peek-a-boo sessions.

So you have your shiny English degree in hand and upon strolling into the job market, have just realized you’ve made a huge mistake. Maybe your hope was to become a great writer, but by now you probably already know that a) there’s no money in it, and b) You don’t need tens hundreds of thousands of dollars worth of classes explaining Jonathan Swift’s metaphorical commentary on 18th century politics. Maybe you wanted to be a teacher. That’s delightful, but you’re probably going to end up teaching a science course anyway. So let’s just agree you don’t have a good justification for your degree and move on to making you not a foolish person who just spent loads of money for the privilege of being in debt longer than virtually any other degree holder (hey, buck up kiddo – at least you’re not a philosophy major).

I’m going to suggest something that’s going to sound crazy, but hear me out:

Programming.

“Like with computer machines?”

Oh yes.

I’ve had a lot of people asking me lately how I got into “computer stuff” and what they should do to learn programming 1. Software Engineers in their enthusiasm and well-intentioned desire to solve a problem will often respond with a list of books to read and languages you should learn. For the technically minded, this is all well and good, but creatives often lack the confidence to pursue the standard path to becoming a programmer. So, for those starving poets out there, I’ve outlined what you need to know before you even begin, based on my own experience:

(For the purposes of being realistic, I’m going to mostly talk about web development. This will help you get started if you want to build a custom website or a simple program, but if you’re looking to build a new operating system from the ground up, you’ll probably need a more robust lesson plan.)

Engineering is hot.

Since the era of Ricky Martin, there’s been a lot of job security in programming, but right now it’s particularly in demand. There are a lot of reasons for this, mostly involving the evolving shifts of our economy (and the mysterious plots of the otherworldly beings who live among us, unknown and unseen), but regardless, there are simply not enough engineers out there right now to satisfy demand, and it’s getting vicious. Companies are poaching from each other, recruiters are offering bounties on programmers, and “idea people” are languishing from the inability to make their “next great thing” into an actual thing. So if you want to stand out from the glut of BA degree-holders entering the job market every spring, learning even the most basic development skills will help (HTML, for example, is fast becoming a required skill even in non-technical fields).

Adopt engineering philosophies.

As you learn to code, you’ll also want to take some time to learn about engineering culture. The community highly values self-motivation, discovery, information sharing, and creative problem solving. Engineers are not inaccessible geniuses. Just like you, they’ve developed a specialty, and are often enthusiastic to welcome you into the cult community.

Coding is not all math.

And it will probably break your code.

Don’t worry: improper punctuation is unforgivable in programming too!

Math is, unfortunately, scary to most people, but it’s rarer in programming that you probably imagine. Most programming (at least early on) is more about logic and syntax. When you do need to leverage mathematics, you’ll discover that it is typically straightforward and often already solved by others who have put together libraries (not those kind of libraries) or modules to handle common tasks (engineers don’t like to rebuild the wheel). In other words, if you can learn iambic pentameter, you can learn this.

Start by doing, not reading.

Obviously, you’ll need to understand some basic concepts to make anything work, but before you delve into best practices and the nuances of whatever you’re learning, build something simple. Don’t worry about doing it “the right way”, just get it working (no matter how perfect you think your code is, your future self will look back on it and find it laughably bad). This will give you the confidence to push onward and keep you from getting overwhelmed by information.

You’re not going to learn everything.

No developer has a mastery of every programming language (they’re not ninjas, no matter what their title implies). Most stick with the prevailing languages for the type of work they want to do.

You’re never done learning.

Unlike many fields, programming demands that you continue to develop your skills as new technologies emerge. The languages you learn today are probably not going to be the languages you’re using in ten (or even five) years. Don’t panic though (unless you really want to) – programming languages typically share many core concepts, so you’re never starting over completely from scratch 2.

Google is your #1 programming tool.

There isn’t a developer alive who doesn’t need to look things up occasionally. Knowing how to search for and find information is the most important skill you’ll learn (see, your high school librarian was right). Never ask the community for help without searching for a solution yourself first. Before you start building out a complicated chunk of code, check to see if anyone else has done it already (spoiler alert: they have) and try to understand their solution.

Collaborate and listen.

Don’t be afraid to post your code. Make judicious use of communities like Stack Overflow and maintain a portfolio of your work at GitHub. Embrace failure; don’t be afraid to get things wrong. Rare is the engineer who will mock you for learning.

Coding should be fun, but isn’t for everyone. It can be frustrating to learn a new skill, but you should feel a sense of accomplishment and pride with each success. If that feeling doesn’t inspire you to keep going, coding just might not be for you. If it does, you’ll discover programming to be more rewarding than you likely expected.

Now, if you’re still reading convinced this is something you want to do, you’re in luck, because the Internet will help you make it happen. You should start here.

Footnotes

1 Answers: 1) I’ve been doing light web development since the 90s (god, those GIFs were majestic), but only got really serious about it a few years ago. 2) Go to my website and read the blog post I just wrote on english majors learning programming.

2 A good way to stay on top of what is going on in the tech world is to follow Hacker News on a regular basis.


Coming soon! The sequel to this post!

“HTML and CSS – How Initialisms Will Transform Your Love Life”

(or, err… maybe with a different title, but yeah, HTML/CSS will be the topic)

A Very Special Episode: Bombs, Bullets, and Being in the Moment When You’d Rather Not

Not too far from where I grew up

Not too far from where I grew up

One summer day when I was 13, I received a strange phone call from my mother. I had biked over to a friend’s house to play video games earlier that day and we were progressing nicely through Sonic the Hedgehog 2 (“no cheats this time”) when my friend’s mom came in and handed me the phone. My mother’s voice cut through phone receiver clearly and crisply, requiring no identification:

“Come home NOW.”

I remember the feeling of dread; it was that non-negotiable tone of voice parents only use when you’re in the deepest of shit. For a brief moment, I considered lingering a bit (“Only two more Chaos Emeralds to go!”), but my friend’s mother did not leave, confirming through the oft-utilized stalwart Consensus of Moms, that it was indeed, time for me to go.

It’s normally a five minute bike ride between my friend’s house and mine, but I was met halfway by my mother’s pickup truck. That moment made my previous moment of dread seem like the smallest of concerns. If my presence could not be waited upon for another 2 minutes, I must have done something truly and irrevocably reprehensible. I tossed my bike in the back, and rode home silently, hoping for the barest mercy that could be afforded.

As it turns out, I had done nothing. Someone, I was told, had just shot several people at the grocery store in town and was currently at large. My immediate reaction was relief – I was out of the deepest pit of trouble I had ever imagined! But our town was a quiet one, tucked away in the mountains with a population of barely 2,000 and now we were locking our doors and my dad was checking his gun cabinet. Creeping unease quickly became true and present fear. The shooter would go on to kill and injure several more people that day, before dying in a shootout with police. I was never affected directly by the events; I only remembered the strange feeling of being told that we would not, could not, leave our rural New Hampshire home safely.

One night last month, I was startled awake by the sound of a large blast. Initially dismissing it as a blown transformer (a not uncommon occurrence in Watertown), I settled back to sleep, but then heard a series of strange popping sounds. Strange lights were bleeding through the edge of my bedroom curtain so I decided to get up and take a look. I couldn’t see anything in the dark initially, but as my eyes adjusted, I spotted some strobes coming from a few streets over. My girlfriend, meanwhile, not having awoken by the noise but by my sudden departure, insisted, eyes still shut tight, that it was a thunderstorm. After pointing out there was no storm, I was convinced to let it go and return to sleep.

Only I couldn’t quite. After about seven minutes, I heard a helicopter fly low over our apartment. A minute after that, another helicopter, and another. I uneasily decided to check Twitter out of prudence (and paranoia). Tweet after tweet said the same thing – the Boston Marathon bombing suspects were currently fleeing police in Watertown, very very close to where we live. Turning on the TV, we were greeted by national news coverage of our bus stop. It wasn’t very long after that a SWAT team, fully equipped with body armor, automatic rifles, and night vision cameras, crept up our back stairs (wooden and creaky, scaring the shit out of us) before finally announcing themselves. They then proceeded to search our apartment while we were asked to wait outside. Within hours, Watertown became a militarized zone. Mind you, that’s no artistic exaggeration; nobody was allowed outside, traffic in and out of the city was suspended, and these bad boys (affectionately called “bearcats”) were constantly roaming the streets:

Watertown Marathon Bombers Manhunt

The 20 sleepless hours following our nighttime disruption were some of the most stressful of our lives. At the time, there were reports of possible IEDs all over Watertown, on streets directly adjacent to us (“what is the blast radius of a pressure cooker explosive?”). There was conjecture by authorities that there may be multiple suspects beyond the two they were aware of. Our building had at least one helicopter hovering above at all times, and SWAT teams were combing back yards and houses for a second, third, and fourth time. We were glued to the live-streaming police scanner as they identified cleared sections of surrounding neighborhoods (but not ours). At one point, the governor, a few streets away, announced to the press that the Watertown lockdown was to be lifted. We took the opportunity to try a nap, but 15 minutes later, we were again woken by gunfire (closer and unmistakable this time) and the lockdown was reinstated. When they finally located the second suspect, I was watching the spotlight-equipped helicopters through my kitchen window and listening to the scanner as the various armed teams coordinated their plans and finally, fell into radio silence. After what seemed like hours later, the announcement went out that the suspect had been successfully taken into custody.

Watertown Sidewalk chalk (2013-04-20)

Later estimates would put the count of armed units (city/state police, ATF, FBI, etc) at around 10,000 (roughly a third the size of the city of Watertown). That presence (and the subsequent shut-down of the Greater Boston area) would be later criticized as “heavy-handed”, but within hours after the events ended, Watertown had largely returned to normal, and by morning, walking the streets, you would not even know anything had happened (other than the occasional sidewalk chalk thanking the local authorities for their work). In the following days, this entire story, like so many in our recent history (particularly in the past year), has been packaged and treated with the kind of perverse, short-lived (but intense) interest that only results in conspiracy theories, unhelpful assertions, judgemental conjecture, and complete ignorance of the greater good (don’t memorialize killers by putting their names, faces, and life stories all over the news).

I don’t really have any lessons or opinions to share. Others do a fine job of that. Crazy people are crazy. Evil people are evil. Fixing x system will make sure this never happens again. We will endure. Forgive in the midst of anger.

This is a Thing That Just Happened. To those who see it up close, they know it’s not really a story, but the story helps. To those who suffer loss, the story is inescapable, and maybe even crucial. Having a narrative makes Things That Just Happen make sense.

In another time, I’m getting in my first car accident, building my first software program, losing a family member, or making my first trip overseas. Those moments probably shouldn’t be abused, but without a narrative, I don’t know what to say about them, or how to share them with others.

…or maybe this is all incoherent nonsense. Either way, it’s a great story.

A Classy Nemesis Review of “Organ Trail” For iPhone and iPad

Earlier this year at PAX East 2012, I had the opportunity to meet the developers behind the recently released game, “Organ Trail”. A clever take on the classic “Oregon Trail” series (but with zombies), I found myself mildly obessessed with the concept and immediately contributed to the project in order to secure my own pre-order. Now that I’ve had some time to play, I have to say, I’m not disappointed. Take a look at my video review below:

How to Record Your IOS Environment as Simply as Possible

This past weekend, I spent a hefty chunk of time trying to solve a problem I’ve been having for a while – recording video of my iphone and ipad screens to produce video demos via PC. After extensive research, I’ve been able to nail down three methods to record your IOS environment (with all the accompanying caveats):

tl;dr – skip to the summary

Use a specialized cable and/or adapter

There are tons of configurations and apps to wade through when going this route, and all have different levels of functionality and reliability. The idea is to output video/audio from your device to a video capture card or otherwise properly equipped device. Even if you get the right cable for your hardware, you still have to contend with the myriad of apps which may or may not work with said cable on the particular generation of your iDevice and version of IOS. Because of the unmanageable variables involved with this method, I recommend against it.

Update (9-10-2012): If you do decide to go with an adapter, I’d recommend this HDMI adapter. There’s nearly no lag, and the resulting image is crisp and clear. It’s unclear whether it’s an official Apple accessory or not, but it looks good, has a solid build, and best of all, works! Be warned though – apparently only newer devices support it.

On-device recording with Display Recorder.

Display Recorder InterfaceIf you’ve jailbroken your device (you totally should), you have the option of recording from your device itself. There are a few apps in Cydia that achieve this, but the one most commonly recommended is Display Recorder, so I purchased the app for $5 and tried it out. The first thing I noticed was how easy it was to start recording – you just hit the + in the corner and you’re off. The app also allows you to record in one of two formats: H.264/MOV or MJPEG/AVI. One important note: while you will have the option to record audio from the onboard mic, you will not be able to record the system audio. One way to get around this is to output your system audio to an audio recorder via the headphone jack and sync the video and audio later. Display Recorder MenuDespite this limitation, Display Recorder comes with some additional handy features as well. Not only does it allow you to adjust the quality settings of your video output, but it comes equipped with a built-in, unobtrusive, touch/gesture indicator, so your audience will have an easier time following along with your videos. When you’re finished recording, you have the options of adding the video to your Camera Roll, uploading to YouTube, or downloading directly from your phone through a wireless network connection. For $5, Display Recorder is actually a very polished app, and it’s a shame you can’t get it in the Apple app store.

Wireless Screen Mirroring via AirPlay.

If you don’t want to jailbreak your device, this is the way to go. The main limitation of this method is that it will only work on newer IOS devices (iPad 2, iPad 3 and iPhone 4S). There are ways to get around this with hacks or jailbreak, but that’s a whole other ordeal. Anyway, you’re basically taking advantage of the AirPlay screen mirroring functionality to display your IOS device video/audio wirelessly on your computer. When your device detects a compatible AirPlay host, the AirPlay icon will appear next to your volume bar. Tap it to select the host machine and turn the mirroring switch that appears to “On”. This is integrated into IOS, so there is no further configuration needed. While this means you won’t need to download any apps to your device, you will need to run a program on the host computer. Maybe there are a bunch of Mac programs that let you do this (though it doesn’t seem like it), but if you’re using a PC like me, there are pretty much just two options. iPhone Mirroring on Windows 7Both allow image scaling, multiple device connections, and resolution specification (you can even display at a higher resolution than your device). Both also experience very slight image tearing on low-end host machines (or if you have a bunch of processes running in the background). The only real disadvantages to this method are the rare apps that don’t perfectly support AirPlay display and the lack of a touch indicator. The latter is fixable if you use an app like Touch Pose (Free on Cydia – requires jailbreak); you can make your touch points and gestures visible for recording, just like Display Recorder. In any case, here are my impressions of the mirroring software options:

AirServer – $8 for PC / $15 for Mac
The Mac version of this looks much better, but the PC version isn’t great (it’s pre-release software) and only offers support for audio in the alpha build. The displayed image plays at the same average framerate as its competitor, but with significantly more scaling artifacts. There’s no built-in recorder, so you have to use a program like Camtasia or Camstudio to capture the output. About the only thing it has going for it right now is a nicer website and a cheaper license.

Reflection.app – $15 for PC & Mac
This is definitely the better of the two options. Not only is the display image smoother when scaling, but the interface is cleaner, includes full audio support, and even a built-in screen recording tool. The operation is very slick and responsive enough that even speed/reaction games are very playable on bigger screens.

iDemo – $18 for PC & Mac
I may have lied a bit earlier when I said there were only two options. You can use iDemo as well, but I wouldn’t recommend it. Among it’s deficiencies: no audio support, poor image quality, extremely low framerate, no built-in record function, requires a jailbroken device, and a helper app like Display Recorder running on the iDevice (it’s basically a VNC client). Why even mention it then? Well, this works without AirPlay, so you can use this method on older devices that otherwise don’t support wireless mirroring.

Conclusion

Overall, I found mirroring and recording via Reflection.app to be the most pleasant, straightforward experience for capturing my IOS environment. I also enjoy the added benefit of being able to play games smoothly on larger screens (PC HMDI output to a 50″ TV is damn impressive); it performs well enough to play quick-reaction games like Temple Run and Jetpack Joyride without trouble.

Below I’ve included a handy feature comparison matrix for quick reference, as well as short sample clips using each method of recording.

Program / App Cost Jailbreak Required? Records System Audio? AirPlay? * Format Output Sample File **
Specialized Cable / Adapter
(One example)
Varies
($15-$50)
No Configuration Dependant N/A N/A N/A
Display Recorder $5
(Cydia)
Yes No No H.264/MOV or MJPEG/AVI Download
AirServer $8 for PC
$15 for Mac
No Limited Support Yes N/A N/A
Reflection.app $15 for PC or Mac No Yes Yes MP4 Download
iDemo $18 for PC or Mac Yes No No N/A N/A

* (Requires Bonjour. Newer IOS devices only)
** (Samples files produced with the program’s default settings)

A final note: If you are an IOS developer, you can use the IOS player in the SDK to simulate an iDevice. I left this method out however, since it’s not available to most people.