the further adventures of

Mike Pirnat

a leaf on the wind

218/365: Garden Fairy

218/365: Garden Fairy

This little fairy appeared in our garden sometime in the past week. The temperatures have been so hot this summer that I've barely paid any attention to the yard beyond some basic pruning and weed control, but after a couple rounds of much-needed rain the garden was cooler and pleasantly damp, and I rushed out to see what I could find.

This is also the first time in a couple of weeks that I've shot with the 60D; I knew I had been missing it but hadn't realized how much.

Read and Post Comments

How Does Your Software Garden Grow?

Farewell to Daffodils
Farewell to Daffodils
Originally uploaded by mikepirnat

Every time I spend a few hours working in my garden, I find myself inescapably drawn to the parallels between gardening and software development. Whether you're digging in the dirt or head-down in code, there are many lessons from one that are equally valid and valuable in the other. Here are the ones that I keep coming back to:

  1. Vision: Whether you're planning a garden or starting a new program (or maybe just implementing a new feature), you need to have a vision for what the finished product looks like, and always keep it in mind as you build toward it. Without some discipline to guide you, your code garden will be a disharmonious mish-mash with no direction, and your efforts will be wasted.

  2. Vigilant Weeding: Your garden and your codebase are going to be under constant assault from weeds of all kinds. It might be thistles and dandelions, or it might be subtle bugs and poor designs, but only your continuing vigilance keeps them from getting out of control and spoiling what you're trying to achieve.

  3. No Mercy: Is something not working out the way it should? Has a bush grown into an oversized monster? A class gained so many features that it's unmaintainable? Something just not flourishing? Don't keep it just because it's already there--refactor. Rip it out. Replace it with a better alternative. You won't really miss it, and the eventual result will be better off without it.

  4. Openness to Change: The original vision might not be attainable; that's okay. Rethink the vision and you'll probably come up with something that will be even better than what you thought you wanted in the first place.

  5. Keep an Eye on Your Neighbors: Pests like grubs and dandelions don't respect property lines, and neither do bugs, bad designs, or performance problems in systems that your code may have to talk to. Be on your guard for nasty things that might leak across and foul your work. Wall them off and isolate them before they move in permanently.

  6. Use Good Tools: One day, I got fed up trying to dig a hole with the same old shovel that had been in the garage forever--an old hand-me-down even when it came to us. I broke down and bought a new shovel; the blade was sharp, the handle more comfortable. It felt good to use, it took a lot less effort to get the job done, and I didn't hurt after using it. So too in software, using modern tools like a DVCS can be a lot more effective than older, worn-out counterparts.

  7. Know How to Use Your Tools: Whether you're in the garden or hacking on code, you need practice and knowledge to use your tools effectively. You'll save time and be far less likely to injure yourself (or those around you).

  8. If It's Worth Doing, It's Worth Doing Right: You wouldn't drop a bunch of money on new plants only to have them die without fertilizer or water. So write tests. Practice good methodologies. Don't skimp on documentation or streamlining your deployment. Don't half-ass it, or you'll pay for it eventually--and probably a lot sooner than you expect.

  9. It's Alive: Your garden and your code are organic, living things. They need your love and devotion, your sweat and toil, if they are to grow successfully. Sometimes that love is tough, but it's necessary.

  10. Take Pride in What You Do: At the end of the day, it's nice to relax and enjoy the beauty and you've created, to appreciate the small oasis of order that you've carved out of the entropy and chaos of the world. You want to be able to enjoy the fruits of your labors. You don't want your yard or your code to be an eyesore that all the neighbors complain about.

  11. Enjoy What You're Doing: If you're not enjoying it, you're doing something wrong. Figure out what's keeping you from being happy about your work and do something to change it.

  12. Talk to People: Just as you wouldn't want to plant a sun-loving flower in the shade of your apple tree, you also wouldn't want to use a dictionary when you really need a set. Many problems have already been solved, and there's a tremendous wealth of knowledge and experience out there; whether it's the guy at your local garden shop or the folks in your local user group, you'll be amazed at what you can pick up from even a little bit of human interaction.

If you're writing code but not gardening, try it out and see if you don't have some similar revelations. If you are a coder who gardens, what parallels have you drawn? How has gardening influenced your programming work?

Read and Post Comments

Good With the Bad

Things that are bad:

  • Being super-crazy-busy at work.
  • One fiasco after another at work.
  • One fiasco after another at my wife's workplace.
  • Having to pay sales tax on haircuts.
  • Having to pay sales tax on my DirecTV bill.
  • Having to pay sales tax on all kinds of asinine things. Hey, UP YOURS, GOVERNOR TAFT! Way to stimulate Ohio's economy by giving me less money to spend on Ohio business. Asshat. When the heck are we gonna vote this kook out of office?
  • Massive papercuts on one's tongue -- curse you, Citibank envelope of Hades!!
  • Being up too late.
  • Being too tired to work out.
  • Not having time/energy enough to post much.

Things that are good:

  • New carpet...still!
  • Working out, when I've not been up too late.
  • I got the Matrox framebuffer tweaked all (mostly) nice! I have a very pretty text console! La-de-flipping-da!
  • Mmm, good cooking lately.
  • Hey, we've got TOMATOES! And they're bright red, perfectly ripe, and damnably delicious! (Quite lovely with a spot of salt, pepper, olive oil, basil, and balsamic vingear... mmmmmmm....)
  • Geek porn, aka the latest Mac World magazine (lots of pretty pictures of Panther and the new G5's, *drool*)
  • Dealing mercilessly with work fiascos and emerging victorious, huzzah! Bask in my issue-resolving glory!
  • Having a creative out-of-office auto-reply message.
  • Dad's Bose noise-cancelling headphones... though I am enough sold on them that maybe I should recategorize them as "bad things."
  • Being on VACATION!
  • Road trip to Canada, starting tomorrow, to go see lots of plays. (Remember last year? I do!)
  • Other things too numerous to mention.... yeah.
Read and Post Comments

As Promised

As promised, I have new pictures of the garden destruction/improvements.

Removal of the nasty dying bushes

Bushes are GONE!

Natty-looking azaleas have been moved, and we've got another flat of marigolds planted! Yay, marigolds!

The front garden area, cleaned up some more

Scraggly bushes by the front door have been replaced with red and white impatiens (which kind of go with the red geraniums, and when the front door is open, they match our Snoopy piece nicely.

Another view of the front garden area, showing the hostas that were relocated from the herb garden

The herb garden has really gone nuts -- check out the giant cilantro (front, slightly to the left of center)! The tomato plants (along the back) are also turning into monsters, and seem ready to challenge the sage for dominance.

I thought the sky and the evening light in the trees looked rather beautiful.

Read and Post Comments


I keep forgetting to upload pictures of Liz and her adventures in the Front Garden of Doom. I'll see if I can get to that tomorrow evening after work. The devastation is really quite a sight to behold.

I'm making good progress on my goofy RSS parser and related utilities, so much so that I think I can back-burner coding on that for awhile. I have a silly bit of code to write for utterly cosmetic reasons, which I may do as a really simple CGI or a bit of JavaScript instead. When the time comes, you'll know how silly it is. (Trust me, it's silly.)

Oh, and about that mix CD that I thought I'd be done with sometime last August? It's got master CD's, cover art, disc labels, empty jewel cases, and a fresh ink cartridge. So it might actually be for real sometime very very soon. Was it worth the wait? I guess we'll all have to wait just a bit longer before we can find out.

Read and Post Comments

Rumors of Alvin's Death Greatly Exaggerated

Something tells me it might be easier to dispose of a dead chipmunk if, in fact, the chipmunk in question is actually dead.

I threw on a shirt and some shorts, grabbed a pair of good gardening gloves, and headed out back to see about pitching our fuzzy little corpse into the compost pile in the wooded area out back. I inhaled the delightful morning air, cool and ripe with possibility. I surveyed the scene.

And that's when he started twitching around and really freaking out.

With a surprising amount of calm, I turned right back around and went to get some scissors, then went back out to cut him loose.

If you ever have to cut a chipmunk loose from bird netting, make sure you have good thick gloves on, because the little blighter is not going to be terribly cooperative, nor is he really going to be happy about his predicament. In short -- look out for the chompers. Luckily, he didn't break through my gloves at all, which is why I'm posting this now instead of after a visit to the hospital. (Guess whose tetanus booster has long expired?)

He had done a great job of getting tangled up, so it was rather a challenge to get him loose without him taking off one of my limbs in the process. I wasn't able to get everything from around his neck, since he was pretty sensitive about where the scissors were going.

But I did get him free, and off he ran, hopefully to be a smarter chipmunk in the future. Granted, he'll probably choke to death from the netting that's still around his neck, or be the new poster boy for environmentally abused rodents, but I did everything I could for him, so I'm not going to spend any energy feeling guilty about it.

Besides, the little bastard was after my strawberries. It's hard to feel any pity for thieves, no matter how cute and fuzzy they may be.

Read and Post Comments

Things That Make Me Happy

It's been awhile since I've posted anything here, and I figure it might be nice to just talk about some of the good things that have happened lately instead of carping about the state of the world, my misadventures with strep throat, and so forth. So, without further ado, here are some recent things that make me happy:

Read and Post Comments