Development Blog

 Sunday, October 26, 2008

myImage (1)I recently came across Balsamiq, a very well done application for quickly mocking up UI prototypes. With simple drag and drops you can quickly create some pretty slick prototypes. The prototypes have a sketch like look which allows the viewer to use more of their imagination, something I think is a subtle, yet powerful advantage.

mockups_fpaIt's been a while since I've been so impressed with an app right out of the box... especially a Flash app. Just about everything works as I'd expect, right down to common keyboard shortcuts. It's got good organization in it's "ribbon" and so far it's had just about every type of thing I need. It looks like it has JIRA and Confluence support, though that's a bit on the pricey side. The Desktop version is reasonably priced though, and the web version seems to be free to use if you can put up with a nag every 5 minutes.

Nothing beats a whiteboard if you're all in the same office, but I'd say this is a close second. Certainly better than Visio :)

by Aaron on Sunday, October 26, 2008 5:12:55 PM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Wednesday, October 22, 2008

Assembla was annoying us for a variety of reasons so we moved Machine to github.

git clone git://github.com/machine/machine.git

The astute may notice a few other repositories in the machine account... Jacob's been busy. We'll announce those projects in due time...

by Aaron on Wednesday, October 22, 2008 11:57:32 AM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Sunday, October 19, 2008

Does ReSharper want to make your specs look like this?

Superfluous privates, indentation and warnings

But you want your specs to look like this?

clean text with less noise

Just follow these easy steps:

  1. Go to Resharper>Options

  2. Go to Languages>C#>Formatting Style>Other

  3. Uncheck Modifiers>Use explicit private modifier

  4. Uncheck Other>Indent anonymous method body and hit OK

  5. Go to your project properties>Build and suppress warning 169

  6. Enjoy!

bdd | mspec | resharper
by Aaron on Sunday, October 19, 2008 2:18:25 PM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  |  Trackback

Unlike vanilla TDD, the artifacts produced by BDD can and should be read by more than just developers. Most of us who practice TDD name our tests more or less like this:

MessageBoardControllerTests.Index_WithTenMessages_ReturnsFiveMostRecentFromRepository()

Shifting into Context/Specification style testing, one may be tempted to write specs like this:

MessageBoardController, when invoking index action when there are ten messages, 
  should return five most recent messages from the repository

The problem with this spec is subtle but important. You often want these specs to be readable and understandable by a normal person, someone in your business that can provide you feedback on your specs. Using words like "invoking", "index", "action" and "repository" are clear indicators that your audience is another developer. You should use the time writing specs to speak in the language of the business and to clarify your ubiquitous language. Here's how I'd rewrite this:

Message Board, when viewed
  should show only the five most recent messages

Again, the difference is subtle, but notice how I could show this to anyone in the company and they would understand exactly what is happening.

There are times for developer speak in specs I believe. If you are specing an API to be consumed by other developers I think it's ok to use words like "throw" and "return" because that is what the developers care about when integrating with an API.

Most of the time however, especially when writing the more UI/System Behavior level specs, you should consider who your audience is and try to speak like them. The code itself will provide the detail a developer needs to understand it.

As an aside, this is one of the many reasons I prefer the Context/Specification style to Given/When/Then style of BDD. Because people already don't speak in Given/When/Then prose in real life, it makes it even more difficult to write your specs for the intended audience. It also leads you to use magic numbers and other magic state in your prose rather than formalizing business concepts and improving your ubiquitous language.

bdd
by Aaron on Sunday, October 19, 2008 9:24:03 AM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  |  Trackback

Jacob and I just got back from Austin, TX where we were fortunate enough to attend the week long, lengthily titled Advanced Distributed Systems Design using SOA & DDD with Udi Dahan, The Software Simplist.

Awesome. Just awesome. We’d been meaning to delve into messaging at Eleutian after multiple discussions with and blog posts from Greg Young and Udi Dahan in the past. We weren’t entirely sure where to start, how to start, what tools to use, how to use them, etc. Being able to sit in a room with Udi for an entire week while he described exactly how, why and what he does to tackle a massive enterprise system was invaluable to say the least.

We now have a much better direction and, more importantly, have the confidence we need to start introducing these powerful concepts into production at Eleutian.

If Udi’s ever in your area giving this course and you’ve got a company that cares about their scalability, reliability and maintainability enough to see the value in such an offering, I’d strongly advise giving it a go.

by Aaron on Sunday, October 19, 2008 7:52:18 AM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  |  Trackback

Steve Sanderson is apparently writing two Apress books on ASP.NET MVC. While doing so, he’s been digging deep into the framework and inventing/discovering some pretty amazing things. My favorites thus far are:

Partial Requests in ASP.NET MVC

Partial Output Caching in ASP.NET MVC

I’m yet to use it seriously, but I’m pretty sure this is a big part of what I’ve been looking for when it comes to components in MVC. Definitely going to keep an eye on his blog.

by Aaron on Sunday, October 19, 2008 7:41:01 AM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  |  Trackback