Summer vacation is rapidly coming to an end.

Aug 31 2019

It seems as if another summer is rapidly coming to an end.  The neighbors' kids are now back in school, school buses are now picking their way down the streets, and due to Burning Man coming up it's now possible to eat in a real restaurant in the Bay Area for the next couple of days.  I've been pretty quiet lately, not because I've been spending any amount of time offline but because I've been spending more time doing stuff and just not writing it up.  I've been tinkering with Systembot lately, adding functionality that I really have a need for at home, namely, remotely monitoring a wireless access point running OpenWRT in the same way that I watch the rest of my stuff.  Due to the extreme system constraints on your average high-end wireless access point (2 CPUs, 128 megs of storage, 512 megs of RAM) it's not feasible to install Python and a Halo checkout, so I had to figure out how to get the system stats I need remotely.  What I wound up doing was standing up another copy of the standard OpenWRT web server daemon and writing a bunch of tiny CGI scripts which run local commands and return the information to Systembot for processing and analysis.  It wound up being a fun exercise in working with tight constraints, though I think there are still some bugs to be shaken out.

Click for the rest of the article...

Using Huginn to get today's weather report.

Aug 03 2019

A common task that people using Huginn set up as their "Hello, world!" project is getting the daily weather report because it's practical, easy, and fairly well documented.  However, the existing example is somewhat obsolete because it references the Weather Underground API that no longer exists, having been sunset at the end of 2018.  Recently, the Weather Underground code in the Huginn Weather Agent was taken out because it's no longer usable.  But, other options exist.  The US National Weather Service has a free to use API that we can use with Huginn with a little extra work.  Here's what we have to do:

  • Get the GPS coordinates for the place we want weather reports for.
  • Use the GPS coordinates to get data out of the NWS API.
  • Build a weather report message.
  • E-mail it.

As happens sometimes, the admins of the NWS API have imposed an additional constraint upon users accessing their data: They ask that the user agent string of whatever software you use be unique, and ideally include an e-mail address they can contact you through in case something goes amiss.  This isn't a big deal.

This tutorial assumes that you've worked with Huginn a bit in the past, but if you haven't I strongly suggest that you read my earlier posts to familiarize yourself.

Okay.  Let's get started.

Click for the rest of the article...

Neologism: DC AC

Jul 28 2019

DC AC - noun phrase (humorous) - The primary mechanism of air conditioning inside the DC Beltway.  Notionally, the movement of air due to revolving doors caused by the never-ending cycle of contractors becoming civil servants, civil servants becoming lobbyists, and lobbyists forming startups and becoming government contractors once more.

Neologism: Profit harvesting

Jul 28 2019

profit harvesting - noun phrase - A polite name for the act of finding each and every little remaining way to gouge money from someone or out of some thing.  Called nickel and diming when hard currency was more common.

An annoying problem solved: Accessing JSON documents with an API.

Jul 28 2019

