Category Archives: personal

helping a magpierss-powered site perform better

I rely on MagpieRSS to run one of my websites. (If you'd like to see the basic code for the site, see my GitHub profile.)

One of the drawbacks to Magpie, and dynamic websites in general, is they can be bottlenecked by external sources – in the case of Magpie, those sources are the myriad RSS feeds that Datente draws from.

To overcome some of this sluggishness, and to take better advantage of the caching feature of Magpie, I recently started a simple cron job to load every page on the site every X minutes – this refreshes the cache, and helps ensure reader experience is more performant. By scheduling a background refresh of every page, I cut average page load times by nearly a factor of 10! While this is quite dramatic, my worst-performing page was still taking upwards of 10 seconds to load a not-insignificant percentage of the time (sometimes more than a minute!) 🙁

Enter last week's epiphany – since RSS content doesn't change all that often (even crazy-frequent-updating feeds rarely exceed 4 updates per hour), I could take advantage of a "trick", and change the displayed pages to be nearly static (I still have an Amazon sidebar that's dynamically-loaded) – with this stupidly-simple hack, I cut the slowest page load time from ~10-12 seconds to <1: or another 10x improvement!

"What is the 'trick'," you ask? Simple – I copied every page and prefixed it with a short character sequence, and then modified my cron job to still run every X minutes, but now call the "build" pages, redirecting the response (which is a web page, of course) into the "display" pages. In other words, make the display pages static by building them in the background every so often.

If you'd like to see exactly how I'm doing this for one page (the rest are similar), check out this stupidly-short shell script:

(time (/bin/curl -f > ~/temp.out)) 2>&1 | grep real

(The time is in there for my cron reports.)

Compare the run time to the [nearly] static version:

(time (/bin/curl -f > ~/temp.out)) 2>&1 | grep real

ssa, meet irs; irs, meet ssa

As you know, we adopted our second son last year (which finalized in Dec – woohoo!).

A couple weeks ago, we received Zeb’s birth certificate (which needs to be processed after an adoption), and applied for his SSN.

Earlier this week his brand spankin’ new SSN  card arrived – so I got down to finishing our tax return for 2015. Problem:

Rule Number: R0000-504-02
Rule Number Description: The SOCIAL SECURITY NUMBER (SSN or ITIN) and LAST NAME for Dependent 2 do not match the IRS e-File database. You will need to REVIEW AND MAKE CHANGES to the Dependent 2’s information before resubmitting your return.


So I got on the phone to the IRS after some scary FAQ pages, it turns out that the IRS only gets data updates from the SSA every few weeks.

The very helpful lady who answered my call and helped me out told me to try again in a couple weeks, and it should go through with no issues.

At least there’s a reason for it to have rejected.

haiku appliance

I have been a fan of Haiku for years – and BeOS since way back in the 90s. I run a Haiku mirror, and try to pay attention to the project’s updates.

Today I am making available a Haiku-OS r1 alpha 4.1 virtual appliance!

Download it from me here (created in VirtualBox, but in .ova format, so should work “anywhere”). Download links for current editions (for new releases of Haiku-OS) will be maintained on my Projects page.


  • 1G RAM (could’ve easily gotten away with 512M or even 256M, but given everyone should have 1G free (especially if running VirtualBox), went with this size)
  • 20G storage (dynamically allocated, of course), formatted BFS (because it’s better than NTFS – and doesn’t “actually” format the disk (it does, but only kinda – it’s akin to lazy zeroing in VMware)) in VMDK format (if you care)
  • 2 CPUs
  • 32M video memory
  • network: NAT’d

Appliance [download] size :: ~250M.

welcome, zebediah!

We got to meet the latest addition to our family a few days ago, on the 5th. For the second time in under a year, we had the last-minute opportunity to adopt a baby boy. Last year we welcomed a 3.5 month-old, and this year we have a newborn.

He’s had some complications, and been in the NICU since a few hours after birth. However, he’s started to make some good progress, and while not out of the woods, is on his way to being able to come home in, hopefully, a week.

Zebediah joins big brother Abijah, and brings our family from three to four.