Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Projects

Hnefatafl 1 2

This is David’s current hobby. He built AI, an engine, a client, and a server for the game of Copenhagen Hnefatafl. Most of his current efforts are on the client and server. It supports ranking players, timed and un-timed games, 11x11 and 13x13 sized boards, sound, and a bunch of other features. The client is built using the iced framework and has been packaged for Windows, Linux, Android, and Redox. It also runs on MacOS and theoretically any platform supported by iced and Rust.

Financial Accounts 3

We all have finances and they are often in a bunch of different systems. Why not build a tool to track everything? Well that’s exactly what David Did. This tool tracks and gets updates from cypto-currencies, metals, Investor 360 and custom financial institutions.

Cubes 4 (Bash, C, Fortran, Go, Julia, Python, Rust, Tcl)

One day David was at his uncle’s house spending time with relatives and his uncle brought out some puzzles for everyone to play with. The puzzles consisted of a collection of polycubes which fit together to form 3x3x3 cubes.

While struggling to solve the puzzles by hand he quipped, “I bet a computer could do this in no time at all”, and so he decided he should get a computer to solve them for him.

Since writing the models of the pieces by hand that the program needs as input is tedious and error prone, he wrote a GUI program to create the models with. He also created a program to display what the solution looks like.

He discovered that, although, in general the space packing problem is hard to solve, it can be done very quickly for such a small region if some tricks are used to reduce the search space.

Important optimizations include caching previous calculations from the search, not looking at rotations of the first piece, trying to place the pieces from hardest to easiest, and using flood fill to find regions that can’t possibly be filled.

Julia Benchmarks 5 (Julia)

Julia is a language for doing scientific computing so it is important that Julia is fast. David wrote several of the benchmarks game benchmarks to show how Julia compares with other languages and to help prevent performance regressions.

DLC's Website by David Lawrence Campbell is licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International