I spend a lot of time digging around in other people's data.  If I'm not hunting for anything in particular then it's a bit of a crapshoot, to be honest, if only because you never know what you're in for.  You can pretty much take it to the bank that if you didn't assemble it yourself, you can't count on it being complete, well formed, or anything approximating the output of a human being (it usually came out of a database, but I think you see what I'm getting at).  Sometimes, if I'm really lucky I'll just get hold of a JSON dump of the database, which to be fair is better than nothing when there isn't even an API to use.  From time to time I'll make an attempt at fitting the data into a database of some kind, sometimes MySQL, sometimes SQLite, or occasionally an API layer like Sandman2.  This is all well and good, but it winds up being more of an adventure than I'm looking for.  I'd much rather be Indiana Jones prowling around in the temple than Rambo going through a preparation montage because Indy was actually getting stuff done.

Wow, this article went a little off the rails.  I was never good at writing intros to new code... anyway.

Click for the rest of the article...

Neologism: Checkers and chess

Jul 28 2019

checkers and chess - noun phrase - A situation where two or more actors in a situation are using entirely different strategies, working toward two entirely different goals, or are following entirely unrelated ideologies.  With sufficient cluelessness the actors in question may never actually come into conflict, even though they may be convinced they are fighting tooth and nail with one another.  The end result is a complete and total waste of time, money, and energy.

Got some new hardware installed.

Jul 20 2019

For a couple of years now, I've had my eye on the community of people who've had RFID or NFC chips implanted somewhere in their bodies, usually in the back of the hand.  If you've ever used a badge to unlock a door at work or tapped your phone on a point-of-sale terminal to buy something, you've used one of these two technologies in your everyday life to do something useful.  What I've wanted to do for a while was use an implanted chip as a second authentication factor to my servers for better security.  As for why I couldn't just use something like a key fob or a card or something.. there were a bunch of reasons, most of them having to do with only being able to find what I needed in bulk or the cost being too high because the equipment was aimed at corporate IT departments, where they have a need to crank out a couple of dozen ID badges an hour.  There is also the fact that, while I've been curious about various forms of body modification over the years I never really got into into them for a couple of reasons that probably aren't terribly interesting so why not do something useful?

Due to the fact that not everybody is going to be okay with me talking about an elective medical procedure, I'm going to put the rest of this article after the fold.

Click for the rest of the article...

It's been a while. Summer vacation, if you like.

Jul 06 2019

I haven't actually been on vacation lately, not really.  I decided that I needed to go off and do some different stuff for a while.  I've been in a rut lately and decided that I needed to shuffle some stuff around.  I swapped out the "writing rambling computer nerd blog posts" module for teaching myself a couple of new things and spending some of my downtime offline, curled up with cinnamon tea and a stack of books.  Getting away from a screen for a while seems to have done me some good, and I'm almost back up to my old reading pace of five or six books a week.  I'd all but forgotten how much dead tree books weigh after the fixed mass of a tablet for so long.  The wireless router at home that I set up to replace the astoundingly shitty DSL modem-cum-wireless access point that Annoying, Trying, and Twisted insists we use is starting to act flaky, which suggests that it's reached the end of its functional life, not unexpectedly since this model tends to have overheating problems.  A few weeks back I picked up a new router, a Linksys WRT 1200 AC and promptly made a few hardware modifications to it, which is to say I cracked open the case, unbolted the heat sinks, scraped the crappy thermal tape off of the chips and applied decent heatsink grease, and put the router back together.  I'm considering wiring a small cooling fan onto the motherboard, maybe on one of the development ports.  Lately I've flashed OpenWRT onto the unit and set up quality of service and monitoring so I can keep an eye on things.  I'm still working out how to patch it into my exocortex for realtime status monitoring.  From a practical standpoint I can install Python on the new router, but doing so leaves next to no room for anything else.  I have to think about it some more.  I do NOT want to use SNMP if I can help it.

If you thought you were going to escape computer nerd-related rambling, you were sorely mistaken.

Click for the rest of the article...

Hacking around memory limitations in shared hosting.

May 30 2019

Longtime readers are aware that I've been a customer of Dreamhost for quite a few years now, and by and large they've done all right by me.  They haven't complained (much) about all the stuff I have running there, and I try to keep my hosted databases in good condition.  However, the server they have my stuff on is starting to act wonky.  Periodic outages mostly, but when my Wallabag installation started throwing all sorts of errors and generally not working right, that got under my skin in a fairly big hurry.  I reinstalled.  I upgraded to the latest stable release.  I installed the latest commit from the source code repository401 and 500 errors as far as the eye could see whenever I tried to do anything regardless of what I did.

In a misguided attempt to figure out what was going on, I bit the bullet and installed PHP on one of my servers, along with all of the usual dependencies and tried to replicate my setup at Dreamhost.  What that was a bit tricky and took some debugging I eventually got it to work.  It was getting my data out of the sorta-kinda-broken setup that proved troublesome.

Click for the rest of the article...