Archive for March, 2008

Top 5 reasons why “The customer is Always Right” is wrong

Wednesday, March 26th, 2008

Pretty related to an earlier post I made about how programming shops are not dry cleaners… It’s not saying ignore the customer, but that random customer demands aren’t the way to run a business well.

Top 5 reasons why “The customer is Always Right” is wrong 

Maybe a PythonShop #2 is in the works…?

Monday, March 17th, 2008

Looks like IronPython is not only steps away from their 2.0 version, but is python compliant enough that Django runs. Plus, you get to use .Net stuff like Silverlight, which apparently provides some nice UI functionality. This could be interesting… As for the article title, well sure, I understand the sentiment, but the truth is, Microsoft actually played nice while developing the .Net CLR. So guys, only hate when hating is warranted, alright? Anyway, full article here:

Django Now Plays the Dark Side

SharpShop in Progress…

Monday, March 17th, 2008

Like PythonShop (which could still use some touching up) the current task is to build the same functionality in .net. As I’m the .Net person (and *I’m* not at PyCon this weekend) I started up the project groundwork. I’m trying to do it with NHibernate, log4net, mysql (yeah, thought it might be interesting to hit something non-MS) full TDD methodology, maybe Windsor if I can figure out a good place to use it that isn’t over my head at my current knowledge level, and maybe MonoRail. With my current project at work, the project was over a year old by the time I got on board, so a fair amount of infrastructure was already set up. As a result, I’ve never really done this sort of thing from the beginning… I’d done .Net at my previous job, but it was your standard MS-style with Datasources, no ORM, so entirely different. Anyway, I’ve been doing a lot of reading trying to figure out how to set things up well. The amount of clearly written information online for project architecture seems pretty thin, and what’s there varies a lot in recommendations without explaining why, and in the quality. Maybe architecture is usually something learned by mentoring, I’m not sure. But it makes for tough going for learning.

At the moment, I’m structuring the project based on a tutorial at http://blog.symbiotic-development.com/2008/02/10/ddd-and-nhibernate/ … this is just a set of handy-dandy links for individual lessons by Ben Scheirman hosted at http://www.flux88.com/. It seems to strike a good balance between separating things out and ease of understanding. I tried looking at Ayende’s tools this weekend to get some similar guidance on architecture, but though I’m sure it’s probably more extensible, etc, all of that comes at a cost of being more abstract and harder to understand, particularly when you’re working through it alone.

SharpDevelop Initial Review

Sunday, March 16th, 2008

As I mentioned in this post, I was interested in SharpDevelop, a free .net editor. I’ve been writing some with it a bit at home yesterday and today, and it strikes me as adequate for basic messing around at home on projects. Two months ago, I might have said it was super and all you’d need, but I’ve since experienced ReSharper, and I miss it at home! SharpDevelop does have syntax highlighting and Intellisense, though unlike Resharper, it does require a compile to pick up anything new, and doesn’t have marking of unused code, which has gotten me in the positively addictive habit of search-and-destroying.  It does have the ever-useful Go To Definition and Find References feature, as well as NUnit integration, which is nice.

The feel is a little bit homegrown- it’s definitely not the edges-polished look that VS/Resharper has. However, it so far seems extremely lightweight resource-wise, unlike VS/Resharper-when I had that with 1GB at work, my computer was practically useless.  My home computer with 1GB barely seems to notice SharpDevelop.  SharpDevelop  can work with Visual Studio solutions, which is very nice since most code you’ll find on the web is packaged that way.

Current judgment: VS with ReSharper really is fantastic, and is helpful in a thousand tiny ways. However, the combination would cost something like $400. At the office, it’s absolutely worth arguing it out with management to get it bought, and if you’re doing heavy work at home, it’s definitely worth the investment. That’s not everyone though-if you’re just doing small stuff, free stuff, just learning, or $400 is plain out of the question, SharpDevelop isn’t a bad way to go. It’s much, much better than notepad, and though less polished than Microsoft’s Express offerings, SharpDevelop is arguably more full-featured.

Another book on the stack…

Friday, March 7th, 2008

Working Effectively With Legacy Code is supposed to be fantastic.. and who doesn’t work with legacy code? I know I do…

Is #Develop any good?

Friday, March 7th, 2008

http://www.icsharpcode.net/OpenSource/SD/ Haven’t looked at it yet, but since ReSharper plus VS staundard is a bit costly for futzing around at home for the soon-to-be-started SharpShop, I think I’ll give this a go.  Review to come in a future post…

Agile Principles, Patterns, and Practices in C#

Wednesday, March 5th, 2008

i hear it’s a good book- another one to add to the stack of books-to-read…

Refactoring

Tuesday, March 4th, 2008

Currently reading Refactoring by Martin Fowler. Yeah, any programmer worth the space he/she takes up is going to do some version of refactoring, but this is really attacking refactoring with a systematic, safe, testable approach. It seems like a better way of approaching it than the normal way:

  1. Oh god, this code sucks, it makes me stressed just to look at it…
  2. Destroy, destroy, destroy
  3. Humpty is shattered across the floor
  4. Put Humpty together again (universally known to be non-trivial)
  5. If the step above didn’t end up as an endless pit of pain and despair, things are actually much, much better!

Something that doesn’t involve the level of inoperable destruction in step 3 but still gets to the same final state is probably an improvement! Giving these refactorings names seems like a good way to keep the operations concrete an separate in my mind, and will help in future conversations. Good stuff!