I want another ebook reader

I LOVE my Kobo Aura – it’s a damn perfect ereader. But now the Kobo folks have something even better that I’m lusting after. The Kobo Forma is a new version that is a little bit bigger and has a new feature that would really revolutionize using it.

It comes with dropbox integration! Currently the Aura is great because I can buy books online from their store, check out books from the NYPL right from the ereader (this is huge), cool articles sync in from Pocket and I can sideload pdfs or ebooks easily using USB. The Forma makes everything sync wirelessly – I can write a script to drop new books or pdfs or anything in by just putting it on a dropbox share.


This is very hot and good. I wish they would backport this to the Aura – but if not it seems like a feature worth buying. I’d also like them to open this up so you can use providers other than dropbox, but (like my synology nas share!)

Week 2203

The world is still nuts. The right wing forces in the government are attacking Dr. Fauci. Sinclair media, who own a huge percentage of local news tv stations, is going to release a truly insane conspiracy report alleging that Dr. Fauci is responsible somehow for creating the coronavirus. Tons of people are going to see it. One of my friends has been whatsapping me some really disturbing stuff that makes me worry about him – ‘context’ around the police beating a guy in a wheelchair, ‘privilege’ from some country music guy, etc.

Biden said Trump was the first racist president, ignoring the one who actually enslaved human beings. It’s gonna be a long 4 years even if Trump loses. It’s incredibly depressing because I really think Biden can screw this up, but even if he wins, he’s pretty conservative and will probably be a really effective block to meaningful change.

Effective work will have to bubble up at city and state levels before it makes it to a federal level.


We bought a car! Now we own a hybrid Rav 4 and it’s pretty cool! Sam did tons of work and found a deal with 0 down, 0% financing for 5 years. So it’s just incredibly easy on us and cheaper than the Budget monthly car rental we’d been doing. I’ve put in a dash cam and it’s a pretty good generic car. I got us the car insurance as well and we saved a few hundred bucks by returning the rental car early. Celebrated with some Aperol Spritz’s and they are STILL the reigning champ drink of the summer!

Got an offer on one of the Brooklyn apartments and accepted it – looking to get the deposit on it and get into contract! Now we’re wondering do we really want to sell the last one or turn it into a rental instead or what. (I really love living there, I just don’t think we can fit back into it.)

Did a little more bike riding with Zebus – she wanted to ride her bike all the way to the bakery to get a cookie! I’m so impressed with her. She did it, too!

Swale found some educational plugin for minecraft that lets you do chemistry, found the recipe for latex and how to make balloons and then tied balloons to chickens so they could fly. He’s also been saying just the sweetest stuff to me. Lots of I-love-you’s and his own special praise to me.

We spent a $60 gift card from work on a crazy strong blender from Cuisinart and its grrrreat. Already made some milkshakes and smoothies and frozen margs.

My Laptop crashed! I was going to have to ship it out for a month to get fixed, but then it started working! That’s terrifying. Good thing I do a lot of git-push on my repos, back up important stuff to our Synology DiskStation NAS. I did a bunch of work as I set up a new account for work on Sam’s laptop to get my jumpstart script to be smoother on OSX.


Sam found a cool wallpaper and we struggled it up in the downstairs bathroom and it looks great and I never want to do wallpaper again. It’s so tricky!

In the backyard I got up on a ladder with a pole saw and cut down some branches from the mulberry tree in the backyard, months too late to save the trampoline under it from turning into a giant mulberry collecter/fermenter. I either need to get a sawzall or a mini chainsaw or something to deal with all the branches – my small tension saw isn’t realllly cutting it for this many cuts.

Kinda stalled on the patio for a while.

We’ve foamed up some cable holes in the walls, need to go spackle and paint them. Also started adding trim to the bottom of the bathroom sink cabinet – trimmed off one of the cabinet shims with a Dremel to make the trim flush. Also put in some under-sink rolling trash and recycling cans in the kitchen and put handles on the cabinets.


Fun week! I’ve put http://www.morelightmorelight.com/2020/07/24/after-the-cops/ in my Kobo, along with a new Annabel Scheme book by Robin Sloan. (I love a book that comes with a makefile to get an epub, but you can read it online if that’s not your jam.


