Davis W. Frank's blog
Our "Palm webOS Night @ Pivotal Labs" was well attended two weeks ago. Mitch Allen, of Palm introduced talks by Palm's Jesse Donaldson & yours truly. Jesse walked through an overview of how to write a Mojo (the name for Palm's framework) application and I shared our experiences, including how test-driven development can work on the platform. After working with Palm's new operating system for several months it was great finally to be able to share our experiences, talk up agile practices, and answer questions.
But don't take my word for it - go see and/or listen for yourself, or just go read Jesse's slides or my slides.
The following week the San Francisco webOS Meetup was at Palm headquarters on July 28th. The organizers asked we give the same talks. We had a larger crowd but had similar questions about platform direction and experiences. While this event at Palm wasn't recorded, the content was largely the same and it was just as great to hear enthusiasm in the community.
This excitement carries over to this Saturday. August 8th is PreDevCamp, a worldwide, self-organizing event where developers will be hacking together to teach & learn how to write applications for webOS.
I'll be at the San Francisco event, which is going to be at Palm in Sunnyvale (not exactly SF), talkin' agile, helping out and of course, hacking a bit. If you're in the Bay Area, come say, "Hi." If you're not, then register for your local PreDevCamp and go code up some apps.
On Tuesday, July 21st, we're hosting "An evening with Palm's webOS" here at Pivotal Labs. Mitch Allen, Software CTO & author of the forthcoming book Palm webOS, and Jesse McDonald, Sr. Manager, Mojo Framework, of Palm, Inc., and I will be speaking. There will be some good introduction material from Palm and I'll be talking about Pivotal's experience developing for this new platform.
It's no secret we're fans of Palm's webOS and it's Mojo framework. We've been quoted often over the past few months about how productive the development environment is, especially for those familiar with web development tools & technologies. Over the past few months we have developed four applications that are currently available in Palm's App Catalog: Mobile by Citysearch, AP News, LikeMe, and Tweed, a client for Twitter.
We previewed Pockets, a set of code for helping with test-driven development, and Jasmine, our JavaScript testing framework in an O'Reilly Media webcast this week- it was well attended & received. Thanks!
Now that Palm has opened up SDK access to everyone, it's a great time to come learn what the fuss is all about and talk one-on-one with Palm engineers & Pivots about how to get started with webOS and Mojo.
Please register for & come to An evening with Palm's webOS. See you Tuesday!
First, thanks to everyone who came - especially those who laughed at all the right spots. If I didn't get to your question, I'm here through Thursday afternoon.
There were a couple of questions during the talk and lots after the talk about how to deal with remote pairs. Since it's RailsConf and most folks are on MacOS, ScreenSharing.app came up.
As I've mentioned before, I'll be giving a talk at RailsConf on how I "got more agile" once I was able to practice every day. The goal is for my story to help you in your career, telling some good stories in the process.
To celebrate/entice you to come to RailsConf & my talk, (Tuesday, 2:50pm, Ballroom A) and to thank those of you who contributed your own tips, I have two things for you.
First is a promise of Pivotal Labs swag (content TBD) to anyone who submitted a tip & to the first five comment authors who claim it below and identify themselves at the actual session - no sneaking off to Scott's Advanced Git talk.
Second, for everyone, is a RailsConf discount of 15% in case you haven't registered yet. When you register, use the promo code RC09FOS. Note that as of yesterday, the Hilton's room rate has dropped to $99 a night. w00t!
Warning: a bit of Shameless Self-Promotion follows
Sitting in more than one session at RailsConf 2008, I noticed speakers that were advocating, directly or indirectly, Agile practices. But, aside from Kent Beck's great keynote, there wasn't a lot of 'pure Agile' on the program.
I left the conference inspired to write a presentation that would help those in the Rails community get better at their jobs.
I had some ideas, but last summer I asked you what helped you be Agile day-to-day. I took your comments, the tips from fellow Pivots, and my own hacks and made them blend. The result is a presentation called "I Rock, I Suck, I Am" that was accepted for the program at RailsConf 2009.
So thanks to you for your thoughts & comments - they all helped shaped my presentation. And if you're at RailsConf, come on by with your curious and/or reluctant peers and have a listen.
Kent Beck gave a great 'story-driven' talk at RailsConf 2008 regarding Patterns, Test Driven Development, and XP/Agile/Responsible development. Go see it now at Blip.tv along with all the other big presentations from RailsConf.
Yeah, yeah. This was posted ages ago, but I just made it around to watching it tonight.
Two great quotes. First, re: TDD
Testing really isn't the point. The point here is about responsibility. When you say it's done, is it done. Can you go to sleep at night, do you know that the software you finished today . . . works. And will help. And isn't going to take anything away from people.
Second, more generally about ideas:
Smart ideas are useless. Nobody else is going to be dumb enough not to try them - or rather, Everybody's going to try them if it's a smart idea. Ideas with punch are the ones that are really ridiculous...until you try them.
Like Mole. Mole sauce. Chocolate? Chicken? Phbbblblltt! HahahaHA!
I posted a few weeks ago gathering small tips from you regarding how you get and/or stay more Agile.
The goal is a list of short, pithy, sticky aphorisms to help both newbies get Agile and us stay that way. Think Agile Andy's Almanack (or something).
I've thrown everything I got (a lot in person & email) together and categorized a bit. Please comment, add, delete, etc. As I said, I'm working on a presentation around this data and welcome your feedback.
Here goes:
Stick to Conventions
- Follow the local ground rules (indenting, naming, structure, etc.)
- Always take the next story (don't let 'fun' or 'hard' get in the way of business priority)
Use the right tools
- Keep your hand on the manual (Keep browser tabs open for your language & API doc sites)
- Make mini actionable task lists for your story (Get inspired by GTD)
- Index cards are mini whiteboards
- Hardware, hardware, hardware (Big and/or dual monitors, 2 keyboards & 2 mice is better than 1 & 1)
Pair Programming Works
- Expect to Pair
- Pair appropriately
- When you're not sure how to implement a story, pair with someone more senior
- When a task feels obvious, pair with someone more junior or new to the project
- Let the rookie type, give the wookie a toy (so he doesn't)
- Rotate your pairs as often as practical
- 2 pairs are better than 1 on a project
- Always pair interview
Take a test drive
- Writers' block? BEWS (Blank Editor Window Syndrome)? Write a test
- Find some untested code? Write a test.
- Find something you don't understand? Write a test.
- Keep your tests as fast as is practical, or you'll wait for CI to run them
- Write enough tests so that you can sleep at night
Code simply
- Do the simplest thing that could possibly work - no architecture astronauts
- Check-in multiple times before a story is done (try for every hour or so)
- Kill dead code, commented out code, or write tests to cover it
- Make it green, then make it clean
- Tackle code debt with extreme prejudice
- Leave the code cleaner than when you got there (think o2 canisters on Everest)
CI
- Every failing test is sacred
- Red builds are project cancer - fix first, figure out why, then blame (when appropriate)
Stay in sync
- Don't stop talking - to your pair, your team or your customer
- Go to lunch together
Comment away...
I've been passionate about Extreme Programming and Agile Software Development Practices since first hearing Kent Beck speak back in 2002. But it took five years, and finding a job where I was expected by management to be Agile every day (TDD, paring, etc.), before I was able to actually call myself an Agile Engineer.
I'm sure that there are more of you out there who want to be more Agile. And you want more Agile engineers so that you'll have reasonable people to work with and learn from.
In the past 18 months I've picked up a lot of effective small practices that you won't find in the White Book. Things like making sure you pick the next story no matter your comfort level. Or fixing a red CI build ASAP.
In order to spread the knowledge, I'm working on a presentation about the 'practices that work' to share with potential Agile Engineers at a future software conference near you.
So what day-to-day practices make you more Agile?
Interesting Things
- There was an edge version of Rails (this project has a frozen Rails at some point in the past) that had a bug where a namespaced route would send a POST that should go to
MyController#createwas instead going to a POST toMyController#index. The fix is to freeze to current Edge, or usealias_method.
Ask for Help
"Any way to turn off a validation in a re-opened class?"
No way to do this. Best to refactor by pulling the validation out of the class and then mixing it in, or not, at a different level.
Interesting Things
- Y!Slow + Firebug + submit a form will cause the result to be pulled from cache instead of hitting your server. The workaround is to disable Y!Slow.
- Some of our customers are requesting targeting Firefox 3, which has some rendering differences from FF2. So we're adding FF3 to the system image with a new icon and the correct trick to let it run side-by-side with FF2.
- How to Run FF2 & FF3 side-by-side on Mac OS X
- FF3 customer icon that is sufficiently different than Firefox's normal icon so you can tell the difference
- On a related note, rumor is that Facebook is dropping support for IE6. So is 37Signals.
- Interesting issues with the Globalize plugin & Rails 2.1:
- The currency formatting code does not work at all anymore - it always uses a '$'
- Their work for localizing templates, which involves injecting a fully-qualified path, breaks
#assert_template. The workaround is to comment out the path injection code, but this only works if you don't have localized templates.
- EngineYard's eycap gem version 0.3.6 now has better support for deploying from SVN tags
- Deploying from tag, since the URL was different used to do a
rm -rf, which takes a long time on EY's GFS disks for large file sizes. This was causing a customer's deploy taking ~20 minutes - The fix was to change eycap to use svn switch; the deploy now takes ~1 minute
- Deploying from tag, since the URL was different used to do a
Ask for Help
"Anyone seen/solved an issue with random font size increase using Firebug 1.1 or later?"
The issue is that at some point a page will render with much larger fonts and the CSS exploration won't tell you why. The work around is to launch a browser with Firebug disabled and run it side by side with the same page in a window with Firebug enabled (restarting the 2nd window whenever the problem occurs.)
Seeing this with Firefox 2 and 3 and any Firebug later than 1.05 (which doesn't run on FF3). This might be an issue with IFRAMEs, but we're not sure. No data found on this via Google searches or the Firebug group. We will post there.







