Ben Crowder

Blog: #slash

4 posts :: tag feed :: about the blog :: archive

Slash intro

Another entry in the patience-testing series talking about my personal productivity tools.

Slash is the engine that runs this blog. It’s just a Python app running Django, but calling it an engine is too satisfying for me to stop anytime soon. The name comes from the ubiquitous forward slash in URLs.

Overview

Slash has an internal frontend with some post management pages (see below) along with a small API which is used by Blackbullet (my current website engine, separate from the blog) to pull posts into my site template. The API also publishes the RSS and JSON feeds, which Blackbullet passes right through.

The dashboard lists current drafts and, lower on the page where you can’t see it in this screenshot, recently published posts:

slash-1.png

Disclaimer: there’s no guarantee that these particular post drafts will ever see the light of day. I often put ideas in and then decide later that they’re not worth blogging about.

Here’s the post edit page, which is very much a work in progress (last week I added the visual tag controls, since adding tags via the metadata textbox made it impossible to tell whether I’d used a tag before or not):

slash-2.png

It’s spartan but works for me.

Payload syntax

Other than the notebook specifier, the syntax is pretty much the same as Vinci’s. Posts are written in Markdown. Metadata is specified with the initial-colon syntax.

One thing I realize I forgot to mention in the Vinci post is that in both apps I have a shortcut syntax for including images that looks like this:

(( readers-edition.png | class=border | url=/book-of-mormon-readers-edition/ ))

I have a page for uploading images to a date-named folder — year and month — and this syntax relies on the image being in the matching folder for the post. A small bit of convention to make things simpler.

How I use Slash

On my laptop, I open Slash when needed. On my phone, I have it saved to my homescreen as a PWA.

Other than that, I use it the way you’d expect — I write blog posts (usually directly in Slash, but occasionally in Gate or Quill), I edit them, I publish them. Months later I finally notice the typos. It’s not too exciting.

The future

As of now, the plan is to replace both Blackbullet and Slash with a new, simpler, consolidated Slash, using plain text for the backend and probably moving to FastAPI. Since I’m in the middle of planning the rewrite right now (and since I’m now working in public), you’ll see posts about it soon.


Reply via email or via office hours

I recently came across Maggie Appleton’s article on digital gardens. Oh my goodness, this is delightful. I’m sure some small part of it is just nostalgia for the old days of the web, but the idea seems good and solid nonetheless. I love digital gardens. (See Mike Caulfield’s The Garden and the Stream and Swyx’s Digital Garden Terms of Service for more in this vein.)

Exploring some of these gardens led me to the idea of learning in public (also see Gift Egwuenu’s Learning in Public talk). Very closely related to digital gardens, of course, but a different angle to look at it from. It also nicely parallels the working in public idea I posted about recently.

I’m looking forward to adopting more of these practices myself. Not sure yet exactly what form that will take, but at the moment I’m thinking it’ll probably be the notes system I mentioned. While that would be doable with the website engine I have now, it wouldn’t be very ergonomic, so I’m probably going to retool. (And by probably I mean almost certainly, because I am an inveterate toolmaker at heart. I’ve written out plans for a new version of Slash, my blog engine, that will easily support notes as well as blog posts and web pages. More on that soon.)


Reply via email or via office hours

The blog, merged

Nine months later, I’m merging my blogs back into one. (Apparently this is going to be a regular back-and-forth thing here, so you may want to get used to it.)

Long story short, I think I’m more prone to blog if I don’t have to worry about categorizing my posts. Tagging is fine for some reason, but categories seem to add cognitive friction, so I’ve gotten rid of them. We’ll see how it goes.

Of minor technical note is that I’ve turned Slash into a pure web service backend, and the blog frontend is now hosted on the same domain as the rest of my site. This is the first time I’ve split the frontend off from the backend, but already I really like it — division of concerns, loose coupling, etc. At some point I’m planning to look into doing the same split with the rest of the site. (To clarify: at the moment, the site and the blog run on two different backends. With the site, the backend and frontend are currently unified.)


Reply via email or via office hours

The blog, now split

The pruning and splitting of the blogs is now complete. From 2,600 posts down to 400, and from one blog to (cough) fifteen. In my defense, these blogs are basically like categories, albeit with a bit more separation (tags don’t cross blog boundaries).

There is of course a feed for each blog (see the subscribe page for the list), and I decided to do a consolidated feed as well. I also added exclusion parameters to the consolidated feed, so if you really don’t care about my type design and art posts, for example, you can use this URL: https://blogs.bencrowder.net/feed/?exclude=type-design,art

The blogs are running on Slash, a Django app I wrote. It’s fairly simple, and writing it hardly took any time at all. (What took the most time was going through the 2,600 posts and deciding which to keep and which blog to put them in.) Also, I’m trying out Disqus for comments. Still not completely sold on it, but it was faster than adding comments to Slash.

Now back to more interesting things.


Reply via email or via office hours