Skip to content

Software

I starting hacking around with computers when I was 12 or 13 years of age. I have written well over 100 programs, many of them significant in size and scope. After all these years, I’ve collected quite a portfolio of software work. The following lists a selection of my favorite or significant works.

Holdem Online Poker Software Pocket Kings
For several years, I worked for Pocket Kings Ltd., the company that provides the software to one of the biggest online poker sites. I work on the core game server, the piece that handles all game-play. It is a massively parallel high-performance system capable of securely serving poker games to more than 200,000 simultaneous players, in real-time. It is definitely one of the most challenging pieces of technology I have worked on to date.
Holdem Poker Software Games Poker Academy
I worked on Poker Academy from its inception in 2003 until mid 2006. Poker Academy is written in Java, and is built around the Java poker engine I wrote during my time with the UofA Computer Poker Research Group. Poker Academy is a commercial product that provides a classy experimental playground for Texas Hold’em players to hone their skills. It features advanced artificial intelligence, comprehensive statistics and hand evaluation, online play, a tournament clock, and more. See also: my page on Poker Bot Artificial Intelligence Resources.
CRON-o-Meter
CR (Calorie Reduced) diets require a lot of information to perform optimally. In order to restrict caloric intake, but remain healthy, users of the diet must track their vitamin, mineral, and protein intakes with great care. CRON-O-Meter is an application that will take into account good usability design and dense functionality. It will provide diet advice, track consumption and exercise, and generally assist in all aspects of a CR diet. CRON-O-Meter is free and open source (Java), and cross-platform. The new web version is even more advanced than the stand alone version, and is one of the best nutrition tracking / calorie counting tools out there for serious health afficianados.
Hi-Res Buddhabrot Rendering
When I learned of novel way to render the mandelbrot set probabilistically, naturally I had to write my own buddhabrot program. It’s called the ‘Buddhabrot’ because it generates an image reminiscent of the meditating buddha crossed with a space nebula. The result of my program is below (click image for a much larger high-res version). The image is the result of a few billion pixel exposures. It took several hours of CPU time to produce using a distributed cluster of computers. I recently posted The applet and source code.

Mandelbrot Set Java Applet 

This is an old Java applet I wrote to explore the Mandelbrot set. It’s built on top of a plotting library I wrote. Using this graphing engine, I also created a flythrough movie that dives deep into the mandelbrot set — it’s very trippy. Click to view / download the quicktime movie (7 Mb).


Newton’s Method Java Applet 

Another old Java Applet of mine, demonstrating the convergence of Newton’s method for finding roots. Each coordinate represents a different starting point for the newton’s method algorithm. The color is determined by which of the three roots the algorithm converges too, and the shading shows how fast it converges. It’s built on top of my Java graphing library.


Eight Queens Java Applet 

This is an old Java applet I wrote to demonstrate basic depth first search on a classic toy problem. To solve the eight queens problem, you must place 8 queens (black squares) onto the chess board below. No queen can be attacking any other queen. (A queen can attack all cells on its vertical, horizontal, and diagonal lines of sight). The problem can be solved with a brute force method. Using recursion, the board can be solved from the top down, trying all possibilities and backtracking (known as a depth first search).


Aging Life Java Applet 

This is the very first applet I wrote, when first learning to program in Java in 1997. It’s a straight-forward implementation of John Conway’s Game of Life, but with a twist. The cells age and eventually die. Each cell is colored to represent it’s age.


BioGraphy: Evolutionary Image Explorer
BioGraphy is a java application (not an applet) which allows a person to breed and evolve images. With BioGraphy you can visually explore the genetic algorithm and create works of art at the same time. This was inspired by the work of Karl Sims who developed an amazing program in the early 1990s which allows one to breed images in open-ended evolution. His software could draw amazingly complex and beautiful images. 

