After some discussion with Apress, I’ve decided to move my blog from there to here. Many thanks to Apress for hosting my blog all these years. We must still like each other, too, because not only do I fill my shelves and my nook with all kinds of Apress titles, but I’m finally writing a second book for them. Details to come soon.
Many thanks to Pete Aylward at Apress for helping me move my content from there to here. We had an adventure, as the version of WordPress running Ablog didn’t have an export feature. Pete exported my entries as a CSV, and I converted them to a WXR (WordPress eXport Record, if memory serves) and imported them. I had some trouble finding a WXR spec, until I realized I had WordPress running and able to export entries, so I created a couple of dummy entries (yeah, yeah, I know — ALL of my entries are dummy entries) and exported them to a WXR file. From there, I was able to reverse engineer the format, write a Ruby program to convert the data, and I was good to go. As you look at past entries, you’ll find them out of order chronologically, so I put an original post date on them and was satisfied. You’ll also find some formatting glitches that I may or may not fix eventually . . . .
Thanks for stopping by!
Originally posted 2005-06-14 22:33:56
Grandma Thelma always admonished, \”Don’t judge a book by its cover!\” whether or not any reading material lay nearby. Her waggling finger didn’t refer to Great Expectation’s dust sleeve, but rather the importance of looking past superficialities to understand the true nature of other people or things. Of course, we didn’t always listen to Grandma Thelma, especially that part about keeping baseballs out of her petunias, but we recognized the merits of this nugget, didn’t we?
Poor Grandma Thelma. With hillbilly couth, I marched into Border’s last month, saw a book, gaped at the cover, snatched it from the shelf, and bought it. Not a spot of attention could I pay to Grandma Thelma’s sage advice. The cover of this book so arrested my attention, so startled my sensibility, that I felt impelled to act and judge, and to heck with Grandma Thelma and her blasted petunias. This book featured a Granny Smith apple against antiseptic whiteness. A wedge from the apple sat in front and to the right of its parent fruit. In place of apple flesh, however, the exposed innards of the apple sported orange pulp. \”Wow!\” said my mind, fumbling with the unnaturalness. \”That can’t happen!\” Everything looked right, but yet so wrong.
Not content to reach me visually, the cover vied for my tongue’s attention. My taste buds leaped for the crisp tartness of the apple, while my throat readied for the juicy, tangy citrus of the orange. The green and orange of the fruit splashed throughout the layout, seeping into the book’s title and authors’ names, unadulterated by any other color save for a smidgen of utilitarian black. The particular shades of green and orange melted into tubs of lime and orange sherbet, spooned themselves into my eager mouth, and soothed my hot, dehydrated throat. Do you see why I had to ignore Grandma Thelma?
Perhaps you’ve recognized the book by now: Steven D. Levitt and Stephen J. Dubner’s Freakonomics. Follow that link and take a peek at the cover. Terrific, ain’t it?
So I bought the book on the strength of its cover. I judged it by its cover, reasoning that any book with such a cover must merit a read. Besides, the number of books I read guarantees that a few turkeys will sneak through (Clinton’s My Life, anyone? Even I couldn’t fend off enough ennui to get past page 42), and the book’s sale price made the purchase worth the gamble.
The book did not disappoint. I winced as I read that my swimming pool poses more danger to my children than the gun I staunchly refuse to buy so that they’ll remain safe. I exhaled with relief at the inconsequence of my parenting. I squirmed at the evidence that legalized abortion has arrested crime far more effectively than legions of police officers ever could. Freakonomics promises no central theme, but instead collects various observations, backed by statistics, that defy common sense. It doesn’t preach–it contains no \” . . . and because of this, you should fill in your pool\” moralizations–but instead presents some facts you’ve probably never realized. It entertains, instructs, and challenges some of our ingrained notions. I’m glad I let this book’s cover convince me to buy and read it.
Does anyone know where I can find a print of that apple/orange blend to hang on my wall?
Originally posted 2006-06-08 02:56:35
Just before 5:00 this morning, my daughters’ screams ripped me from sleep. I have two sons and three daughters. The boys fight and the girls scream. That’s just what they do. So screaming girls shouldn’t startle me.
These screams, however, differed from the usual \”Give me back my shirt!\” or \”No, you can’t use my doll as home plate!\” screams. These were horror flick screams: blood-curdling, ear-shattering, abject-terror-my-life-is-ending screams. As I leapt from bed, my first thought was that one of my daughters had fallen from bed, landed awkwardly on a toy, and grotesquely broken her back. The three girls share a bedroom and have bunkbeds. They all usually sleep on the bottom bunk, however, as they did last night, so that scenario didn’t seem likely.
My next thought chilled me: an intruder. As I raced behind my wife to my daughters’ room, I became convinced that I’d find an evil kidnapper. I tried to figure out how to get to the room first, before my wife, heedless of the fact that I was half-awake, weaponless, and protected only by my underwear. I had no opportunity, however, to pass a momma bear protecting her cubs, and we both raced to thwart whatever was terrorizing our babies. As we arrived at their room almost simultaneously, I searched furiously for some drug-addled addict while my daughters continued to pound my skull with their screams. I saw no one. Nothing. Then I looked where my wife was pointing on the floor, halfway across the room from where my daughters cowered in bed, screaming and clutching each other. It was a centipede. A scrap of toilet paper and a quick flush thwarted the would-be criminal.
Let’s see . . . how do I relate this to technology . . . got it. Do your utmost to keep your code issue-free. Like my daughters, customers tend to overreact to bugs.
Originally posted 2008-12-12 07:27:04
In recent months, two computers in my home reached the ends of their useful lives. The first was the HP desktop that my children use. They’ve loaded so many game demos on it over the years that it had become painfully sluggish. I was going to wipe and reinstall the OS, but the DVD drive doesn’t work. I had replaced the drive some months ago, and it worked for a week then quit working again, so it’s probably an issue with the motherboard. The computer is old enough, and my time is valuable enough, that it was simply cheaper to give the computer to a geeked-out nephew and buy a Lenovo on sale for less than $500 (3 GB RAM, 500 GB hard drive, 19\” monitor).
The other computer that died was my wife’s HP laptop. The connector on the power cord was bent in some sort of accident, which can easily happen in my home (three adults, five children, three dogs, one cat, and a parrot), and I don’t know if the problem is with the power cord or the connector on the computer, but no matter which it would be expensive (both to the wallet and the schedule) to buy replacements and troubleshoot the issue. Old laptops don’t merit that kind of hassle. So again I went shopping and found a $499 laptop–again, a Lenovo–with 3GB RAM, 300+ GB hard drive, and all the power my wife needs to do email, buy things on the Internet, and update her Facebook status.
Both these new computers are much more powerful than their predecessors. They’re sleek, robust, and satisfy all my wife’s and children’s computing needs. I should be a hero, but I’m not. They hate them. The culprit? Vista. They say, \”It’s slow and it doesn’t work right.\” Apparently, they’re not the only ones saying that, as Windows market share drops below 90%.
My children use two applications: Firefox and Word. They surf the web and they write papers for school. They’ll soon be moved to OpenOffice.org. My wife uses 3 applications: GMail (through Firefox), Facebook (through Firefox), and OpenOffice.org. Oh, and she shops, all through Firefox. I’m switching them both to Linux this weekend, and I’ll regain my hero title.
Originally posted 2005-07-13 06:12:12
I just came across this, which explains how to put Eclipse project settings like code styles in version control. Eclipse continues to amaze me with how they’re advancing the state of IDEs!
Originally posted 2007-08-06 17:40:17
My parents spent the past three years Down Under doing missionary work. They lived in Melbourne, halfway around the world from us in Florida, USA. Email shortened the distance and resolved the time zone issues, so communication ran freely. Rather than ferry a computer around the globe and foot a shipping bill that exceeded the value of the goods shipped, they bought a computer in Australia and left it behind on their departure. They did all their email in Outlook Express, and my father took care to ask me how to preserve the contents of their address book to bring back to Florida. I told him to export the address book, copy it to a flash drive, and we’d deal with it when they got home. He obeyed me as well as I obeyed him a few decades ago, and instead sent five separate emails announcing his new stateside email address to the people in his address book, one-fifth of the addresses per email, and bcc’ed his new address on each one. He fancied himself clever.
Not only did I talk him out of using Outlook Express on his American reentry, I also talked him out of a Wintel Vista machine and into a 20
Originally posted 2010-05-22 08:39:08
I first met Steve Bristol in 2007 at the inaugural RubyJax meeting. I walked into the meeting expecting a typical tech gathering of strangers: people sitting as far away from each other as the room will allow, reading email on their smart phones and acting as if they’d rather be anywhere else, and hoping someone else would start the conversations. Steve (along with Jon Larkowski) set the tone for the meeting. He started the conversations, and was no stranger (though he was stranger than I expected). As people filed into the room, he acted as if his life had been leading to this moment, that he’d hoped to meet that person for so long and was as happy as a Macolyte on iPad-release day to finally do so. That night, he was open, fun-loving, needling, profane, unkempt, and raw, and has been so every time I’ve seen him. The RubyJax user group continues in that vein, and is the most social, smartest group of people I’ve ever hung around. It’s worth moving to Jacksonville, just to come to our meetings!
When I saw the announcement for LessConf 3010 and the lineup of speakers, I emailed my boss, a 37signals fan, and told him we should go as a management team. He responded that I and a coworker should go, so we signed up. My coworker realized late that he had previous plans to attend a wedding this weekend, so missed the conference. Two words: Mis Take. I’d have skipped my best friend’s wedding, my sister’s wedding, and would have considered hiring a proxy for my own wedding rather than miss this conference. You can always explain the pictures to the kids later.
Atlanta rains washed me to a runway in Birmingham while the first speaker–Chris Wanstrath, founder of GitHub–explained why your idea sucks, and why that’s a good thing. I feel like I missed a dosing of abuse and an affirmation that I’m OK, so I plan to scream at myself in the mirror tonight, and then soothe myself with a pint of mint chocolate chip while channel surfing for House reruns. I’m bummed I missed his talk, but maybe he’ll post slides?
I finally arrived at the conference and squeezed into the middle of Dan Martell’s talk. Martell is the cofounder of Flowtown, and talked about \”lean product development.\” Apparently he made a bundle with Spheric, and now seeks success with Flowtown, which takes your customer email list and sends you a bundle of information about them. Some highlights from his talk:
- Show mockups or prototypes to users before building your great idea
- If someone who is not your friend, family, aunt, etc., pays you $1 online, you have gone pro
- It’s not about marketing–it’s about product, so make a product that’s marketable
- Be ready to pivot from what you’re doing, but not jump
- Early adopters are important, because they’ll be patient with you
- Don’t fear competition, but don’t be distracted by it. See what your competitors’ customers are saying on Get Satisfaction or UserVoice
- Use metrics that are Actionable, Auditable, and Accessible
- They push code to Production 50 times a day, and anyone can push. A watchdog process monitors metrics, and automatically rolls back if it detects a problem
- Use UserTesting.com to see how real users are interacting with your site
Next up was Cameron Moll, author of Mobile Web Design and co-author of CSS Mastery: Advanced Web Standards Solutions. He’s a designer by both trade and passion, and he runs Authentic Jobs. He talked about good vs great design, and his passion for great design dripped from his presentation. He showed us some of the efforts he went through to make a poster of the Roman Colosseum with typography. He showed us a technique he uses to make sure his designs have the appropriate visual hierarchy: he removes the color, blurs the design, and makes sure the important parts stand out. He talked about influence vs inspiration, that influence is borrowed and inspiration is earned, and that you’d better schedule time to seek inspiration and have a plan to capture that inspiration anytime, anywhere. He recently started using Dive Slates so he can capture ideas in the shower. He talked about the importance of creative pause, when the body is engaged in some monotonous task and the mind is free to roam, and that this typically happens in bed, bath, or bus. When designing, be sure to understand the problem you’re trying to solve–don’t just jump in with your array of solutions.
Moll was running well into lunchtime, and said he would skip most of his talk so we could eat. A swell from the audience insisted he deliver the full material, however. No one wanted him to stop. We didn’t eat until 2:15, and no one complained.
A small group of us got to eat lunch with Peldi Guilizzoni, founder of Balsamiq, a mockup tool. He told us the story behind Balsamiq, that he was working at Adobe and needed a mockup tool, couldn’t find one he liked, and pitched his bosses on creating a tool for Adobe to sell. Adobe doesn’t touch things that won’t bring in at least $100 million, so he set off to do it himself. He said that the tool is nowhere near finished–he can’t believe people buy it!–but that he hopes to complete his vision of the tool this fall. He also said he’s embarrassed of his website, that he based it off some old 37signals design, but thinks maybe people like it because they can tell that it’s not backed by a big company, just \”some dude.\” He talked about the accounting pains of having two companies: one in California, where he started the company, and one where he now lives, in Italy. He has an office in his home in Italy, off his bedroom, where he and another employee work. There’s no phone jack in the office, so they used to carry the fax/printer into the bedroom anytime they needed to receive a fax, but they recently bought a 20 meter phone cord that they can roll up or string out as faxes demand. He was expressively Italian, open with his thoughts and experiences, and quick to laugh and poke fun at himself. He talked about how angry people get when your software breaks for them, but how grateful and supportive they are when you fix it quickly. He talked about his early beta group, that he has a release version and an early beta version, and that he’d built a group of passionate users that gave him great feedback on the beta, but had to start over after burning the group with a completely broken beta build. His American wife and children came with him on this trip, and they’re staying here for a two-week vacation but he flies back to Italy tomorrow. As he explained this to us, his face beamed and his fists punched joyfully upwards as a he slavered over two weeks of 20-hour coding days, though he hastily explained that he loves his wife and children. We all understood and openly envied his plans.
After lunch, he approached me and asked me if we’d met before, saying I looked familiar. For one fleeting, foolish, vainglorious moment, I thought perhaps his tech career had been sparked by The Definitive Guide to SWT and JFace, that my book molded his entire approach to developing software, and that he recognized me from my smashing Celtics-hatted photo from the back of the book. Alas, a quick probe revealed that he’d never touched SWT, but that Balsamiq boasted an SWT importer. We decided I must just have one of those faces or bald pates or something.
After lunch, Saul Colt from thoora spoke about how marketing is going to change in 2011. He probably caught us at our worst: long morning, full bellies, and ready to nap. The man apparently can’t be daunted, however, so he entertained and cajoled and got us moving. He approaches marketing by making people scratch their heads and think–sort of a high-tech shock jock–and his approaches defy convention. He claims to be the smartest and most handsome man in the world, and though he’s likely neither he sparks conversations with those claims. He confessed that he spends most of his time on the road, and often gets 10-12 hotel room keys that he passes out when asked for a business card (without revealing his room number, or so he says), just to start conversations. At zipcar, they forewent the budgeted, small, employee-only Christmas party, borrowed to the hilt, and threw a party/rock concert for all their customers. Break from the ordinary, he seems to say, and get noticed. He talked about knowing your customers (the more you know them, the less you’ll want to disappoint them), listening to them, and instead of just engaging them (which can be scary for them), empower them. He talked about the TupperWare-like party containers packed with Fresh Books goodies that they gave to Fresh Books customers so they could throw Fresh Books parties and do Fresh Books marketing. Transparency will be replaced by Invisibility, that instead of \”it\” kid rock stars being Twitter marketing celebrities, personalities will disappear and companies will just be doing great work. He said to find the niches where your customers go and go there.
In the days leading up to LessConf, some folks have pointed to the all-white, all-male slate of speakers, chosen by an all-white, all-male company, and have launched accusations of racism and misogyny at Less Everything. The panel contains more diversity than the critics acknowledge: David Heinemeier Hansson is from Denmark, Peldi Guilizzoni is from Italy, and Saul Colt is from a different planet altogether. True, though, that the panel has neither women nor people of color, but such strident accusations based on a nine-person slate, which has little wiggle room for adhering to statistical norms, seem unjustified. Bristol’s wardrobe attests to his colorblindness. Colt, however, didn’t help matters when he showed a slide of underclad lesbians kissing or about to kiss (I refuse to look it up), and that slide fell with a thud on the audience. You can be outrageous without offending. Colt muttered, \”OK, I need to remove that slide from this presentation.\” I agree.
After Colt, the 37signals folks took the stage for an interview with Bristol, where most was banter or rehashed information you can find elsewhere, but some tidbits surfaced. Years ago, DHH wrote editorial reviews for a video gaming site, grew tired of working with belligerent programmers to get his reviews published, and learned how to program so he could bypass the programmers. We owe Ruby on Rails to a few jerky programmers? Amazing! He then did some contract work for 37 signals, building Basecamp in 10 hours/week and proving how much you can get done when you focus. DHH also races a Porsche Cayman and wins often. Fried has two cars that he wouldn’t disclose.
With their recent book Rework, they’re trying to reach a larger audience than they have, and are succeeding. They revealed that the buildout on their new office is $1 million, but that this doesn’t flout the Getting Real concepts because they’re not spending other people’s money to do this. They’ve earned this by staying in substandard offices for so long, and are treating this as a luxury item. They’ll have an auditorium in their new office that uses 30% of the total space where they’ll hold seminars to teach others, as well as bring in others to teach them. Stay tuned.
The bacon pancake breakfast starts in five minutes, and I’m unshod and unpacked, so I have time neither to finish nor to edit, so this is coming at you raw–which, for a piece on a Bristol/Branch conference, seems appropriate. Looking forward to another great, raw day!
Originally posted 2004-08-23 10:34:33
Here in the US, OnStar is running a radio ad trumpeting the power of their flagship service. This system allows motorists to press a button inside their vehicles while they drive down the road, which contacts an uber-service for fixing all their problems and curing all their woes. You can read more about it here. DISCLAIMER: I’m not associated with OnStar, nor do I have access to it in any of my vehicles. I have never used it, and know virtually nothing about it.
In the ad, which has run for a few months, a woman notices that her \”Check Engine\” light has turned on. She presses her OnStar button, a helpful OnStar agent responds, and a friendly dialogue ensues. The OnStar agent runs a remote diagnostic, which reveals that the vehicle’s gas cap is missing or otherwise not properly screwed down. The woman breathes a sigh of relief and promises to check the cap at the next opportune moment. Problem solved. Case closed.
Two issues I have:
- Is this the lone OnStar success story? If so, why would I want the service, as I never forget to screw on my gas cap? If not, why is this the only story they run? It’s been months, so you’d think they’d rotate a new story in.
- The remote diagnostic certainly wins a gee-whiz award. Honestly, that’s pretty cool that someone sitting in Omaha, Winnipeg, or Bangalore (I’m guessing–I have no idea where their call centers sit) can remotely debug a vehicle flying down the highway. Once you get past the technical wizardry, however, you can’t help but wonder: why do I have to notify a call center to determine the disposition of my gas cap? The vehicle evidently diagnosed the problem without any remote assistance, as it lit its \”Check Engine\” light. Presumably, it knew at that time that the lid was askew. Why the middleman? Why make the harried driver press a button and chat, when the vehicle could have used some sort of rewritable display (LEDs, LCD, whatever) that said \”Check gas cap\”? Indeed, the car could have announced it: \”*Ding* Please check your gas cap.\”
As software developers, we fall into the same trap: we display error codes in our applications and expect users to Google for the full error description and possible remedies. Either that or we just crash!
Originally posted 2006-02-18 17:38:39
I went to a different T-Mobile store yesterday, and found that same mystery phone that’s not yet available. This time, however, I got a name, and Google found me some reviews:
I signed up to be notified when it becomes available.
Originally posted 2007-11-17 02:37:34
Last Thursday I attended the inaugural meeting of RubyJax, the new Ruby users group in Jacksonville, Florida. I drove straight from work and strode into the meeting wearing a golf shirt, crisp khakis, and tan Cole Haans, and instantly felt overdressed. A few people sported clean jeans and polos, but I’d have blended much better in a techno T-shirt, battered dungarees, and sandals. Hoops and baubles festooned nostrils and earlobes, and I knew instantly that these folks never proactively facilitated synergies nor thought outside the box to formulate win-win action plans. These were bohemian coders, not corporate drones, but they betrayed no suspicion when extending me hellos and handshakes. In fact, these bonhomous bit-twiddlers welcomed each newcomer as if reconnecting with long-lost cousins at Uncle Dale’s family reunion. I’m used to more reticence and reserve at technical meetups, and I enjoyed the agreeable ambiance. We were there to connect and have fun, not hide behind Dependency Injectors or Object-Relational Mappers.
Twenty-one people attended the meeting. Read that sentence again. Twenty-one. For the kickoff meeting about a language that no North Florida corporation will officially touch. I’ve rarely seen that many people attend a JaxJUG meeting, and that group has been around for years and draws from scores of Java-centric local companies. In the rare moments that Jacksonville commands national attention, like when the Super Bowl came to town awhile back, the national press paints us as a hick town, a village of rubes more familiar with motor oil, Skoal, and moonshine than with silicon, compilers, and closures. I never imagined I’d meet so many Ruby programmers in the former Cowford. In addition, some of the attendees, apparently, are luminaries in the Rails scene, as measured by Working with Rails. For example, a gaggle of ThoughtWorks refugees attended, including Obie Fernandez, series editor of Addison-Wesley’s Ruby series and author of the upcoming The Rails Way, and Desi McAdam, one of the founders of devChix, a community for promoting software development among women. I remembered when one of the developers at work thanked me for sending him to RailsConf 2007, gushing, \”I got to see real live celebrities! I stood beside DHH!\” I can’t claim the same level of adulation–it’s tough for mere software developers to compete with the moment I shook Dr. J’s hand–but I certainly appreciate that a core of Ruby and Rails significance lives here on the First Coast.
We sat in a circle and spent the meeting introducing ourselves and asking each other questions about what we’re doing with Ruby. I quickly discerned that safe would not impress this crowd, so I merely confessed that I no longer program professionally, and have only played with Ruby and Rails. Some from the crowd were no farther along the Ruby path than I, but many program Ruby and Rails full-time. Small shops, either product-focused or consultancies, seemed to dominate. That world fascinates me, probably because I know so little about it and can only imagine how it works. Even during my contracting days, I always had one main client in whose offices I sat for 40+ hours a week, so I can only speculate how to chase and find enough clients to keep steady work, or how to keep the coffers full enough to meet payroll while working on and hawking products. I guess I’m a low-risk sucker for a steady paycheck, but I can admire from afar. The people in the room didn’t seem as stressed as folks in our offices are. The technical skill level seemed, at least, to be very high, which is what I’d expect from early adopters of a code-based, not point-and-click based, technology. I enjoyed the meeting, and regret I’ll miss the December one for business travel. I’ll be back for January’s meeting–this time in cutoffs and Crocs!
Incidentally, I’m not sure who chose the name \”RubyJax,\” but I’d have transposed it: JaxRuby. That would have been killer.
- RT @rbazinet: This is awesome -You call yourself a programmer? Well then, use a REAL programmer's keyboard: t.co/YO5OsgYP8B (via @an…
- RT @qrush: My guess is 2 years for Tumblr to get shuttered. One year to get renamed into Yahoo! Tumbles
- RT @TMcManemy: Love this site for keeping tabs on tech ebooks that are on sale. t.co/P4kn2vCGtr /cc @hoop33
Follow @hoop33 on twitter.
What I’m Writing
- May 2013 (3)
- April 2013 (6)
- February 2013 (1)
- January 2013 (1)
- November 2012 (6)
- September 2012 (1)
- August 2012 (6)
- July 2012 (10)
- June 2012 (4)
- May 2012 (7)
- April 2012 (4)
- March 2012 (8)
- February 2012 (7)
- January 2012 (7)
- December 2011 (1)
- November 2011 (1)
- September 2011 (4)
- August 2011 (2)
- July 2011 (2)
- June 2011 (2)
- May 2011 (4)
- April 2011 (2)
- February 2011 (1)
- January 2011 (1)
- December 2010 (3)
- November 2010 (3)
- October 2010 (4)
- September 2010 (6)
- August 2010 (96)