Did some stuff around making documentation easier, and thinking about how to make your docs and walkthroughs look good, but be testable. Nobody likes a stale documentation site! Also getting ready to launch in the UK. Office re-opening is postponed until at least September. I don’t see it happening.


I installed Regolith as a tiling window manager for my laptop and it seems pretty cool. Took a little while to get used to, but I’m wondering why it isn’t easier to just drag windows into tiling window manager with the mouse. I spend a fair amount of time fiddling with things to get them looking right, so why is this better then just dragging a bunch of windows into the right spot?

If you’ve got a terminal open right now try this:


Pretty cool! They have tons of formats available so you could make widgets on your desktop or tmux statusline.

Week 2202

In the past week, the federal government used some very flimsy excuses to send federal “police” into Portland and take protestors into unmarked vans without identifying themselves. The scary times have gotten even scarier, the authoritarianism even more blatant. There is so much awful stuff going on that I can’t even take in all of it, much less do meaningful work on it. I’m trying to just do small things often. I’m trying to do things like donate to campaigns that will help, sign petitions, elevate small things that are going to turn into big things.

Since we’ve donated some large sums in the past, I sometimes get directly called by candidates. I resolved to take time to ask them specific questions about things that matter here since I often get called by them when I’m changing diapers or doing other family stuff. I spoke with Alex Morse, who is a Justice Democrat who is running for congress – he’s endorsed by Jamaal Bowman (who just beat Eliot Engel). We talked about his work as a mayor in western Massachusetts, dealing with police unions, restorative justice and combating systemic racism when you are the executive – he’s notable I think for actually working on these things. I also took some time to petition Nextdoor, a social network where local racism is really evident, to halt work with Police departments. Features like “send this to my police” really don’t take into account what happens after the police show up, and why this isn’t something to do lightly.


We paid off the ticket from the fourth, met with a guy about solar panels ( we don’t use enough energy to justify the cost even with multiple incentives from the state). We’re also looking for electricians to add some outside outlets and a ceiling fan in the living room.

We sorted out better schedules for me to work and be with the family predictably during the day. It’s easy to both work forever when it’s in the house or to bunk off when something cute is happening. Trying to be balanced, so we solved it with a gCal that Sam can see with times that are marked out of office on my work calendar. That way it’s easier to know when “I’m definitely working, don’t bother me” and when “let’s take a break and play”. Making it visible to work lets folks there plan around when they shouldn’t expect me to be available.

We got Swale and Zebus some bikes! They rode them! It is cute!

The Brooklyn apartments are getting some interest on the market – 25H at least has some people viewing it. 25J is where the bigger mortgage sits, so I hope that it pans out quickly as well.


I added some better color settings to Jumpstart – and made installing ruby gems safe, similar to what I did earlier for node.

Also set up 2 way syncing on the Synology NAS drives in brooklyn and upstate so that everything is backed up everywhere. For the meantime at least, the upstate is the new primary and brooklyn is the secondary. I tried out Ranger as a terminal file manager. Also, I made a dumb little script to make memes easier.

After I told folks about Pingplotter on the cesspool/hobby network reddit, it inspired Toazd to write an even more complete and colorful version of pingplotter.


Highs and lows in the ladder of abstractions, highs and lows success wise.

I worked very high in the ladder of abstractions, transforming a large backlog of tasks into a program of new product features and a big revenue opportunity. At the same time I had a pull request submitted and accepted to fix a client issue. I got a great review ( we use OKRs to have quarterly conversations around progress, so it is sort of like a review), and then my laptop died!

It’s a sweet little lenovo yoga 920 and was running Ubuntu and Windows, I was loving using it. But it’s really disappointing for it to die hard after 2 years. To get it replaced involves shipping it out, going through a 3 day quarantine, up to 9 business days to fix, then 5-7 business days to ship back. I’m lucky to have enough spare laptops in the house that we were able to get Sam’s macbook hooked up. My 2013 macbook air would have been fine, but the thunderbolt port apparently doesn’t work (first time I’ve ever tried it!)

I hope when I get the Yoga back it won’t be wiped and I don’t have to go through a whole setup process again.

Hosting better screencasts in WordPress

When I was writing up a note about pingplotter I figured I should show how it works because that’s much better for understanding it.

