Category Archives: Software

Automated export of your goodreads library

Goodreads used to have an API but they stopped giving access and it looks like they are shutting it down. A real garbage move.

I like to be able to use my data that I put in so I wrote a script to automatically download my data regularly. Then I can do stuff like check to see if books I want are in the library or keep my own list or analytics, etc.

Here’s the python script to export your good reads library, hope it helps you. I’ll put it in the public domain.

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.


I need to see if my remote connection to work is healthy and if my remote connection to video conferencing is suffering.

I wrote a little utility to handle that in the commandline. It’s dumb but it works. Let’s call it pingplotter. It’s in the public domain, go nuts.

It’s fine to just pop in a terminal you have open, but it plays really nice with tmux and glances (I use both).

I think I spent nearly as much time making these screencasts as I did writing the shell script. I should blog that too, if only so I don’t have to research that again.

Week 3008

Welp, I’m getting this in a bit late, so I’ll also put in some Music Monday.

But since the world is a pit, you get Cotton Eye Joe Gregorian Chant Nightcore Hardcore Dubstep remix. Do better this week, world! The Senate confirmation hearings for Brett Kavanaugh were a reminder of how little women’s pain matters. The guy is also clearly lying.


My team won one of the 2nd place slots in the Hackathon as “Most Complete Hack”! We are talking about bringing it through to complete prod deployment.

Read up on Conflict Free Replicated Data Types which are a really interesting way to do mergable data structures. Underlies lots of interesting stuff like Redis.

Experimented with Mozilla’s Configman – the docs are NOT good enough, because they actually have a great drop in replacement for the standard ArgumentParser in there.


Got in all but 1 day last week. Rode in the rain 2 days! The first convinced me that I need to either own rainproof pants or just plan on riding in shorts in the rain. I bought a pair of Showers Pass transit pants and they worked great on Friday. Also got to randomly ride in with my buddy Lance again and reminded how nice that is.


Zeebus is really smart and understands a lot of what we say! She picks things up and puts them where you ask, she understands that we need sleep, she’s got a lot going on upstairs.

She puts on Max’s bike helmet to let us know she wants to go riding!

When she slapped Sam hard in the face she realized she had hurt her- then Z gave her a big hug and patted her. That’s what Max does when he plays too rough with her!

Max and I did a really good hike together. We went a little crazy and climbed up next to a little waterfall and did some semi-safe bouldering nearby.  Max and I actually climbed way up a small cliff and got to the top. We also found a cool Puffball mushroom. But we didn’t eat it because we didn’t know how to tell if it was poisonous or not. (now we know and we’ll eat it next time!)

MAX LAZER at the CMOM exhibit "Hello Japan!"

Orbital 0.2.1 – Secure Polyglot is out in the wild

I got a bit busy and I never did the release post for 0.2 so this is a big one with lots of features!
MAX LAZER at the CMOM exhibit "Hello Japan!"


Orbital is now translatable using the standard WordPress API mechanisms. If you’re a translator please contact me! I’d love to work with you to translate it! You can see the sample .po and .pot files under the “languages” directory in the plugin.

Blogroll as a Widget!

I’m really excited about this! One of the reasons I had an idea for this whole thing is that I was frustrated that the blogroll widget didn’t synchronize with my feed reader.  Why wouldn’t it just be a representation of what I’m actually reading?  So now that’s done! You can choose to display a link to the underlying OPML for download if you like.  I’d encourage you to do that because public OPML files online is a really good idea. I also put in a promo link but you can totally turn that off. I’m conflicted about putting that promo in because I’m not much of a self promoter – but I want to share this thing with more folks if possible.

Fast Feed Switcher

I don’t really like taking my fingers off the keyboard, so I really like keyboard shortcuts. I’ve added one more keyboard shortcut!  Type g to bring up a window that will let you go to any feed. You should be able to start typing the name of a feed and auto narrow down to whichever feed you want, then hit enter to go to it.


I’ve added essential protection against cross site scripting attacks. In case someone is actively trying to mark your feeds read or import new feeds for you, they can’t do that anymore.


Some folks experience the feeds stopped updating! That’s not good behavior for a feed reader – so it’s now fixed.
Some folks experienced a problem when they had multiple users and a user with non-edit permissions was added. That should be fixed now.
If you uninstalled the plugin it didn’t clean up after itself. Now Orbital is tidier and cleans up to not leave traces.

Orbital Feed Reader 0.1.9 Codenamed “BORN FREE” is out!

Last night I pushed out the final changes to uncage version 0.1.9 and get it out in the wild.
MAX LAZER tears off on his own  to explore Oregon

