introducing bashlessblog

January 19, 2024 — ~enamel

Avid readers of this blog (lol) will probably notice that after posting a whole deal on a workflow that was supposed to help my posting frequency ... I stopped posting. So what happened? Well my new fancy workflow didn't work due to one annoying issue. Git does not save file metadata and bashblog uses file modified dates when generating its output. Basically I ended up breaking the whole blog by git'ing stuff around, it made everything look like it was created on the git clone date.

So what is the totally logical solution? To port the entire thing into a new language of course!

bashlessblog: It's bashblog, but less.

When my attempts at modifying bashblog to use the embedded timestamps it makes in the posts was a failure I decided to rewrite the whole thing. I had a few big wants that drove this decision:

  • I wanted to use modern editors
  • I wanted to use the software on windows
  • And I wanted to be able to put the whole thing in git without breaking timestamps

The outcome is a small .net application that is compatible with existing bashblogs but geared towards a static site generator workflow.

In the process I ended up learning enough about bash to have made the initial change to timestamps. But I am very happy with the result and I hope I never ever have to think about bash again.

Builds are available here for windows and linux, and require the .net 8 runtimes. I may look into creating some native AOT builds in the future so the runtime is not required.

tags: bashlessblog, bashblog, blog, dev, windows, linux

new workflow who dis (aka using bashblog locally on windows)

October 20, 2022 — ~enamel

Recently a friend asked me why I hadn't been updating my blog. After getting over the shock of finding out someone actually reads this, the answer is really simple. I dislike writing and developing in a terminal.

After the nostalgia of creating a site and a blog on using the terminal wore off, I knew I was going to have to work on getting a local development environment going on my daily driver. I needed to reduce the amount of friction if I was going to keep up with updates on the blog and the site.

The rabbit hole

The main part of the site I wanted to make easy to update was this blog. I considered replacing it with a different static site generation tool, but I didn't find much available on Windows. I am sure there is something out there but the simplicity of bashblog is unmatched and I didn't want to learn a new framework to make a blog when I was happy with the output of a simple bash script.

So I investigated a few options to run in a "mixed mode", doing everything on the server and only editing the blog posts locally using something like SFTP and SSHFS. These solutions seemed clunky so I moved to figuring out how to recreate a linux environment that would allow me to run bashblog locally. I considered porting bashblog to PowerShell, and may still do that in the future, but this was a perfect opportunity to play with WSL - Windows Subsystem for Linux.

Microsoft's embrace of Linux is one of the most surprising things to come out of Redmond in ages (and I have been developing for Windows for a long time). In retrospect, it shows how big of a transition they have made away from Windows as a product. They are now focused on selling services and in order to sell services they have leaned into one of their strengths, supporting developers. And in that effort to go to where developers are, Linux can now be run as a part of Windows and the two co-exist in a surprisingly seamless manner.

Creating a local development environment on Windows

WSL setup

The first thing to do is to enable the WSL subsystem, it is disabled by default. 1. Enable virtualization support in the BIOS 2. Enable "Virtual Machine Platform" in Windows 3. Enable "Windows Subsystem for Linux" in Windows

Next is to install the needed components for WSL, along with a distro. By default Ubuntu is installed from the Windows Store automatically, but you can install any distribution you want from a tar file.

wsl --install

I recommend using the same username for the WSL distro as used in


Git is the connective tissue between and your local environment. It will be used to sync your local dev environment to the server.

First, commit your's public_html directory to Git. If you need help with this, see How To Use Git.

In your WSL instance, from your home directory clone your public_html repo. Your local file structure should match your structure so you don't run into issue with bashblog.

Unfortunately Git does not store timestamps which breaks bashblog. To restore timestamps and set them to the time your posts were committed you can install and use the following tool:
sudo apt install git-restore-mtime
git restore-mtime


Using Git, clone bashblog into your home directory. I used this version customized for To install the script, use 'sudo make install' from the cloned bashblog repo.

Modify the .bashrc file to have the line 'export EDITOR=nano' to appease the script. We won't be using Nano (unless you want to) but we need this for the script to work without modification.

Finally, use 'bb post' then save this file as a draft to use as a template later.

IDE setup