In 1999, my Software Engineering course required a large project in teams of six students. Together, we wrote BioGraphy, an art-evolving program based on genetic programming. It could also increase rendering speed by delegating render jobs to clients over a network. I also wrote an essay on the topic of Evolution of Art by Aesthetic Selection for an undergraduate philosophy course. This project also uses the graphing library I used in my fractal applets.


SpazAmazons 

I was exposed to the board game Amazons at the UofA GAMES Group. I really like this game, so in 2003 I wrote a networkable amazons program in Java. It also includes an endgame solver for calculating the final score. I never really cleaned it up and packaged it for release, but you can
download the zip file
and run the jar file if you have Java installed.


 


UofA GAMES Java Applets 

During my undergraduate days, I worked with the UofA GAMES Group. I wrote three Java applets for games being researched by the group: Poker, Hex, and Lines of Action. I didn’t write the Artificial Intelligence for Hex or Lines of Action — just the web interfaces. I spent most of my time working on Poker — both the online server and the AI (pokibot) which later became my MSc. Thesis Topic. The Online Poker Server provided a place where Texas Hold’em players could connect via the applet and play against the pokibots and one another online. It provided a great way for us to test our poker AI research against real human players.

 

Bioinformatics Software
When I started at BioTools Inc. in 2002, it was focused exclusively on Bioinformatics software. I programmed there mainly in Smalltalk, and some C. I worked on several of their products (Genetool, Peptool, Chromatool) and various contracts. 

In 2000, during my MSc., I did some work on a bounded dynamic programming algorithm for optimal pairwise sequence alignment. It builds on the Needleman-Wunch dynamic programming algorithm, but adds pruning of the DP-matrix. This approach marries the benefits of A*’s pruning with dynamic programming’s low overhead. Linear space versions are discussed as well in my paper:

Aaron Davidson. A Fast Pruning Algorithm for Optimal Sequence Alignment. Proceedings of The 2nd IEEE International Symposium on Bioinformatics & Bioengineering (BIBE’2001), November 2001.

In 1998 I worked for the UofA Dept. of Medical Genetics, and wrote a web-based sequence database for the lab’s work on Chromosome 14, and a Macintosh contig assembly map program called ZapMap.

Vastmind

Vastmind & Distributed Computing
In 2000, myself and some others tried to start up a grid computing business. We built a prototype in Java and had just started shopping it around for venture capital when the tech-bubble popped. The project was mothballed, although I used the Java system for personal use many times over the years (Eyeboard, Poker AI, Buddhabrot, BioGraphy). No company has yet to be successful with that grid computing business model, so it’s just as well that the project was short lived. 

Later that year during a graduate course on Parallel Computing, I wrote a virtual network memory system in C. This library allowed a program to use virtual memory stored on a cluster of distributed computers over UDP. A fast Ethernet network meant virtual memory was an order of magnitude faster than disk-based virtual memory, and it allowed 64-bit addressing for very large memory-bound tasks.

Aaron Davidson. Solving Games with Distributed Computing: A System for Network RAM. University of Alberta Technical Report. 2000. [PostScript File]


SCS Connect Four 

Written in C for Macintosh (Classic) in 1996. It played Connect Four against several animated robotic opponents. It had nice graphics for its day and a wide range of artificial opponents of varying skill level. It probably marks my first foray into classic artificial intelligence.


SCS Mines 

Written in C for Macintosh (Classic) in 1995. A very faithful port of the Windows Minesweeper game. In 1997 I also wrote a fairly sophisticated minesweeper solver as a project in a 2nd Year Algorithms course. It could solve a high percentage of minesweeper problems.


SCS Snake 

Written in C for Macintosh (Classic) in 1995. The classic snake game where you avoid obstacles, which includes one’s ever-growing tail. It also featured skins to change the graphics and sounds.


SCS Mad Libs 

