Game of Life
An implementation of Conway’s Game of Life using React and
Get there by cycle!
byCycle is a bicycle trip planner that uses OpenStreetMap data for address lookup and routing. In the past, it was fairly widely known and used in the Portland area and, for a while, also in the Milwaukee, WI, area. I’m currently working to modernize it, especially the user interface.
Built with: Python, Pyramid, SQLAlchemy, PostgreSQL + PostGIS, Svelte
The basic idea is that you’re near a stop and want to quickly see arrival times but you may or may not know the stop ID offhand. MyStops will zoom into your current location, allowing you to quickly select a stop. You can also select other stops simultaneously to compare arrival times.
I have plans to add a bunch of features–such as the ability to save stops, alerts, etc–but haven’t had time to implement them. The current, minimal version is still pretty handy as is, and I use it whenever I take transit.
Built with: Node.js, PostgreSQL + PostGIS, TypeScript, React/Redux
RunCommands is a developer tool for writing commands/scripts in Python that you might otherwise write as shell scripts or in a Makefile. It can also be used to easily create standalone console scripts.
One of the features is the ability to chain commands together, similar
make. For example, if you have
deploy commands, you
could run them sequentially like so:
run -e production build deploy.
build step fails, the run will abort.
Built with: Python, PyYAML
Dijkstar is a library for creating graphs and finding paths using Dijkstra’s single-source shortest-paths algorithm. It also implements A* by allowing a heuristic function to be specified, which guides the algorithm toward the destination (Dijkstar = Dijkstra + A*).
One of the distinguishing features of Dijkstar is the ability to compute costs dynamically. This was something I couldn’t find in a Python library when I started working on byCycle several years ago.
I’ve recently been working on building a simple HTTP graph server so that it’s possible to operate on a graph that lives in a separate process, and potentially on a different server, from client applications.
Without the server, every process that needs to use a given graph has to load it from disk separately, inflating memory usage.
The server approach is more scalable and also allows for updating and restarting client applications without having to reload the graph from disk.
Built with: Python
All of my open source projects can be viewed on GitHub.