summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Burwell <ben@benburwell.com>2019-08-09 14:41:19 -0400
committerBen Burwell <ben@benburwell.com>2019-08-09 14:41:19 -0400
commit952396abe034aff37a965c15b5ad31bcba297194 (patch)
tree8bf0a2966f0cb69d2cf07813568ecd52c1ddfff4
parentad6ea49d0afa5bc27d8b9c23f14f45b25b037b05 (diff)
Add projects page
-rw-r--r--index.md7
-rw-r--r--projects.md167
2 files changed, 169 insertions, 5 deletions
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)!