Ship It! LIVEShip It! LIVE
home about services writing contact

We develop, test, and create fine software products, and design creative solutions to your problems.
The development of software is an intrinsically creative process. We are dedicated to improving our mastery of the art.
Links · RSS Feed
Popular Pages

They have gathered together the ‘best bits’ of various styles and methodologies they have been directly involved with, and combined them into a practical approach with the focus on delivering a pro...
-Mitch Wheat
That's got to be one of the *best* choice of title since the Mythical Man Month!!
-Kenneth Sizer
I haven't had the chance to read and review any books from the Pragmatic Programmers series. I decided to change that with the book Ship It! - A Practical Guide to Successful Software Projects by ...
-Thomas "Duffbert" Duff

What Are You Passionate About? (Sep 2)
Yesterday I was asked what software practices I was passionate about. It's not a question I've tried to answer in a while and I think it was worthwhile to consider the topic for a moment. What do I (or you!) care about?

  • Continuous Integration- If you've heard me speak or read this blog, you've probably heard me mention CI. It's the best way I know to provide developers with feedback quickly, and a tighter feedback loop is the best way I know to learn. Hudson has tons of mindshare these days, but Cruise Control is still my favorite. At the end of the day, use something! CI is a great gateway practice that can lead to full-scale agile adoption down the road.
  • Test Automation- This is another way to tighten the feedback loop. If you cover your code with an automated test, and it's run in your continuous integration system, any breaks or problems are caught very, very quickly. Also, please note that I said automated tests, not unit tests. There's nothing wrong with unit tests. In fact, they're awesome, but too many teams only write unit tests. Put both API level, package level, and integration tests in your toolbox. Then you'll be able to test anything, anytime, anywhere.
  • Daily Meetings- Get together every day and discuss what you did yesterday, what problems you encountered, and what you'll do today. This short (1 minute per person) meeting is a great way to share information, keep everyone on track, and build team camaraderie.
  • Time Boxed Iterations- Providing smaller goals, 1 to 2 weeks, for your team to hit is a great way to avoid "10,000 feature syndrome," as well as quickly spotting teams that can't deliver. A time box helps introduce a false sense of urgency for developers as well as stakeholders. "We'd love to add that cool new feature, but we're in the middle of an iteration. Can we put that in the next iteration? It starts in a week."
  • Peer Code Reviews- I do like pair programming, but for me it's a periodic practice. A peer code review is an everyday practice. Before you check in code, you explain it, and show it, to one other person. This keeps us honest (no one wants to explain bad code to a coworker), and also shares system knowledge with the entire team. A quick and fast one-on-one code review is a great way to keep someone from getting too far off course.

I could type a few more, but this week/months/year has been insanely, overwhelmingly busy for me. So instead, I'll ask you to continue the list. What practices are you passionate about, and why? Put them in your blog and send me a list. I'll post a follow-up blog entry when I have a few interesting posts!

Category: Agile

Agile RX and Ruby RX Early Bird Discount Ends on Friday (Aug 18)
These conferences give you face time with an incredible cast of industry veterans, from Andy Hunt to Dave Hussman to Johanna Rothman and many more. The invited speakers are here because they have proven track records. We know they walk the walk, and talk the talk. Don't take a chance on wasting your conference dollars (and time!) listening to unprepared and unqualified presenters. Make a solid investment in yourself and your team instead.

In this tight economy, don't make the same mistakes others have made... learn from world class experts and make sure your team knows the best way to use the next wave of technology. Don't reinvent the wheel on your team... find out the best way to move your project forward. Topics from automation to team process and more will help you in the weeks and months ahead.

The Agile RX and Ruby RX combo conference is coming to Reston, but the early bird discounts expire this Friday! So far conference sign up has been weaker than hoped, so if you're thinking about coming, please sign up this week. Confirm your spot, and save your company money, all at the same time.

AgileRX

RubyRX

We'll see you there!

Category: Agile

Agilepalooza in Charlotte (Aug 10)
There's a one-day, open space conference in Charlotte this week that's worth visiting. Confirmed speakers include Dave Hussman, Jeff Sutherland, Mike Cottmeyer, and Joe Little. I'll be dropping in myself, but not until lunch time. (I'm speaking at the Boston JUG the night before on Career 2.0!).

Agilepalooza

Come out! It should be a fun way to learn from a number of speakers, and others in your area. If you've never attended an open space event, it's less constrained than a normal conference. They're usually very interesting.

I hope to see you there.

Category: Agile

Agile RX and Agile RX are coming to Reston! (Aug 10)
If you haven't signed up for the upcoming Agile RX and Ruby RX combo conference, check it out. We've got a stellar speaker lineup for you with topics from the basic to advanced level. We've got introductions to Ruby, Rails, and various Agile topics, to experienced veterans like Andy Hunt, Chad Fowler, Dave Hussman, and more.

You can find out more about the conference at the NFJS One website.




Category: Agile

The Engine Yard Challenge is Over (Jul 22)
For those of you who missed it, Engine Yard sponsored a contest that involved cracking (or attempting to find a collision match) of a SHA1 hash. For the price of an iPhone or two, and credits on their own cluster, they captured a small army of developers and an insane amount of mind share.

One of the big surprises was the emergence of the GPU as a huge factor. I've been excited about the potential of various GPU wrappers for a while now, but it was cool seeing them in action. For certain operations, the video card processors are insanely fast. Nvidia's CUDA was first to the scene, but Intel, ATI, and even Apple have their own wrappers. Write your code in C, but use the multiple pipelined, insanely fast GPUs. No specialized graphics experience needed. (Is this why current Apple laptops have two video cards in them?)

Here are a few links to stir your imagination.

Engine Yard's winners page

A very nice summary and write-up of one person's efforts. BTW, he tells you how he got 690,822,188 hashes/second on one machine's video cards.

Another competitor's Flickr pic of his results, separated by GPU and CPU.

A few teams even released a browser based engine for distributed cracking. Very, very cool, but too slow to be really competitive.

I started on a small effort myself, but I wrote it in Ruby, and it generated and tested a million sha1 hashes in the insanely slow time of 3.5 seconds. Not even worth reporting on. I did have quite a bit of fun thinking about the approach, and coming up with some very pragmatic trade offs. For example, if you know you can't come up with a solution that let's you cover the entire solution space, there's no point it spending hours on a perfect solution. (The contest only had 30 hours of run time.) I started to integrate the Polaris SSH C library, but decided to just code for fun instead. In hindsight, I should've gotten the C code embedded.

Also, I used half a dozen virtual machine instances at Mosso/Rackspace. At 1.5 cents an hour, it's easier than dragging my old dual Opteron out of the closet!

So when's the last time your company put out a thousand dollars or so, and got a few thousand developers to think about something interesting?

And when's the last time ~you~ looked at something non-traditional, like GPUs, for your high performance computing?

Category: Misc

Previous page Next page


© 2007 Agile Artisans.