It’s amazing, the amount of stuff that can be accomplished when you immerse yourself in your work.
These past two weeks I’ve completely rewritten a multi-threaded TCP (and UDP) server that I developed about a year ago that my company uses to communicate with its numerous mobile assets. This not only includes completely revamping the architecture, but also refreshing the management-console UI and completely rebuilding the device simulator (part of out test/QA toolset).
I’m considering writing a generalized article on this project. Detailing what was done and the though process behind it. A brief overview follows, and more details will probably be forthcoming (so long as I can generalize the explanation enough – so that I don’t reveal any company secrets, of course 🙂 )
It’s a .NET 2.0 solution, if you’re wondering. It was formerly a primitive console application that has been in use for about a year now. It was sufficient for handling input from multiple connections from various device types but we reached the design’s limits when we started implementing outbound communication to the devices.
We tried extending the base but it was really just a single-purpose app to get us through the hardware testing phase (we custom develop our own hardware too, btw). We didn’t want to do too much to it while the hardware was maturing so we worked on other facets of our product portfolio up until this point in time. My senior developer took a crack at it, but hit the limit of practicality in terms of the bending the original app to our will. He did an awesome job laying the groundwork for me though (happiness is working with other talented people). But, before he could burn himself out I took over and shut myself off from my regularly scheduled activities (namely architecture and development oversight). I hate to do that sort of thing but sometimes circumstances dictate.
Anyhow, the longer I spend typing out this blurb the more inclined I am to write up a detailed article. Perhaps this week, when things have finally settled down with the actual development.