Creating Resumes using LaTeX – templates

I wrote about my current method of keeping my resume organized using LaTeX in this previous post, and I still love it. The combination of keeping things organized with a Google spreadsheet and perfectly consistent formatting using LaTeX means that I can update my resumes at least 10 times throughout the residency application season without breaking a sweat.

LaTeX resume sample output

What the resume looks like

I’ve decided to make a mock resume using the LaTeX template that I am using now and share it with the world. If you like how this looks, you can download the files below. When the resume fills with your information, it will likely look even better.

  1. Spreadsheet to organize the resume. Note if you put a ‘%’ tag in the left-most column, that row will be left out in the final PDF output. This is a convenient way to customize your resume for different audience.
  2. TeX file. There are some personal information fields in the front you should edit infrequently, such as when you change address or add new education diplomas.
  3. This resume template is dependent on the res.cls file, so you should save it to the same folder as your resume TeX files.

If you haven’t installed LaTeX, follow this link to find an installation for your operating system.

I started digging around for a good template for LaTeX resumes, and found this site to be simple and to the point. I adapted my current template from their “res8“.

Like I said before, using LaTeX to build resumes is rewarding but also quite easy to mess up. If you look at the TeX file, it should be obvious where your personal information should go, and how your resume should be copied over from the spreadsheet. Rule of thumb is, the more information you keep on the spreadsheet, the easier it would be to just copy and paste between resume versions.

Let me know if you run into any trouble.

Resume revamped

How do you write your resume?

Most people I know use MS Word and try to maintain the look of a template that they like. I used to use Word as well, and I have a template that I thought was reasonably pleasing to look at.

My old resumes are done in Word. Some lines are starting to get misaligned. With careful adjustment, this can become presentable.

However, there are some obvious problems with using a word processor to edit resumes, due to some inherent characteristics in a resume. Namely, resumes:

  1. Need a moderately complex but highly stable layout to look good. Resumes usually have section headings, job titles, time frame, location, company name, and job description, among other things. They are usually laid out using left, right, and center alignments, bold or italic fonts, and/or varying font sizes. But to look good, the entire resume should have a consistent format. Even if a date is offset by 0.5cm, the resume will start to look sloppy. You can do so by copying and pasting sections to try to preserve a consistent format, but when you edit the text, there is a good chance that the format will be thrown off, leaving you to struggle for ages to make the dates aligned on the right hand side again.
  2. Are constantly updated. You need to add new job items, new volunteer experiences, update the time frames on previous job descriptions, etc. to your resume. You may find yourself in the situation where the delicately designed resumes on Word that you built a few summers ago fall apart like a weathered antique that cannot be tempered with.
  3. Should be tailored. Every time you apply to a job, you should tailor a version of your resume. With Word, you may have to cut and paste items suitable for a specific job from any number of previous resumes, thus creating a mess of slightly different versions that gets more and more cumbersome to keep track.

So I wanted to switch to a system where I can achieve the above with maximal ease. I want to deal with formatting less, and focus on content more. I want to be able to update any section I want without worrying which word should be bolded and which word should have a 11pt font rather than 12pt. I also want to be able to “comment out” unwanted items for any particular job without removing it from my resume, so that while it won’t show up on the finished product, it is still easily accessible on the if I need it in the future. In fact, I want a “Master Resume” where everything I could put on a resume lives, and I just need to pick and choose which items to show up for a particular version and click print.

I explored two options: first is XML/HTML + CSS, which is an improvement over Word but still a bit messy on the content side with all the HTML tags, and the output is a webpage, not an easily printable copy.

So I settled on my old friend: LaTeX.

After a few iterations, I designed a new resume system that I feel very proud of.

1. Content backend. All of my job titles, descriptions, dates, etc, live on an easily readable spreadsheet, on which I can make edits effortlessly. And since this is LaTeX, I can comment out any job item by simply putting “%” in a left column, and that item will not show up in the finished product but it is still available for future use. In fact, I can create a different column of %’s for each version of resume, so that I take one glance and know which job items have been shown in which application.

The columns with content are interlaced with minimal LaTeX syntax, made possible by item 2 below.

For added awesomeness, do this part on Google Docs and edit your resume anywhere!

