Loading...

I’ve recently found myself in a bit of conflict over how I feel about this post outlining a 501 developer manifesto, aimed at those who choose to avoid making work run their life by stopping their professional life at 501 sharp. The term isn’t new, it’s been used by Scott Hanselman to describe developers who’s enthusiasm turns off at 5:01pm. In this case the author of the manifesto is saying we should all be ok with people who want to turn off and do other things after 5:01.

I can only assume the manifesto was written as a kind of response to this recent article about Facebook COO Sheryl Sandberg who goes home every day at 5:30. Sandbergs admissions have become a bit of a rallying cry for the overworked masses in tech and we certainly have our reasons to rally around this.

The 501 manifest is actually a sentiment I can largly sympathize with. I’m a big opponent of overtime, and I vehemently oppose laws that allow for overtime exempt I

...... [ Read the rest of this story ]
I've been working with application development in some form or another since the early 90's, and learning coding languages through focused study since 2000.

My primary mode of learning, through all that time (beyond the obvious--writing tests and code) has been technical books. Blog entries, forum discussions or online API have been there as a valuable resource when needing to resolve an immediate problem, but ultimately, it has come back to the book.

Up until about 2006 it was paper books--shelves full of heavy, thick tomes that had a shelf life, literally, of about 3 years (patterns and practices books being the obvious exception). Most eventually made their way to library donations, just to free up the space.

The last few years it has been exclusively virtual books:

  • O'Reilly's book service, Safari Books Online, has been my primary source
  • Kindle e-books (occasionally) for a text that I intend to keep

But either way: always books.

Why? I think it is because a book enforces discipline. What is the author really meaning to say? How will they organize their thoughts, on a large topic that might need...... [ Read the rest of this story ]
…. although it’s certainly possible to use them that way. But why would one such a thing, de-tuning what is really a rather nice way of getting product owners and developers to talk to each other? At least that’s what I think at the current state of my exploration of the world of Given-When-Then. It [...]

I’m happy to finally announce the Vancouver Polyglot conference, a concept that’s been floating around for a few of us now for probably a little over a year now. Now thanks to an amazing group of organizers, and probably in no small thanks part to Boris Mann just up and creating a Lanyrd page and giving the event a date almost immediately after we mentioned it to him—literally, I mean right as we were sitting there—it’s actually happening.

There has been a big response from people in helping to organize this event. A big thanks goes to Adam Dymitruk who has arranged with Github to both help with event sponsorship as well as running their Github Foundations Workshop with Matthew McCullough which I’m particularly excited about. Of course, I’m burying the lead a bit here, which is that this is actually the Polyglot Un-conference.

So what’s Polyglot development really about anyways? It’s simple

...... [ Read the rest of this story ]

I’m happy to finally announce the Vancouver Polyglot conference, a concept that’s been floating around for a few of us now for probably a little over a year now. Now thanks to an amazing group of organizers, and probably in no small thanks part to Boris Mann just up and creating a Lanyrd page and giving the event a date almost immediately after we mentioned it to him—literally, I mean right as we were sitting there—it’s actually happening.

There has been a big response from people in helping to organize this event. A big thanks goes to Adam Dymitruk who has arranged with Github to both help with event sponsorship as well as running their Github Foundations Workshop with Matthew McCullough which I’m particularly excited about. Of course, I’m burying the lead a bit here, which is that this is actually the Polyglot Un-conference.

So what’s Polyglot development really about anyways? It’s simple

...... [ Read the rest of this story ]
I've just created a 1 hour tutorial/screencast that demonstrates TDD in objective-C (iOS 5) via Roy Osherove's Calculator Kata. The screencast primarily uses JetBrains' new AppCode IDE for objective-C, but it also flips occasionally into XCode 4.2 to set up a storyboard with a simple UIViewController that connects to the TDD-created Calculator class.

The screencast demonstrates a variety of layouts and keyboard shortcuts for AppCode (and to a lesser extent, XCode) as well as covering a number of language features of objective-C.

Please have a look, and if you have any questions, send me a comment at my twitter account.

Screencast: Learning Objective-C via TDD and Calculator Kata

...... [ Read the rest of this story ]
Pre-Requisite: DDD Kata Part 3

Kata Review
In part 2 of the kata, you built a simple service test to demonstrate the passing of the Item from the Inventory aggregate root to the Invoice aggregate root. In part 3 of the kata, you created IUnitOfWork interface to manage atomic transactions with commit and rollbacks.

Now we need to design the real service.

In this test we will "inject" repository interfaces into the service class constructor to do the work of persisting the state changes to our domain entities. The UnitOfWork we created in part 3 of the kata will assist us in this effort.

NOTE   If you haven't already download RhinoMocks, download it and add the DLLs to a 3rd Party Libs directory for reference.

1. Open the previous solution you created in kata 3.
2. Add a reference to RhinoMocks.DLL to the library "Kata.Services.Tests.Unit".
3. Use RhinoMocks to mock the following interfaces (use Resharper to generate the new ones).
NOTE Your mocking levels are stub, dynamic, and strict...... [ Read the rest of this story ]
Pre-requisite: DDD Kata Part 2

Kata Focus
1) Work occurs in the Repository layer, which will be used to persist to and from a data store. The data store will be encapsulated behind interfaces.
2) A pre-requisite activity is to build a wrapper interface to encapsulate transaction commit/rollback, with commit and rollback occurring on Dispose().

The Kata
Time goal: under 30 minutes

Repository layer
1. Create new class libraries:
  • Kata.Repository.Tests.Unit
  • Kata.Repository
We will start by creating the interface to wrap transaction commits and rollbacks. For an initial, simple name, we'll use AtomicTransactionManager. In a few minutes we will refactor that to use the name of the corresponding design pattern.

Repository: AtomicTransactionManager
1. In the new Repository unit test library, create class AtomicTransactionManagerTests.cs
2. Verify that AtomicTransactionManager is instance of IAtomicTransactionManager.
3. Verify that...... [ Read the rest of this story ]

Shortly after I return back from recharging my batteries in Maui there will be some big changes for me. First, I begin a new chapter in my career at a local startup called Tictalking and second, this will mark the end of my days as a .NET developer for the foreseeable future. Now obviously I’m very excited about joining a startup for the first time, but I’m also excited—perhaps even a bit relieved—to be moving out of the Microsoft, Windows and .NET development stack.

You’d probably have to have been living under a rock to have missed all the previous blog posts from others leaving .NET for greener pastures—or this very satirical one on

...... [ Read the rest of this story ]

Shortly after I return back from recharging my batteries in Maui there will be some big changes for me. First, I begin a new chapter in my career at a local startup called Tictalking and second, this will mark the end of my days as a .NET developer for the foreseeable future. Now obviously I’m very excited about joining a startup for the first time, but I’m also excited—perhaps even a bit relieved—to be moving out of the Microsoft, Windows and .NET development stack.

You’d probably have to have been living under a rock to have missed all the previous blog posts from others leaving .NET for greener pastures—or this very satirical one on

...... [ Read the rest of this story ]