This version is mostly about giving you freedom. You should be able to easily import your stuff from other platforms into Orbital Feed Reader to use it. If you decide that you don’t want to use Orbital Feed Reader any more, you should have an easy way to leave. Any software that doesn’t tell you how to leave it is something you should be suspicious of.

Get Feeds IN

Share your OPML

For Feed Readers, the standard way to exchange lists of subscriptions is a standard called OPML. It’s an old format, but it’s how they all exchange lists of feeds. I’ve buffed up the OPML import to handle larger numbers of feeds. After you import the file you have a chance to look over the feeds and edit them, tag them or exclude them entirely. Hit save and they’ll all flow into the backend.


Get Feeds OUT

But we also don’t want Orbital to be a lobster trap for you. If you import that kind of data I also want you to be able to export that kind of data. Now Orbital is good at exporting your feeds. If you are logged in – we’ll export a file with all your public and private subscriptions and let you take that wherever you want. Some folks want to share their OPML publicly – if you aren’t logged in, hitting the same URL gives you only the public feeds. All your private stuff should stay safe!

Read Lotsa Feeds

Now that Orbital can handle tons of feeds coming in I wanted it to be easy to actually sort through them. Feed Tags now start off collapsed and you can expand them anytime by using the little twiddlers next to each. That’s a technical term. The twiddlers make it much more manageable to see 200 feeds over many subject areas.

Orbital Feed Reader 0.1.8 Codenamed “BEAUTY TREATMENT” is out!


The most common feedback I’ve heard from folks on Orbital is that it’s not very good looking.  It does the job, but it isn’t a pleasure to look at.

I assume these people are all supermodels, so it looks like Orbital is doing great among the high fashion set.

I got out my scissors, called in the wardrobe department, applied polish and buffed with a chamois. This is the new smooth look, designed to blend in with the new admin themes of WordPress.

Hey, good lookin’!


Beauty comes in all thicknesses

Along the way, I’ve added some features – now it is responsive, cleaner and is even usable on my Galaxy S5. Check out this hot resizing action!

Future attractions and graceful aging

Coming soon are some cool things. First, I’m working on version 0.1.9, code named Born Free. It will deal with the how to leave Orbital and how to get into Orbital. I’d never want to trap you!

Second, WordPress is going to upgrade to version 4.0 soon. I’ll be getting Orbital ready for that, and the new REST API should make it easy to build a better mobile experience for Orbital.

Why aren’t all music videos this good?

New media is different than old media. Books are great, and I love them – but hypertext is way way better. I love music videos – they are great, but why aren’t more of them using the amazing new tools available to us.

I want more music videos like this:

Johnny Cash – Ain’t No Grave.
This is the king I think. The song is worth it. The artist Johnny Cash – nuff said. This is a crowd-sourced participatory art music video that you can swim through in multiple dimensions.
They took a music video and gave everyone who loves Johnny Cash a way to pay tribute. Go on there and you can draw a frame from the music video. You can rate the frames of others. And then you can push your way through the dimensional space of all this and watch the video with highest rated frames or most abstract frames or any of the other dimensions they’ve carved up. It’s a beauty and executed perfectly. I hope everyone clicks through to this.

Arcade Fire – The Wilderness Downtown
This was the first new media music video I heard about. Couldn’t get a browser to run it for the longest time. It pushed the limits so far and does so many things.

Watch the video. Birds fly through all the different frames. You run along the streets where you grow up, you write a letter to yourself and watch it grow like trees. A dream.

Yung Jake –
I’m not as much of a fan of this one because the music isn’t as good, the rhymes are sloppy. This perfectly marries the content to the form though. It’s about being shared, being embedded, the new narrative of music distribution. And it shows as it tells.

RO.ME – 3 Dreams of Black
Can’t watch it – don’t have WebGL. Supposed to be good.

Ellie Goulding – Lights

Chris Bathgate – Big Ghost
This is the counterpoint. See, this doesn’t feel like a new video. This feels like it’s just a new trick on an old concept. 3D is so hyped and so pointless most of the time. I mean seriously, BOOKS tell stories. We don’t need 3D unless it adds something.

WordPrss – Subscribing to feeds is done

I’ve been plugging away at WordPrss on hacknights and subway rides and I have some progress to show for it.

I can show a feed, and shortcut keys help you navigate backwards and forwards through them. Clicking on a feed marks it as read. By default we hide read items, but you can always show them if you want.

You can manage the details of individual feeds – you can rename them etc.

Adding new feeds works and while I was at it I put in feed autodiscovery. Say you want to subscribe to a site but you just have the URL for the site.

Wordprss will do its best to figure out what feeds the site offers.

Choose one and away you go!

Now that this bit is done I’ll be working on getting the updating to work properly. Soon I’ll be ready to install it up on a server. Just got to sort through security and make sure the upgrade process is sorted…