Wednesday, February 28, 2007
Kevin Barnes has an intersting article that talks about Why great coders get paid far too little.  My new career goal is to strive for greatness and land a $3M contract, I probably shouldn't hold me breath :)

Wednesday, February 28, 2007 2:12:32 PM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Sunday, February 25, 2007
I'm always amazed by the editable grid.  Everyone wants it, everyone loves it, why wouldn't they....it's just like Excel!  I don't know why, but I always have and always will hate the editable grid.  Grid's are good at displaying information, not editing.  Checkout Chris Stevenson post, "The Editable Grid Antipattern" for reasons why you should always ask 5 why's when someone asks for an editable grid.  Here's to hoping I never see another one in the UI designs for the apps I work on! :)

Monday, February 26, 2007 2:26:36 AM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [3]  |  Trackback
Over the last couple of weeks I've been reading Naked Conversations on my train ride to and from work (when I didn't have other things, such as RESTful Rails Development :))  For those of you unfamiliar, Naked Conversations was written by some guy who claims to be some big named blogger.  His pen name is "Robert Scoble".  Scoble's co-author is Shel Israel. 

The two have put together a great book on the business of blogging.  They talk about what does and doesn't work, as well as talk in depth about many of the concerns people have with blogging within corporations.  Throughout the book Scoble and Israel provide examples of those who have done it right, and those that have not.

Naked Conversations encourages companies to use blogs to be more transparent, to engage customers in conversations, and to listen.  While there are a handful of comapnies that seem to "get" blogging, there are countless others who haven't a clue.  As blogs become more and more mainstream we're bound to see the way they're used within corporations change dramatically.  I'm sure we'll see people try and fail, as well as people try and succeed.  We'll also see others who build their entire business with nothing more than a blog.