Written in C for Macintosh (Classic) in 1996. MadLibs is a program that simulates the old party game of the same name. In the game, players are asked to pick a series of words from certain categories. The words are then used to complete a story that has certain key words missing. The results are often hilarious! Not only can SCS MadLibs prompt the user for words, but it can also generate stories automatically by choosing words from its editable dictionaries.

Scrungle
Written in C for Macintosh (Classic) in 1994. I was originally inspired to make this game after playing some little windows game at school — I forget what it was called but it had something to do with rats. In Scrungle, you are dropped into an arena with killer robots, worms, turtles, and tornadoes. Each enemy had a different path-finding algorithm. Like pac-man, if they catch you, you’re dead. You can push blocks around, and attempt to trap and finally squish the enemies away. I was in the 10th grade, so this was quite a large undertaking for me.
Planet Ferak 

Written in C for Macintosh (Classic) in 1994. This was sort of a missile-defence style arcade game where you play anti-aircraft gun to protect your planet against spaceships and the like. It featured 8-bit color sprites. I never did release it.

Amitlu
Written in Pascal for Macintosh (Classic) in 1993. This was a HUGE (ie. overambitious) attempt to make a RPG (styled after Dragon Warrior). It was a tiny screen with god-awful mouse-drawn graphics that didn’t tile properly. But it was fun. I had about 3 scrapbooks full of story, game details, and maps. This was in the 9th grade. Needless to say, I did not ever finish this project.

9 Comments

leave a comment
  1. Martyn Hall / May 29 2010

    I’ve neen using the cron-o-meter for a few years. I think it is a fantastic product and has helped me choose foods which are more healthy for me.

    I would like to se a mobile application for Symbian which i can use on the move with my nokia which will synch to the pc. I believe an iPhone app will be very poppular.

    Kind regards.

    Martyn

  2. Robert Williamson / Jul 11 2010

    Hi Aaron, I was wondering if you have ever heard of Harley Pasternak?

    He’s a fellow Canadian with a M.Sc. in exercise physiology and nutritional sciences from U of Toronto. I’m reading his book called the 5 Factor Diet. I love cooking and his food recommendations caused me to look for a program that would track the nutrients in food so I can put together the protein, carb, fiber, and fat intakes he recommends. I also thought that both your products are very complimentary to each other. I look forward to using Cron-O-Meter, thanks for making it.

    Robert

  3. Michele / May 19 2011

    Have been using Cron-o-meter for a while – THANK YOU! Don’t know if you offer support for a free program, but am hoping you know of a work around so here goes.

    I recently uninstalled old Java before installing update, as suggested on Java site. Now Cron-o-meter won’t open citing that I don’t have Java. Have downloaded and installed Cron-o-meter from your site over the old install, but still having same problem. Have reinstalled the Java update as well. If you’re familiar with this scenario, I would appreciate any suggestions you have. Thank you.

    • Aaron / May 19 2011

      All I can think is what you’ve already tried — re-installing java on your machine. If that doesn’t work, I have no idea what the problem is….
      You can try the web version at cronometer.com to avoid the issue all together.

  4. warmz / Jul 6 2011

    Are you discontinuing the Desktop Version of CRON-0-Meter?

    Thank you for a gr8 tool :)

    • Aaron / Jul 17 2011

      No, the desktop version is not being discontinued. However, the new web version is where I am focusing my efforts.

  5. Tosiara / Dec 4 2011

    Hi,

    I’m wondering what has happened to pocker-academy project? The site is down for quite long time, also the forum where developers have been sharing their bots technologies – is down too. Has the project been discontinued? Or am I just missing something?

    Thanks!

    • Aaron / Dec 4 2011

      Unfortunately, it’s been discontinued (as well as the company that made it).

  6. Alfie / Nov 8 2012

    Hi. Whatever happened to Genetool and Peptool? Great programs but when we were going to buy the full versions, the Biotools company *puff* disappeared!? Did they sell-off their design or algorithms? Thanks.

Leave a Comment