dev / progress

An Origin Story

Jupyter logo with heart-eye emoji behind it

PHDLife and Everything After

I first came across IPython in grad school. Maksim Tsvetovat used it for analyzing social networks during his class. If we had a probe, he could perform it immediately.Usually, anyway. Social network analysis operations are not always computationally cheap – or even tractable. Also, FYI: his book, Social Network Analysis for Startups provides a quick and Pythonic introduction. Being someone who lived in tmux/vim-land, I thought it was a cheap toy. Then I used it. Soon after, it was my go-to playground.

The notebook wars continue but I’ve certainly picked a side – they are fantastic. Literate programming is good. It is a tool that helps me converse with myself in a way that makes me better at problem solving. In the process, I get high-quality, shareable documentation for free. And, if I do things carefully, I also get good reproducibility. In retrospect, I suppose it isn’t surprising that I eventually fell in love with IPython (now Jupyter)

Using a python package I wrote called disserate — and later, a set of library compliant templates — I was able to write my entire dissertation was a fully executable document. Along the way, I wrote, an early tool for merging .ipynb files as well as packages implementing TikZ, PlantUML, and DGraph cell magics. I’ve even been journaling for about four years with daily notebooks to track what I do and think.

At some point during the process (I think 2017), I bought the domain name The short term plan was just to share my workflow; the long term plan was to develop into a publishing platform for people like myself. But, life got in the way.

Then, literally two days after I started working on it earlier this year (2020), FastAI released FastPages. It felt like a sucker punch, and I moved onto a different project.

A few months into another (my primary) project later, I finally got around to trying FastPages. While I have tremendous respect for the FastAI team, I didn’t like their implementation. It felt too intrusive. Moreover, it didn’t seem to capitalize on the tremendous opportunities inherent to collaboration.

I think I can do better, and I’m going to try.

Where I'm at Now

I started building it two weeks ago. Soup to nuts, it works. With (free) signup and installation time, it takes about three minutes to setup.And, I’m still reducing that. Once installed, if you execute,

abreka nb preview

you can get local live rendering with file watching for automatic refreshes. Run,

abreka nb sync

and it synchronizes a collection of notebooks with Falsifiable.Ignoring those explicitly marked private and those that are private by convention (e.g. with a underscore prefix).

To me, this represents what Paul Graham calls a “quantum of utility.”I think quantum of utility gives me more conceptual grasp than MVP. Quoting John Gruber quoting Graham,

“How small? How simple?”

We advise startups to launch when they’ve added a quantum of utility: when there is at least some set of users who would be excited to hear about it, because they can now do something they couldn’t do before.

I’m at the point where I think my very small and simple solution is almost at the delightful point. But, ignoring the rest of my long and growing TODO list, two things are missing,

The source is currently closed because I’m in that “I’m going to delete .git/ and reinitialize for v0.0.1” stage of development.The CLI does already has secure updating though. I think I’m about a month away from being able to open it up in a way that still lets me move quickly.

As for custom domains, I’ve been told, “you don’t need that yet.” Which is probably good advice. Except, I think it’s also fundamentally shitty. I want early adopters to be in a position where they are robust to my failure, if it occurred.This is especially true for academics, who are always running a massive time deficit to begin with Open source only partially mitigates that risk. I want to be able to grant them an exit option.

I should have custom domains good to go in another week. And I hope to make it open source by mid-December.

If you’re interested, signup for the waitlist.

Where This Is Going

While I think this early version solves a problem, it’s not the problem I’m interested in dedicating myself to – that problem is quite a bit larger.

I’ll share more about it in the coming weeks and months.