« January 2004 | February 2004 Archives | March 2004 »

Where do the mocks live?

| 0 Comments
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 from another library... When it comes to test the dependant library it's often handy to be able to use the mock object that you created to test the library that you're dependant on... If you see what I mean... The, slightly labored, point being, it's important where you keep your mock objects...…

Thought for the day

| 0 Comments
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 more difficult. - C. A. R. Hoare From Joel's discussion board...…

Looking for more blogs to read

| 2 Comments
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 I'm looking for technical blogs with a "working programmer" slant. It would be nice if they were biased towards C++ but I don't really care. I think these guys are good, so more like this would be nice: Stan Lipman, Eric Lippert, Raymond Chen, Wesner Moise, etc.…

We want information, information, information

| 3 Comments
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 a MS technology that doesn't appear to be documented as well as it could be I know where he's coming from.…
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 had been better edited, but given the choice between having the information that's in the article available or having it sitting in someone's mailbox waiting to be edited I know what I'd prefer. As far as the MVP's go, I'm happy they're there and it's great when they can help, but I'd rather have access to all and any snippets of information…

Quality of MS developer support

| 2 Comments
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. But they could do more...…

.Net 1.1 TCP/IP wierdness fixed

| 3 Comments
"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 error mesage when trying to use sockets on .Net 1.1 fixed. Thanks to Alex Lowe for pointing me in the right direction and for the guys at MS support for allowing me to call them up and tell them I need to download the hotfix for KB 826757.…

Explicit callbacks or virtual methods

| 2 Comments
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...…
Barry suggests that to do meaningful performance tests you need to know a bit out the way the thing that's under test operates.…

You learn something new every day

| 2 Comments
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 and adds the logging functionality and calls the object under test to do the work. Of course, for this to work, the functions that I'm interested in can't be private. Some of them were and I was dissatisfied with my current solution (reclassify them as protected because the test needs to access them) and…

Is Open RBL a crock or is my DNS set up wrongly

| 4 Comments
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 to MAIL FROM command) So I wander over to www.openrbl.org and type in my domain name and it tells me REJECT: invalid ip-address or non-resolvable hostname: jetbyte.com... Now, it's true that jetbyte.com doesn't have an ip address, but it has a perfectly valid MX record... Shouldn't OpenRBL be checking that the MX record is valid rather than checking that the domain has an ip?…

I always regret leaving the perfmon code out

| 0 Comments
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...…

Do blogs without comments have any value?

| 4 Comments
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 comments/trackbacks as "less reliable sources"...…

Off to Saas-Fee again...

| 0 Comments
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

| 2 Comments
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 June was before I'd become test infected...…

I seem to have lied earlier...

| 0 Comments
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 lied. It's in CVS if I need it, so why keep it cluttering up the code when I don't need it...…

Uncontrolled coupling - Singletons, just say NO!

| 0 Comments
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 used to talk to... This morning I stubbed out the new stub and put together a test harness project. Unfortunately, due to the way the client's code is coupled it could prove difficult to test the new stub...…

66% Evil, seems about right...

| 0 Comments
Er, I blame him, him and hiiim, oh and that little voice inside my head...…

Finally, the penny drops about AcceptEx

| 0 Comments
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 wasn't something I needed to use in our servers. I'd latched on to the officially advertised reasons for using it and ignored the more subtle advantages...…

Happy Birthday to me...

| 2 Comments
37 today.…

Bluetooth server demo

| 12 Comments
I'm making the compiled version of our Bluetooth server shell available for download here. The source is not available at this time.…

I hate things that turn off the explorer status bar

| 0 Comments
<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 than the user decide what's the best way to display information?</rant> and don't get me started on folder views that reset themselves to the dumb ass icon display for no apparant reason...…

Why is Outlook 2002's POP handling so slow?

| 1 Comment
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 about half a second per message to download a large number of really small messages, from a server on the same machine... Because I'm curious, and because it doesn't appear to be a server issue as the server idles the whole time, I ran up Outlook Express and pointed that at the server (same SSL connection), it…
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 had a tool that allowed us to back port VS.Net 2003 projects to VC 6 then we could maintain the projects in the latest format and back port as required. As it is, we need to maintain them in the earliest format because we know that the newer compilers will always…

Implementing the new AcceptEx server

| 0 Comments
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 around. It was helped more by the refactoring that I'd done recently and the fact that it was easy to take the tests I had for the listen/accept version of the socket server code and adjust them to work with the new AcceptEx version.…

Some thoughts on complexity

| 0 Comments
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 complex and you can focus your attempts at simplification on the right places...…

Why I started thinking about obvious complexity

| 0 Comments
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 result is a memory leak. The code in question doesn't have tests, but that's not the point, it would be hard to write automated tests that would have caught the problem due to the fact that I, as a designer, made an unchangeable decision for the user of the code.…

More on the bug

| 0 Comments
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 slightly less concerned...…

An abstraction too far

| 0 Comments
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 policy. It worked, but it was, I think, unnecessarily complex. If the buffer allocator itself lay behind an interface then that's enough flexibility. Additional abstraction, with an abstract allocation policy in addition to an abstract allocator seemed a tad too abstract... At some point you have to actually make the decision and write the code that does the work. An interesting day's thinking; the…
« January 2004 | February 2004 Archives | March 2004 »

About this Archive

This page is an archive of entries from February 2004 listed from newest to oldest.

January 2004 is the previous archive.

March 2004 is the next archive.

I usually write about C++ development on Windows platforms, but I often ramble on about other less technical stuff...

Find recent content on the main index or look in the archives to find all content.

I have other blogs...

Subscribe to feed The Server Framework - high performance server development
Subscribe to feed Lock Explorer - deadlock detection and multi-threaded performance tools
Subscribe to feed l'Hexapod - embedded electronics and robotics
Subscribe to feed MegèveSki - skiing