Back to Posting
It’s been quite a while since I last posted, but I’ve been keeping extremely busy. Since my last post, I started a new job, in a new industry, writing a [mostly] new to me type of application. Add in moving and all the other things that life entails, and it’s been hectic. But sanity is slowly starting to return.
The job I’m at now is full-time, heads-down development. However, it’s Windows Forms applications instead of the web services, Windows services, and back-end business processing that I’ve been doing for most of the last several years. I finally get to spend my days writing programs that users can actually see! After years of staring at XML all day, it’s cool to work on something that shows graphs of data … in different colors, even. Without going into more detail than my boss probably wants me to, the programming team I’m working on produces a suite of dozens of individual applications that all go against the same database. “My” application parses files in numerous formats, displaying the data in graphs and reports. It also needs to send the parsed data to the database and be able to output it in a couple of other formats.
My current focus (and what I’ll be posting about) is building a high-performance framework that can be used by all the applications in our suite. I’m not building the framework from an ivory tower. Instead, I’m writing a stripped-down version of the application I work on, and building it in a way that will make it highly re-usable and improve the performance. At work, there’s a definite C++ bias for anything that needs to be high-performance, but I think I can do just as well in plain-old C# (plus avoid the overhead of COM interop or P/Invoke). So, whenever I build part of the framework, I write a mini-load test app to see how well it works. I’ll eventually start doing some more serious profiling of the throughput, CPU load, and memory usage.
Another thing on my research list is F#. In order to get a further performance boost, I’ll also be looking at using F# to create code to take advantage of multi-core processors. I haven’t even written a Hello World program in F# yet, but what I’ve been reading about it has impacted how I’m writing code. I’m focusing more on separating my “state” from my “process”. I’ve noticed that I’m starting to write more static methods, which isn’t helping with testability.