Skip to main contentBill Alive Portfolio

Code

I did my first coding on a PreComputer 1000 circa 1990, with a single-line LCD screen and a propensity to glitch and lose everything after I’d painstakingly typed in fifty lines or so of an ambitious program from the manual.

Times have changed.

GitPythonPerlShell ScriptRPHPJavaScriptDocker

For most of my career, my coding has either been private, personal projects in Bash or Perl or else custom PHP and Javascript on websites for clients. (Well, and also games.)

But as I’ve learned Python and R for data science, I’ve also learned modern coding practices like unit tests and coverage testing. My public Jupyter notebooks include extensive code in Python and R, and I’ve released a fully funtional (and documented!) command-line tool written in Python: yarm.

Now I’m preparing further private projects for public release, especially data dashboards and tools for document conversion.

Yarm: Yet Another Report Maker

In Development

These began as personal projects for my own use, but I’m preparing to release them as open-source tools.

Data Dashboards

indiestats

As an indie writer publishing my own books, I want to track ad campaigns and book sales in a single dashboard. Existing tools make this hard: your ads may be siloed in Facebook, while your sales data live in Amazon (and Barnes and Noble, and Kobo…) With indiestats, you see everything in one Shiny web app written in R. Easy.

R

orgclocksy 🦄 ⏲ 👀

I’ve been tracking project times in Emacs Org mode since about 2008. It’s about time for a dashboard that lets me explore all of this data, spread across hundreds of files. A Vega-Altair web app written in Python.

PythonPandasNumPyMatplotlibOrg Mode

Document Conversion

pandoc publishing workflow

I write my fiction and nonfiction books in Emacs Org Mode, then create the EPUBs and PDFs for publication using a custom toolchain of Makefiles, YAML configuration, and pandoc to output Markdown and LaTeX. I tried to use Scrivener, but I found it scaled poorly. With this system, I can even include a bit of custom markup that I process with sed… but I should probably rewrite this whole thing in Python before I release. 😉

EmacsShell ScriptLaTeXMarkdownOrg Mode

org2twee

Have you noticed I really like Org mode? When I discovered Twine, a tool for creating interactive fiction as simple web apps, I thought, why not just make each “room” a separate heading in Org mode? Thus org2twee, a custom parser for pandoc that lets me write in Org mode, then publish to an interactive Twine game. You can see the results in my Twine game, The Vaccine Show!, which leverages Org mode superpowers to not only manage the links between “rooms”, but also to run R code to generate charts based on spreadsheet data.

PerlDockerOrg Mode

Languages and Tools I Love

I basically live in Emacs, the shell, and Firefox running Vimium.

I’ve attempted to manage my entire file collection with Git (and git-annex), but a monorepo didn’t exactly work out. I’m transitioning to Git repos for anything I type and borg for everything else.

Perl was my first love, but Python won me over. Shell scripts and the UNIX stream do remain glorious, but these days I find I save time in the long run if I just start with Python.

I’m flirting with Lisp… and not just so I can level up Emacs without skinning my knuckles. Those Lispers promise a Total Paradigm Shift! But I really, really love how often Python Just Works.

Oh, and I know just enough Haskell to tinker with my xmonad config. Another tempting paradigm shift, but I’ll probably just do my functional programming in Python.

When I first got serious about data science, I thought I’d be sticking to R. I learned R’s tidyverse before Python’s pandas, and I feared I would really miss the tidyverse pipe. To my surprise, pandas has come to feel even more natural. Meanwhile, the Python module ecosystem feels orders of magnitude more diverse than what R has to offer. R does offer excellent tools for data analysis, but with Python, you get that plus everything else.

Linux Enthusiast

With few interruptions, I’ve been running Linux as my main desktop since 2004. Getting that first Slackware install working was a fairly brutal coming-of-age ritual, but I’ve never looked back. For too long.

Btw I use Arch… but only because a rolling release and the occasional AUR package turns out to be less work, at least for me, than fighting with outdated packages in Ubuntu (or using snap).

ArchDebianUbuntuF Droid

Next up: Web Development.