Monday, February 26, 2007 2:02:00 AM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Saturday, February 24, 2007
Sam is getting to have all the fun at work exploring Windows Workflow :(  It looks like he's making some good progress so perhaps I'll get a chance to experiment some in the near future as we look to find ways to incorporate it into our application. 

While I've done very little real work with Windows Workflow I have read Essential Windows Workflow Foundation and Presenting Windows Workflow Foundation to give me a good background for what it includes.  I certainly see a lot of potential uses for workflow within our application so now it's just a matter of figuring out how to incorporate it into our architecture and frameworks.  Since it doesn't exactly plugin right out of the box, we have a good amount of work ahead of us.  As I said in my "The the right time for a new technology" post, I'm about ready for something new anyway so it should be fun!
Saturday, February 24, 2007 7:56:26 PM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Friday, February 23, 2007
While installing Rails and friends using something like MacPorts may prove to be a little less time consuming and less error prone, I think installing from source is the way to go.  Dan Benjamin, over on Hivelogic, has an excellent tutorial that steps you through all the steps to pull down and compile the source for Ruby, Rails, MySQL, Subversion, and Mongrel.  Over the last couple hours, in between a bunch of other things I've been doing, I walked through Dan's install guide and I'm happy to report everything went very smooth!  If you do decide to go the MacPorts route, I've been told, that James Duncan Davidson's tutorial is where to go.

Saturday, February 24, 2007 3:11:46 AM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [1]  |  Trackback
 Wednesday, February 21, 2007
In addition to being reminded that readability is more important than "clean well factored code" in unit tests, I've also recently been reminded how wonderful small, focused classes can be.  As designs evolve, classes tend to grow.  If you don't keep a close eye, they can grow out of control and take on way too many responsibilities.  As classes grow, they become harder and harder to manage.  All the sudden, it becomes harder to find things, and harder to figure out what the code is intended to accomplish.  By breaking classes apart into small, focused classes it's much easier to understand the things that each class is responsible for.  Rather than taking on a handful of different responsibilities, your classes should have a single responsibility. This will help keep them focused on doing one thing, and doing it well. 

Thursday, February 22, 2007 4:05:09 AM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [0]  |  Trackback
On the train ride to and from work today I read RESTful Rails Development.  I've already done a fair bit of reading on REST and I've worked with several RESTful APIs lately (Amazon, Flickr), however, I found the RESTful Rails Development article a good introduction to what is at the heart of REST API's.  Namely, the idea of resources, and more specifically URI addressable resources.  The support for REST within Rails 1.2 adds a lot of nice features, and looks like a great way to support multiple output formats (html, xml, javascript, rss/atom, etc.) for applications that are oriented around resources.  Anyway, if your interested in REST or Rails, it's worth a read.

 | 
Thursday, February 22, 2007 1:36:50 AM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Tuesday, February 20, 2007
I've been thinking recently that I need to learn something new. Whether it be a new technology on the .NET side of the house, or a new language, or a new web framework. I'm not sure what, but, I definitely feel like I need something new that will cause me to stretch my mind a bit.

I've had the itch to dive into WPF for a while, but don't have a whole lot of time at the moment to do anything on that front.  While I do have several ideas for little WPF apps I'd like to see built for myself I have concerns it'd be a wasted effort since my design/UI skills have diminished over the years, and what sense is building a WPF app if you can make it look slick as all get out? 

I've also been thinking a bit about trying my hand with a new language.  The top contenders would be Ruby, via Rails, or Python (with IronPython).  I'm leaning more towards the Ruby/Rails track since it would involve me stepping almost completely out of my comfort zone. 

I have a few things on my plate that I could choose to do using non .NET technologies.  Of course the problem is that I could undoubtedly do them much faster using my bread and butter technologies.  The benefit of the .NET appraoch would be that I could get more things done and perhaps have extra spending money due to being able to do more of the little projects I've been asked by peeps to lend a hand on.  The downside is that I'd still feel like I need to learn something new, and stretch my brain a bit.  I've run into this same scenario many many times in the past, and always went with the approach that would get things done the fastest since I never seem to have enough time available for anything else.  The problem, of course, is one of the main reasons for doing little side projects outside of work is to stretch yourself in ways that you might not be able to otherwise.

When confronted with such dilema's how do you choose?  Do you go safe, and stick with what you know, or do go with the more difficult, and potentially more rewarding path of trying something completely new?

 | 
Wednesday, February 21, 2007 3:52:49 AM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [9]  |  Trackback
I'm sure Linux users across the world are going crazy about the fact that they can now run Visual Basic .NET, courtesy of Mono!  Or not.

In all seriousness, it is pretty cool that the folks on the Mono project have added support for Visual Basic.  I wonder how good the WinForms story is these days on Linux.  I know the last time I checked it out for the Mac, it wasn't a pretty picture.

Wednesday, February 21, 2007 3:34:47 AM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [1]  |  Trackback
 Monday, February 19, 2007
We've had several internal discussions about how we should allow our customers to extend and customize their data.  We considered a lot of different options and thought about a lot of the tradeoffs that need to be made for each approach.  It's because of this that I'm very interested in people's opinions, and as such would like to direct you to Jeremy Miller's "How do you extend and customize a database" post.  Please go and drop him a comment describing what approach has worked best for you so that we can all learn from your experiences! :)

Monday, February 19, 2007 9:57:30 PM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Sunday, February 18, 2007
I'm sure you all know about RESTful web services by now, but what about RESTful databases?  Gary Bernhardt's "wildly ambitious database project" currently named RESTDB is "a database server and client implemented as a RESTful HTTP service in Python".


Monday, February 19, 2007 2:11:23 AM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [2]  |  Trackback
This past week, while working on a couple updates to some existing code I had to update the corresponding unit tests to ensure the stuff I added didn't cause massive problems.  As I started exploring the unit tests for the existing functionality my head started to spin.  Either I was going nuts, or the tests were less than ideal.  After examining the code for a little while I started to see why my brain wasn't working so well when it came to examining this particular chunk of code.  While the tests were testing the functionlality that they needed to, they weren't nearly as readable as they could have been.  Some of this is a result of attempting to reduce the amount of duplication within the test class.  You see, several things needed to assert the same things, so they were seperated out into a method that you could pass some stuff to, and it would magically assert everything that you could ever want asserted upon the so said "stuff".  While nice in concept, it led to code that was very hard to follow.  In order to see what an individual test was doing I needed to jump around to 3 or 4 methods that contained the asserts.  Once I finally tracked down the asserts that were being used I was able to see what was expected.  It just so happens that I could also see that we were testing the same thing 3 or 4 different times in an individual test.  For good measure, we also appeared to test the same exact logic in multiple tests!  All of this has led me to the following conclusions:
  • You should prefer readability over well factored code for unit tests.  If you need to jump all around to figure out what you're testing something's wrong.  If duplication helps with readability, duplicate away!
  • Make sure your unit tests are only testing one thing. 
  • Make sure you don't re-test the same thing over and over and over again.  Taken with the above point, you should begin to see that you shouldn't have that many tests that need to assert the same thing, if you do, you probably have multiple tests testing the same thing.
  • Only tests one class per unit test class.  If you're testing ClassA and it leverages logic within ClassB and ClassC, don't test ClassB and ClassC's logic within your test for ClassA.  Create seperate classes for ClassB and ClassC.  Trying to test them all in one place will lead to unit tests that are too hard to read and doing too much.  This is particularly hard to keep in mind since often times as part of the process of doing test driven development ClassB and ClassC might be created.  It's tempting to leave the existing tests that test the logic that used to be in ClassA but has since been moved to ClassB and ClassC within ClassA's tests.  Don't do it, move the tests to the suite of tests that you're creating for ClassB and ClassC.  You'll thank yourself when you come back to change that logic, since it will be where you expect, rather than in a test class for a related class.
I've gotten distracted by Lilo and Stitch so I'm going to stop with my conclusions there, and go play some indoor basketball with my son who is throwing a basketball all over our house. :)

