Posts from 2004
-
:
New Year
A combination of events in the run up to my Christmas break meant that I have ended up spending almost 2 weeks without feeling the urge to write any code. I’ve just chilled out and relaxed, watched some DVDs, saw LOTR ROTK, played … -
:
2003, The year of the test
Looking back on my blog entries for 2003 it’s reasonably obvious that the big thing for me in 2003 was testing. TDD seems to work well for me and my clients. It’s not a silver bullet but it is a useful tool and I find that when … -
:
Use and misuse of C++ nested classes
I like nested classes in C++. They allow a nicely fine grained approach to naming. Where a class may need to be called CRegistryKeyIterator if declared at namespace level it can be called Iterator if nested inside the CRegistryKey class. … -
:
.Net 1.1 TcpClient strangeness
There seems to be a wierd bug with .Net 1.1 and sockets… In essence, this code: using System; using System.Net.Sockets; namespace ConsoleClient; { class Class1 { [STAThread] static void Main(string[] args) { TcpClient _socket = new … -
:
Template shims
I needed to implement the same interface twice in one object today. It took me a while to remember how I do this kind of thing so I thought it was worth a blog posting so that a) I can find it at a later date, b) other people can tell me of … -
:
In C++ why isn't this a reference?
In C++ every object has a “this” pointer. You could think of it as being passed as an implicit argument to every non static member function that the object has. It can never be null so why isn’t it a reference? The reason … -
:
Bitten by the one definition rule
I’ve just wasted 20 minutes or so on a nasty bug. I’d added a bit of test code and suddenly some other tests were failing but the reason for the failure seemed to be that a class’s vtable was getting screwed up and a … -
:
Back from Meribel
Just got back from a week’s skiing in and around Meribel. Great snow, great company, a good time was had by all. Just holiday snaps…. We stayed in the Indiana Lodge and travelled with VIP. Thanks to Eli and Al, our chalet … -
:
Oh good, comment spam
Just removed my first spam comments… It’s almost nice that the spammers think I’m worth spamming, but only almost… If this is anything like my email spam then I expect that this is just the start of a flood… … -
:
HeadCam2
My new head cam arrangement worked well in Meribel. As you can see from the picture below, the new camera is much smaller than my previous rig. The camcorder lives in my rucksack, the cables for video and remote control come out over my … -
:
Admitting that your baby's ugly
I have a couple of days to myself. We’ve just shipped some code to a client a couple of days ahead of schedule and we’re waiting to recieve a purchase order from another client so I find myself without any client work to do. … -
:
Hacking our way to the first test
So I have some time on my hands and I’ve decided that The Server Framework code could do with some tests but before I can do that I need to refactor because the code was written before I became test infected and, well, it’s not … -
:
How useful it could have been if...
I’m writing tests for some code. I have a function that I’m testing that looks something like this: bool CAsyncSocket::Read(bool throwOnFailure = false); If C++ allowed us to overload a function call based on return type then we … -
:
So, what do these tests look like then?
After breaking the socket server into more manageable chunks I started writing the tests. CAsyncSocketConnectionManager is pretty easy to test, it only has one public function; Connect(). So, what exactly do these tests look like? I … -
:
Ok, I'm curious
I get quite a bit of feedback about the socket server code but I don’t really know what people are using it for. So, if you can, leave a comment or drop me a mail and tell me. -
:
Knocked a few things off the list...
The refactoring and testing of The Server Framework code has gone pretty well. It’s not complete but at least we have some tests now and the code is broken down into slightly more cohesive lumps… Once the tests were in place … -
:
Where do the mocks live?
During the recent library adjustments the main aim was to add tests. As we write tests we create lots of mock objects. Our libraries are dependant on each other, as libraries tend to be, and this means that often a library uses an interface … -
:
Thought for the day
*There are two ways of constructing a software design; one way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far … -
:
Looking for more blogs to read
I want some new and interesting blogs to read, so leave a comment if you have any suggestions. I subscribe to quite a few (opml file here) but I’m a bit tired of the Microsoft Employee Bleating Edge Blog stuff… Ideally … -
:
We want information, information, information
Who are you? The new number 2… Who is number 1? Looks like Roy Osherove is making waves with his comments about MVP information hoarding… Having been in the position of being a developer searching for scraps of information on … -
:
I'd rather have poor information than no information
Roy’s post about information hoarding made me think, which is always good… Last night I followed a link from Larkware to this article on MSDN about Pocket PC services. The article annoyed me, I’d have preferred that it … -
:
Quality of MS developer support
Alex Lowe asks what Microsoft could do to improve their developer support. In general I think they do a reasonable job given the huge surface area of APIs and products that need support; I think some of the MS staff blogs are helping too. … -
:
.Net 1.1 TCP/IP wierdness fixed
“Additional information: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full” I’ve managed to get the .Net 1.1 TCP/IP issue that gives the above … -
:
Explicit callbacks or virtual methods
I’m in a bit of a quandary. I’m writing a class that does processing on a byte stream. You poke bytes in, it does stuff, it gives you bytes out. My quandary revolves around how it gives you the bytes… The processor … -
:
Can performance tests treat the object under test as a black box?
Barry suggests that to do meaningful performance tests you need to know a bit out the way the thing that’s under test operates. I guess he has a point given his reason for performance testing was to compare a new version of the thing … -
:
You learn something new every day
I’m writing some tests where I need to log calls to function for the test log so that I can make sure the function is called in the expected way when the test runs. The logging version of the object under test derives from the object … -
:
Is Open RBL a crock or is my DNS set up wrongly
One of the people I email’s corporate mailer has started to bounce my mail with the following message: *mx.example.com[xxx.xxx.xxx.xxx] said: 554 You have been blocked by a DNS blacklist, please see:- http://www.openrbl.org/ (in reply … -
:
I always regret leaving the perfmon code out
I had one of those “Doh!” moments yesterday. In summary, always put the performance monitoring code in early, looking at a program’s vital signs as a jiggly graph can show up all kinds of unexpected things… The work … -
:
Do blogs without comments have any value?
I’ve noticed that quite a few blogs I read have turned off comments and trackbacks and removed all trace of any previous comments/trackbacks. I realise that the comment spam problem is a pain but I find that I treat blogs without … -
:
Off to Saas-Fee again...
We’ve just booked up with the Warren Smith Ski Academy again for another week of training in Saas-Fee. Not until early next season though :( But it’s the first trip booked… Now, where and when to go this season… -
:
Test Driven OBEX
Way back in June I was playing around with OBEX. I’ve had a quiet day today and went back to the code to progress it a little more (a client is making interested noises so I need to get back up to speed again). The code I wrote in … -
:
I seem to have lied earlier...
Earlier I said “I’ll probably keep the code for now, but it’s not the code I’d have written first if I was working from a test. I wouldn’t need it yet… I may never need it in production…” I … -
:
Uncontrolled coupling - Singletons, just say NO!
We’re developing some code for a client. There’s a standalone server, which we’ve completed, and a small stub of code that allows the client’s existing system to talk to our new server in place of the old thing they … -
:
66% Evil, seems about right...
Er, I blame him, him and hiiim, oh and that little voice inside my head… -
:
Finally, the penny drops about AcceptEx
So there I was, cleaning my teeth, about to get into bed and suddenly I saw a reason for using AcceptEx… I’ve known about AcceptEx for ages, and even written an article about how to use it but I always thought that it just … -
:
Happy Birthday to me...
37 today. -
:
Bluetooth server demo
I’m making the compiled version of our Bluetooth server shell available for download here. The source is not available at this time. The zip contains a simple server that advertises the following Bluetooth profiles: OBEX file … -
:
I hate things that turn off the explorer status bar
<rant>Whoever decided that it would be a good idea for the explorer status bar to be ‘switch offable by someone other than the user’ should be taken outside and given a good kicking. Why is it a good to let someone other … -
:
Why is Outlook 2002's POP handling so slow?
I ran Outlook against my POP3 server just now and once again was unimpressed by the speed that messages were being downloaded. It seems that Outlook 2002, over an SSL link to a POP3 server (so no anti-virus weirdness is going on) takes … -
:
Does anyone know of a VS.Net 200X to VC 6 project file conversion tool?
We have lots of clients who haven’t moved away from VC 6 yet. At present we need to maintain all our projects in a VC 6 compilable form. The easiest way to do this is just to use VC 6 as our primary development platform for C++. If we … -
:
Implementing the new AcceptEx server
Following my tooth brush revelation about AcceptEx earlier in the week I found some time today to test out my ideas. The implementation went pretty smoothly. It was helped by the fact that I had a previous attempt at using AcceptEx floating … -
:
Some thoughts on complexity
I find that these days I prefer my complexity to be obvious. Things with hidden complexity aren’t any less complex, they’re just less obvious. If you make all of your complexity obvious then you know which pieces of code are … -
:
Why I started thinking about obvious complexity
So, what brought on those musings on complexity? There’s a bug in the recent public release of The Server Framework code. It’s in one of the example servers. Some code got snipped out and it shouldn’t have been and the … -
:
More on the bug
As I mentioned earlier, I found a memory leak in a piece of code and was lamenting the difficulty in providing automatic tests for such a think when you use new and delete directly. I’ve thought about this some more and I’m now … -
:
An abstraction too far
Today turned into a day for pondering complexity, abstraction and memory management and watching Pirates of The Caribbean on DVD… I experimented with a version of the buffer allocator that allowed a user defined memory allocation … -
:
Most interesting present
My birthday lasted all week, which was good. I celebrated on the day at Strada in upper street, on Friday at the Almeida and on Saturday at Curry Special. Thanks for all the wonderful presents. Right now the most “interesting” … -
:
We'll be right back, after this word...
Surprisingly enough the Bluetooth server “technology preview” has generated quite a bit of interest from potential clients, which is nice. In a similar spirit, I’m making the compiled version of our server that uses the … -
:
POPing back
Way back in mid November, before we dumped our building’s managing agent for being worse than useless and possibly stealing from us, I was working on some POP3 code. I had some down time today so I decided to drop back into it and see … -
:
Thought for the day
If you don’t write the code are you doomed to forever be thinking that the abstraction is all in the wrong place? Another day, another dollar. Starting with a new client, well starting back with an old client, and doing that … -
:
These are not the containers you're looking for
STL containers are great. Rather than have to worry about writing doubly linked lists, efficient maps, and other such data structures you just grab one from the STL and you’re away. Unfortunately the STL containers have quite a large … -
:
Craig on TDD
Craig Andera talks about TDD. I couldn’t have said it better myself. -
:
Adding layers without adding value
I’m a great fan of wrapping stuff up with thin layers that make the wrapped code easier to use in a given circumstance, or to provide a more appropriate interface. Obviously there are other reasons to wrap APIs but I’m … -
:
Cypher
I’m currently working with a corporate client. The plan is that I’ll help them refactor a key component in their system and make it more robust and increase performance. Right now they’re in the middle of a release and are … -
:
Meanwhile, back with the tests
I’ve seen a lot of blog postings recently that pour scorn on the ideas behind TDD. Ah well, if you don’t like it, don’t do it. I’m more than happy if our competitors decide that TDD isn’t for them. In fact, … -
:
OpenSSL test server certs expired
The test certificates that shipped along with the OpenSSL server demo that I posted here have expired. I’ll post some new ones shortly. -
:
Const correctness
Interesting thread over on Joel today about using const, or not. The original poster asked how many people bothered to mark function parameters that they don’t modify as const and whether there was any performance or readability … -
:
Code review
I’m reviewing a large body of code for a client at present. It’s a general review of the design, coding style, code correctness and testability of a project. I started off by making notes on some of the general design changes … -
:
Saas Fee in September
Those of you who are interested in the Warren Smith Saas Fee ski training sessions you might like to take a look at Warren’s latest DVD, Warren Smith Ski Academy Lesson 2. The first two sections, carving and steeps, were filmed during … -
:
True, even if beauty is in the eye of the beholder
“I’ll bet you that from ten feet away I can tell if a program is bad. I might not guarantee that it is good, but if it looks bad from ten feet, I can guarantee you that it wasn’t written with care. And if it wasn’t … -
:
Jimmy on TDD
I agree 100% with this piece from Jimmy Nilsson’s blog. -
:
Async Pop
A while back I finally started on the async version of the POP3 client. It ended up as a state machine and seemed to work well. The next step was to write an async version of the mail collector that I used to pull all mail from a mailbox on … -
:
Testing synchronous communications
Today I’m doing some work for a client that involves writing some blocking sockets code to talk to one of our servers. Blocking mode fits well with the architecture of the client application they use; we’re moving the app from … -
:
Bizarre Googling
As Gavin pointed out in a comment yesterday, if you type “cure for rsi” into Google right now my hair-brained babblings about how drinking lots of water helps is top of the pile… If only I could do that with technical … -
:
Back from Megève
Just got back from a week’s spring skiing in Megève. This is probably our last trip of the 03/04 season :( We had a great time; skied on amazingly empty slopes; ate at a selection of wonderful restaurants and had some great guiding … -
:
MT-Blacklist
Sorry about the comment spam whilst I was away. I’ve now installed MT-Blacklist, so hopefully the only offensive rubbish and stupid sales-pitches on this site will be my own… MT-Blacklist seems pretty good; it cleaned up the … -
:
SOA, coupling, flexibility and discipline
Some thoughts on Service Oriented Architectures and how for some people the silver bullet du jour is the only tool in their toolbox… Just a bit of a rant really… Recently, both Rocky Lhotka and Ted Neward have said plenty of … -
:
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 … -
:
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 … -
:
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 … -
:
Dogfood
I’ve been running my main mail feeds through my POP3 code for several weeks now. All my email gets pulled from the POP3 servers into my home-brew email system, it runs through my hardcoded filters which split “bad” mail … -
:
Wafer thin testing?
I’ve spent the past month or so helping a corporate client improve code quality in a sprawling application. It’s non-trivial, the code-base is huge, the quality is, at best, questionable and the coupling is excessive and made … -
:
In the Zone
Where did the last three days go? I’ve been working on this project for a client since February, on and off. They had some delays which meant that hardware that I needed wasn’t ready when expected, so we slipped. Then other … -
:
Blog's a year old
Been a busy week, I meant to post this on The Day. I’ve been writing this stuff for just over a year now. I didn’t really know what to expect when I started, I just wanted a place to ramble on about this and that. During the … -
:
More than 20 years on and still as much to say
I’m currently re-reading The Mythical Man Month 20th Aniversay Edition and I’ve just finished watching Apocolypse Now Redux. Both seem to have as much to say now about their respective subjects as they did in the day. … -
:
The perils of premature 're-use'
Back in January I was writing a TCP/IP server for a client that acted as a connection gateway. Just as this project was coming to an end we started on another project which, at first, seemed quite similar; it was a TCP/IP server that … -
:
Skate weekend
We managed to get in two skate sessions this weekend, which was nice. The weather was lovely and on Saturday we spent some time at Kensington Gardens. This was our third skate this year and we finally started to feel we’d got our legs … -
:
Easy performance improvement for the socket server code
I was discussing the performance of The Server Framework with someone the other day and realised that there was a reasonably easy way to speed up some types of servers. I coded a first cut of the solution last night and, so far, it shows a … -
:
Practical Testing
One of the common complaints about TDD and unit testing that I see is that the examples used aren’t real. People often say that the examples used are toys and that writing such tests adds little or no value. To be honest, I often find … -
:
Practical Testing: 1 - Introduction
I’m writing some blog entries that show how to write tests for non trivial pieces of code. This is part 1. The code that we’re going to test is CCallbackTimer. This is a class that lives in our Win32Tools library. It’s … -
:
Practical Testing: 2 - The first test
I’m writing some blog entries that show how to write tests for non trivial pieces of code. This is part 2. In part 1 I introduced the code that we’re going to write a test for. Now we’ll move towards the all important … -
:
Monday Mornings
Updated 1st February 2024 to fix broken links Tell me about it. This morning I was shaving and thinking how I was actually early enough to be able to walk to Bank Tube station rather than jumping on the tube at Old Street. It looked like a … -
:
Practical Testing: 3 - Test 2, Enter The Mocks
I’m writing some blog entries that show how to write tests for non trivial pieces of code. This is part 3. Last time we wrote the first test. It doesn’t test much, but it proves we can test. Now we’ll write a real test for … -
:
Practical Testing: 4 - Taking control of time
I’m writing some blog entries that show how to write tests for non trivial pieces of code. This is part 4. We have a test for SetTimer() but it’s not as robust as we’d like. The problem is that the class under test is runs … -
:
Mythical Man Month
I finished re-reading the Mythical Man Month today. It was a good read, and, just as when I read it just after the 20th anniversary edition came out, still very relevant to software development today. I found Brooks’ enthusiasm and … -
:
Practical Testing: 5 - Testing shouldn't be this hard
I’m writing some blog entries that show how to write tests for non trivial pieces of code. This is part 5; the one where we find a bug we weren’t expecting… [Update: Welcome to anyone who’s coming here from the link … -
:
Back with the refactoring project
I spent a little time with the guys on the refactoring project last week. Of course, as is the way, pressure from the business for more functionality has reduced the amount of clean up work that they’ve been able to do. The good news … -
:
Practical Testing: 6 - Tests refactored
Previously on Practical Testing: The last entry ended with us having two tests, both of which were in need to a good refactoring. The second test had uncovered an unexpected bug… This time around we’ll refactor the tests, fix … -
:
Testing shouldn't be that hard
Yesterday’s Practical Testing post was a bit of a mammoth testing exercise. The threaded nature of the component under test makes testing it harder than you’d think; and this is just a single worker thread that we have to worry … -
:
Gripe of the day; explorer's desire to scan entire folder trees
OK, so who was the bright spark that decided that when I click on a folder at the root level of a drive Explorer goes off and scans the entire folder tree from that point down before expanding the one folder I’m interested in? More … -
:
A challenge for the .Net boys and girls
I’d like to do some comparative performance testing of The Server Framework against a .Net TCP/IP server, but I don’t know enough to be able to write a serious TCP/IP server in .Net. Sure, I could use TcpListener to throw … -
:
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, … -
:
A time to move on
The one problem with building a dream flat from scratch (well, a shell) is that once you’re done, you’re done. There just isn’t anything that needs doing for a very long time. If you’re someone who enjoys the doing … -
:
20 years on, 60 years on, thoughts on D-Day
20 year’s ago I traveled with my dad and the remaining members of my grandfather’s unit to Normandy for the 40th anniversary celebrations. I was 17, around the same age that some of them were on the day. My grandfather, Frank … -
:
Outage...
Sorry for the recent outages. My hosting provider upgraded a server and it took longer than expected to find all the things that were installed on the old server but were not on the new server. It seems that I’m the only one that uses … -
:
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 … -
:
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 … -
:
Testing payback
I’m building a new data provider for one of my clients. It breaks a huge chunk of their existing codebase out into a new component that hides behind a simple COM interface and abstracts away lots of nasty stuff so that they … -
:
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 … -
:
Erase registry keys using .reg files
I didn’t know you could do this; seems like a useful thing to remember. How to erase registry keys using .reg files… -
:
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 … -
:
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 … -
:
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 … -
:
Currently reading
I currently have 3 quite different technology books on the go, and one waiting in the wings. I’m re-reading Software Craftsmanship, McBreen’s ideas really appeal to me, but then I guess that may be because I went through an … -
:
DRY
I was visiting a client on Friday to help them integrate a server we’d written for them, using The Server Framework, with some of their existing systems. We had just got everything working nicely when they mentioned, in passing, that … -
:
Not Invented Here or just Not Usable Here?
Reusing code is often harder than you’d think. Sometimes the decision not to reuse a piece of code but instead to write new code to do the same thing is not just a case of ‘Not Invented Here’ syndrome but is more a case of … -
:
Reprints
I’ve started a new category, reprints, these are things from ‘way back’ that have been previously published on the web in other forms. First in this blatant search for more search engine hits is an old Java article I wrote … -
:
Busy...
I’ve been really busy these last few weeks. Too much to do, too little time. This week is looking better, so hopefully I’ll find time to finish the next couple of installments of the Practical Testing story, post a few updates … -
:
Testing Reflections
I found this site today from my server log - testingReflections.com I haven’t explored it fully yet, but what little I have seen looks good… -
:
Comment Spam Morons
Hey, you comment spam morons, get a life and do something useful for a change. With MT Blacklist most of you are kept out (and I can see how effective it is from looking at the logs) and it takes me no time at all to clean up after the few … -
:
Practical Testing: 7 - Fixing the tick count wrap bug
Previously on Practical Testing: After far too much work we finally got to the point where we had a test for the tick count wrap bug. Now that we have a failing test we can fix the bug. At long last we have a test for GetTickCount() … -
:
Practical Testing: 8 - Once more, with tests first
I’ve been writing some blog entries about a piece of code from my ‘back catalogue’ that didn’t have tests and that had a known bug that was reasonably hard to test for. Right at the start I commented that the code … -
:
Practical Testing: 9 - More tests, more development, notice the order?
Previously, on Practical Testing: we fought through the pain of writing tests for hard to test code and then we decided to see what it could have been like if we’d developed the code test first… Now we’ll add some more … -
:
/FI, STLPort, Precompiled headers, warning level 4 and #pragma hdrstop
The one where I find that you can teach an old dog new tricks and almost use the ‘rocks’ word. Just recently I’ve switched to using STLPort on two of the code bases that I’m working on. One of my clients wanted to … -
:
Practical Testing: 10 - Fixing the tick count wrap bug, again
Previously, on Practical Testing: Having bolted on some tests to an existing piece of code we’re now doing some “agressive refactoring” ;) and rewriting the code from scratch using the testing ideas we developed earlier. … -
:
Reprint: CORBA - Reference Counting
A new posting in the blast from the past reprints area. First in a series that compares CORBA and COM; CORBA - Reference Counting. -
:
Explicit class initialiser methods
Codemonkey uk has an interesting piece on the use of explicit initialiser and destroy member functions rather than allowing object lifetime to be managed by the constructor and destructor. Codemonkey uk comes down on the right side of the … -
:
Reducing what the code could do to just what the code should do
I’ve got one of those ‘please dig us out of this hole before we ship on Friday’ gigs this week. I’m back with the refactoring project for a few days and, well, when the cat’s away… So, we’re 80% … -
:
Sick of the R word
I’m getting a bit fed up of hearing the word ‘Refactoring’ when what people really mean is just ‘hacking at code’. Back in May last year I responded to Bob Cringely’s piece on how bad the whole idea of … -
:
Caring
There was a good reply by Dr. Real PC on one of Joel’s discussion threads recently; “The most important thing is caring. If you don’t care it doesn’t matter how smart you might be. If you aren’t interested how … -
:
Failed
On Tuesday I wrote about the start of this week’s gig. Now that the week is over I guess an update is in order. In summary; I failed to work miracles this week… Monday and Tuesday were spent on the low hanging fruit. Lots of … -
:
Most Amusing
Beatallica via Craig. -
:
Hmm, so I'm wet, huh?
You are water. You’re not really organic; you’re neither acidic nor basic, yet you’re an acid and a base at the same time. You’re strong willed and opinionated, but relaxed and ready to flow. So while you often seem … -
:
The Exponential Nature of Lines of Code
The faster your codebase grows, the less of it people will understand. When people don’t understand all of the code, they don’t see global patterns, and so they will reinvent little wheels all over the place. In theory, the … -
:
Excellent piece on exceptions
IanG on Tap: When to Catch Exceptions - the answer is, of course, not as often as you’d expect… Ian’s talking about managed code as can be seen from his final comments about expecting to see many more finally blocks than … -
:
Singletons and testing
When you need to jump through hoops to write tests you’ve done it wrong. Jonathan de Halleux writes about testing singletons and how he can subvert the standard C# singleton pattern to create a new singleton for each test he needs to … -
:
Brute force marshal by value
This week I integrated the new data provider with the rest of the client’s existing code. The integration was pretty easy as the existing code deals with the data provider via a single method on a COM interface. All that was needed … -
:
Just In Time Testing
Once we’d integrated the new data provider we were in a position to do some more testing. We configured the code that used the new component to request the same data from the new component and the old code and to save the data to … -
:
Practical Testing: 11 - Moving away from the simplest thing
Previously, on Practical Testing: having decided to rework the code from scratch in TDD style we fixed the tick count bug for the second time - this time the solution was cleaner and simpler. At the end of that episode we were left with a … -
:
Thoughts turn to snow
The 2004/05 ski season starts for us in mid September when we’re off to Saas Fee with Warren Smith again. Today we got our boots out and spent some time stomping around and practicing some of the jumping exercises that Warren had us … -
:
Repaying the technical debt
The boss is away, we’ve almost done all the things he asked us to do before he went and, well, there’s a bit of spare time so we’re looking closely at the code. The last few weeks have been a bit of a push for the finish … -
:
Platform, push off
However, I still prefer that all these technologies should be introduced and made exclusive into Longhorn, because of the enormous benefits a comprehensive base platform provides. By requiring an upgrade, Longhorn would cause a mass shift … -
:
Doxygen niggles
I’ve been using Doxygen recently. It can scan a body of code and produce reams of linked documentation and diagrams. I, personally, don’t really use it for its documentation, just for its diagramming. I’ve always believed … -
:
Code coverage and testing
Recently I mentioned that we were in the process of adding additional tests to our code base. We’d been using JITT to reduce the number of tests that we wrote and now it was time to fill in some of the gaps. This week I started to use … -
:
NFOFY JTDPN are the victim of spamy morons
[Updated:15th October - Original domain name hidden with a simple caesar cipher to stop them getting bad press via search engines…] [Updated: 6th September - It seems “NFOFY JT” were possibly the victim of a vindictive ex … -
:
LoadLibrary error
I need to dynamically load a dll, grab some function pointers and do stuff; simple stuff, done it 100s of times before. I decide that this time I’ll wrap the HMODULE that I’ll need in a class to make sure I can never forget to … -
:
WTF?
Ah, a place to keep all that bad code… The Daily WTF From Barry -
:
Why does windows hold the loader lock whilst calling DllMain?
I’ve been splunking around Dll loading recently for a pet project. It’s been an interesting journey and this evening I solved the final piece of the puzzle and, when I did, I suddenly wondered, not for the first time, why … -
:
They're learning
I’m back with the guys on the refactoring project for a couple of days. I got to my desk, updated my CVS tree and started to check my email. The first mail was from the boss man of the team; “I fixed a bug in the FX code earlier … -
:
The good thing about blogging is
It makes you think. I find that when I’ve done a brain dump post like last night’s “loader lock” posting, all of the issues are fresh in my mind. Posting just before bed means that by the time I wake up I’ve … -
:
How hand overs become hand offs
Being a consultant, I find that the start up and shut down of projects are usually the most stressful times. Start up is all about “hitting the ground running”, learning lots of stuff really fast and making a good impression. … -
:
Red sky in the morning
Looks like it’s going to rain today… ItsGoingToRain1 ItsGoingToRain2 ItsGoingToRain3 ItsGoingToRain4 -
:
Yup, that's where the value is
Mats writes about how he finally got unit testing by realising that the value comes not when all your tests pass and you feel happy but when one of your tests fails and you feel sad… This is actually something I’m not sure … -
:
Could someone please
Could someone please write a Java based estimating package? I really want to be able to able to turn to a manager and say, with a straight face, that all of my estimates were done in JEst… Sorry, it’s been a long day. -
:
Harvest for reuse
Jeff Atwood writes about the the delusion of reuse where he warns of the extra effort that’s really required when writing for reuse: “I believe writing a truly reusable class is an order of magnitude harder than writing a single … -
:
Tests as tours
I’ve discovered something quite amazing this week; something quite simple that shouldn’t really have been much of a surprise, but it was. If you have a substantial set of unit tests then you can use them as the backdrop for … -
:
Back from Saas-Fee - 2004
We’ve just got back from a week of early season ski training in Saas-Fee. We went with the Warren Smith Ski Academy, again, and had a great time. The weather (wind mainly) meant that we didn’t ski as much as we’d hoped, … -
:
Warren Smith Ski Academy - Sep 2004
As I mentioned last week, we’ve just got back from a week in Saas-Fee with Warren Smith. We’ve did this course last year as well, but due to the way the course is structured this didn’t really matter much; for us this … -
:
This is the book I've been waiting for
Excellent news; Herb Sutter and Andrei Alexandrescu’s C++ Coding Standards book is done! This is the book I’ve been wanting for ages. Whilst there are other C++ coding standard books out there but, well, they just don’t … -
:
11th October is Thanksgiving Day in Canada
I’ve had an interesting week. I’m back with the Refactoring Project and, although things were looking up last time I was here, they’ve managed to adopt some bad habits in my absence. The latest build that’s live with … -
:
Practical Testing: 12 - Threading is orthogonal
Previously, on Practical Testing: we finished our reworking on the code we were left with a simpler timer queue that passed all of our tests, but was single threaded and needed manual intervention from client code to manage timeouts. Today … -
:
Currently Reading
I’ve been reading mostly fiction recently. I’d kinda stopped reading anything non-technical for far too long; there was always some new techie book to read, but there always will be… I used to read masses of fiction, … -
:
Measure twice, cut once
I’m currently working on a small auction server for a client using The Server Framework. It’s a relatively simple server, messages come in, are validated and are then broadcast to interested parties and logged. Yesterday we … -
:
More Socket Server Refactoring
I’m currently working on a simple auction server for a client using The Server Framework. You can think of it as a specialised chat server, of sorts. One of the things it must do is broadcast messages from one user to a set of users. … -
:
Lock Free
I’m currently looking at “lock free” access to the linked list that stores the set of clients to communicate with. Ideally we’ll be able to add to, delete from and traverse the list from multiple threads without … -
:
An excuse to buy new tools
Preparation for the ski season continues. Yesterday my latest purchase from amazon arrived; Waxing and Care for Ski and Snowboards. As we’ll be putting down a few more tracks than normal this season I thought it wise to try and avoid … -
:
Practical Testing: 13 - Missing functionality
Previously, on Practical Testing: we added a multi-threaded version of our timer queue that manages timeouts automatically. This time we’ll integrate our new timer queue into an application that uses the old version of the code and, … -
:
Auction Server Performance
I’ve just about finished the auction server performance tuning. Our thrash test that uses 200 concurrent clients all responding to every bid with a counter bid has gone from averaging 40 incoming bids per second and 3700 outgoing bids … -
:
Baus waves at Scoble
Christopher Baus suggests that Robert Scoble’s blog lacks focus and that his blog is mostly noise, “He’s always blogging about something, but really nothing at all “. But Chris, surely that’s the point of … -
:
I don't usually do the meta-blog thing but...
I sympathise with Christopher Baus’ frustrations… I think that’s probably just par for the course; I like to tell myself that I gave up blogging for anyone else but me ages ago, I’m probably fibbing. Arguably my … -
:
Because we can
Our trip is now only 2 months away so I thought it was about time that the trip’s blog went live… MegèveSki MegèveSki, because we can… -
:
Bug in CThreadPool
Bob Etheridge reported a bug in the socket server code from codeproject, this is probably the oldest version of The Server Framework’s Free Framework code. He was noticing a small amount of memory corruption on server shutdown. … -
:
NetMeeting Data Channel sample code
I’ve uploaded a new copy of the NMPing.zip file that is mentioned in this article. It seems that it was corrupted. Sorry about the delay in doing this, I’d forgotten about it. The code’s very old, so be gentle with it. -
:
Smash it up
I completely agree with Jeff on this one. Fear of breaking code can hold you back from making the kind of changes that are required to keep the code alive. As a consultant I see this kind of fear a lot. Quite often I arrive at a client site … -
:
Looking back from near the end
My current consulting gig is coming to an end. We’ve been in the hand over phase for a while now and I think it’s slowly starting to work. Now seems like a good time to look back at what worked and what didn’t… This … -
:
VS.Net #Region
I’m reviewing some code for a client. I’ve decided that I don’t like the #Region functionality from the VS.Net IDE… It seems to be another ‘sticking plaster’ to help make things ’easier’ for … -
:
So much for testing
My category-based RSS feeds stopped feeding through to Testing Reflections and Test Driven a couple of weeks ago. They had worked fine, and then they just stopped. I assumed that the problem was at their end; either they didn’t think … -
:
Spammer's choice
I’d quite like to be able to harness the efforts of the comment spammers and MT-Blacklist so that when a spammer fails to comment on a posting this fact is noted and posting can get mentioned on the front page as the current … -
:
The value of malleable systems
We’re almost at the end of our hand over phase now; my time on the project is almost over. The last couple of weeks have been interesting. We’ve been working towards a demo of the system and this seems to have helped to get … -
:
Hoisting test code into production
A while ago I mentioned how I had hoisted a mock object up into production code because it only needed a few changes to make it usable as real code rather than just test code. This last week we’ve done this again… Our system … -
:
Busy
I’ve been busy recently; what with getting our trip sorted, finishing the hand over, completing the auction server and doing some consultancy for an internet market data providing company. The good news is that most things are now … -
:
C++ Meta programming madness?
Updated 26th Feb 2024 to fix broken links I find myself agreeing with Chris on this one. I just dont think I’m clever enough to use these ‘modern’ C++ template programming styles reliably in a way that makes the resulting … -
:
Stage complete - time bonus
Today was my last day with one of my current clients. In the end the hand over went well, but then I did start the process off a long time ago…. Back in September I lamented how hand overs can sometimes become hand offs when the … -
:
Stan Lippman's VC6 rant
It’s been a busy week. We got back from Verbier on Saturday and I’d hurt my knee, so I was sad, and limping and slow. I then had a mass of things to do to finish all of my client obligations by today. I collected up some blog … -
:
Why you're missing the point if you use a framework to generate mock objects for you...
Roy Osherove links to Mockpp a mock object framework for C++ and comments on how the framework is painful to use (and it looks like it was painful to write…) He concludes that he’s getting on just fine writing his mocks … -
:
My Sister is home
Today we had a second Christmas celebration. Michelle and I and my sister and her boyfriend went to my parent’s house for a meal. Michelle and I had spent Christmas with Michelle’s family and my sister was away over Christmas so …