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.
Archive for March, 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:
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.
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.
Working Effectively With Legacy Code is supposed to be fantastic.. and who doesn’t work with legacy code? I know I do…
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…
i hear it’s a good book- another one to add to the stack of books-to-read…
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:
- Oh god, this code sucks, it makes me stressed just to look at it…
- Destroy, destroy, destroy
- Humpty is shattered across the floor
- Put Humpty together again (universally known to be non-trivial)
- 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!