2. Centralized formatting. I pulled all the formatting up into a method, which means there is only 1 line of code determining which words should be on the left, which ones on the right, and which ones to be indented by how much space. If I want to make all the job titles italic instead of bolded, I only need to change one word. I built on top of the format template found here.

This part I don’t have to edit often, but if I wanted to change how each job item looks, I just need to edit this piece of code and the changes will apply to all resumes.

3. Integration. Now, I just need to copy the spreadsheet with the appropriate selector %’s, paste it onto LaTeX in the appropriate location, and click on generate PDF.

Copied and pasted from the spreadsheet. The coloring is automatic syntax coloring, to help visualize the code.

And then check out the final product for any final touches.

Finished product looks so awesome that I can’t wait to show it to people. Good start for any job application if you ask me.

I would be happy to share the code and spreadsheet I shared the TeX code and spreadsheet in this follow-up post, although this is a highly breakable system because there are countless ways to break it. You just need to miss one tag on the spreadsheet to be entirely stuck.

And of course there is the intimidation factor. All these code-looking things can make those with faint of heart hesitate.

Therefore, if there is market, I think it would be wise to make a more robust and less flexible software that allows the user to enter values in a spreadsheet, and spits out PDF files on the other end, and save everyone from the code.

You said there are lots of software like that?

Well, not exactly the way I made it, I’d bet 🙂

Deleting or importing iPhone and/or iPad photos quickly on a Mac

There is a completely painless way to import and delete photos on your iPhone or iPad, if you use a Mac. Now, I have not tested this on all Macs, but I suspect most Macs would be able to do it.

1. Connect your iPhone or iPad to the Mac.

2. Launch the Image Capture tool by typing “Image Capture” in the Spotlight search bar (the magnifying glass found in the top right corner of the entire screen).


3. Import and delete as many or as few photos from your iDevice as you’d like!

Productivity hints:

Command + A is select-all, allowing you to select all of the photos and movies shown.

Pressing Command + mouse left-clicking allows you to select multiple items.

Shift + mouse left-clicking allows you to choose all photos within a range.

That should do it.

What can I do with all these CDs?

Continuing with the theme of cleaning, I want to talk about one of the many headaches that I believe many of you share, or will share when the same problem inevitably arrives: what do I do with all these dam CDs?!

In the foreground, you can see a slanted pile of what looks like a piece of well-formed poop. This CD poop is the result of years of accumulation of hardware drivers, burned movies that were only played once, outdated music CDs that will make anyone cringe if played ever again… I believe that this CD poop will be even more impressive had not been for the invention of iPods, affordable USB sticks, external harddrives, and wireless home networks.

What should I do with these shiny, pretty pieces of garbage? My mom was about to throw them out, but I saved them from the garbage bag and started to google “used CD diy“.

But this is not even a problem compared to what’s in the background: approx. 200 blank CD-Rs waiting to be used… but for WHAT?

I’m not gonna sit here for 5 minutes to burn 10 songs to the CD and play on my CD-R playback systems; I have iPod and speakers. I’m not gonna burn one movie to one CD and watch it once; I can hook the TV to my computer. I’m for sure not going to backup my files using these CDs… just imagine organizing 600 CDs and trying to find anything in this mountain.

