peknet :: an eddy in the bit stream         
about peknet
peknet is Peter E Karman musing on technology, politics, religion, books, beer and parenthood.



Brighter Planet's 350 Challenge

St Paul Minnesota Yellow Pages

Powered by Swish-e

Valid CSS!

proud member of the
Open Source Community

© 2005 peknet dot com

syndicate this site

Debugging feature specs with Capybara

# pretty print html to terminal puts Nokogiri::HTML(page.body).to_xhtml(indent: 3)

File under general Tue Oct 4 10:50:25 CT 2016

Happy Charlotte's Web Day

Three times makes it a ritual.

File under books/ Wed Sep 7 11:00:07 CT 2016

Managing a household of library users

My family are avid public library patrons. I'd estimate that in the three years we've been in Lawrence we've checked out well over 1000 items amongst the five of us.

It's been up to me to manage the due notices and pay the inevitable overdue fines. I think we've only had to pay to replace a handful of items, which is a pretty decent success rate given who my children are. Still, it's been fairly tedious to juggle five library cards, five accounts, log in to the site to check and renew each as needed.

The Lawrence Public Library website greatly improved when they switched to the bibliocommons platform. I finally got around to writing a command-line library management tool to aggregate all five accounts into a single report and automatically renew any that are coming due.


% perl my-toolbox/lfk-library --renew --all

No more click-click-click and putting-off-till-its-too-late-and-whoops-we-have-a-fine.

File under projects/ Thu Aug 4 09:55:10 CT 2016

Ruination Day

It was shortly after 9/11, in 2001, that I was listening incessantly to Gillian Welch's Time (The Revelator) recording. I had been listening to Blind Willie Johnson quite a bit prior to that, and so I immediately made the titular connection.

The songs about Ruination Day were especially haunting, and I associated them immediately with the attacks on the towers and 9/11. America's second (or third, or forth) Ruination Day.

Today is April the 14th, the Ruination Day of those songs, and while it seems inappropriate to wish anyone a "Happy Ruination Day" it does seem appropriate to wish you a Blessed Ruination Day, in the hopes that tomorrow is less ruinous.

File under music/ Thu Apr 14 09:19:49 CT 2016

MadPlay CentOS 7 RPM

Discovered today I needed an RPM for the madplay cli binary for CentOS and one did not yet exist.

So I built my first RPM today, thanks to an existing (if dated) .spec file I found.

Here's the RPM.

And here's the spec file I based it on.

File under general/ Wed May 20 16:38:47 CT 2015

Bertrand Russell

"Throughout the long period of religious doubt, I had been rendered very unhappy by the gradual loss of belief, but when the process was completed, I found to my surprise that I was quite glad to be done with the whole subject."

Via his autobiography.

File under ideas/ Sat Feb 7 21:13:12 CT 2015

Happy Charlotte's Web Day

Two times makes it a tradition.

File under books/ Sun Sep 7 10:53:08 CT 2014

Extending a VirtualBox disk image on CentOS 5

Found this link perfectly helpful.

File under general/ Thu Jul 24 11:22:07 CT 2014

Programmer High

Hadn't read of someone else experiencing this. I have.

File under general/ Mon Jun 23 09:33:20 CT 2014

A Poor Workman Blames His Tools

Hadn't heard that quote before. Want to remember it. It's credited to anonymous, who as Virginia Woolf tells us, must have been a woman.

File under general/ Mon Jun 16 13:57:06 CT 2014

Top Posting

I get asked from time to time, always by non-software-developers, why it is that I start my email replies at the bottom of the thread.

My reply:

for their mental dexterity
and I admire them
read from bottom to top,
but a select few
from top to bottom,
most people read

File under general/ Wed Jun 4 16:50:56 CT 2014

The Odometer

Today is the birthday of the inventor of the odometer. I find the origin story fascinating.

File under general/ Mon May 12 09:06:14 CT 2014

One's Native Tongue

As Professor Dijkstra put it: "Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer."

via Audrey Tang TED talk

File under perl/ Mon Apr 28 08:57:35 CT 2014

College Majors

Interesting chart showing the change in college graduate degrees by major over the last 40 years.

File under general/ Fri Apr 25 14:31:57 CT 2014

McCarthy on Politics

I share a birthday and a name with Eugene McCarthy. I also share his belief:

Being in politics is like being a football coach. You have to be smart enough to understand the game and dumb enough to think it's important.

File under general/ Sat Mar 29 14:28:36 CT 2014

Roger Angell

I enjoyed this essay. Brisk, telling, ribald writing. I wanted to tell Sam Alvord about it.

File under new yorker/ Wed Mar 12 09:33:31 CT 2014

Busy week on CPAN

It was a busy week for pushing new releases to CPAN. These modules all got updates last week:

  • DBIx-Class-RDBOHelpers-0.11
  • Search-Query-0.25
  • Dezi-Client-0.002002
  • Search-OpenSearch-0.31
  • Search-Tools-0.99
  • SWISH-Prog-Lucy-0.20
  • Search-OpenSearch-Server-0.28
  • Search-OpenSearch-Engine-Lucy-0.19
  • CatalystX-CRUD-Model-RDBO-0.30
  • CatalystX-CRUD-ModelAdapter-DBIC-0.13
  • CatalystX-CRUD-0.56
  • Search-QueryParser-SQL-0.010
  • Dezi-0.002012

File under perl/ Mon Mar 3 15:17:25 CT 2014

Mid-Career Crisis

No, I'm not having one. But chromatic is, and I've gone through similar enough experiences, and will again, that I wanted to point sympathetic readers at that piece. It's well-written.

File under perl/ Mon Feb 24 11:14:42 CT 2014

Chipping In

This is a true story.

I write software for fun and profit. I release a lot of it as open source, which for the uninitiated means I give it away for free. I think it makes the world better, like recycling and walking instead of driving. It's how I chip in.

This morning I got an email from the Perl module bug tracker. It was filed, automatically I believe, by Andreas König, one of the stalwarts of the Perl testing community. The testing community is a group of people who test the code that I write and give away for free. They do it for free too. It's how they chip in.

The bug report email that I got told me that a module I uploaded recently was causing a different module, that I also maintain, to fail its tests. As it happens, I had already fixed those tests but had forgotten to release the new version of the module with the fixed tests. So I took about 5 minutes to verify the tests were fixed, prepared and uploaded the release, and then closed the bug report ticket.

Now I've repeated this same process (get bug report email, fix and upload new version) many dozens of times. It all starts with someone else, though; someone else who takes 5 minutes to report that the software I've written is failing to do something it promised (like pass its tests). One brick builds on another till we have a strong building.

So I thank Andreas König and all testers everywhere. They are the Harry Tuttles of the internet. I thank them for chipping in.

File under perl/ Fri Dec 13 09:20:49 CT 2013

Javascript OO

I confess I've been coding Javascript for nearly a decade without understanding its object system. This little tutorial helped quite a bit.

File under projects/ Mon Oct 28 10:51:05 CT 2013

Evelyn Waugh

I've read nothing else by him, but today is his birthday, and he once wrote:
The human mind is inspired enough when it comes to inventing horrors; it is when it tries to invent a Heaven that it shows itself cloddish.

File under ideas/ Mon Oct 28 09:23:52 CT 2013

If Programming Languages Were Religions

This is old, but still pretty funny, and accurate, imo.

File under perl/ Wed Oct 9 11:38:13 CT 2013


A good poem.

File under books/ Mon Sep 9 12:05:37 CT 2013

Ari Shapiro Can Sing!

I've enjoyed Ari Shapiro's reporting for NPR these last 10 years. Now I discover he can sing!

File under general/ Wed Aug 28 09:07:03 CT 2013

Happy Walt Whitman's Birthday

The lilacs are blooming here in Minnesota, and we celebrate.

File under general/ Fri May 31 08:02:05 CT 2013

iPhone 5

So frustrated with my iPhone 3 (which I bought refurbished 2.5 years ago) I finally broke down and bought new iPhone 5. Wow. Wow wow wow. So this is the Mobile Experience everyone keeps talking about. I can actually read a web page and use the maps app and Do Things. Reminds me of the first Mac G3 I got after using a LC for several years (yes, I am that old).

File under general/ Fri Apr 5 20:24:24 CT 2013

DuckDuckGo dot com

I've been keeping tabs on DuckDuckGo for about three years now. It's a web search site that doesn't track users like Google does.

A nice write-up on the DuckDuckGo architecture today. Nice to see some technologies I recognize.

File under projects/ Mon Jan 28 22:13:16 CT 2013

Two Hard Things in Programming

There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.


File under projects/ Tue Jan 8 21:20:34 CT 2013

Poem #1110

The death throes of the mouse under the sink, in the trap I laid, evoke neither sadness nor pity. I turn Nick Drake up a little louder.

File under general/ Sat Nov 10 22:58:09 CT 2012

Dezi 0.2.4 released

Happy to announce release of Dezi 0.2.4 with spelling suggestion feature.

File under projects/swish Wed Oct 17 22:42:28 CT 2012

Charlotte' Web Day

I am reading Charlotte's Web, the classic E. B. White children's novel, to my kids for about the 10th time. I don't know if it is the 10th time or not. After about four readings I lost track. Let's just say it is as familiar to me now as any book I have ever read.

I mention this book today because tomorrow, September 7, is a significant day in the story. It is the day when Wilbur wins his medal, when he cajoles and bargains with Templeton to save Charlotte's egg sac, and he leaves Charlotte alone, at the Fair, where she will die.

The book is 60 years old, the best-selling children's book of all time (according to Wikipedia), and though I have now read it more times than I can keep track of, I do not tire of it. Garth Williams' illustrations still amuse and enlighten. White's prose still sparkles. I still cry at the end, which my children did not understand the first few times but they do now. Malcolm swears off bacon for a few weeks after each reading.

So I hereby declare September 7 to be Charlotte's Web Day.

Here are some quotes I love.

"I was just thinking," said the spider, "that people are very gullible."
"What does 'gullible' mean?"
"Easy to fool," said Charlotte.
"That's a mercy," replied Wilbur, and he lay down in the shade of his fence and went fast asleep.

"Have you heard about the words that appeared in the spider's web?" asked Mrs. Arable nervously.
"Yes," replied the doctor.
"Well, do you understand it?" asked Mrs. Arable.
"Understand what?"
"Do you understand how there could be any writing in a spider's web?"
"Oh, no," said Dr. Dorian. "I don't understand it. But for that matter I don't understand how a spider learned to spin a web in the first place. When the words appeared, everyone said they were a miracle. But nobody pointed out that the web itself is a miracle."

The crickets felt it was their duty to warn everybody that summertime cannot last forever. Even on the most beautiful days in the whole year--the days when summer is changing into fall--the crickets spread the rumor of sadness and change.

"We can't tell what may happen at the Fair Grounds. Somebody's got to go along who knows how to write."
-- Charlotte

As my friend Eric likes to quote:
It is not often that someone comes along who is a true friend and a good writer. Charlotte was both.

Here's to you, Charlotte.

File under books/ Thu Sep 6 20:43:38 CT 2012

Python Dezi Client

Finally got back to the Python Dezi client I started several months ago. All tests passing now so I'm calling this the 0.001000 release.

File under projects/swish Fri Aug 24 13:46:37 CT 2012

Service Oriented Architecture

For my own keeping track of things: Yegge's SOA Google-vs-Amazon rant.

File under projects/ Thu Aug 16 21:19:58 CT 2012

Is Weak Typing Strong Enough?

I found this Yegge article via this Yegge article. If you write code, they are both worth reading. If you don't write code, don't bother.

File under projects/ Thu Aug 16 21:00:35 CT 2012

Scary Smart


File under general Thu Jul 26 20:02:07 CT 2012

Dezi, now with Xapian backend

Read all about it.

File under projects/swish Mon Apr 30 21:39:13 CT 2012


When I've got a lot going on in my life, I often don't sleep well. That's not unusual, I realize. Now I know that eight hours of sleep a night is a socal invention just like everything else.

File under general/ Tue Feb 28 09:05:25 CT 2012

Dezi search platform

This week I announced the initial release of Dezi, a new search platform based on Swish3, Apache Lucy, OpenSearch and Plack.

As of about 15 minutes ago, there are now PHP and Perl clients available.

File under projects/swish Sat Oct 1 21:47:46 CT 2011

REST resources

Read through the comments for some good further reading.

File under perl/ Fri Sep 23 09:58:18 CT 2011

libswish3 1.0.0 released

I am happy to announce the 1.0.0 release of libswish3:

libswish3 is at the core of multiple Swish3 implementations, and has reached a stable enough API that a 1.0.0 release seems appropriate.

From the README:

libswish3 is a document parser compatible with the Swish-e 2.4 -S prog API. libswish3 is a C library for parsing documents into a data structure that can then be stored and searched with a variety of IR backends.

There are currently four different implementations available of Swish3.
  • swish_xapian (C++ using libxapian, included in libswish3 distribution)
  • SWISH::Prog::Xapian (Perl using Search::Xapian)
  • SWISH::Prog::Lucy (Perl using Apache Lucy)
  • SWISH::Prog::KSx (Perl using KinoSearch)

All the Perl implementations are available from CPAN. They each rely on SWISH::3 (the Perl bindings to libswish3) and the core SWISH::Prog project, a Perl rewrite of the swish-e 2.x C binary and accompanying helper scripts. The SWISH::Prog distribution includes a 'swish3' command line interface with options very similar to the swish-e 2.x command line tool.

Xapian, KinoSearch and Apache Lucy all offer robust UTF-8 and incremental indexing support, as well as the ability to scale to many millions of documents across multiple servers.

You can read more about Swish3 at the devel site.

UPDATE: Mailing list announcement here.

File under projects/swish Wed Sep 21 22:03:59 CT 2011

Montessori and Open Source Culture

My kids go to a Montessori school. As parents we have been very impressed by the philosophy of learning there, and our kids have thrived.

It should come as no surprise to me then that there is a strong link between the Open Source community and Montessori.

File under general/ Fri Aug 19 09:40:23 CT 2011

FabFi: wifi build out of trash

This is very cool.

File under general/ Sun Jul 17 20:31:34 CT 2011

Al Franken and Ari Discuss Fishing

File under general/ Wed Jun 1 00:00:00 CT 2011

I-94 Corridor and the East Side

I live on the east side of St Paul. These big changes to the I-94 corridor would happen within a mile of where I live.

File under general/ Sat May 28 22:39:50 CT 2011

Search::OpenSearch::Server with REST API

Just uploaded several modules to CPAN that together implement a full REST API for KinoSearch indexes, using Search::OpenSearch::Server::Plack.

% curl -XPOST http://localhost:5000/foo \ -d '<doc><title>bar</title>foo</doc>' \ -H 'Content-Type: application/xml' [response:] { "success":1, "doc":{ "orgs":[], "places":[], "people":[], "topics":[], "summary":"", "title":"bar", "author":[] }, "total":"21581", "code":"200" }

The modules are:
  • Search::OpenSearch 0.11
  • Search::OpenSearch::Server 0.05
  • Search::OpenSearch::Engine::KSx 0.08
  • SWISH::Prog::KSx 0.17
  • SWSIH::Prog 0.49

  • File under projects/swish Thu May 26 13:56:43 CT 2011

    Rubber Soul

    I've loved the Beatles since the summer of 1983, when I was 11 and my aunt introduced me to their records (including some rarity vinyl iirc). The first record I ever bought was the blue greatest hits double record. I played the first side of the first record (Strawberry Fields, Penny Lane, Sergent Peppers, Day in the Life) over and over in 6th and 7th grade.

    But it's taken me nearly 30 years to identify my favorite record. I've had lots of favorite songs, but Rubber Soul is now officially my favorite record. I realize no one but me cares, but it feels important somehow to have identified an actual studio record, rather than a greatest hits compilation, as my favorite.

    File under music/ Sun Mar 20 19:53:57 CT 2011

    Mounds Park

    From my neighborhood email list:

    For all of us interested in what being/been proposed/planned for Indian Mounds Regional Park here is a link to "City of Saint Paul – Indian Mounds Regional Park Master Plan" page. It includes an overview, meeting agenda, notes, presentation along with the Indian Mounds Master Plan Concept.


    File under general/ Fri Feb 4 16:38:47 CT 2011


    My laptop started making a Very Bad Noise on Tuesday morning, the kind of whirring creak I usually associate with the death throes of a hard drive. It didn't sound exactly like a hard drive, which often clicks or knocks, and the whir was rather slower paced than the high RPMs of a hard drive. But as I didn't think this Macbook Pro had a fan, since I had never heard one, I just assumed the only moving part was the hard drive and so I ordered a new one online using my wife's computer.

    When the drive arrived today, I opened the laptop to swap out the hard drive, and lo! there was a box elder bug caught in one of the two small fans on the logic board. Yes, my computer had a bug in it. I pulled out the lifeless, hard little black and orange-striped carcass, and put the cover back on. Started without problem or Very Bad Noise.

    I had thought that the term "bug" used to describe a computer glitch was coined after someone found a moth in an early computer. But according to the all-knowing Wikipedia I was wrong. Nonetheless, I was relieved to discover this bug and to fix the problem so easily.

    And now I have a spare drive for that time when my hard drive really does die.

    File under general/ Thu Jan 27 20:16:25 CT 2011

    False Laziness

    One of the three virtues of programming is Laziness. Beware of false laziness. Andy Lester writes on the problem aptly when he describes an interaction with another programmer:

    This person was one of those programmers who tried for the premature optimization of saving some typing. He forgot that typing is the least of our concerns when programming. He forgot that programmer thinking time costs many orders of magnitude more than programmer typing time, and that the time spent debugging can dwarf the amount of time spent creating code.

    File under projects/ Thu Dec 23 03:40:32 CT 2010

    Funny depending on whoami

    Only funny if you're a programmer.

    File under projects/ Mon Dec 20 21:25:40 CT 2010

    Past entries: 2004 . 2005 . 2006 . 2007 . 2008 . 2009 . 2010 . 2011 . 2012 . 2013 . 2014 . 2015 . 2016 .
    « Sept  Oct 2016  Nov »
    Sun Mon Tue Wed Thu Fri Sat
    Saint Paul, MN
    45.0 F (7.2 C)

    Oct 24 2016, 7:53 pm CDT

    worth reading