Well, this is embarrassing. There should be an image here. Great picture, too!

Ray Tracing Means Realistic Lighting

Published: 18 days ago

Ray tracing is a way of simulating lighting as realistically as possible. In this project, I implemented some of the algorithms that make ray tracing both realistic and efficient.

Curved Surfaces: How do They Work?

Published: a month ago

Computers hold discrete information - ones and zeroes - so how can the likes of Pixar generate beautiful curved shapes? Bezier surfaces and polygon meshes are the data structures that allow programs to generate close estimations of smooth shapes. It was incredibly interesting to get into the details of these data structures.

Malthusian Population Growth in Matplotlib

Published: a month ago

In my final semester here at Cal, I am taking ECON C175: International Demography. It's a really interesting exploration of theories that try to explain trends in population growth and per-capita income. I made a particularly unique plot from Swedish census data that you might enjoy.

Navigating the Graphics Pipeline

Published: 2 months ago

Graphics concepts are fascinating! The project brought together many different math concepts (mostly linear algebra) to answer questions like "how do you map a texture to a surface?" and "how do video games efficiently render textures that are far away?". For this project, I dipped my toe into a very large (and at times, confusing) codebase and was able to fill in skeleton code to do very cool things. It gives me real appreciation for those who developed the first graphics engines without prior code.

Angular2 Lessons Learned

Published: 10 months ago

During my first week or so at IBM Watson, the UI team was working out whether to use React.js or Angular2. The design specification wasn't quite agreed upon yet so I had a chance to play around with tutorials for both. Here's what I learned.

Video Keyword Auto-Cuts

Published: a year ago

For the final project for the excellent class, CS194-26, Zachary Zeleznick and I wanted to stretch ourselves. We worked tirelessly through the final weeks of the semester to write a script that does something amazing. Given a video file, and a key word or sentence, our code allows the user to programmatically generate a "supercut" where the words spoken in the video match the requested text.

Page Generator

Published: a year ago

On this page you'll find a little utility that helps me submit html files as JSON objects. It acts as a kind of WYSIWYG editor at the same time. That way, I can finish writing a blog post in a plain html file and check that it looks right before inserting it into the blog structure of my website, which runs on Node.js.

Pie Chart Over Time

Published: a year ago

Essentially, the client wanted a pie chart whose value changes according to a slider bar in the UI. So, for example, the pie chart might initially show data for 1995, then you can move the slider so it shows a data set for 1996, 1997, etc. This code does that.


Published: a year ago

Here you'll find my calendar in multiple timezones.

Auto-Stitching Panoramas

Published: a year ago

For the culmination of all that I had learned in CS194-26: Image Manipulation and Computational Photography, I wrote the code to seamlessly blend (okay, there are some seams) multiple images of the same subject based on the actual content of the image. Pretty amazing, right? Check out how I did it.

Colorizing 1900s Russia

Published: 2 years ago

For CS194-26, a class I took about image manipulation, our first project was really neat. Basically a guy in the 1900s in Russia knew that there was no colour film yet, but he took series of 3 photos, just filtering out red, green, and blue. And now with modern technology, we can take those images, line them up, and turn them into colour images. So for project 1 I wrote code to automatically line up the images based on an algorithmic measure of similarity called Normalised Cross-Correlation. We had to submit the project as a web page anyway, so I figured I might as well share it!

CS Scholars FAQ

Published: 2 years ago

After answering a lot of questions on the CS Scholars' Program, I just went ahead and made this FAQ page with my copied and pasted answers. Hope it helps someone.

WebDev for TRUST Center

Published: 2 years ago

Freelance work so professional and aesthetically pleasing that they asked me back twice.

CS61c: Proj4-2 Spec

Published: 2 years ago

Out of frustration with an unclear project description in CS61c at Cal, I rewrote and rehosted the entire thing.

CS61c: Proj1 Spec

Published: 2 years ago

In our machine structures class at Berkeley, we saw that the project specification page was rather ugly. Out of that sprang a fun and rather pointless competition to build the prettiest and most helpful version of the spec.


Published: 2 years ago

All of Ollie's projects in one place? What a treat.


Published: 2 years ago

Wow! What a résumé. I'd love to hire him!

Connect Four

Published: 2 years ago

Pure strategy. Pure JavaScript. You simply cannot win against my algorithm.

Evernote Hackathon: Annot8

Published: 3 years ago

We won a hackathon for this!

The Knight's Tour

Published: 3 years ago

A fun and interactive solution to the Knight's tour recursive problem.


My name is Ollie O'Donnell. I study Computer Science at UC Berkeley ('17) and work as a Software Engineer for IBM Watson.

Coming here all the way from Australia has certainly been challenging, but it's worth it to pursue my dream.

PS: It's easy to hire international students. Click here to find out how!


Calendar (Pacific Time)

Other Timezones: