Thursday, 26 July 2007
Tuesday, 24 July 2007
The Joy of Copy Paste
The single responsibility Principle is all about creating software with nicely seperated out behaviours that you can resuse easily
We often end up with a bunch of very similar looking "for" loops in staticly typed languages that dynamic types languages avoid.
TDD / Refactoring is all about removing duplication
However there is still a ton of similar looking software whether it be the way you deal with exceptions, threading, iteration, etc etc. Copy Paste is still a useful function to replicate some of this structure!
Some of what I like about Resharper is that it has "mini" factories which help avoid Copy Pasting things like method names.
In Ruby on Rails there are Generators that basically copy paste the right things into the right places for you.
I make macros and templates and generators that automate the common stuff I do.
So what we need to do is try and put this concept on Steroids. Powerful software/coding factories. One problem with these things at the moment is that once something is generated we lose track of it and have little ability to regenerate things. So we endup with the pitfalls of Copy Pasting. Still, its hugely more productive to have these kinds of generators.
Information Design
Its worth spending some time getting to grips with Information design as we often add interaction design because we don't have good ways of presenting information to users.
One of the better articles on this is Magic Ink
Another interesting web page is here
With technologies like WPF we also get to add animation to all this! The skillsets we need to make software products is going to get really interesting.
The Next Big Thing in Software Development
These days much of the XP user group is around the subtleties of XP and teaching newbies the basics. Many of the ideas, tools and techniques are reasonably mature now.
The two other big things that were going on at the same time was a surge in dynamic and functional languages and techniques and also Usability / User Experience (Ux). These ideas haven't fully gone mainstream but they are picking up popularity at a rapid rate.
It's been fun riding the edge of some of these things.
The question is, what's next?
I think the next big thing in the software world is going to be software factories. They are not a new idea, in fact I remember hearing about some of the ideas that make up software factories back in the 90s.
The thing is, software factories at the moment seem a bit kludgy. They aren't easy to create and they aren't easy to use. I think the power in them is when it's easy to create your own and wield them with the power of things like Resharper. I think a bunch of software technologies are slowly aligning to make these things a lot easier.
I think once we have practical software factories that are easy to create and use the level of productivity of those using them is going to sky rocket.
Monday, 23 July 2007
IronRuby Code
Just had a quick look....
Mostly looks ok. However, I don't like their approach to unit testing. In fact what it has is really Acceptance Tests. It shows in some of the complicated methods they have ended up with. Lots of odd bits of code all around actually... Still! good to see some progresss :-)
Friday, 20 July 2007
Requirements Capture?
"but as far as requirements go, we're more naturalists than hunters. We like to observe our requirements roaming free in their natural habitat, rather than stuffing and mounting them for our trophy room."
Saturday, 7 July 2007
Burst of Air
This is a bit off topic....but might be vaguely useful to someone if they manage to find it.
I recently bought Chessmaster 10th Edition. So I install it onto my Compaq nw8240. Its a reasonably beasty computer and should handle this fine. I go into some of the tutorial stuff, all seems fine. Then I starting playing in Training mode and something very curious happens. The game starts slowing down. Then freezes. Then I have to shut the computer down with a power off. The computer seems to be running really hot. So I try it again, same deal.
I leave it a few days and just do the "Academy" training stuff and the puzzles and things. But actually playing a game of chess seems to cause it to die. I figure for $25 it still is a pretty good deal, but I really would like to play chess! I have a copy of Pawn2 which is ok, but fairly limited.
So I ponder whether my computer getting really hot because the game is using a lot of CPU and the whole thing falling over is perhaps due to the inside getting too dusty.
So I hunt down some "Air Burst" (which I couldn't get at Dick Smiths, out of stock in two stores, but a Mitre 10 had truck loads of the stuff). I spray it into various vent on the computer, a bunch of dust comes out,
*spray* *spray* *spray* This is quite fun!
Get some tweezers and extract a few dust balls that just can't quite make it out the vents. Then I turn my computer on....run up chessmaster, and Ta Da! I can play chess. It runs really well. Great game!
Most surprised that actually made a difference!
I'm also noticing the fan doesn't turn on nearly as much when I'm using it now either... So something to keep in the back of your mind if your laptop seems to be running slightly hotter than usual!