2012
More Lessons Learned
Last year, when Obtiva was purchased by Groupon, I wrote a “what I learned” post talking about things I thought I came to understand about software projects after working on a bunch of them. Now that I’ve moved on from Groupon, I started to think about what, if anything, I learned while I was there.
I keep coming back to three different things – this is a more personal set of lessons than the last batch, so maybe they’ll be less generally useful.
Leprechauns and Unicorns of Software
Something like 25 years ago, Bill James wrote an essay asserting that one difference between smart and dumb baseball organizations was that dumb organizations behaved as thought Major League talent was normally distributed on a standard bell curve, and smart organizations knew that talent is not (it’s the far end of a bell curve).
Hold that thought.
So I just finished reading Laurent Bossavit’s self published book The Leprechauns of Software Engeneering, which I recommend quite highly.
What's Up?
Oh yeah, things happening…
Got A New Job, Got A New Office First off, I’ve started a new job as a Senior Developer and Agile Coach at Table XI, putting me back in the realm of small, Chicago-based consulting companies. Very exited, Table XI seems like a great place so far. Hoping to do new things, challenge myself, and learn.
Book Update Most importantly, you can still buy it.
It’s going slowly but steadily, thanks for asking.
Velocity, Agile Estimation, And Trust
Charles Max Wood posted this on Twitter:
Am I misunderstanding agile? or is it inappropriate to try to peg velocity?
— Charles Max Wood (@cmaxw) October 26, 2012
@noelrap They’re telling us we behind on the sprint. My understanding of agile is velocity is set by team pace, not wishful thinking.
— Charles Max Wood (@cmaxw) October 26, 2012
@noelrap You can push for deadlines, but you can’t tell us that we’re behind on the sprint just because we’re not going to achieve velocity.
Functions that return functions are the luckiest functions in the world
Here’s some JavaScript:
var foo = function(a, b) { return a * b };
var bar = function(func) {
return function() {
return func.apply(this, arguments)
};
};
baz = bar(foo);
console.log(baz(2, 3));
What we have here is a function, bar, that both takes a function as an argument and returns a function as it’s result. It’s transforming the function passed to it into a different function.
Okay, that’s cool in kind of an abstract way, but so what?
Master Space And Time Status Update
Here’s a quick status update on Master Space and Time With JavaScript, book 3…
Short version: expect an early beta of about 1/3 of the book to be out in about a week.
Longer version:
Work is proceeding steadily, the current draft of just hit 30 pages toward a target of around 90, though about 10 of that is the same intro and outro that the other books have, so it’s more like 20 pages toward a target of 80.
Depending on jQuery and Perspective
The reported errata for Master Time and Space With JavaScript (buy it here) has been pretty light so far. A bunch of typos, some setup weirdness.
And one interesting issue worth exploring. What is a dependency, and maybe more to the point, where is a dependency?
This issue was raised by a reviewer whose name I’m not going to mention — that’s not a reflection on the reviewer, but rather a reflection on the fact that I’m going to put words in his mouth to expand on his brief comment on the issue, so my interpretation of his position may not actually be his position.
How's it Going? MSTWJS Edition
And now for a more inside-baseball post about how the self-publishing aspects of Master Space and Time With JavaScript are going. Did you know you can buy it?
Short answer: Pretty well, though I could always have done better. Still unclear how this will work over the long haul.
At this point, the book has been on sale for 10 days, plus the pre-sale to people who were on the mailing list.
The Origin of Master Space and Time With JavaScript
I have a new book, Master Space and Time With JavaSript. You can buy it.
Here’s the secret origin.
This all started over a year ago. Rails Test Prescriptions had been complete for a few months, and I was getting a little antsy to take on a new project.
But what? I wanted it to be a project where I would learn something, and I wanted it to be something where I had a particular perspective to offer.
Rails, Objects, Tests, and Other Useful Things
For the first time in quite a while, I’ve been able to spend time working on a brand-new Rails application that’s actually a business thing and not a side project. It’s small. Okay, it’s really small. But at least for the moment it’s mine, mine, mine. (What was that about collective code ownership? I can’t hear you…)
This seemed like a good time to reflect on the various Object-Oriented Rails discussions, including Avdi’s book, DCI in Rails, fast Rails tests, Objectify, DHH’s skepticism about the whole enterprise, and even my little contribution to the debate.
Upcoming Me
Updates, schedules, things, and stuff.
Scottish Ruby The Scottish Ruby conference is having a charity workshop June 28, and I’m presenting my “Advanced Rails Design” workshop. This is the extended dance mix version of the workshop I did at Mountain West Ruby earlier this year. I thought it went really well (so did the attendees, I’m sure), and I’m very excited about this one. Details at http://scottishrubyconference.com/charity/ — you don’t need to be attending Scottish Ruby, but you do need to register in advance.
Automator + Bash = Yay
At it’s best, working in Mac OS X combines the power of the Unix shell with the convenience of an actual interface.
Here’s a best case scenario:
As I may have mentioned here a few times, I’m writing a book. As part of my current workflow, I need to convert my text from it’s old format to my new format, which is Markdown. The old format is a custom XML-based language the details of which don’t matter beyond the fact that it’s XML-based.
Master Space And Time Release Plan
There is a plan.
It goes like this:
Master Space and Time With JavaScript will be split into four parts.
Part one and part two will be available sometime in July. I’d say July 1st, but I’ll still be in Scotland. It’d be sooner, but there are still logistics to be managed around the actual layout of the book and getting the payment gateway in order. Plus, I need to actually finish the text.
Master Space And Time With JavaScript Update: The First Couple of Chapters
It’s not much of an exaggeration to say that I’ve been writing the same two or three chapters for six months. I think — I hope — this is the last time.
This is a more or less weekly update on the manuscript currently known as Master Space & Time in JavaScript. Today, the update is about the first few chapters and how they change over time. These chapters cover a lot of ground, and getting the order and beats right has been a struggle.
Self-Publishing Workflow Update
Next up on the Master Space and Time With JavaScript status report is the workflow that takes my words and turns them into a PDF. And an HTML file. And an ePub. And don’t forget Kindle.
As you can imagine, this is something of a minefield, although there are a lot more tools available than there were three years ago when I did this the last time — here’s an overview of the process I used then.
May 9, 2012: The Random Link Post Returns
And now, the return of the semi-occasional link post. I’m going to try to do this at least once a week, but who knows.
If you are writing JavaScript, you should be looking at Justin Searls and his JavaScript testing tools. Justin posted the slides for what looks like a great talk on JavaScript testing. These slides made me happy.
In random media sales, the audio book of World War Z is on sale for a mere six bucks.
Master Space And Time With JavaScript Status 5-08
Now that the new book is public, I’m going to start doing more frequent status updates. It’s going to be weird for me, after keeping the project under wraps for so long, but I’m sure we will all get by.
When the book, shall we say, reverted back to me, I had two immediate questions: what to write, and how to deliver it to a (hopefully) desiring public. Let’s talk about the content first, though in practice, I needed to make sure I had a tool chain I liked before proceeding.
Welcome
Hello, and welcome to my new site, noelrappin.com.
I have a new site because now that I have another book to promote, having the site be named after the previous book seemed perhaps not in keeping with the best marketing practices.
Speaking of the new book, it’s called Mastering Space and Time With JavaScript, and you can find out more information about it. The book should go on sale in June, if you’d like to be notified, please fill out the handy interest form.
Setting Up Fast No-Rails Tests
The key to fast tests is simple: don’t do slow things.
Warning: this post is a kind of long examination of a problem, namely, how to integrate fast non-Rails tests and slow Rails tests in the same test suite. This may be a problem nobody is having. But having seen a sample of how this might work, I was compelled to try and make it work in my toy app. You’ve been warned, hope you like it.
Self-assessment
Here’s what I’ve got.
2 chapters introducing jQuery and Jasmine via a walkthrough of a simple piece of JavaScript functionality.
1 need to convert all my text from its current proprietary format to something more Markdown based.
1 genuinely silly conceit tying together the application that gets built in the book. And I mean that in the best way. It should be silly, there’s no reason not to be bold. There is even a twist ending.
A Brief Announcement About A Book
So… The JavaScript book that I had contracted to do with Pragmatic will no longer be published by them.
I need to be careful as I write about this. I don’t want to be defensive – I’m proud of the work I did, and I like the book I was working on. But I don’t want to be negative either. Everybody that I worked with at Pragmatic was generous with their time and sincere in their enthusiasm for the project.
Control Your Development Environment And Never Burn Another Hamburger
Everything I know about the world of fine dining I know from watching Top Chef and from eating at Five Guys. But I do know this: chefs have the concept of mise en place (which does not mean Mice In Place), which is the idea that everything the chef is going to need to prepare the food is done ahead of time and laid out for easy access. The advantages of having a good mise en place include time savings from getting common prep done together, ease of putting together meals once the prep is done, ease of cleanup.
iaWriter and iCloud, You Know, In The Cloud
If I don’t write about iOS editors every few months, then it’s harder for me to justify continuing to mess around with them…
The thing that’s changed my editor use in the last couple of months is iaWriter Mac and iOS adding iCloud support, even more deeply integrated than Apple’s own applications. iaWriter is the first writing program I use to move to the iCloud future (though there are some games and other programs that also sync via iCloud already).