¡Ajipirijou! josé albornoz's blog

How I built my own Twitch-Plays-Pokémon: Part 5

I gave this talk at Baruco 2014.
I'm publishing it now as a series of blogposts. Make sure to check out the first part.
You can find the slides in my speakerdeck. You can also see the recording in YouTube.

The Realization: Simpsons already did it

After rendering the first image I felt like the king of the world.
I was going to finish the emulator in a week's time for reals and this was going to be the first GameBoy emulator written completely in Ruby.

If you visit the DHH Soundboard and click on "Ruby Everywhere" you'll see how I feel about the emulator.

Just to be extra-sure that it was the first emulator written in ruby,
I decided to search in github, you know, just in case.

Headed to GitHub and typed "GameBoy emulator". 237 results. In the sidebar you can filter by language, but Ruby wasn't on the list.
Chose Javascript and changed "JavaScript" in the url to "Ruby".

Hit enter and that's when I see it.

RampantMonkey's emulator

Do you remember the simpsons episode when you can see ralph's heart being broken in slow motion? That's exactly how I felt.

This rampantmonkey guy followed the exact same tutorial that I was following, he finished it and he even had some graphical interface for it.
It was perfect.

RampantMonkey's emulator

The realization

It took me some time, but I realized that all the time I devoted to the emulator was actually worth it.

I learned tons of things that I would have never learned by my own

I never learned them not because I wasn't able to, but because I was never pushed to.

I got out of my comfort zone

I've always wanted to give a conference talk, but I always had a lame excuse to avoid doing it. This time I ran out of excuses.

It was actually quite fun!

I haven't had a pet project that stays in time pretty much since I started working full time.

It's so easy to fall into the "oh, I'm too tired, I'll start tomorrow" trap that I never managed to maintain a small project.

I can even apply some of this stuff to my work!

Ok, I'm probably not going to need a GPU from the late 80's for my startup, but dealing with bitmasks and knowing how hexadecimal really works can be quite useful, even for a web developer.

It's not something you're forced to learn, but it can help you solve problems in different ways.

I also learned the meaning of "Conference Driven Development"

Even though I worked on the emulator for several months, the actual content of this talk only was prepared a couple of weeks before the conference.
Working under pressure and being organized were never things I shined at, but had to learn so I can be standing here today, giving this talk.

Sometimes you need the right push

I'm very grateful that I went through the development of this emulator, because none of the things I mentioned would have happened without the right push.
In this case, it was all about going through the process, rather than the result.

Hey Arnold's Wisdom

How I started Freelancing

As a closing story, I want to share the process I typically had as a freelancer, when I was about 14 years old.

Somebody would come to me asking for a website with specific features.
I had no clue how to do them, but promised to do them nonetheless.
I had to figure out how to deliver them. Did so and every time, I learned a bit more.

Eventually I stopped over promising, because I already knew how to do what I was being asked.
I worked this way because I love programming challenges, and because I think there's no better way of learning than by doing.

And that's the core message of this talk:

Wear the hacker hat
write irresponsible Ruby and
get back the passion that got you started in programming.

<- Read Part 4