[Disclaimer: It should be noted that I'm pretty sure the code I was looking at was code I wrote...whoops :(]

Sunday, February 18, 2007 4:45:26 PM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [6]  |  Trackback
 Friday, February 16, 2007
Lonely PupLonely Pup Hosted on Zooomr

One of my favorite classes in college was Photography. I enjoyed learning about how to operate an old 35mm manual camera, as well as learning about the various factors that go into controlling how the "scene" you've framed in the viewfinder becomes a photograph.  While I don't get to "shoot" much, I do enjoy the opportunity when it arises. 

I've recently been looking into the various photo sharing sites that are out there.  Everyone knows Flickr, but some not so known alternatives have caught my eye as well...most notably Zooomr and SmugMug.  I haven't done an in depth evaluation of the three services I'm considering thus far, but I've explored them enough to know what I do and don't like about each. This post is an attempt to get me closer to figuring out which one I want to go with.

Flickr
Flickr has a ton of users, and as such a very strong community.  I'm a big fan of their interestingness feature, and more so FlickrLeech which allows you to see all the interesting photos in one page without having to page endlessly.  There has been a lot of noise made lately about the various changes that are going on as Yahoo tries to integrate Flickr into their other web properties and vice versa.  While there are advantages to having someone as big as Yahoo behind you, it also can be a drawback.  I wonder if Flickr still has the passion and innovation it had when it first started. As I've explored some of the other sites I've felt like they were more innovative and forward thinking in their approach.  At $25/year for a Pro account their pricing seems very reasonable.  For more details on what that $25/year gets you checkout the Flickr upgrade page.

SmugMug
Ironically, what drew me to SmugMug wasn't their kick ass product, but their CEO/Chief Geek Don MacAskill who has blogged some interesting details about how they're using Amazon S3 to save lots of money.  In addition to having a very interesting CEO who blogs about cool technology, SmugMug also happens to have the nicest interface I've seen thus far for browsing photos.  They recently released an update that is flowing with magical Ajax love, which results in a very nice photo browsing experience.

In addition to having a killer product, SmugMug also is right up my alley as far as companies.  From what I've read, we share many of the same philosophies on how to run a business. Additionally, I like their company story.

SmugMug is slightly more expensive than Flickr at $39.99/year.  To get the scoop on what they include checkout the details on their website.

Zooomr
I was introduced to Zooomr through Scoble's Photowalking series with Thomas Hawk.  Zooomr has some unique features that I haven't seen in other photo sharing sites.  One of the more interesting features is portals, which let you link photos together and provide interesting ways to navigate between the linked photos.  Zooomr is/was (?) also giving away free Pro accounts to bloggers, which is actually why I have that photo at the top of this post.  Zooomr has some nice Ajaxy photo viewing features, that while not as nice as SmugMug's are towards the top of my list.  I'm hoping that some of the things I've wanted from their interface will be coming in Mark III, which is supposed to drop in early March.

I've never been able to find out what a Pro account costs on Zooomr.  Perhaps they just give all their accounts away to bloggers and don't change a thing? :)

Anyway that's about it for my very unofficial run down of the sites I'm considering.  Let me know if you have any recommendations.
Saturday, February 17, 2007 3:14:26 AM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [5]  |  Trackback