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.
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…
Some of this comes from the testing that I’ve been doing; liberal use of parameterize from above means that an object that uses several services is explicitly given those services when you create it.
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.
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.
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 flew.
<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…
We’re producing a custom application server shell, using The Server Framework, for the Traveltainment AG. web team.
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 transfer, Serial Port, Dial up Networking, LAN Access Server and OBEX object push.
The server requires working Bluetooth hardware that uses the XP SP1 stack. If you don’t know what this means then chances are, you don’t have it.
37 today.
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…