Quote of the Week
"People outside tech are like, 'OMG, AIs will take over the world and pwn us all!'
People inside tech are like, 'How do I get this projector to work?'"
-- Mike Hoye, possibly paraphrased

Botond Ballo

About Me

I am a software developer, with a degree in Computer Science from the University of Toronto. I currently work for Mozilla.

My vision is a world where programmers can write code whose structure corresponds to the structure of the problems they are trying to solve. I believe this can be achieved by improving our programming languages and software development tools.

I have a blog, but it's fairly outdated at the moment.

My email address is  

Current Projects

Timetable Generator

A little utility that helps you optimize your timetable at the University of Toronto. The program can show you all the possible timetables you can have for your courses, and help you choose the one that suits you best.

I found this program very useful when doing my course selections. I hope you do too.

Timetable Generator API

The Timetable Generator API exposes the functionality of Timetable Generator as a software library, allowing anyone to write software that uses this functionality. Developers can use this to make their own front-ends for Timetable Generator, including web front-ends.

The Timetable Generator API is now open source!

Timetable Generator Web Application

A web version of Timetable Generator, built on top of the Timetable Generator API. This is currently in BETA status and may be unstable or buggy. If you encounter a problem with it, please report it to me, and use the desktop version until the problem is fixed.

Botond's Collection of Common Utilities

Botond's Collection of Common Utilities (BCCU) is a C++ library containing a collection of generally useful utilities. Timetable Generator and the Timetable Generator API use BCCU in their implementation. I have released BCCU as open-source in the hope that it will be useful to others as well.


Boost.Range is a C++ software library that allows for greater expressiveness and efficiency when writing code that processes collections of data. It bears some resemblance to LINQ in C#. Boost.Range is a component in the prestigious and widely-used Boost C++ libraries.

I have been helping to maintain the Boost.Range library since November 2012.

Eclipse CDT

Eclipse CDT is a powerful C++ IDE. It is unique in that it parses and semantically analyzes the code you are editing, much like a compiler front-end would. It then uses the information gained in this way to provide advanced features, such as semantic code navigation and search, intelligent code refactoring, and live notifications of compiler errors in the code. I have been using Eclipse CDT as my C++ IDE since 2008.

Unfortunately, Eclipse CDT's C++ parsing and semantic analysis isn't perfect (in its defense, C++ is a notoriously difficult language to analyze) and occasionally it presents you with false positive compiler errors, or inaccurate navigation/search results. Since mid-2010, I've been systematically reducing false positive errors that I encountered in my C++ codebases and reporting them as bugs to the Eclipse CDT project. Around late 2012, I started fixing some of these bugs myself. That's the wonderful thing about an open-source project - you can fix bugs that annoy you yourself, and the entire community of users benefits from it!


The Binary Application/Storage Interchange Library (BASIL) is a C++ library that allows writing down specifications of binary file formats in a declarative form using a domain-specific language embedded in C++. Based on these specifications, the library generates code for reading/writing binary files in the specified format to/from appropriate data structures. BASIL is currently in the early design stage.

Past Projects


TableDroid is a productivity tool for professional poker players that allows them to play many tables at once by automating away the overhead of layout management and context switching, thus allowing them to focus exclusively on their games. As a third-party tool that is compatible with dozens of different kinds of poker client software, TableDroid involves many interesting technical challenges in tight operating system integration, window management, layout management, and synchronization. I provided consulting services to the TableDroid team from January 2012 to January 2013.

Woznew (formerly "Project Flanders")

Woznew (pronounced "what's new") is an online social networking website that leverages cutting-edge research in social networks to provide users with a superior experience. The project is led by Professor Peter Marbach and his graduate student Larry Zhang and is in the final stages of development, with a public release expected very soon. I was part of the Woznew development team for 2 years (January 2010 to January 2012); during this time I worked on developing a distributed, highly scalable backend that is capable of processing large amounts of data in real-time.

Bidirected Graph Layouts

During the summer of 2009, I developed an algorithm for producing a visually appealing screen layout for bidirected graphs used in DNA sequence assembly, under the supervision of Professor Mike Brudno and his grad student Nilgun Donmez.

This work was open-sourced and used to be available here, but no longer seems to be. If you are interested you can email me for a copy of the code.


Basie is a a web-based software project management system, meant to be an improvement to Trac. Basie is developed by a team of students under the supervision of Dr. Greg Wilson of the University of Toronto.

I was part of the Basie team from January-April 2009.

The development of Basie has since been discontinued.


What follows is an indiscriminate collection of things I like/things I have found useful.
Skip ahead to University of Toronto, Programming, Useful Free Software, Games, or Music


Note: if you have a site and you'd like me to link to it, please let me know, I'd be happy to.

Maxim Mai
Chris Maddison
Boris Braverman
Shivam Goyal

University of Toronto

University of Toronto
Faculty of Arts and Science, in particular course calendar and course timetables
Computer Science Department
Mathematics Department
Professors I've worked with: Greg Wilson, Mike Brudno, Peter Marbach, Eric Hehner.
Clubs I've been part of: C# Student Club, UAIG.


C++, my language of choice for most things
Java and C#, other popular programming languages
python, a different but cute programming language
Scheme, Haskell, and Prolog, three very different and very interesting programming languages
C++11 (formerly called C++0x), the new standard for C++. I eagerly await its widespread adoption
gcc, the ubiquitous open-source C/C++ compiler
MinGW, a Windows port of gcc which is superior to the more common cygwin in many respects
clang, a new open-source C/C++ compiler which aims to be faster and better than gcc (if it succeeds, I will be impressed)
boost, a large collection of high-quality, cross-platform C++ libraries
wxWidgets, a robust cross-platform GUI library for C++ and python
eclipse, a powerful IDE for a wide variety of programming languages, including C++
Notepad++, a versatile text editor for Windows
Kate, a versatile text editor for Linux
vim, a command-line text editor, useful for when you have to work over ssh without X forwarding (and only then). Don't expect to learn how to use it in a day.
PuTTY, an ssh client (and related tools, such as scp) for Windows
A good C++ STL reference, and a more general C++ standard library reference
Stack Overflow, an excellent place to get any programming question answered
CodeGuru Forums, another excellent place to seek help with C++ and other programming-related problems
Joel on Software, an insightful blog about programming and the software business
C++Next, an interesting blog about cutting-edge C++ techniques
Mercurial (also called 'hg'), a popular and powerful version control software
Subversion, an older and less powerful but still popular version control software
xp-dev.com, Free Subversion and web hosting
BitBucket, Free Git and Mercurial repository hosting

Useful Free Software (not related to programming)

Note: With apologies to the FSF, for purposes of this section, "free" means "gratis".

Dropbox, a convenient tool for transferring files between computers
Pidgin, a customizable, multi-protocol instant messaging client
uTorrent, a versatile file-sharing program
VirtualDub, a useful video processing utility
GraphCalc, a 2D/3D mathematical graphing utility
FreeFileSync, a great utility for performing backups
WinDirStat, great for finding out what the heck is taking up all the space on your hard drive
AutoHotKey, a desktop automation utility for Windows - a must-have for people who use computers enough to realize that moving your hand from the keyboard to the mouse takes way too long


Back in the days when I had time for gaming, I enjoyed real-time strategy games like Starcraft (whose sequel is now out), WarCraft, and Rise of Nations


Some awesome bands:

Within Temptation
After Forever
Sonata Arctica
Blind Guardian (in particular, check out this song!)