Posts from 2005
-
:
Normal service will resume, sometime
I’m currently based in Megève and my blogging (over here) has tended to be more about the skiing that I’ve been doing than the technical stuff. I expect I’ll write a technical post or two later in the week… … -
:
Happy Birthday to me...
Skill skiing, well, not right at this moment, we’re currently on a ‘ski holiday’ in Ireland… Back to Megève on the 27th. -
:
Practical Testing: 14 - Bitten by the handle reuse problem
A long time ago, on Practical Testing: I mentioned that there was a small chance that the way that ResetTimer() operated could mean that you could pass in a handle that you no longer owned and affect someone else’s timer by mistake; I … -
:
Normal service is about to resume...
My ski trip is over and I’m back in the UK for a while so I expect my technical writing will resume real soon now. -
:
Winsock, ConnectEx, shutdown, SO_UPDATE_CONNECT_CONTEXT and WSANOTCONN
I’m updating one of the pieces of sample code that we put on CodeProject a couple of years ago. A client wants a version of the COM object socket server that has been built with the latest version of our server framework and which … -
:
Static linking
Christopher Baus bemoans the problem of getting all the libs that he wants to use linked in statically on Linux. Chris wants an executable that will run on lots of different systems with the least amount of pain for all concerned and to do … -
:
Code Generation
I’ve spent much of this week moving from a hand crafted prototype to a code generated version of the same code. The code is all repetitive boiler plate, sort of like the stuff that MIDL generates for you. The code generated version is … -
:
Catching my breath
I’ve had a busy few weeks. I’m waiting for a client to come back to me about a quote for some work and whilst I’m waiting I’m putting together a prototype for a product that I’m interested in producing. The … -
:
Working on the borders
As anyone who has downloaded any of my code from here, or my company site or CodeProject will know, I have a particular way of doing things. The code I write tends to follow a particular style and as such assumes particular dependencies. … -
:
0xFF 0xFE -> CVS -> 0xEF 0xBB 0xBF
My project house-keeping yesterday ended up with a rather strange discovery. I have some test log files that contain Unicode characters and are stored on disk as UTF-16 with the correct 2 byte ‘byte order mark’ (BOM) header of … -
:
Easy interaction testing in C++ with Mocks that create logs
My Unicode Byte Order Mark hassles yesterday were brought to light by one of my mock objects. It was the expected output log for the object that had been converted from UTF-16 to UTF-8 by CVS without asking… Whilst writing that piece … -
:
Ok, Roy wins, I'm starting to see the advantage of mocks with expectations
Last week I posted an entry about the simple, hand built, mocks that I use for testing in C++. Whilst I stand by my previous assertion that writing the mocks yourself gives you an further insight into your design from a client perspective I … -
:
Is bloglines always slow?
I’ve been using SharpReader as my RSS reader for ages. I downloaded a version of it way back when I first got into blog reading and stuck with it because it worked, to a fashion. I ignored the bloaty .Netness of it and the fact that … -
:
And now for something completely different
One of my clients has asked me to do some investigative work for them in relation to Linux running on a Vortex86-6071LV (a PC/104 format PC which is 386 PC on a board that’s around 6" x 4" x 1/2"). Should be fun. The … -
:
2.4.31 Kernel build is go...
As I mentioned yesterday I’m currently playing around with Linux on an embedded PC. Stage 0: was to get a build environmet set up. That’s complete now and I have a build of the 2.4.31 kernel running whilst I type this. Getting a … -
:
Travelling at the speed of a floppy drive
This afternoon has been “one of those” afternoons. It started innocently enough when I checked my mail and my cables had arrived. I plugged a floppy drive into the Vortex86 and checked that I could boot off of it into DOS. All … -
:
Showstopper?
Today was “get the Vortex86’s SiS 550 graphics card working in graphics mode” day. In summary, I didn’t and it’s because the LCD is a DSTN one and the current Linux SiS drivers don’t support it … -
:
Linux's Dll hell?
I’ve been playing with Linux this week. The last time I played with Linux was back when it fitted on 15 floppy disks; I think I still have the 15 floppy disks in Dad’s office somewhere. It’s come a long way but I … -
:
So, where's the Unix version of CodeProject?
Software development is hard. Lots of details that are hard to get your head around and harder to simplify. CodeProject is a wonderful resource for Windows programmers where programmers try and make the complicated more simple for others; I … -
:
Currently reading
Just before I dive back into my other project, the one I don’t talk about, I thought I’d post a short note about the pile of books that I’m currently reading… Working Effectively with Legacy Code by Michael C. … -
:
Another day learning the Linux way...
My client has decided that we should ignore the video driver problem and press on with the proof of concept using the external VGA screen as a display. So this week was spent learning about building software for a machine running a minimal … -
:
The 'full articles' feed is now feeding full articles again
Seems like I broke it when I added the GoogeAds for that feed… RSS 1.0 (full articles) RSS 2.0 (extracts) -
:
My own legacy code
I’ve just started work on an ISO8583 server for a client. I’ve done similar work for them in the past and the first thing that I did was to take the basic shell of the last server that I did for them and update it to use all of … -
:
A single responsibility, please
Having got the CMessageProcessor under test in the last posting. I added a few easy tests for the object and then I came to another hard to add test. The reason that it was hard to add was that the object is doing a little too much. The … -
:
What's wrong with my CSS?
My <pre> styling looks OK (to me at least) in IE 6 and horrible (double spaced and strange) in Firefox. Can anyone tell me why? The CSS looks like this: pre { color : #990000; font : "Courier New", Courier, monospace; … -
:
No, that's not the point, and yes, trace logging IS bad
Sahil Malik doesn’t agree with Jeremy Miller’s description of excessive tracing being a code smell. He suggests a ’neat’ way to get around the problem but, IMHO, he’s completely missing the point, and … -
:
Disappointing .Net Sockets article in MSDN Magazine this month
There’s a rather disappointing article on .Net sockets in this month’s MSDN magazine. Updated 5th May 2023 to fix broken links The title of the piece is “Get Closer to the Wire with High-Performance Sockets in .NET” … -
:
This should be interesting
Richard Hale Shaw is writing some blog entries about moving away from C++ (to .Net). But then he would say that, wouldn’t he. His job includes providing courses for people learning .Net… ;) Anyway, I’m sure it’ll be … -
:
Blogs as conversations and how blog search can help fill in the gaps
Robert Scoble, and others, are discussing blog search engines at present. It’s quite interesting to see that there are lots of different approaches to the same problem. Mary Hodder’s article is good in that it explains a bit … -
:
Unit testing for speed?
Simon is thinking about using unit testing to help with performance testing. Whilst I’ve found it useful to use unit tests as very focussed ways to run a profiler on a selection of code I don’t think it’s a good idea to … -
:
Result should be const ? conditional operator : if then else
Simon says; I’ve stopped using ?: because it isn’t as readable as an if .. then .. else.… I, personally, don’t find the readability of the conditional operator (?:) a problem. No more than I find readability of … -
:
Visual C++ 2005 loses single threaded CRT
From C++ Potential. In a posting about changes to the compiler switches in Visual C++ 2005 Brandon mentions that they’ve removed the single threaded C runtime library options. Does anyone out there use the single threaded CRT anymore? … -
:
Setup and TearDown considered harmful?
I’m glad that Brian Button went to the trouble of writing this post and thinking through the implications of shared setup and teardown code in tests. I’ve been a bit concerned about some of my tests for a while now. You see, I … -
:
Debugging deadlocks in C++ code with Visual C++
I’m currently adding some functionality to a server that I wrote, using The Server Framework, for a client last year. The server provides application gateway services for them. The new functionality is to switch to using asynchronous … -
:
Whilst on the subject of deadlocks
It must be a deadlock kinda day. Pete McKinstry points to a Java deadlock avoidance scheme which involves knowing and using a total ordering of the locks that you wish to acquire. This is similar to Andrei Alexandrescu’s C++ idea of … -
:
Blog Explosion just doesn't do it for me
I’ve been attempting to boost the number of people reading this blog in the last few weeks. Mainly because the more people there are reading the more likely I am to get feedback in the form of comments and postings that link to me and … -
:
On the bandwidth wasted by poorly designed spam software
I’ve been watching my web server logs in real time for the last couple of days, not intently; I do have a few slightly more interesting things to do. I’ve had a tail of the logs running on the laptop and I glance at it every now … -
:
Threading flames
Thanks to Ned Batchelder for pointing out the “discussion” about the pros and cons of multi-threaded programming over on the SQLite newsgroup. The comments on Ned’s post are well worth reading; they’ve provided me … -
:
Exploring the C++ Unit Testing Framework Jungle
Exploring the C++ Unit Testing Framework Jungle over on Games from Within is a really good look at all of the C++ unit testing frameworks out there. It compares the following frameworks: CppUnit Boost.Test CppUnitLite NanoCppUnit Unit++ … -
:
/Y3 where have you been all my life
I was just flicking through some of the entries over on Games from Within and I came across an entry on precompiled headers which is a good introduction of the pros and cons of using precompiled headers in a cross platform environment. I … -
:
Setup and Teardown, reprise
Roy adds a little fine tuning to Brian’s advice about avoiding setup and teardown in unit tests. In summary; aim to minimise duplication in your test code… Roy takes issue with Brian’s assertion that a little duplication … -
:
Reprint: Using OpenSSL with Asynchronous Sockets
OpenSSL is an open source implementation of the SSL and TLS protocols. Unfortunately it doesn’t play well with windows style asynchronous sockets. This article, which was first published in Windows Developer Magazine and then … -
:
Be explicit about a class's multiple interfaces
I’ve been working on The Server Framework this week. A client wanted a version of the latest framework with UDP support added. They’d taken the freely available version of the code a couple of years ago and I’d given them … -
:
I feel the need to comment on this...
Richard Hale Shaw continues his series of blog postings on “Moving away from C++” with the obligatory “pointers are bad, garbage collection is good” post… I feel the need to write something about this but not … -
:
First impressions of Visual Studio 2005 from a C++ point of view
I’ve been using the latest Visual Studio 2005 beta on and off for the last couple of days. This is the first time I’ve bothered to try “Whidbey” and my initial impressions are very favourable; I’m just using it … -
:
How to reset the BIOS on a Vortex86-6071LV
The embedded Linux project came back to life this week when the manufacturer sent us some new video driver source for the SiS 550 on the Vortex86-6071LV. At present the new driver seems to work as well as the old one; i.e. not very well at … -
:
Borland C++ v3.1 and 'The Raymond Chen Camp'
Last weekend was a bit of a “compiler weekend” for me; I started playing with VS 2005 and I found some old source code and wanted to build it and that required Borland C++ v3.1 (In the currently fashionable style of naming … -
:
Garbage Collection and Pointers
So, Richard Hale Shaw is helping us move away from C++ and in his latest posting on the subject he explains how “veteran C++ programmers” don’t like to manage memory themselves; hmm. I’d quite like to see his sample … -
:
I wonder what the rationale for this restriction is
Geoff Appleby discovers that a common C++ template idiom doesn’t work with .Net generics. The code that doesn’t work is this: Public Class Class1(Of V As System.Web.Services.Protocols.SoapHttpClientProtocol) Inherits V End Class … -
:
Joel is a bit confused about agility and design
Joel Spolsky of has just completed a very public product development project for a Windows based user assistance program called CoPilot. This has been interesting to watch and has, no doubt, generated lots of positive PR for him. He’s … -
:
It's the libraries, stupid
Jeff Atwood has a nice piece on the productivity of different programming languages (go read it). His sums up with the following: *Given .. 1). the abandonment of C++ and C for mainstream programming 2). the huge influence of individual … -
:
While Windows lives, it's hard to see how COM will ever die.
This is a nice piece by Tim Anderson on why COM is still alive and kicking despite what all the .Net-heads would have you believe… It always seemed to be pretty obvious to me that all the “COM is dead, long live .Net” … -
:
JLR on C++ interfaces
A while ago I came across JLR’s weblog and read his three postings using interfaces in C++ (1, 2, 3). I fired off a quick comment on the first article because I didn’t agree with a couple of things he was saying. Jose’s … -
:
More Reprints - CORBA, C++ and Java
I’ve just finished posting some more reprints from back in 2001 when I was working on CORBA systems with C++ and Java. The articles mostly compare CORBA to COM and show why providing a reference counted server object lifetime … -
:
The price of freedom is eternal vigilance.
Kevin Barnes has written a nice piece on “freedom” languages, his word for Ruby, Python, Perl, etc. He compares these with “safety” languages, such as C++, C#, Java, VB, Delphi. He starts off by saying “I … -
:
Undocumented Windows 2000 Secrets
Just finished reading Undocumented Windows 2000 Secrets: A Programmer’s Cookbook by Sven B. Schreiber. Well, I say reading, it was really just a first pass through the book. The text and code spends more time in kernel mode than user … -
:
It's obvious when you think about it, but
*Piracy is not an enemy until you are famous. Until that point, obscurity is your enemy. I think independent creators should spend all of their attention fighting obscurity until they are famous, and only then should start to worry about … -
:
I just don't get it, what's with this->?
I’m looking at some code to help me understand how to use the dbghelp.dll Windows stack walking and symbol discovery stuff and the code I’ve found on the net uses a programming style that I’ve seen a few times before and … -
:
Lots of things become unnecessary if you factor things correctly
I’m still reading someone else’s code and it just struck me that a lot of ‘strange’ coding practices become unnecessary if you factor your code ‘correctly’. Note that both ‘strange’ and … -
:
Reader Questions
Ahsan Askari asked the following in a comment to one of yesterday’s posts: Just like to know whether you use external libraries specially ‘BOOST’ in your commercial projects and related pros-n-cons ? *Also i like to know … -
:
Make sure you are doing RAII properly
There’s an interesting post over on the Joel On Software forums about RAII in C++. The original poster’s problem is clearly stated in the first line of their question: When the constructor for CTheClass runs, I want to acquire 3 … -
:
How refreshing
One of the things that I’ve always been a bit unsure of is the claim by dynamic languages crowd that static typing buys us nothing as the unit tests solve the same problem. It’s a nice idea but I’m a bit scared that the … -
:
I've been lazy this week
As I mentioned in an earlier posting I’ve been working on a tool this week. I’m too lazy to do a job manually and so I decided to write a tool to help me do it… Note: the deadlock detector mentioned in this blog post is … -
:
It's Friday, so...
This G’n’R/Beatles mashup works surprisingly well, and brought a smile to my face earlier in the week - via Code Circle. And whilst we’re on the subject of music, Filip has started uploading some of his techno … -
:
Observing lock contention
The deadlock detection tool that I was working on last week is coming on nicely. I managed to locate two potential deadlocks that had never caused any problems in code that is running live on a client’s site. Once I had a report from … -
:
Lock Free
I just ran my OpenSSL echo server test harness and ran the server under the deadlock tool. The results are interesting and show that the main source of lock contention on the server is for the lock that protects the buffer allocator. Every … -
:
Viewing lock lifetimes
I added some more monitoring to the deadlock tool. You can now view the entire life cycle of the locks, from initialisation, through usage to destruction. The lock usage figures put the contention figures in context as you can see how often … -
:
What's with CreateProcess and managed exes?
I have some code that launches another process in a suspended state, does some stuff (tm) and then resumes the process. This uses CreateProcess() and works fine on unmanaged exes. When I try and launch a manged exe with the same code the … -
:
Lots of answers but little help
I don’t read many newsgroups, I don’t have the time, but I take notice of the Windows networking ones as they’re low traffic and they’re relevant to a lot of the work I’m doing at present… I’ve … -
:
Change is good
I like to experiment with new coding practices. Not too many at once mind you. I tend to add one new thing to how I work, operate in the new way for a while and then decide if the new way is worth adopting as a habit going forward. By … -
:
In summary, don't summarise too soon
I’ve been working on my deadlock detection and lock monitoring tool quite a lot this week; that and fixing the issues that it’s been highlighting. Yesterday I decided that I was drowning in data and that I really needed a GUI … -
:
Pimp my hide
As some of you may have guessed, the fact that I’ve spent the last week working on a tool for my own use means that I’m a little light on client work right now. If anyone needs a Windows C++ guy drop me a line. There’s … -
:
More thoughts on change and typedefs
Of course, now that I’m well into using the “option 4” I start to remember why I kept sliding back from options 2 and 3 towards 1. Although option 1 uses native types instead of typedefs which is bad for all the reasons I … -
:
Assert is evil
Christopher Baus has been away and whilst he was a away his HTTP proxy shutdown due to a bug which caused an assert and his site was unavailable. Personally I abhor assert; but I completely agree with what Chris is talking about. This … -
:
Does the arrival of Google Blog Search mean blogs will be removed from the main Google results?
Google have a beta of blog search engine up and running here. It looks good, seems to work and does pretty much what you’d expect. I’m left wondering why it’s needed though… After all, how to you define a blog? How … -
:
Rootkits
Just saw a mini review of Rootkits: Subverting the Windows Kernel over on Ted Neward’s blog. Looks like the perfect follow up to Undocumented Windows 2000 Secrets as I continue my slow progress towards being able to write Windows … -
:
Overriding virtual functions, C# is better than C++
I’ve been merging my UDP framework development branch back to main, building all of my example servers and running all of the “black box” server tests for The Server Framework. In doing so I’ve experienced the pain … -
:
C# v3 Extension methods, syntactic sugar for the lack of free functions?
There’s a lot of noise coming out of the Microsoft PDC right now. Something that interested me was the future direction of C#; you can grab the spec from here. It seems they’re adding “extension methods” which, to … -
:
Thoughts on testing COM objects
Ben over at Code Circle is thinking about unit testing COM objects. I did quite a lot of this back in 2000 when I was working with an investment bank. The first thing you need to realise is that COM is just an interface layer; so lots of … -
:
Sacrificing precision for ease of use?
I’m probably jumping the gun a little here as I can’t find Herb Sutter’s slides that Matt Pietrek is referring to, but… Once again I find myself asking why is it actually useful to repurpose the auto keyword in … -
:
Whilst I'm on the subject of code communication
I’ve never really got to grips with the STL’s algorithms; actually that’s not strictly true, it’s really just for_each() that I have most problem with. To me, code that uses for_each() simply doesn’t … -
:
Concepts and C++ Templates
The slides from Herb Sutter’s C++ Futures talk (TLN309) at this year’s PDC refer to “Concepts” in C++ templates; for me this is a much more useful addition than the auto keyword repurposing. I’m sure this is … -
:
Restricting the use of extension methods?
Having looked through the slides that Vagn pointed me to in a comment to my recent post about C# v3.0 Extension Methods I can understand, a little more, about the reasoning behind the change to the language. Given that the C# v3.0 spec … -
:
Cool
Sometimes I think programmers find the wrong things “cool”… This cartoon kinda sums it up ;) -
:
Three reprints from when COM ruled the land
I’ve just finished posting three reprints from back in 1998 and 2002 when I was working on lots of COM stuff. Sinking connection points in C++ objects - shows you how to use the least COM possible to connect to Connection Points and … -
:
New C# v3 features explained in context
Ted Neward has a very nice piece about the new language features in C# v3 and how they work together to provide something quite powerful. Go read it! Given that implicit typing, object initialisers and extension methods are all designed to … -
:
AdSense preview tool
The Google AdSense Preview Tool does exactly what it says on the tin. So it’s very useful for working out what kind of ads you’d get if you added Google’s AdSense to your pages. -
:
Opera lover
The Opera web browser is now free. It’s worth giving it a try. I downloaded it after Barry sent me a link to the free registration codes that they were giving away a few weeks ago to celebrate their 10th birthday and I’ve been … -
:
Good stuff
I use BlogLines to read my RSS subscriptions. It’s pretty good, and now that the performance issues I had initially seem to have gone away, I like it a lot. It’s very handy to be able to read my feeds from anywhere and always … -
:
Barry's take on Assert
Barry Lapthorn has a response to my Assert is Evil posting where he concludes that assertions aren’t needed if you have tests… He also raises a point that I missed which is that the typical assert on Windows machines causes a … -
:
Common knowledge to many, but...
Alexis Smirnov has just written a piece on why you shouldn’t try and use STL’s map::operator[] to find out if a map contains a particular element. It’s probably common knowledge for most people using STL, but it’s … -
:
More from Mark and Barry on Assert
Mark responded to Barry’s response to my post on Assert. Barry then responded to Mark and Kim and I added a little more in the comments. I did have some more to say, but Barry’s said most of it… Anyway, so far only Vagn … -
:
Book review: Rootkits by Hoglund and Butler
I’ve just finished reading Rootkits: Subverting the Windows Kernel. Overall I enjoyed it but I’m in two minds about its usefulness… The book covers “hacking” the Windows kernel using various techniques to get … -
:
Is Raymond Chen's use of Assert valid?
I’m sure you’re all getting bored on my views on using Assert in modern C++ code by now, I’ll try and make this the last one. Last time, I asked if anyone had what they’d consider to be an example of the use of … -
:
Once again I've been too busy to comment on these during the week
A collection of blog posts that I flagged for follow up this week. Aaron Margosis has a blog which explains why you shouldn’t run as an Admin user on Windows systems and how to work around the problems that you might face when you … -
:
Asserts are evil, except when you have no other choice
Noel Llopis over on “Games from Within” has written a nice rebuttal to my Asserts are evil post and the follow up. I think it’s probably about time to wrap this up ;) So, here’s what I’ve learned… … -
:
Jeff Darcy on Linus on specifications
Jeff Darcy over at “Canned Platypus” has written a nice piece on specifications and how Linus has got it wrong. Any post that contains the phrase: "… who wouldn’t know good code if it got into a robot and … -
:
Serenity
Just back from seeing Serenity. It doesn’t disappoint. We got into Firefly whilst on our ski trip to Megève last season and were really hooked. The film continues the story from the series, answers some of the questions left hanging … -
:
MT-Blacklist
It seems that Jay Allen has shutdown both MT-Blacklist and the ‘master blacklist’ due to bandwidth problems caused by either a denial of service attack or inconsiderate developers. Jay hosted a regularly updated file of regular … -
:
Walking the call stack
Ned Batchelder has written about the code he uses to get a call stack out of a windows program (thanks for the link Barry). I’ve added a snippet of the code I use as a comment to his post. Note: the deadlock detector mentioned in this … -
:
More on locking
Jeff Darcy over at “Canned Platypus” writes about “How to add locking to a program”. He laments the lack of a reasonably priced deadlock detection tool. I assume, from his backgrond, that he’s interested in an … -
:
Back in time
I find it quite interesting to have so much information about my past available on the web. I often use my own blog like a database that I can search for past solutions to problems, or for locating some text on my feelings on a subject that … -
:
Throwing the baby out with the bathwater
Richard Hale Shaw writes on and his conclusion is “it’s too confusing” and “I’d suggest not even using using statements”. I think that position is a little harsh, but I think that the main problem is that … -
:
Quote of the week
“Desire to know why, and how, curiosity; such as is in no living creature but man: so that man is distinguished, not only by his reason, but also by this singular passion from other animals; in whom the appetite of food, and other … -
:
I don't think I've ever been disagreed with in Japanese before
The discussion on Assert goes on, this time in Japanese… Google’s language tools lead me to believe that they’re disagreeing with me. They seem to be pretty shocked that I’d take this stance and appear happier when … -
:
Dependency Injection
Jeremy D. Miller writes about The Dependency Injection Pattern; or what I’ve tended to call “Parameterise from above”. He covers the various ways you can inject a dependency into a class rather than having the knowledge of … -
:
Walking Managed Stacks with the Profiling API in v2.0 of the CLR
It seems to be stack walking week; what with Ned’s posting earlier about walking an unmanaged stack and now this excellent piece by David Broman on doing the same in with managed code. -
:
Printf debugging when you don't have a console
There’s a nice story over on “Bug Babble” about debugging a problem with a robot by using various sounds coming out of a speaker to determine where in the code the problem occurred: “Now the robot sounded like a … -
:
Some people shouldn't be dungeon master
This made me smile. From “Irregular Web Comic”, via Raincannon. -
:
Reprints - OLEDB; no pain, no gain
I’ve just finished posting several OLE DB provider articles from back in 1999 and 2000 when the favourite method of data access that Microsoft recommended was OLE DB. This was relatively easy to use as a data consumer, especially from … -
:
Classic hits
Jacob Nielsen has a list of Top Ten Blog Design Mistakes. Number 5 is “Classic hits are buried” where he suggests that it is useful for readers if you list your most ‘important’ entries prominently as well as … -
:
Unit testing and accessing external systems
There’s a lot of talk about how unit tests shouldn’t touch the network or the file system or databases whilst they’re running. Michael Feathers even has a set of unit test “rules” (A Set of Unit Testing Rules) … -
:
Charles Petzold on coding
Charles Petzold recently delivered a talk at the NYC .Net Developer’s Group and he’s made it available online here “Does Visual Studio Rot The Mind?”. It’s an interesting read, especially if you actually … -
:
LNK2005: _iswdigit already defined in ...
I’m in the process of preparing a release for a client. I’ve done the work, the tests pass, the stress test runs with flying colours and so I’ve tagged the source and I’m in the middle of the final build and test … -
:
If you enjoyed the Petzold thing earlier...
This may also be your kinda thing. Ellen Ullman’s 1998 two part series “The Dumbing-Down of Programming” from Salon archives. Rebelling against Microsoft, “My Computer” and easy-to-use Wizards, an engineer … -
:
Old friends
I guess it’s a combination of wine, Pink Floyd and the fact that this week the world wants to remind me that I’m older than I feel. Thoughts drift back to the past. Times past and friends forgotten. A long time ago, in a galaxy … -
:
Evil macros in April 2005 Platform SDK headers
I’m upgrading one of my build machines to use the April 2005 edition of the Platform SDK to investigate the implications of this posting over at eggheadcafe.com which states that since Visual Studio 6 ceased to be supported as of the … -
:
Handling lots of socket connections
I’m doing some research for a potential client. They need a TCP/IP server that handles ’lots’ of concurrent connections. Their own in-house server code currently fails at 4-6000 connections and I’m putting together a … -
:
Note to self
This CodeProject entry is SO full of errors and poor practice that I must find the time to leave a comment on it… [Updated: 29th October] Done. Comment is here. -
:
Assume makes an ass out of u and me
But mostly me. ;) During yesterday’s investigations into handling lots (30,000+) of socket connections to a server built with The Server Framework I took a few things for granted. I should have been a bit more thorough rather than … -
:
The 64000 connection question
I’ve been spending some time pushing the limits of The Server Framework, my IO Completion Port based socket server framework, to see how many connections my servers can handle and what happens when system resources run out. Earlier … -
:
Practical Testing: 15 - Testing payback
Last year I wrote a series of articles called “Practical Testing” where I took a piece of complicated multi-threaded code and wrote tests for it. I then rebuild the code from scratch in a test driven development style to show … -
:
RSS feeds for Microsoft Knowledge Base articles
This is quite nice, a whole list of finely targetted RSS feeds for Knowledge Base articles for various products. -
:
Windows TCP/IP Server Performance
For the last week or so I’ve been working on measuring and improving the performance of The Server Framework. The latest release of the free version of my asynchronous, windows, IOCP based, socket server framework can now be obtained … -
:
Simple Echo Servers
A long time ago when I wrote my first article on high performance TCP/IP servers for Windows using IO Completion ports over on CodeProject I complained that “Also the more complicated examples, ones that used IO completion ports for … -
:
TCP/IP Server Failures
One of the good things about the server performance testing that I’ve been doing recently is that I have been able to witness some rather rare failure conditions in action and seen how The Server Framework handles them. When using IO … -
:
Visual C++ 2005 cannot build dynamically linked applications for NT4 deployment
Jochen Kalmbach has discovered a problem with dynamically linked applications built with VC2005 running (or not running!) on NT 4. I guess this isn’t going to bite that many people… Read about it here. -
:
What's your worst bug?
“Because of a subtle bug called a “race condition,” a quick-fingered typist could accidentally configure the Therac-25 so the electron beam would fire in high-power mode but with the metal X-ray target out of position. At … -
:
Bad Managers?
Alan Green doesn’t like the word “manager” used as a class name suffix. His point seems to be that “manager” is imprecise and instead he suggests a list of alternative suffixes with more precise meaning; though … -
:
Profilers and The Perils of Micro-Optimization
Ian Griffiths has just written a nice piece on profiling .Net code and why the obvious things that people do are often very wrong: “Unfortunately, lots of developers just love to go off on micro-benchmarking exercises, where they … -
:
Controlling Time, Take 2
Recently I finished developing a high performance ISO-8583 financial transaction authorisation server for a client using The Server Framework and whilst I was running the final black-box tests against the server I realised that these … -
:
Too much encapsulation reduces the ability to multiplex?
Every now and then I come across a situation where encapsulation has been taken slightly too far. Usually, or at least most recently, these over encapsulated designs have had problems because they’ve blocked access to an event handle. … -
:
Why are the 'event' classes in .Net STILL broken?
Whilst I’m ranting about the little things… You still can’t create named versions of the .Net ManualResetEvent and AutoResetEvent, even in .Net 2.0. Wasn’t everything going to be fixed in Whidbey? Of course, I … -
:
I don't like Vanilla Scoble
Robert Scoble, the “Microsoft Geek blogger”, has recently had a complaint that he only writes about Microsoft and he figured that he was in a rut and decided to get out of his rut by deliberately not writing about his usual … -
:
More on Windows Networking resource limit server failures
My VoIP client has been stress testing the UDP version of The Server Framework and they had what they thought was a deadlock. It wasn’t a deadlock it was more of a lazy server… What seemed to have happened is that they had been … -
:
Kevin Barnes on TDD
Kevin Barnes over at Code Craft has just written an interesting piece on TDD. In it he claims that “Excessive unit testing infrastructure hampers your practical ability to refactor things efficiently. People scream at me when I say … -
:
Hosting problems
As you may have noticed I’m having some hosting problems at present. The server that hosts www.lenholgate.com was hacked and it’s taking my hosting provider longer to fix than they expected… Right now comments and … -
:
Hosting problems resolved
It looks like all of the hosting problems are now resolved. There was a brief period when the database and CGI were fixed and an MT configuration path hadn’t been updated so pages were not being rebuilt after comments were added but … -
:
Testing Windows Services
Mark Pearce writes about Debugging a .Net Windows Service from within the IDE. We do something similar with our C++ Windows services but, as you’ve probably come to expect from me, it’s slightly more complicated than … -
:
Udi Dahan on Physical Design
Udi Dahan writes about managing dependencies in code at the ‘package’ level in “So many Dlls, so little time”. “Sloppiness with dependencies. If two classes are independent of each other, and do not provide … -
:
A change of technologies
I started back with an investment banking client this week. I’m working with the team that brought us “the refactoring project” and another small team, and integrating the trade entry system with some “xll” … -
:
3 days with JMock
As I mentioned last week, I’m currently doing some Java work with an investment banking client. This week I added JMock to their toolset. JMock is a dynamic mock object generation tool that works with JUnit to allow you to create mock … -
:
I guess I'll file that in the 'I didn't know you could do that' pile
Ned Batchelder reminds us of the value of the C++ FAQ (Lite). It’s been a long while since I’ve looked at it yet Ned’s example shows that I’ve still a lot to learn about the subtleties of C++. I can think of a few … -
:
DbgHelp weirdness
I was using one of my home made debugging tools recently and it kept crashing :( I assumed it was something I was doing but I’ve eventually tracked it down to where I load the symbols for the loaded modules in the target process. … -
:
I think the weirdness was me
A couple of days ago I mentioned that I was having some problems with loading symbols for a common controls dll. I’m now pretty sure that it was my problem, as usual, rather than someone elses. I’ve reworked my process startup … -
:
Naming Win32 threads - how it works
I’ve been using the SetThreadName() function from the MSDN docs for ages to provide a way of distinguishing between threads in the VC debugger. I always thought it was a bit of a weird ‘API’ but had never really thought to … -
:
Panto season!
In case you missed it the first time around… We’re doing the old “assert is evil”/“Oh no it isn’t” thing over at Ned Batchelder’s place. -
:
STLPort 5.0 and multiple VC versions
I’m in the process of testing some of my code with Visual Stuio 2005 and the first thing I found that I needed to do was to upgrade my STLPort installation from 4.6.2 to 5.0.0 to get a version that built with VC8. Given that I like to … -
:
Pluggable exception handling
Ben takes the “throw as an exception dispatcher” idiom to its logical conclusion by presenting a pluggable exception handler. As Ben says “I’m not sure how many situations something like this would be useful in, but … -
:
On Edit and Continue
Dennis Forbes talks about “Edit and Continue” in VS 2005 and asks “Is it, coupled with similar tool advances, making programmers sloppier, though?” I think so… In the Visual C++ debugger we’ve had … -
:
More thoughts on thread naming
I’ve just finished the first cut of the code that handles the Win32 Thread Naming “API”. This means that my debugging tools can now report the name of a thread (if it has been named) rather than just its thread ID. Having … -
:
Interesting article on deadlock detection in DDJ this month
There’s an interesting article by Tomer Abramson in this month’s Dr Dobb’s Journal about deadlock detection. He provides a compile in tool that works in a similar way to my deadlock detection tool and reports on potential … -
:
Is it just me, or do the best toys always come with an SDK
I got a Garmin eTrex Vista C handheld GPS as a Christmas present. Another cool tool to add to my geeky ski stuff. So far I’ve only used it to navigate to and from a restaurant yesterday lunch time, but it seems to have lots of … -
:
Thought for the day
Does anyone in IT use paper clips for anything other than resetting hardware either by pressing those hard to reach reset buttons or by shorting out bios batteries, etc? -
:
Garmin eTrex Vista C communications protocols
As I mentioned a while back, I got a Garmin eTrex Vista C handheld GPS as a Christmas present and there’s code available from the Garmin website that lets you talk to it via its USB interface. There’s also a specification …