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

Making SVGs work with CSS

Published: 2 years ago

I recently had a ticket to make the bell "fill in" when the user's mouse hovers over it. There was a simple CSS solution, but it required re-formatting the SVG to "play nicely" with the CSS attributes "fill" and "stroke". This is a simple explanation of the problems with the SVG when I received it and how to fix them.

Post-Earthquake Structural Evaluation System

Published: 2 years ago

After a major earthquake, inspectors and engineers risk their own safety to inspect buildings. This semester I worked with four talented civil engineers to develop an automated replacement to this process. Using an easily-installed, scalable, and web-connected sensor network, we can estimate building deformations following earthquakes, reducing risk by giving inspectors a new tool.

Dwinelle Navigator

Published: 2 years ago

Dwinelle Hall is a notoriously labyrinthian building on the UC Berkeley campus. Our project is a browser-based 3D representation of the building, complete with interactive directions between the many entrances, exits, and rooms.

Realistic Lighting Using Ray Tracing

Published: 2 years 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: 2 years 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: 2 years 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 years 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: 3 years 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: 3 years 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: 3 years 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: 3 years 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: 3 years ago

Here you'll find my calendar in multiple timezones.

Auto-Stitching Panoramas

Published: 3 years 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: 4 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: 4 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: 4 years ago

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

CS61c: Proj4-2 Spec

Published: 4 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: 4 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: 4 years ago

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


Published: 4 years ago

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

Connect Four

Published: 5 years ago

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

Evernote Hackathon: Annot8

Published: 5 years ago

We won a hackathon for this!

The Knight's Tour

Published: 5 years ago

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


My name is Ollie O'Donnell. I graduated from UC Berkeley with a degree in Computer Science 2 years ago and started work as a Software Engineer for IBM Watson 2 years ago.

I think we are experiencing a golden age during which software and hardware is transforming the world, and I'm excited by the idea that I can be a part of such a revolution.

I've decided to use my website to share my favourite projects. I hope you enjoy it!

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


Calendar (Pacific Time)

Click here for the dedicated calendar page.

Other Timezones: