For what seems hours, you scan the board. The colors are sharp against the
simple background. Some movement catches your eye, but it doesn't feel right,
so you ignore it. Time stretches on.
There! The perfect move. Leaving the perfect next move. A quick flick. A match.
The pieces fall into place. Another match. Another. Another. A special piece.
Another special piece. It fires, triggering more. Chaos consumes.
The board is in ruins. Your carefully planned next move is lost in the
destruction. You're back to scanning the board to try to find where you belong
in this new world.
Is this a game, or is it your development strategy?
Software development is chaos. Either you work to managing chaos, consuming it,
or it works on consuming you. There are too many possibilities, too much input,
to brute-force your way to completion (how much software do you know of that
can be considered complete?).
In the face of these possibilities, a rigid development plan will fail. Vague
goals are better. Goals written in terms of a problem are best. Problems don't
change, once you find their roots.
I didn't know this post was going to be about Agile, but there it is.
Exact is for computers. We are not computers. We are human. We are chaos.
Static site generators are popular these
days. For small sites, the ability to quickly author content using simple tools
is key. The ability to use lower-cost (even free) hosting, often without any
dynamic capabilities, is good for trying to maintain a budget. For larger
sites, the ability to serve content quickly and cheaply is beneficial, and
since most pages are read far more often than they are written, generating a
full web page to store on the filesystem can improve performance (and lower
For me, I like the convenience of using Github Pages
to host project-oriented websites. The project itself is already on Github, so
why not keep the website closely tied to it so it doesn't get out-of-date? For
an organization like the Chicago Perl Mongers, Github
can even host custom domains, allowing easy collaboration on websites.
It's through the Chicago.PM website that I was introduced to Octopress, a
blogging engine built on Jekyll. It's through using Octopress that I decided to
write my own static site generator,
Continue reading Announcing Statocles...
I got a text at 8:00am:
"Hey, can you jump on a conference call?"
Groggy and disoriented, I blearily type the conference line and enter my
passcode, followed by the pound or hash sign. At the tone, I would be the 6th
person to enter the conference. Tone.
"The app is down, and trading has stopped."
Continue reading Mojolicious Triumphs Over Legacy Code...
Originally posted on blogs.perl.org -- Managing SQL Data with
Every week, I work with about a dozen SQL databases. Some are Sybase, some
MySQL, some SQLite. Some have different versions in dev, staging, and
production. All of them need data extracted, transformed, and loaded.
DBI is the clear choice for dealing with SQL databases in Perl, but there are a
dozen lines of Perl code in between me and the operation that I want. Sure,
I've got modules and web applications and ad-hoc commands and scripts that
perform certain individual tasks on my databases, but sometimes those things
don't quite do what I need right now, and I just want something that will let
me execute whatever SQL I can come up with.
Yertl (ETL::Yertl) is a shell-based ETL
framework. It's under development (as is all software), but included already is
a small utility called ysql to make dealing
with SQL databases easy.
Continue reading Managing SQL Data with Yertl...
The past me is another person. Sometimes antagonist, sometimes friend, past me
(postaction?) had ideas, hopes, and dreams and developed some of them into
software that I and others use. Unfortunately, that asshole left bugs all
through the code for me to fix.
I can't blame him. Nobody's perfect, not even idealized/demonized copies of my
past self. But I do have to fix them, and deal with the messes he left.
Lucky for me, while he was writing buggy software, he left extensive notes for
me to use...
Continue reading Leaving Crumb Trails -- Talking to Myself...