Projects

My name is Dan; this is a selection of some of my projects.

jset-desk/jset-wasm

Generate gradient-colored fractal images.

Technologies: Rust, wasm, Javascript, FLTK

Try it out:

GitHub repos:

The desktop version features an FLTK GUI, parallelized number-crunching, and the ability to save image-generation parameters in an image's metadata so it can be loaded later.

C.A.M.P.

The Camelot Academy Math Pace Service.

Technologies: Rust (axum/hyper/tower/tokio), Javascript, PostgreSQL, Google Cloud Platform, Docker, APIs, JSON, SendGrid, HTML, CSS

CAMP is a web service for teachers, students, and parents to track individual student progress and grades. Camelot Academy has a highly-individualized Mathematics program wherein each student essentially has their own course of study. This system simplifies bookkeeping and report generation for teachers and allows administrators, students, and parents to monitor student progress.

ascii_art

Turn your images into text like it's 1986.

Technologies: Rust (Javascript for the DEMO), image analysis, Fontconfig

The CLI version gathers font information from your platform's Fontconfig installation.

cirith-ungol

A single-threaded, asynchronous, general-purpose web server meant to be easier to configure than something like Hiawatha.

Technologies: Rust (hyper/tower/tokio), TLS, HTTP, HTTPS

urot13

Technologies: Rust, Lua, Python, Common Lisp, C, Unicode encoding/decoding/wrangling

A Unicode-aware rot13 implementation in several languages.

Works not only on ASCII text, but also other sets of the Latin alphabet (at least the parts used in English), like the CJK fullwidth forms, enclosed alphanumerics, and even the diacritic-laden characters from the Latin Extended blocks (through the use of combining diacritics).

grel

An IRC-like chat server and client with a simple protocol.

Technologies: Rust, TCP, reactive TUI

Try it out: Download the

and run it thus:

grel -a d2718.net:51516

To quit, hit Esc until the Ipt in the lower-left-hand corner becomes a Com, and then type q.

Many more details about commands, operation, and running your own server are available on the GitHub repo.

The client uses a reactive terminal interface that involves rewrappable formatted text. I also wrote this before async Rust was well-developed, so it features a sort of homespun nonblocking, async, buffered socket implementation.

Libraries

Software libraries or other projects without an obvious demonstration.

dumb_cgi

An dependency-free CGI library in Rust.

This is used in the back end of the ascii_art demonstration web service (mentioned above).

dumb_cgi came about because most Rust crates that deal with it have huge dependency graphs (they'll depend, for example, on hyper, which itself depends on tokio!), and I just wanted something simple to parse multipart/formdata.

authlite

A lightweight, non-critical authentication library that stores data in .csv files.

For when you need authentication, but don't have the user load to justify a real user database. The Rust version uses BLAKE3; the Go version uses bcrypt.

dmx

A library for using dmenu as an option picker.

dmenu is an awesome tool for keyboard-driven interfaces, and this library simplifies its integration with Rust (and also Go).