This gobbled up an incredible amount of time, so I’m writing it down so I never have to figure it out again.

There’s a few terminal screencast recorders out there, but I picked asciinema since it seemed simple, it recorder everything as text, not an image and it seemed a very light format to playback. These things are true, and the pain I felt is mostly unrelated to any failings of asciinema.

Asciinema is great. I can record a session locally, play it back to check locally and then upload it to their hosting to share. All pretty cool!

# record a session, but skip pauses over 1 second
asciinema rec -i 1 pingplotter.cast
asciinema: recording asciicast to pingplotter.cast
asciinema: press <ctrl-d> or type "exit" when you're done
# type a bunch of things to demo
# then ctrl-d to stop recording
asciinema: recording finished
asciinema: asciicast saved to pingplotter.cast

# time to check to see if it was any good
asciinema play pingplotter.cast
# the saved session plays back

# good enough!
asciinema upload pingplotter.cast 
# asciinema gives you the URL of the upload
# you can give it a description and make it public

Since this website is still powered by WordPress, I wanted to share it here. The Asciinema url didn’t embed automatically, so I figured I could either embed a script from Asciinema or add a plugin to do the embed code.

Both of these failed – somehow the javascript from Asciinema wasn’t working in my Firefox. It worked in Chrome, but that’s not good enough. I figured I should just host the cast myself! Why do I need to embed this tiny file or load javascript or install plugins to do this?

I found a neat utility to convert an asciicinema screencast to an animated SVG.

Listen, SVG and animated SVG is incredibly powerful, and if you don’t know, you should learn about it. Animated gifs are heavy, don’t resize, and are full of rendering artifacts. SVG are vector graphics, which mean they are infinitely scalable up or down crisply in a much smaller size than most gifs. Every modern mobile and desktop browser supports them.

The cool utility is svg-term. It lets you take an asciinema file and turn it into an animated svg.

It’s very nicely made, but is unfortunately distributed with npm, a package manager designed to ruin you. The instructions svg-term gives you to install it are incredibly dangerous unless you know to set up your npm install to not install packages with root privileges, WHICH FOR SOME REASON ISN’T THE DEFAULT OR EVEN POSSIBLE. I looked at the npm documentation for something like pip install --user, but it doesn’t exist. Instead, the solution is to redefine global installs to mean user local installs. I’m not kidding.

I don’t want to ever have to figure this out again either, so I added it to my jumpstart script so it will be ready for the next computer I use.

cat pingplotter.cast| svg-term --out ~/pingplotter.svg

This worked great! I went to upload it to my WordPress site to share with you. It did not work great!

WordPress very reasonably recognizes that while I enthusastically love SVG, it can be a security hole. SVG files can embed all sorts of foolishness like JavaScript and other loopholes to escalate privileges. So WordPress prevents them from being uploaded. I opted to allow them with a plugin that sanitizes SVG files to remove the dangerous stuff but allow the rich graphical goodness. This worked great!

I then decided to demo using tmux and glances, which meant I had to do a lot more typing in the demo, which expanded the size of the screencast. Poor svg-term began to crap out because I was exceeding the size of the javascript heap by feeding it a file larger than 1 mb. Fair enough, I don’t want to have a big file anyway!

The solution here is to script as much as possible ahead of time. The asciinema commandline takes a -c command argument which makes it execute a command as soon as it startes recording. Since tmux also lets you script up what you want it to do, I ended up with this.

asciinema rec -i 1 -c 'tmux new "pingplotter ; read" \; split-window "glances ; read" \; select-layout even-horizontal' pingplottertmux.cast

I’m telling asciinema to open up tmux and start recording. I’m telling tmux to start with pingplotter in a window, then open a new pane with glances and make the layout side-by-side. Each of those panes will close when the command they are running is done. Now I can just use ctrl-a <space> a few times to rotate the layout, ctrl-c to kill the panes, tmux exits and asciinema stops recording.

The file size ended up being small enough for svg-term and now you get this!

Anyhoo, black people are human beings with real lives and I don’t want my tax dollars to be used to murder them. Please, call your city representatives to urge them to shrink the police budget and use that money for social services that prevent crime and pain. If you can’t figure out your local representation, please learn how. If you won’t, please at least call your federal reps to ask them to stop giving the city police things like machine guns and tanks.