From 952396abe034aff37a965c15b5ad31bcba297194 Mon Sep 17 00:00:00 2001 From: Ben Burwell Date: Fri, 9 Aug 2019 14:41:19 -0400 Subject: Add projects page --- index.md | 7 +-- projects.md | 167 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 169 insertions(+), 5 deletions(-) create mode 100644 projects.md diff --git a/index.md b/index.md index 6c2d7e8..1b7b68a 100644 --- a/index.md +++ b/index.md @@ -6,6 +6,7 @@ title: Ben Burwell # Ben Burwell - [Blog](/posts/) +- [Projects](/projects/) - [Tech theatre](/theatre.html) - Email: anything @benburwell.com @@ -14,8 +15,4 @@ title: Ben Burwell - [GitHub](https://github.com/benburwell) - [Sourcehut](https://git.sr.ht/~benburwell) -**Projects** - -- [HowToChooseAPassword.com](https://howtochooseapassword.com) -- [PlateZero](https://platezero.com) -- [MedicMate](https://medicmate.io) +_Have you seen [aerc](https://aerc-mail.org)?_ diff --git a/projects.md b/projects.md new file mode 100644 index 0000000..ff60bf7 --- /dev/null +++ b/projects.md @@ -0,0 +1,167 @@ +--- +layout: master +title: Ben Burwell's Projects +--- + +# Ben's Projects + +A bunch of things I'm working on or have worked on, roughly and arbitrarily +ordered by recency, significance, and interesting-ness. + +## [aerc](https://aerc-mail.org) + +Recently, I've been contributing a bunch of features (including the maildir +backend) and bug fixes to aerc, an email client that runs in your terminal. It's +designed to be a more modern replacement for mutt. As part of my work, I've also +contributed patches to a few of aerc's upstream dependencies including +[go-maildir](https://github.com/emersion/go-maildir) and +[go-message](https://github.com/emersion/go-message). + +While aerc is still in heavy development, I recommend taking a look, especially +if you currently use mutt. It has a number of nice improvements, like a tabbed +UI, built-in IMAP and SMTP support, the ability to view and compose emails +without external programs like vim or less completely taking over your terminal, +and even a built-in terminal emulator which can be helpful for email-driven +software development. + +## [HowToChooseAPassword.com](https://howtochooseapassword.com) + +A single-purpose site that explains in simple terms why strong passwords are +important and provides some tips on how to generate and store them. + +I built this site to be linked to from login and registration screens in my own +software, and would encourage other sites to link to it as well in order to +establish canonical password advice. + +Hopefully we'll see some traction with things like +[WebAuthn](https://webauthn.io/) which make it easier for people to protect +their accounts without really trying and this site will become obsolete, but in +the meantime it serves as a helpful resource. + +## [PlateZero](https://platezero.com) + +One of my hobbies is cooking. Often, I just make things up on the spot and don't +bother following a recipe, but for certain things I do like to use recipes which +I've developed or adapted in order to achieve the best results. + +PlateZero is a new kind of recipe site designed to help serious cooks iterate +upon and improve recipes, not simply store them statically. If you like to cook, +give PlateZero a try! + +## [similar.beer](https://similar.beer) + +A recent weekend hack with a few friends. We trained a ML model on beer reviews +and built a web frontend to interact with it. Users can look up beers which they +enjoy and use our model to find other beers they might enjoy either based on +similarity or by tweaking specific attributes, e.g. "show me beers like +[Founders Canadian Breakfast Stout](https://similar.beer/brewery/1199/47658), +but much more malty." + +## [Wireshark](https://www.wireshark.org) + +One of my all-time favorite tools. During college, my summer internship at +[Lutron Electronics](http://www.lutron.com) was focused on packaging a custom +internal build of Wireshark complete with new dissectors for Lutron's +proprietary network protocols. While I spent a good chunk of time working on +Wireshark, including writing a plugin to capture USB serial data in the pcap +format, I only ended up being able to contribute a single build script fix +upstream. Nonetheless, my name still appears in the [Wireshark authors +file](https://www.wireshark.org/about.html) which I think is pretty neat. + +## [ghsshauth](https://github.com/benburwell/ghsshauth) + +Use GitHub as an SSH authentication mechanism! Just make a +`~/.ssh/authorized_github_users` file with all of the GitHub usernames you want +to grant SSH access to. + +A few things like this exist, but didn't do _quite_ what I had in mind. Since +each user's [SSH keys are available through the +API](https://developer.github.com/v3/users/keys/), it's pretty trivial to write +a program suitable for use as the `AuthorizedKeysCommand` which looks up SSH +keys to allow. + +Future enhancements might include caching keys with an expiry mechanism in case +the GitHub API is unavailable, as well as enabling authenticated API access for +higher rate limits. + +## [`pass-audit`](https://github.com/benburwell/pass-audit) + +I use zx2c4's [pass](https://www.passwordstore.org/) for managing my passwords. +When Troy Hunt introduced the [Pwned Passwords +API](https://haveibeenpwned.com/Passwords) as part of Have I Been Pwned, I +wanted a way to check whether any of the passwords in my store had been affected +by breaches. So, I wrote `pass-audit`, an extension for pass which can check any +or all of your passwords against both the HIBP API (using +[k-anonymity](https://en.wikipedia.org/wiki/K-anonymity)) as well as local +wordlists like rockyou. + +## [Phlux](https://github.com/benburwell/phlux) + +Like [f.lux](https://justgetflux.com/), but for the Phillips Hue system +(_ph_-lux, get it?). I have a bunch of Hue bulbs with adjustable color +temperature at home, and I wanted them to change to warm light during the +evening and cool light during the day. This little program runs on a box I have +set up at home and automatically adjusts the colors at sunrise and sunset. + +There's definitely room for improvement, but this more or less does what I +wanted it to. + +## [`active911`](https://github.com/benburwell/active911) npm package + +[Active911](https://www.active911.com) is a popular system for integrating fire +and EMS paging with mobile apps enabling first responders to get richer data +more quickly than traditional tone and voice paging systems. In order to build +out custom dispatching software for [my college EMS +organization](https://www.bergems.org), I wrote this package and [published it +to npm](https://www.npmjs.com/package/active911). + +## [1090](https://github.com/benburwell/1090) + +A Java Swing application which shows live +[ADS-B](https://en.wikipedia.org/wiki/Automatic_dependent_surveillance-broadcast) +aircraft position and identification superimposed on a scalable map of +airfields, VORs, approaches, departures, and jetways. The map can be scaled and +panned using vim-like key bindings, and map layers can be toggled. + +I have an RTL-SDR tuned to 1090 MHz connected to a Raspberry Pi running +[dump1090](https://github.com/antirez/dump1090) for decoding the RF packets to +which the Java application connects over a TCP socket. + +## [DOML (DOM language)](https://github.com/benburwell/doml) + +This was just a random little hack investigating using HTML as code. By +constructing DOM elements in a way that represents an abstract syntax tree, and +then including a JavaScript file, it's possible to "run" your HTML while +simultaneously using some interesting CSS to see what the program is doing. + +For example, check out [this implementation of the Euclidean +algorithm](https://cdn.rawgit.com/benburwell/doml/master/prog/euclideanAlgorithm.html) +for finding the GCD of two integers. Viewing the source, you'll see the program +which is executed written as a bunch of `span` elements with different classes +and data attributes, and if you open the console, you'll see the result printed. + +## [Scotland Yard Solver](https://github.com/benburwell/ScotlandYard) + +A board game we got when I was younger is [Scotland +Yard](https://en.wikipedia.org/wiki/Scotland_Yard_(board_game)) in which players +must try to figure out the location on the board of Mr. X based upon the modes +of transport they announce (makes more sense when you know the game). Anyway, I +thought it might be interesting to write a program to narrow down the possible +locations of Mr. X in order to make better decisions as a player. In practice, +it seemed to be more fun to just play the game without the program, but it was +an interesting problem to play with. + +## [Solfege](https://github.com/benburwell/solfege) + +I'm sure I'm not the only one who has gotten a song in my head and not been able +to remember where it came from. While things like Shazam exist, they only really +work if you can actually _play_ the song you're trying to identify. The +situation I often encounter is having a short phrase in mind, which Shazam has +no way to identify. My solution was to build a music search engine where songs +are indexed by their [solfege +syllables](https://en.wikipedia.org/wiki/Solf%C3%A8ge). + +* * * + +And more on [GitHub](https://github.com/benburwell) and +[sourcehut](https://git.sr.ht/~benburwell)! -- cgit v1.2.3