Game of Life
An implementation of Conway’s Game of Life using React and
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: Python, Django, PostgreSQL + PostGIS, TypeScript, VueJS/Vuex
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, TOML
jsun is an alternative JSON decoder/encoder that supports some extra features like trailing commas, line comments, additional number formats, and literal dates & times. These extra features can be disabled when strict JSON compliance is required.
It also has additional hooks so that essentially any aspect of JSON parsing can be customized.
An additional feature is the ability to read INI style config from files where dotted keys represent an object hiearchy and values are encoded as JSON. This is similar to TOML but initially developed as part of another project before I had heard of TOML.
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 apps.
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
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.
NOTE: Geocoding is currently a bit wonky as are some aspects of the UI. I’ll get around to fixing these issues eventually, but as I’m likely the only user at this point, it isn’t a priority.
Built with: Python, Pyramid, SQLAlchemy, PostgreSQL + PostGIS, Svelte
All of my open source projects can be viewed on GitHub.