Visual Studio Code makes working within WSL installs extremely easy. By installing the Remote Development Extension Pack you can work inside the linux environment from Windows seamlessly, including all of the features you wouldn't get from SFTP like code completion and intellisense. This is because VS Code runs a server on the Linux environment that does all the heavy lifting and uses the VS Code as the GUI via SSH.

Remote Development Extension Pack

This gives you code editors with language support, a terminal, Git integration, etc. in one package. This is the secret sauce that makes this workflow so easy for me.

From your public_html directory in WSL enter the command 'code .' and VS Code will open in Windows and connect to the WSL instance.


Now that you have everything setup and VS Code is open and connected to your local copy in WSL, we are going to be abusing the draft functionality in bashblog.

  1. Create a copy of the template created in the drafts folder
  2. Modify the copied template with the blog content
  3. Run > bb post <copied template filename>
  4. Save and exit in Nano
  5. Post, edit, or save as draft
  6. Commit and push in Git locally
  7. Pull in Git on

tags: WSL, tildeverse, personal, dev, linux, windows

plateau delayverb

January 6, 2022 — ~enamel

My new favorite VCV Rack jam, playing around with the incredible Plateau module from Valley

tags: bleep-bloops, vcv-rack, synth

you can see the emotion

October 4, 2021 — ~enamel

Some synth / meme bullshit using VCV rack. Our friend competed in a speedrunning tournament and the commentators thought he looked quite sad. So I turned it into an "exploration of dark emotions using sound and memes" (see I told you there would be bullshit).

tags: bleep-bloops

808 day 2021

August 9, 2021 — ~enamel

A little love song to the 808. Also my first Ableton project.

tags: bleep-bloops


August 9, 2021 — ~enamel

My favorite VCV Rack jam so far, a bass drum, a snare, two voices, and a whole lot of modulation.

Also I might as well post vcvrack_04 and vcvrack_05 for completeness, I wasn't too happy with them but here they are anyway.



tags: bleep-bloops, vcv-rack, synth


January 25, 2021 — ~enamel

Tutorial #3 was on the voltage controlled filter. I also was playing around with controlling the knobs with my new midi controller, the Arturia Minilab MkII. Not too happy with the outcome here, but made a video to document it nonetheless.

tags: bleep-bloops, vcv-rack, synth


January 6, 2021 — ~enamel

Continuing on Omri Cohen's beginner patches series, this one focuses on using an LFO to modulate the pulse width of a square wave and mangling the envelope generator. I also learned a valuable lesson about making sure your envelope is actually attenuating your signal.

tags: bleep-bloops, vcv-rack, synth


January 4, 2021 — ~enamel

A VCV Rack patch I made based on the first patch in Omri Cohen's tutorial series

tags: bleep-bloops, vcv-rack, synth

uncle giveaway lullaby

December 21, 2020 — ~enamel

Here is a creepy meme song about a clown that gives away bad games. Happy Holidays!

tags: bleep-bloops


October 19, 2020 — ~enamel

Woke up today and decided to write a rap song. I need to learn to beatbox.

tags: bleep-bloops

everydays 22

August 22, 2020 — ~enamel

Got a new mic, here is a little sound check comparo I did

tags: everydays, bleep-bloops

everydays 21

August 20, 2020 — ~enamel

Finally got around to the second tidal cycles lesson on random functions. Nothing to show off today, just the lesson.

tags: everydays

everydays 20

August 19, 2020 — ~enamel

Played around with an 808 emulator that you can find at

tags: bleep-bloops, everydays

more like somedays am i right?

August 18, 2020 — ~enamel

Intertia is a powerful force regardless if you are at rest or in motion. So let's get back into motion, shall we?

I made this for an art contest, real low effort style, taking some art I already made and sticking a top hat on it. But hey, I did a thing.

tags: everydays

everydays 18

August 1, 2020 — ~enamel

In the racial justice bundle I came across an app named Drum Brain. It allows you to use a Rockband drum set to create drum loops. It is pretty cool on it's own, but then I realized you can load in your own samples, and since I am a terrible drummer I also was very happy to see a quantize function in there.

