This week I wound up trying to put together a sample “real-world” problem suitable for use in an automated web thing aimed at potential new hires. Of course, any actual “real-world” problem would be have too many extraneous details to make it suitable given the constraints of the web thing, but trying to create the illusion of real-world-ness was kind of fun. Since this seemed like sort of a weird way to spend a day or two, I decided to make it weirder by implementing both my solution to the problem and the code to generate test data in a language I don’t use every day.
I present to you two things that sound like they should be metaphors for project issues. Except for two things: They are real I have no idea what they might be metaphors for The Library Book Priority Conundrum I read a lot. In general, I purchase books I’m very excited about reading, and books that I’m less sure about I check out from my local library.
If I’m counting right, Ruby Midwest is my fifth conference this year, which is I guess one of the perks of having an employer that likes being involved in the community. It’s great – I like meeting all the smart people involved with Ruby, I learn things, and sometimes people ask me to sign my book. (Okay, that happened once. Still, that’s more than zero.) At the risk of shooting myself in the foot forty-eight hours before I go give my own talk, here’s a list I compiled for a lightning talk at a recent Groupon Geekfest, entitled 10 Things That Drive Me Crazy About Conference Presentations.
I wasn’t going to write this, because it’s not like the Internet has a dearth of people writing about Steve Jobs who never knew him or interacted with him in any way. I wrote it anyway. I’ve watched the first few minutes of the keynote introducing the iPhone several times. It amazes me – both as a seminal moment of technology and as a presentation. Jobs starts of by saying he’s been looking forward to this day for two-and-a-half years, and that he’s been fortunate to work on multiple “revolutionary” products in his career.
As you may have heard, Obtiva got bought by Groupon. I’ve been traveling a bunch, so this coming week is my first full week in the Groupon office post-transition. And, well, someday maybe I’ll write retrospectively about Obtiva, but today isn’t that day. I’ll probably write about what I’m going to be doing at Groupon, but today isn’t that day, either. Instead, I realized that month marks four years since I left Motorola and became a Rails consultant.
I was a nerdy kid. I suppose that isn’t much of a surprise, given how I turned out. But in those pre-computer days, I was nerdy about math and baseball. I was the kind of kid that kept a daily log of my batting statistics in the recess kickball games. So you can imagine my surprise and happiness when this image appeared in Sports Illustrated, in May 1981. I was ten:
I want to tell you about LoneStar RubyConf and how my session went and all that, but first I want to tell you this seemingly unrelated story. Once upon a time, my Senior undergraduate project was an educational software tool I built to teach fractions to elementary school students. (To give you the time frame here, it was written in Visual Basic 1 on Windows 3, and I had to ship my own desktop to the school to ensure that they’d have something I could run it on.
A few quick notes about Lion, mostly first impressions and things I haven’t necessarily seen a ton of coverage on. The install itself This is, I think, my third major OS upgrade since I started using OS X all the time. It’s by far the easiest install. The biggest problem was the time it took to download the installer. I also had a problem where the XCode installer finished but didn’t register itself as finished, such that it appeared to hang.
So I tend to keep an eye on interesting things in the Ruby self-published technical book space. This isn’t exactly recent, but I did want to mention and endorse Avdi Grimm’s Exceptional Ruby. This is exactly the kind of thing that should be happening in the self-publishing space. It’s a brief, thorough exploration of a very specific topic, in this case error and exception handling in Ruby. You may think you understand Ruby’s error mechanisms, but I’m pretty sure that unless you are actually Avdi, you will learn something both about the mechanics or Ruby’s exception handling and how best to robustly integrate error management into your code.
The problem with sitting on these daily link posts is that the links go out of date. Sigh. Here are some links. Twitter I found a couple of things about this InfoQ article about Twitter’s infrastructure odd. I was expecting it to be a bit more of a Rails hit-piece, frankly, so it was nice to see a quote like this one from Evan Weaver: I wouldn’t say that Rails has served as poorly in any way, it’s just that we outgrew it very quickly.
Back in January 2009, I did a bunch of interviews with prominent Rubyists about their test practices. The interviews vanished when I moved the site to WordPress, but I still get hits from a link to the interviews, and I thought it would be useful to get them all in one place. Remember, this was 2009, and I’m sure everybody’s habits have changed since then. Other than putting them all together in one post, I haven’t edited these at all.
So, as threatened on Twitter, I decided to overreact to Vim users by trying out BBEdit for my Rails development. Expect a write up soon, but the first pass is that it’s clearly a very powerful program, but it also clearly was developed in response to a set of needs that are not completely congruent with my needs. 1. Contains Me I’m very excited to mention that I’ll be doing a day-long training session at Lone Star Ruby Conf.
I’ll say up front that I’m skeptical of claims of “distraction-free” writing environments, especially the super-precious over the top ones, for all the reasons that Merlin Mann has laid out in various easily findable places on the internet. That said, I think I really like iaWriter for Mac. And I say that even though I’ve basically abandoned iaWriter/iPad in lieu of somewhat more functional options, like Nebulous and Textastic. But on the Mac, I already have more functional options, and although I was originally skeptical of when I might use iaWriter, I think I have found a niche for it for quick writing tasks like blogging and taking notes.
1. Today’s News: Github for Mac Odds are you heard this one already, but the fine folks at GitHub announced a Mac desktop client. It differs from, say, GitX in that it attempts to be a front end to your entire GitHub account rather than one particular repo. I haven’t used it a ton yet, but a couple of quick impressions: I think we can now definitively say that Tweetie and Loren Brichter is to the current set of Mac applications what Delicious Library was to the batch a few years ago – the source of a widely used design aesthetic.
Hey, twice in one week. I might be actually getting back on a pattern here… 1. Popular Crime Catching up on books, I started off last month with Bill James’ Popular Crime. James, known mostly for his writing about baseball, has written a labor of love book about, well, popular crimes. There’s a whole ‘nother essay to write about how the way James approached both writing about baseball and what you’d have to call the scientific method warped my brain way back when.
1. Annnd… We’re Back Okay, I’m trying the semi-regular daily links post again. Two changes from the last time I did this: a wider range of links beyond just Ruby, and it probably won’t quite be daily, but more when I build up five things that I have a short opinion on. Mostly, though, I need to get back in the habit of actually finishing posts, and realizing that I don’t need to write a 2000 word essay on something for it to be posted here.
So, apropos of nothing, and after RailsConf, some thoughts on public technical speaking. You’re not going to read about how to arrange your slides here, not least because I’m pretty bad at the fancy slide thing. Instead, I want to talk about working the room. This is what I try to do when I give a technical talk. You should think of this kind of presentation as a performance. You have a story to tell and information to share, and you want the audience to pay attention to you.
A quick trip report seems like a good way to break up some weird mutant form of writer’s block that has been preventing me from finishing any of the six or so half-written blog posts I have in my queue. This was my third RailsConf (not 2010, but the two years previous), and it was pretty easily the most fun. I know more people there now, and more people know me, that’s part of it.
I was fortunate to spend this Thursday and Friday at RedDirt RubyConf in Oklahoma City. Here’s a quick conference report, and random thoughts about single-track conferences in general. This is my second try at writing this post, excuse me if it’s a little disjointed (the first one was eaten by my writing tool – the dark side of continually trying out new writing app, but more on that later…) I want to make sure I say up front that James and the rest of the organizers did an outstanding job with the logistics of the conference.
Here are a few random tips that have come up while working on an application using Refinery CMS, Globalize, and who the heck knows what else… Extending stuff from Refinery Refinery is about as extendable as a Rails framework gets. Although it provides you with a lot of default behavior, it’s not that hard to override. Refinery is made up of a collection of Rails Engines. For example, the main display of pages is in the refinerycms-pages sub-gem.
Hey, guess what, I’ve got another iPad text editor or two to review. The thing is… I really like writing on the iPad, with or without the bluetooth keyboard. It’s a very lightweight, fun writing machine. But all the editors I’ve used have flaws that have been making them less than workable for me. I still like them, but I’m getting resigned to their limitations. For example, iaWriter doesn’t see subfolders, meaning that it doesn’t work with Scrivener sync directories.
So, I’ve been writing technical books for about ten years. What can I say about that time overall? Here are two pie charts representing my published books to date. I’ve thrown in the Lulu version of Rails Test Prescriptions just for the heck of it. Care to guess what the pie charts represent? Before I give the answer, please note that there is basically no correlation between the values in each chart.
As it happens, my generic advice on Rails testing hasn’t changed substantially, even though the tools I use on a daily basis have. Any testing tool is better than no testing. Okay, that’s glib. You can make an unholy mess in any tool. You can also write valuable tests in any tool. Focus on the valuable part. If you’ve never tested a Rails application before, I still recommend you start with out of the box stuff: Test::Unit, even fixtures.
Consider this part of an occasional series where I attempt to revisit tools discussed in Rails Test Prescriptions that have undergone some revision. (NOTE: Most of this was written before the DHH Twitter-storm about testing this week. For the purposes of this post, I’m choosing to pretend the whole thing didn’t happen.) The cucumber-rails gem released version 0.4 last week, which had some significant changes, and intensified what we might call the opinionated nature of Cucumber over what a Cucumber scenario should look like.
When I say that I’m really bad at self-marketing, one of the things that I mean is that I’ve left this blog basically dark for almost a month. This was an especially good idea because a) the TextMate post on Feb 10 became the most read post on this site ever by a factor of 5 over the previous three most popular posts (the PeepOpen review, the iaWriter review, and the thing about writing bad code, in case you care), and b) my book actually came out in print during this time.
I have a couple of upcoming conference and training appearances that I don’t think that I’ve mentioned on the blog before. March 16, I’ll be in Salt Lake City for Training Day, the day before the official start of MountainWestRubyConf. I’ll be doing a full day of training, the morning will be on Improving Your Ruby Skills, and the afternoon will be Getting Started with TDD in a Legacy Environment. You can get more details, including location and pricing at the MWRC site.
After a long time bouncing back and forth, I’ve come back to TextMate as my main editor. I realize that’s starting to sound almost old-school these days, but it still works the best for me. What I’ve come to realize about TextMate versus, say, Vim, or RubyMine is that a) this is a genuinely personal decision and different people are just more comfortable with some tools than other and b) it comes down to what each tool makes easy and how useful that is.
Among Others is an evocative, subtle, and mostly brilliant fantasy novel on the themes of dealing with loss, growing up, learning to live, and how amazing the new Heinlein novel is. People who grew up inhaling SF and fantasy books are, by and large, going to recognize themselves pretty strongly. Not surprisingly then, many SF writers who have reviewed the book on line have raved. I’ll rave too, with some quibbles that we’ll get to in a bit.
I suppose I should get this on the blog… Rails Test Prescriptions was sent to the printer yesterday, actually a couple of days ahead of the schedule that we’ve been on through the last stages of production. Here are the dates, as I understand them… The book is scheduled to leave the printer on Thursday, Feb 17, headed for bookstores and warehouses. I’d expect that you would probably see it in bookstores early the following week.
I mentioned on Twitter the other day that I was starting to like using Haml and it was surprising me because I used to dislike it so much. Colin Harris asked me to elaborate, but Twitter was too short, so here goes. I assume that most people reading this have some idea of what Haml is, if you don’t, it’s an ERb replacement for view depleting which uses Python-style indentation for blocks, and a couple of other tricks for simplifying the amount of markup you need to write in your view – here’s a sample from the Haml tutorial, which gives you the flavor.
It’s been quiet on the Rails Test Prescription front. Those of you on the beta program should have gotten Beta 11 earlier this week. There are no major changes in this beta, but it does contain the final copyedit, a pass through the errata, and a couple of late-breaking reviewer comments. At the moment, the book is being typeset, which means that non-typesetter changes to the source files are definitely contraindicated.
So, back in the summer when I started my bizarre quest to edit my book on the iPad, I had three requirements. Be able to read the book files from Dropbox Support for editing HTML/XML files, syntax coloring, extra keys, something like that. TextExpander integration to make it easier to type the markup tags. It quickly became clear that I was the only person in the world looking for this exact set of features.
I’ve been doing a lot more reading on eBooks since I got the iPad. For the most part, I really like it. I’ve been using three different eReader programs: Apple’s iBooks, the Amazon Kindle, and the Barnes & Noble Nook. You’d think that an eReader would be basically similar between apps, but there are definitely differences in how the apps feel. Here’s one little example: how does each reader app marks your progress in the book?
Very quick status update: Rails Test Prescriptions is out of copyedit. It should head for typesetting on Monday for a probably ship date in mid-February. Right now, we’re in the phase where I go over the copyedit and whine about things. Actually, this copyedit has been pretty clean, probably the cleanest I’ve ever had. By way of contrast, when I did the wx book, the copyeditor did not realize that “Python” and “wxPython” were two different things, and decided to unilaterally change all instances of “Python” to “wxPython”, apparently in the belief that I had made the same mistake 1500 times.