enough water makes all rocks round

Author Archive

The Color of Compulsion

One of the most startling consequences of Noah’s injury has been how parts of his personality have been magnified.  He was a sweet child before, and he is now the most gentle, kindest soul you will meet.  He enjoyed ordering things, arranging toys in patterns.  Now he’s quite obsessive about it.  I snapped this after one of his (now squelched) 3 a.m. coloring sessions:

Notice how it’s not just the chromatic ordering of the crayons; it’s also the stripping of the paper wrappers and the (functionally needless) sharpening.  He sits for hours at a time at the table, absorbed in these activities.  He prefers coloring to all else; no books or television or games  (well, a few games).

That Which Did Not Kill Him…

…has only made him stronger.  Praise God for this miracle in particular.

Yes, Sweetheart, W is a Vowel

I have a very distinct childhood memory of hearing that the letter W is sometimes a vowel. I do not recall where or when I heard this, but the memory is strong, and believe I heard it exactly once. When my oldest son Dax was three, just as he’s learning about consonants and vowels, he recites the list for me, “A, E, I, O, U and sometimes Y.” I tell him that it’s also “and sometimes W”, which I probably shouldn’t have done without checking. But I did, and sure enough, Dax takes it to heart (all of you fathers, you should be so fortunate as to have a child that listens and believes you so thoroughly). For years, he would correct his siblings, particularly his younger brother Noah when he was learning his letters.

Just the other day, Dax repeats this “and sometimes W!” catechism, and my wife decides she’s had enough. “Prove it, or lose it!” she tells him. I recast her ultimatum as a challenge. “Dax”, say I, “it’s a research project. Go ask Google!” His face becomes a sunrise of excitement. He squeals his agreement and races to the computer. A few moments later, he comes back to me meekly and says, “Daddy, what do I look for?” (we haven’t yet gotten to ending sentences with prepositions). I tell him something along the lines of “Type in Is W a Vowel?”. He races back and moments later he returns triumphantly.

Here’s the page he found: When is W a Vowel?

And here is the example cited: cwm.

We’ve tried to soften this a bit by using the phrase “and rarely W”. But now we have proof positive, and a little bit more family lore.

More Praise for “Expert Python Programming”

The kind folks at Packt Publishing contacted me two weeks ago and asked if I would review Expert Python Programmingin exchange for a free copy. I enjoy free things, especially beer, even if there’s a bit of work involved, so I agreed. The book arrived a few days later as promised.

ProfitPy Does Windows

New release coming soon. And it now runs on Microsoft(r) Windows(tm)! I like pretty pictures:

See all the screenshots here.

Release seems close. I think 0.2 will be ready within a few weeks (read: 3-4 months). The project has a new home, too: here.

Automated Translation of Java to Python

I’ve written a tool to automatically translate Java source code to Python source code. The tool is useful, and it’s already working for me as I intended. It’s called java2python (clever, no?) and you can download it here.

Let me back up a bit and explain the motivation behind this. I’m the author and sole maintainer of the Python port of the Interactive Brokers API (IbPy). IB provides a default/reference Java implementation for UNIX and MacOS. This reference implementation is straight forward: it contains a Thread subclass that reads from a socket, an associated class for writing to the socket, plus a few other support classes. Conceptually pretty simple, and the initial port was actually easy (once I figured out the difference between writing data to a socket in Java and writing data to a socket in Python).


Beryl Keeps Getting Better

I put together a quick demo of some of the (newer) Beryl window animations. Included in the video are samples of Explode, Domino, Glide, Leaf and Razr. Enjoy.

Appropriately, the audio track is “Future” by Sungirl.

KBerylSettings – Beryl Settings for KDE

Yo, ho, ho and a bucket of prawns! There’s a Beryl Settings manager for KDE in the Beryl Project SVN repository. A picture is worth a
thousand words:

And another thousand:


The New PyKDE Sampler

Python is Goodness. KDE is Goodness. Put together, they become PyKDE, the Grand Supreme Goodness of desktop environment language bindings.

But there’s a grain of sand in the jelly. Between the three, there’s plenty of documentation but very little example code for PyKDE. Enter the new sampler application. Check it out:


Clever Harold – The Shocking First Exclusive!

Clever Harold was once an ambitious sheep, caring so much for his
fellow ovis that he tried to teach them to fly free of their
life of grazing before eventually being eaten.

His prospects ruined from the inevitable demise of his beloved ram
brothers and ewe sisters, Clever Harold claims to have escaped and
started grazing down a different road. Now he claims to be a web
framework, one written in Python.

And we have the the incredible first interview. Read on dear reader,
but brace yourself for graphic dialog.

PythonDoc Wiki Macro for Trac (Update)

Big updates for a small module. The TracPythonDoc wiki macro now has enough features for real use.

PythonDoc Wiki Macro for Trac

In a time long, long ago in a cubicle far, far away, I once wrote a wiki macro for Trac to generate documentation from python modules in a Subversion repository using PythonDoc.

SELECT Surprise

While experimenting with unicode values in Python, PostgreSQL and pyscopg2, I ran a little query like this:

>>> cur.execute("SELECT (note_id, body) FROM troy.morenotes")
>>> cur.fetchall()
[('(1,"The rain in Spain falls mainly in the plains.")',),
('(2,"Twenty dwarves did handstands on the carpet.")',),


Automatic Pickle Serialization and Deserialization with PostgreSQL

Building on the earlier success of creating a pickle data type in PostgreSQL, I’ve come up with this small and comfortable way of automatically serializing and de-serializing python pickles with PostgreSQL and psycopg2.


Cheat Sheet for Kid Templates

Kid Templates rock! In an effort to learn and memorize the syntax, I created a cheatsheet for it using Inkscape.
Attached is the PNG export and the SVG source. Enjoy!

(I’ve removed the SVG source because WP won’t allow the attachment – troy 24 jan 2010)

A Tale of PostgreSQL Types and Python

Thinking of integrating user-defined types in PostgreSQL and psycopg2? Here’s the path I walked, hopefully you can avoid the same pitfalls.

I was after a PostgreSQL data type for storing Python pickles. This seemed simple enough because the database facility for aliasing a type already exists. So the first thing I tried was a CREATE DOMAIN statement in PG, like so:


Christ said:

“Therefore whoever confesses Me before men, him I will also confess before My Father who is in heaven.” – Matthew 10:32

I confess Christ is God. And I will not forget the next verse, either. He said:

“But whoever denies Me before men, him I will also deny before My Father who is in heaven.” – Matthew 10:33

How does a Christian know the will of the Father? This is important to me, because He said:

“Not everyone who says to Me, ‘Lord, Lord,’ shall enter the kingdom of heaven, but he who does the will of My Father in heaven. Many will say to Me in that day, ‘Lord, Lord,’ have we not prophesied in Your name, cast out demons in Your name, and done many wonders in Your name? And then I will declare to them, ‘I never knew you; depart from Me, you who practice lawlessness!'” – Matthew 7:21-23

As for an answer, listen to this passage.

For God may speak in one way, or in another, Yet man does not perceive it. In a dream, in a vision of the night, When deep sleep falls upon men, While slumbering on their beds, Then He opens the ears of men, And seals their instruction. In order to turn man from his deed, And conceal pride from man, He keeps back his soul from the Pit, And his life from perishing by the sword. – Job 33:14-18

That reads as poetry to my mind.