So now I have two buckets of perfectly fine, shiny CDs that I just can’t think of a use for. I don’t want to waste my time and energy trying to sell them on Craigslist (I don’t sell anything below $10 because it’s just not worth my trouble, and blank CDs are worth… wait what? People are actually selling them for tens of dollars?

Well ok. I think I just found out what to do with these outdated tech toys 🙂

But seriously… what are people still doing with these?

How to extract audio from video files (and crop it)

If you are using Windows, and you want a quick, no-installation required method to extract audio from a video (and you don’t worry about the sound quality very much), then this tutorial will help you.


Tina wrote a song and she played it for me the other day. It sounded great! But she doesn’t believe in writing down music scores, so I recorded her singing on a video camera.

And then I thought: wouldn’t it be great if I can extract the audio from this video clip, and play it on my iPod?

But the internet is surprisingly frustrating for this. The top searches all asked me to download new programs that look less than legit, and certainly I wasn’t going to get a pro software to do this simple task. Thankfully, after a few minutes of fumbling around, I figured out a way to do it with Windows Movie Maker (comes with most Windows installation).


1. Start Windows Movie Maker. If you can’t find it easily, try searching for it if you are using Vista, or try holding the “Windows” key on your keyboard and press “R” at the same time, and run “moviemk”

2. Click on Import > Videos. Choose the video file from which you want to extract audio.

3. Drag the video onto the Audio/Music tract. Important: don’t drag it to the Video tract. We want to extract the audio, remember?

4. (Optional) If there are bits of the audio clip that you want to cut out (e.g. nervous mistakes in the beginning or audience applause at the end), point the green cursor to where you want to make the cut, and click on “Split”

5. (Optional) Delete the bit you don’t want.

6. Finally, save the audio file by File > Publish Movie. And follow the default selection.

And you should have the audio file! It will be in WMA, so iTunes will do a quick conversion automatically when you import the file onto an iPod.

Now it’s up to you if you want to do what I did, and that’s listening to the new song 100 times.

How a slowly crawling window made my day

What would you do if you screw up your girlfriend’s brother’s computer because you think you are super awesome with computers but actually aren’t?


I was hanging out at Tina’s place yesterday and Mark showed us a website that came up in our conversation on his desktop. “Here, you can see it on the TV,” he turned the TV on.

“The resolution is a little weird, but oh well,” he noted. It’s a wide screen TV, and a resolution of 800×600 does look a bit odd. It’s on cloned dual monitor mode with the computer monitor.

Being a smartass comp sci major as I am, I offered to tweak around to see if I can make it show up. I soon figured that cloned monitors must share the same resolution, and although something like 1280 x 720 showed up really well on the TV, it looks like someone squashed the screen from both sides on the computer monitor.

So I started to mess with “Extend my window to this monitor” function. Bad decision.


Somehow I managed to extend the monitor, set the TV to primary monitor, and set the resolution such that the TV goes blank. And that left me with a secondary monitor to play with – a desktop picture with nothing else on it.

If this doesn’t sound bad to you, I’ll describe the problem a bit more. The way to change the display setting back is to open Display Settings again, but when you open it, it appears on the primary screen. Which is totally blank. It’s like trying to fix your glasses with your eyes closed but worse: you don’t even know where your glasses are.

I tried dragging random things from the blank screen to the secondary monitor. Nothing. I tried unplugging the TV and restarting, but the computer wasn’t smart enough to detect an unplugged monitor. I tried to boot into Safe Mode by pressing F8, but somehow that computer refused to do it.

And I went home, defeated.

Then I came back for Round Two the next morning. This time I called my best backup: the Internet.

After an hour of failing to boot into Safe Mode using F8, trying to use hotkeys on Display Settings because I can’t see it, trying to change msconfig blindfolded, trying to boot Safe Mode from DOS… none worked.

Finally, an idea struck. “If I can only move a window without using the mouse…”

And Google gave me the solution:

1.       Press Alt + spacebar –  this opens the window commands such as Restore, Move, and Close

2.       Press M – this selects the Move command

3.       Hold onto the direction arrows to move the window

I have never been more excited to see a Display Settings window when it slowly crawled from the emptiness of the primary TV screen into view.


And that is how an A+ comp sci student spent an hour to figure out how to move a window from one monitor to another.

Welcome to the WP family, Josh!

Josh is a long-time comrade in programming of mine. He is the mastermind behind the crawler for and the current leader in hours-spent of our TimetableBuilder project. More than just an awesome teammate who keeps the project alive, he is also an avid programmer who inspires me through countless mind-dazzling endeavors. These include computer vision processing (ultimate goal of playing Counter Strike with two pieces of colored paper), robotic arm that can be controlled through the Internet (goal is to feed goldfish from his office), cluster computing (to solve an NP-complete puzzle for grade school students), and many, many others.

Last night, after he showed me his latest beta project: a monitor for reznet quota that warns the user who decides to download more than 6 Gb of stuff in one day, Josh said “I think I want to start a blog. Where do I start?”” was my answer.

A few hours later, Josh has!


I also wanted to start a blog that exclusively contains my programming stuff, but that didn’t happen because my time is like a lost desert traveller’s water bottle after being in the 37 degree sun for 3 days and an epic chase by a lion herd. Not that much left. (To show you that I’m not bs-ing, here’s the link:


So I’m glad that Josh is jumping on to the blog wagon, and perhaps, he will inspire me yet again, this time into tech blogging 🙂


“Someone took javac and javadoc on WordPress and Blogspot without using these blogs.”