So I loaded up a bunch of 808 samples and made a nice little loop. Really fun to play around with, basically using a e-drum set instead of a sequencer. Here is the sequence and the output.

tags: everydays, bleep-bloops, drum-brain

everydays 17

August 1, 2020 — ~enamel

Livestreamed a tidal cycles improv session, was not really feeling it and it was sort of going nowhere and then it just came together all of the sudden. Ended up liking the outcome quite a bit, and it sort of surprised me.

tags: everydays, bleep-bloops, tidal-cycles

everydays 16

July 30, 2020 — ~enamel

Playing around with tidal cycles, the main beat was stolen content, but worked some other stuff in that I enjoyed

tags: everydays, bleep-bloops, tidal-cycles

everydays 15

July 29, 2020 — ~enamel

I did a ton of work today and was totally wiped out by the time I had some free time. I wanted to get something in so I did a lesson in tidal cycles about randomness. I didn't really create anything on my own aside from typing along with the lesson, and I am not sure how I can work in randomness into my work with tidal cycles, that is for another day.

tags: everydays

everydays 14

July 29, 2020 — ~enamel

Yesterday's everyday was something a little different, and closer to what I do professionally. It was a very hot day and I wanted to see if I could keep the temperature inside my house cooler than outside and if so, by how much. My theory went something like this: first, draw in as much cool air overnight, then in the morning shut the windows and blinds (to reduce the solar load) and log indoor and outdoor temperatures over the day.

When I started logging data I had a pretty close correlation between the indoor and outdoor temps. As the outdoor temps started to rise, the indoor temp rose at a much higher rate. I am patting myself on the back at this point. However as I don't have air conditioning, I was expecting the indoor temp to track closer to the outdoor temp but I found the indoor temp to stay quite a bit lower than I was expecting.

Around 5pm I was measuring a 10 degree temperature difference, but I was pretty sceptical that I was measuring indoor temp accurately. I stepped outside and couldn't tell a huge difference. So I decided I would open the windows and turn the fans on and equalize the temperatures. After two hours I was not seeing the equalization I was expecting.

This data simply left me questioning my measuring devices. I was using my thermostat for indoor temp and pulling outdoor temp off the internet. I would love to repeat this experiment with more accurate and SELF LOGGING equipment. I also want to measure humidity as higher humidity in the house could have made the temperature difference feel lower.

Here is a table of data I don't trust:

tags: everydays

everydays 13

July 28, 2020 — ~enamel

I finally missed a day :(

But before I did I played around with an app named Drum Brain. It allows you to use a Rockband drum set to fire drum samples like a midi drum set. It was really fun and I put down an really nice drum loop that I really liked, but didn't actually record the thing thinking I would come back to it (and never did).

tags: everydays

everydays 12

July 25, 2020 — ~enamel

Nearly didn't everyday today, but ended up with a very late night tidal cycles session trying to wrap my head around chop / striate / slice / splice. Didn't get very far but did make some cool feedback loops with the delay effect.

streak 12

tags: everydays

colorful clarity

July 24, 2020 — ~enamel

Started to play around with Hydra, ended up in a jam session

You can play around with the Hydra code here

edit: oh yeah this was my everyday, streak 11

tags: everydays, bleep-bloops, live-coding, tidal-cycles, hydra

everydays 10

July 23, 2020 — ~enamel

Created a new avatar for posting on stuff and things. It was a long overdue change! It was created in the sprite editor in PICO-8.

streak: 10

tags: everydays, pico-8

everydays 9

July 22, 2020 — ~enamel

Finished the music projects section of my homepage which completes the bulk of what I originally intended to do with my tilde page. I have come up with some new ideas for some new pages, and I will probably continue to tweak it, I have come to hate the color. Which makes sense as I tried to pick a really awful color scheme for it.

I feel like I am starting to get into a groove with everydays, I am now trying to get them wrapped up by midnight to make sure I don't spend too much time working into the wee hours of the morning. We will see how my motivation goes as things get a little more free form and I don't have a set list of items I am trying to tick off.

I want to dive back into live coding with Tidal Cycles, and I may try to push an update to UNCLE. Not really sure what comes next maybe more HTML hacking!

streak: 9

tags: everydays, homepage-update