Hacking around memory limitations in shared hosting.

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 …

Read more...

Systembot: Adventures in system monitoring.

If you've been following the development activity of Systembot, the bot I wrote to monitor my machines (physical as well as virtual) you've probably noticed that I changed a number of things around pretty suddenly.  This is because the version of Systembot in question had some pretty incorrect assumptions about how things should work.  For starters, I thought I was being clever when I wrote the temperature monitoring code when I decided to use what the drivers thought were high or critical values for sending "something is wrong" alerts.  No math (aside from a Centigrade-to-Fahrenheit conversion), just a couple of …

Read more...

Simple things can be hard.

As the title of this post implies, I've been working on some stuff lately that's been taking up enough compute cycles that I haven't been around to post much.  Some of this is due to work, because we're getting into the really busy time of year and when I haven't been at work I've been relaxing.  Some of this is due to yet another run of dental work that, while it hasn't really been worth writing about has resulted in my going to bed and sleeping straight through until the next day.  And some of it's due to my hacking …

Read more...

Parsing simple commands in Python.

A couple of weeks ago I ran into some of the functional limits of my web search bot, a bot that I wrote for my exocortex which accepts English-like commands ("Send me top 15 hits for HAL 9000 quotes.") and runs web searches in response using the Searx meta-search engine on the back end.  This is to say that I gave my bot a broken command ("Send hits for HAL 9000 quotes.") and the parser got into a state where it couldn't cope, threw an exception, and crashed.  To be fair, my command parser was very brittle and it was …

Read more...

Upgrading Ubuntu Server 14.04 to 16.04.

A couple of days ago I got it into my head to upgrade one of my Exocortex servers from Ubuntu Server 14.04 LTS to 16.04 LTS, the latest stable release. While Ubuntu long-term support releases are good for a couple of years (14.04 LTS would be supported until at least 2020) I had some concerns about the packages themselves being too stale to run the later releases of much of my software. To be more specific, I could continue to hope that the Ruby and Python interpreters I have installed could be upgraded as necessary but at …

Read more...

Exocortex: Halo

In my last post on the topic of exocortices I discussed the Huginn project, how it works, what the code for the agents actually look like, and some of the stuff I use Huginn's agent networks for for in my everyday life. In short, I call it my exocortex - an extension of the information processing capabilities of my brain running in silico instead of in vivo. Now I'm going to talk about Exocortex Halo, a separate suite of bots which augment Huginn to carry out tasks that Huginn by itself isn't designed to carry out very easily, and thus extend …

Read more...

HTTP Log Messenger v1.0

One of the problems hacktivists ran into when trying to disseminate useful information to people in Syria and Egypt was how to get through to people when DNS and web access are being filtered or outright blocked. Putting up web pages containing phone numbers of ISPs volunteering dialup access was something of a crapshoot because there was no guarantee that people would be able to view them. Someone (I don't remember whom) hit on the idea of contacting sysadmins in the Middle East by leaving messages in the access and error logs of their web servers. This works but pumping …

Read more...

nia_eeg_chart.py - Convert data captured from the NIA into an EEG chart.

Well, I finally got it working. After a lot of trial and error I was able to figure out how to set up a panel of six strip charts, one per channel of electrical activity in the brain that the OCZ NIA picks up. The application I wrote takes output captured from nia_number_dumper.py and displays it as one would expect an EEG to look. Python is required to run this software.

Next up: turning it into a realtime display from the NIA.

Here's a screenshot
of the app in action.

Download nia_eeg_chart.zip here

Test data set for nia_eeg_chart …

Read more...

Python: as simple as possible but no simpler.

When coding something in Python, it's said that your logic should be as simple as possible because the language does the heavy lifting for you. The nice thing about Python is that it makes it very easy to implement complex functionality because all the fiddly stuff that you normally spend ages coding and debugging (like linked lists and sorting algorithms) is already done for you. Also, the basic data types/objects that Python gives you are as orthogonal as you can get without throwing your hands up and using sticky notes instead.

In short, I spent two weeks debugging a …

Read more...

Pirates, pants, pets, Python, and Push.

After many months of near misses and scheduling conflicts, Kyrin finally got Lyssa and I to join him for a Friday evening at Piratz Tavern (8402 Georgia Avenue; Silver Spring, MD; 20910; phone 301-588-9001 to cap off a long work week. Hasufin, Lyssa, and I piled into the TARDIS and set course for Silver Spring around 1900 EST5EDT, which we figured would be late enough to dodge weekend traffic on the Beltway.

It wasn't, actually, but we still made decent time without actually being fashionably late.

Piratz Tavern is a very small, unassuming place on a corner across the street …

Read more...