Geek Speak

Staying focussed on the finish

The data provider project rolls on and we’re almost at 100% of the functionality required for version 1.0. In fact, we have a few 1.1 features in there because they were easy wins and by the time we made sure that we they’d be easy to do in 1.1 we found we’d done 90% of the work for them. The task now is to avoid the numerous distractions, improve test coverage, integrate with our clients and hit the ship date.

Code that's like a box of Lego

I’ve been noticing that since I started doing the testing thing in anger my objects tend to be smaller and I have more of them. The pressure that testing puts on you to design in such a way that each object can be used as independently as possible so that you can write tests seems to break chunks of functionality far better than other design methods I’ve tried. As I’ve said before, the problem then becomes one of managing the obvious complexity; looking at this kind of code for the first time can be a little daunting.

Firm Foundations

As I mentioned last week, I’m writing a new component for one of my clients. I also mentioned that ‘beyond the interface, I can do what I like’; that’s actually a surprisingly important part of the specification due to the situation that the client finds itself in… The client’s current codebase is in a fairly bad way; a mixture of staff turn-over, evolving requirements, tight deadlines, and lack of care and inexperience and lack of strong technical leadership has allowed the code to develop a nice selection of problems.

Repeat after me, COM is just an interface layer

I was reading this the other day and I recognised Past Mozilla Mistakes: two as something that quite a few (if not all) of my clients have made… If you’re writing in C++ then COM is just an interface layer. It’s great for providing access to an object model to loads of non C++ consumers but, in my opinion, it’s a lousy thing to base your entire system on. COM is a complex thing, considering how much work it does for you, the rules aren’t that onerous, but they tend to corrupt nice, clean C++ code if you let them.

Joel on Win32; API complexity and the Army of Muppets (a rant)

Joel has written a nice little piece on the demise of the Win32 API. Some of it I agree with; such as for many developers the fact that .Net is just the latest example of Microsoft indulging in a Fire and Motion exercise, yet for other developers it’s vitally important; the trick, as ever, is working out which camp you fall into… But some of it, I don’t. I really don’t understand the problem with API complexity (but perhaps that’s because I don’t really understand the problem with API complexity…).

Pimply youth

Last week I spent some time back with the guys on the refactoring project. Things are going well for them and, apart from a few minor transgressions, they’re sticking with the process that we put in place when I was with them on a regular basis. The project is currently suffering from a slight lack of technical direction; they have a new guy on the team and he’s enthusiastic to try ’new’ things and nobody is currently restricting the things he is allowed to try…

This still amuses me

A long time ago, in a galaxy far, far, away… I wrote a short review of The C++ Programming Language, 3rd Edition. Which, for some strange reason, Addison Wesley decided to quote on their page for the book in question (click reviews, the page is too clever to allow a direct link), along side an Amazon review and a review from Computer Literacy Bookshops… I laugh every time I stumble across that page…

Block

My brain has been too busy to think recently. I’ve had too many background issues going on, too many unresolved items, too much shit to deal with. I haven’t been able to think new things because I’ve been too tied up in the unfinished things, I’ve tried really hard to think but there wasn’t any space… It sucked. Today I cleared a lot of that away; I found closure on lots of items and generally would be able to think nice shiny new thoughts right now if I hadn’t relaxed with a little too much wine over dinner.

Designing to be inherited is extra effort

I saw this rather nice explaination for why sealed is used in so many .Net classes over on cincomsmalltalk.com as a comment to a rant about how .Net is bad for your design skills… *Designing to be inherited is extra effort [Shane King] April 16, 2004 20:26:54 EDT* * *It’s extra effort, since you have to think about not only what public interface to provide to users of the class, but also what interface to provide for people who want to inherit your class.

MT-Blacklist

Well, so far I’m very pleased with MT-Blacklist. It works well at preventing comment spam and when some spam gets through it’s very easy to update the blacklist and then run the ‘despam’ option to remove all traces of the offending material. 10 out of 10!