The Caffeinated Penguin

musings of a crackpot hacker

Book stack update

| October 29, 2007

(Note, I've started tagging these, so you can look them up at

(* = denotes recent addition)

Currently Reading: The Gun Digest Book of Combat Handgunnery, Massad Ayoob Dark Tower VII: The Dark Tower, Stephen King Serenity Found, Jane Espenson*

Currently on the stack: The Official Handbook of the Vast Right Wing Conspiracy, Mark W. Smith Supreme Court Gun Cases – Two Centuries of Gun Rights Revealed, Kopel, Halbrook and Korwin Straight Shooting – Firearms, Economics and Public Policy, John R. Lott, Jr. America Fights Back – Armed Self-Defence in a Violent Age, Alan Gottlieb and Dave Workman Politically Correct Guns, Alan Gottlieb* The Past Through Tomorrow, Robert Heinlein The Federalist Papers, Hamilton, Madison, and Jay We Were Soldiers Once… and Young, Lt. Gen. Harold G. Moore (Ret.) and Joseph L. Galloway People's History of the United States: 1492 to Present, Howard Zinn The Underground History of American Education, John Taylor Gatto The Falcon Banner, Christopher P. Lydon Sigil of the Wolf, Christopher P. Lydon The Lion's Pride, Christopher P. Lydon Democracy in America, Alexis de Tocqueville Will: The Autobiography of G. Gordon Liddy, G. Gordon Liddy The Door Into Summer, Robert Heinlein Tomorrow, The Stars, Robert Heinlein The Rolling Stones, Robert Heinlein The Number of the Beast, Robert Heinlein Great Issues in American History, Volume II – From the Revolution to the Civil War, 1765-1865, Richard Hofstadter. Great Issues in American History, Volume III – From Reconstruction to the Present Day, 1864-1981, Richard Hofstadter and Beatrice K. Hofstadter The American Political Tradition and the men who made it Richard Hofstadter SAS Survival Handbook, John “Lofty” Wiseman On Killing : The Psychological Cost of Learning to Kill in War and Society, Dave Grossman On Combat, Dave Grossman Serenity: The Official Visual Companion, Joss Whedon

Some quick thoughts on things Linux related

| October 27, 2007

On Gutsy:

  • Compiz-Fusion in blingTACULAR
  • They appear to have fixed my wireless issues
  • Haven't tried suspend resume
  • Openoffice 2.3 basically can't print (I have a 20 sheet spreadsheet. It prints one page. Not the first one, or the last one, just a random one in the middle)


I can't upgrade my desktop to Gusty, because openoffice not working is a dealbreaker. Therefore, I'm waiting for the next edition, which is also going to be a long term support version. If the bling in Gutsy is any indication, I think it will have a lot of shiny features.

However, I am going to upgrade to it and say there. I'm tired of these bleeding edge stuff and want some stability. 2 year release cycles are fine.

On Vector Linux I had heard good things about this. Pro:

  • It is fast. Very fast
  • It is lightweight Con:
  • It lacks the polish which Ubuntu has

In the end, I poked it for a bit and will be staying with Ubuntu.


| October 26, 2007

Folks like these give people of faith a bad name

(Liz says: folks like these give intelligent society a bad name. I'd argue that they're not part of intelligent society..)

A short movie review

| October 17, 2007

Liz and I watched The Village. What a retarded movie.


| October 13, 2007

A gallery of photos of a couple of kittens which are staying with us for a few weeks until they find homes


| October 10, 2007

(I'm channeling a little bit of here.)

Today, Liz and I adopted two kitties from Helping Paws Rescue. This is a volunteer animal rescue just down the street from our house. It's kind of heartbreaking, because they have so many Cats and Dogs which need homes. If you are in the area, feel free to contact them and arrange a visit. Of course, you are always welcome to donate.

Anyway, we've adopted two girls, one about a year old, the other about a year and a half old. The younger one is Licorice. She's a bit afraid, and has been hiding upstairs on the guest couch in the midst of a pillow fort. The older one is Heidi, who is adjusting nicely – exploring the house, establishing boundaries with the boys, etc. She doesn't like to be picked up or held on anyone's lap right yet, but absolutely loves to be petted on the ground while rolling about and purring loudly.

Heidi has some supper. Heidi gets petted. Licorice in the pillow fort. (Look at the right side of the center pillow – see the black spot? That’s her.) Peek-a-boo! Hi there Licorice.


| October 7, 2007

I've started adding vegetable-based kitchen refuse to the lawn clippings pile in an attempt to “balance” the pile a little more. Just lawn clippings doesn't break down as rapidly as one would like. So, I've been adding vegetable scraps and spoiled bits, tea leaves, coffee grounds, eggshells, etc. to it as well. I've been skipping the meat, because it tends to attract critters and takes a long time to decompose.

There are several ideas here. For starters, we need the compost to add back to the soil for the garden. It also reduces our curbside waste, which is already very low, provided we haven't been buying too many things (packaging generates a lot of non-recyclable waste). Finally, it keeps our organic material local – why bother shipping it down to New Jersey when we can use it here.

Anyway, for folks who don't have a large amount of space to devote to a compost pile (I'm thinking folks in the suburbs w/ small yards, etc.) but still keep flowers or small gardens, I came across the Naturmill Indoor Composter, which I thought I would share. Basically, it heats and turns the pile for you automatically, so you get a very rapid breakdown. It also gets rid of an unsightly pile or bin, and looks just like an overgrown garbage can. If we didn't have 5 acres of land, I'd likely consider getting one. However, as it stands, just going out and turning it with a pitching fork every few weeks seems to be working well.

Retarded programming fads

| October 5, 2007

I pontificate about fads like EXXXTREEEEME Programming and Agile Development and also wax poetic about Object Oriented Progamming – and how it is a fad similar to these others (read it before you criticize).

Software programming fads are created when someone takes an otherwise good idea or technique and builds a whole mythology or management technique around it. They give it a shiny name, write a book, sell a lot of copies, convince a lot of managers that they can get better productivity out of their department if they adopt this philosophy and reorganize their departments. Extreme programming, in a nutshell, is centered around the old idea of pair programming, senior/junior engineer, sensei/sempai, etc. It recognizes the reality that ideas flourish better when you have someone else off which to bounce ideas. No one works well in a vacuum, but once you hit more than a couple of people, meetings become too much politics and not enough engineering. Some stupid versions of this actually have two programmers sharing the same computer, but a more normal application puts programmers on the same project in the same offices, or within talking distance. That said, this is not a new idea, just an old one repackaged and given a shiny name. Agile Development is the hot new thing (new is relative – Liz just told me about it, so I looked it up, but it could have been out there for years and I wouldn’t have known about it). The basic idea here is that you have short, frequent release cycles, somewhere between a week and a month. So, it’s a short deadline with a lot of intense programming, a specific feature list and a given release date. However, here is the catch – this is also not a new idea. When I managed a driver group, we kept short release dates which a bunch of small fixes. These releases could go out to testing, they would test, we would work on the next round of bugs, get more bugs in, fix those, etc. However, as with most things, folks have piled on lots of nonsense – daily meetings, etc. to an otherwise reasonable idea. This approach is not without its flaws. See, there’s this little problem of “if we’re doing all these short releases, how the holy hell do we actually architect a major change without completely messing up the release schedule?”. You also run into this problem of tunnel vision. Folks get so focused on their little pile of bugs that they miss the big picture, and don’t even know when these changes need to be made. Once again, reality is somewhere in between – in a balance between what these folks recommend and complete disorganization, you will find efficiency and productivity. This applies to Object Oriented Programming as well. Now, do not misunderstand – objects are a useful way of organizing and reusing design patterns and components of software, of breaking things apart in your mind such that you can deal with subdivisions of a problem. It allows you to divide work amongst individuals, groups and teams. It allows for code reuse and mutability, if you will, through inheritance, polymorphism, etc. The problem is that this is often taken to an insane extreme. Consider the following code:
    $dbconn = new->databaseConnection()
    $data = $dbconn->getFooForID($id);
Let us assume that databaseConnection is a class which handles connecting to the database, including a bunch of convenience functions. The class talks to the database, gets the piece of data, and gives it to us. The problem is that this is not acceptable in all cases. See, Foo is actually a piece of data which is collected from another class. So, by proper design principles, that class is actually what we should be talking to. So, the following code would be “more correct”:
    $thingy = new Thingy();
    $data = $thingy->getFoo();
Now, the code is a little longer, but doesn’t actually look to be much worse. However, it is. How much worse, we don’t know, unless we go peeking inside Thingy. So, you’ll have to take my word for it, when I say: – The createFromDatabase call does the same thing as the first bit of code. – Thingy gets and creates Foo, as well as Bar and Baz. Since each of these are several hundred bytes of data, all roughly the same size, we’ve tripled the size of our object. – Since createFromDatabase pulls data for the whole object from the database, it also grabs Bar and Baz. So, what have we done? In order to get the same amount of data, we have bloated the object to 3x its size and are now pumping 3x as much data over the wire from the DB server. What have we gained? Well, in the first case, if I wanted to get Bar, I’d add:
    $data = $dbconn->getBarForID($id);
which would query the DB a second time for the other bit of data. In the second case, I would do:
    $data = $thingy->getBar();
which would just the data out of Thingy – no extra DB call required. So, effectively, in the “correct” OOP solution, we front load the work on the off chance we might need the data sometime. Of course, in the “incorrect” solution, we can optimize any places which call getFooForID and getBarForID in sequence by making a getFooAndBarForID which returns an array – in this case, we’re still saving one third of the data, for no additional DB call. As with all things, there is balance. Fail to use new tools and techniques, and you miss opportunity. Become a slave to some crazy fad and insist everything must be done this way, even if it doesn’t fit, and you lose productivity. Of course, a lot of the folks you deal with are all too happy to jump on the “let’s do it this new shiny new way”, and I end up being the crusty old firmware guy who is used to programming things with security, efficiency and reliability in mind, yelling at the new kids to not be stupid.

Photoblog post

| October 5, 2007

I have some pictures, so I figured I'd share.

Oh, folks have been asking for an update on Arthur. He has not returned. However, there is an old picture of him behind the cut.

Mikey and Arthur Hanging out on the bed. Mikey and Toby on the couch. This never happens. I think they miss Arthur, and have made peace with each other lest they be alone. I have peppers. I made some homemade hot pepper sauce, inspired by George Duran’s Flaming Blast of Lime Hot Sauce. I used different peppers, left out the cilantro (because I didn’t have any) and hit it with more garlic. It’s surprisingly good, though it looks a lot like carrot juice. I’ve also got another batch (about 2 cups) of peppers sitting in salt so that they can age and ferment, which is the recommended way to really develop the flavors in the peppers. This is destined for a plain hot sauce – just peppers, salt, and vinegar. I saw this girl out my office window about a week ago. And my father in law set up this rig for when the season starts.