Rafael Baptista
Packing Data Files into Compiled Executables

Packing Data Files into Compiled Executables

May 31, 2013

Have you ever wanted to distribute a compiled binary that included data files packed into the executable file? Embedding a Data File Before Compilation You can do this before compilation by encoding the file into a binary representation, and then…

Generating a Cross-Platform Unique Machine Fingerprint

Generating a Cross-Platform Unique Machine Fingerprint

May 31, 2013

Sometimes you need a program to know if it is running on the same machine. There are a lot of purposes for this, but a common one is if you are writing a licensing module. You want to generate a…

Fixing File Descriptor Leaks in Long-Lived Servers

Fixing File Descriptor Leaks in Long-Lived Servers

May 21, 2013

So you’ve created a socket server that opens sockets over TCP/IP. After running it for a few hours under heavy load the operating system kills your process with the message “Too many open files”. What happened? The problem On most…

Implementing Read/Write Locks Portably

October 13, 2012

In multi-threaded programs you often find a usage pattern where many more threads need to read a shared resource than write to it, and where reading the resource would be thread-safe without mutexes if it is not being written. (…

Detecting Crashes in Multi-Threaded Programs

October 12, 2012

Detecting crashes in multi-threaded systems can be difficult. Often the crashes are difficult to reproduce, and when they happen the faulty operation could have happened many calls ago and so the you don’t get a stack trace at the time…

Get USB Drive Serial Number on Windows in C++

June 1, 2012

Getting the serial number of a USB device in Windows is a lot harder than it should be. ( But it’s a lot easier than getting the USB serial number on Os X!) It is relatively simple to get USB…

Implementing Portable Threads and Mutexes

May 26, 2012

Implementing a portable framework for multi-threading doesn’t have to be difficult or error prone. With the right framework, implementing multi-threaded programs can be pretty simple, and you can hide all the platform dependent functions. You can also implement your threading…

Link Errors Compiling MySQL C++ Programs on 64-bit Windows

May 9, 2012

I’m starting to code up a simple MySql connector class. Here is the code for the class. First the header:

Generate Stack Traces on Crash Portably in C++

May 5, 2012

There are three basic steps to getting this done, trapping signals, getting the stack frames, and then demangling the c++ symbols. Trapping Signals When a program crashes the operating system will sent it a signal, to give it one last…

About Me

My name is Rafael Baptista. I lead teams who build iconic digital products used by millions of people every day.

I'm currently working on an online travel agency called SkyMonde.

I was previously Head of Product at KAYAK. I built a very successful multi-brand SEO program for them that also included brands like OpenTable, Momondo, CheapFlights, Swoodoo, Checkfelix, and HotelsCombined.

I occasionally advise startups on SEO, the most successful of which is Insurify.

Previously I was CTO of Mimoco and worked on SEO at TripAdvisor focused on flights and vacation rentals.

For many years I was a game developer, helping make games for Harmonix, Apple, THQ, LucasArts, Nickelodeon, Ubisoft and many others. My biggest selling game was the Rockband Series.

I've worked on speech recognizers at Kurzweil, and genome mapping at the MIT/WIBR Human Genome Center.

I wrote the web server that this site runs on.

Social

linkedin icon stackoverflow icon

Projects

SkyMonde

An online travel agency

Demangler.com

Automatically demangles gcc C++ symbols

KJam Build Tool

A build tool like make or bjam