Latest release of licensed socket server code: 6.1.1

The latest release of The Server Framework is now available. This release includes the following changes. Note that this is mainly a bug fix release. The following changes were made to the libraries. Admin Library - 6.1.1 New build configuration options. All of these are enabled by defining the option to 1 in Config.h and disabled by defining them to 0; the default state if you do not do anything in Config.

L'Hexapod: ChipHacker.com

Previously published This article was previously published on lhexapod.com as part of my journey of discovery into robotics and embedded assembly programming. A full index of these articles can be found here. For those of you interested in the kind of thing that this blog is about you might also find ChipHacker.com useful. It’s a ‘stackoverflow’ for embedded programming and electronics people. Hopefully it will become a useful resource!

L'Hexapod: Relative branch out of reach

Previously published This article was previously published on lhexapod.com as part of my journey of discovery into robotics and embedded assembly programming. A full index of these articles can be found here. The test code for the serial command processing code for my serial servo controller is turning out to be the largest piece of assembly language that I’ve written. This means that all of a sudden I’m coming across “Relative branch out of reach” errors during the compile.

Talk to the bear

In the great tradition of explaining your problem to someone else as a way of fixing it yourself without their help… I’ve nailed the rotating file log 16010101 bug! The problem was to do with the fact that when there was a new log ready for use and a log message switched it to be the active log it also set the ’next log time’ to zero. If a time change notification came along just after this, whilst the ’next log time’ was zero then it created a new log due to a bug in the time change handler; a test was missing a ’next log time !

Bugs

It’s been a bit of a week for bugs. First I had a bug report for the really rather old CodeProject socket server COM object. This allows people using VB to create a socket server that uses the free version of The Server Framework. It works well, for what it is, and has been the basis for several custom objects that various clients have needed over the years. The bug involves the ‘read string’ functionality and either the ATL headers (specifically the narrow to wide character conversion macros) have changed since the code was originally written in 2002 in VC 6.

JetByte News: Fixed-price CLR hosting project

We’re working with VEXIS Systems Inc. again to extend the high performance pluggable server platform that we built for them back in 2008 using The Server Framework. This time around we’re adding to the plugin system within the server so that it can host plugins written in .Net managed code. The server now hosts a instance of the CLR, using The Server Framework’s CLR Hosting Option, and we have built a managed plugin system that integrates with the existing unmanaged system so that now they can write their business logic in either unmanaged code or in a managed language such as C#.

L'Hexapod: Testing, Testing...

Previously published This article was previously published on lhexapod.com as part of my journey of discovery into robotics and embedded assembly programming. A full index of these articles can be found here. The AVR assembly language unit tests that I spoke of last week are going well. I decided to explore the idea of unit testing by writing tests for the easier to test aspects of the serial protocol code and then, as this went well, I decided to write tests for the serial protocol code in order rather that simply jumping to write tests for the code that I know is broken.

Concurrency profiling with VS2010

I’m currently looking at the new concurrency profiling tools that come with Visual Studio 2010. It’s interesting and useful stuff. The tools provide what I have attempted to develop in the past by using API Hooking but it’s vastly superior in speed and functionality. One of the big problems for me with my API Hooking concurrency tools (Deadlock detector and Lock Explorer) was that the instrumentation often caused the target process to run pretty slowly.

.Net 4.0 Hosting

I’ve been playing with Visual Studio 2010 Beta 2 and .Net 4.0, building code, running tests, playing with the IDE, etc. The first issue that I’ve come across with my existing codebase is that the .Net 2.0 hosting APIs (such as CorBindToRuntimeEx)are now deprecated and there’s a whole new way of hosting the CLR. We’ve been quite successful in hosting the CLR from within our C++ servers, either to provide servers that support a mix of managed/unmanaged plugins as a pluggable high performance windows application server or to provide network protocol support in C++ (such as ENet) with ‘business logic’ being written in managed code.

L'Hexapod: Repeatable Unit Testing with AVR Assembler and AVR Studio

Previously published This article was previously published on lhexapod.com as part of my journey of discovery into robotics and embedded assembly programming. A full index of these articles can be found here. As I mentioned yesterday the servo controller project has got to the point where being able to unit test the code would be useful to me. In my day job as a C++ server developer I’ve been using unit tests for several years and most of the code that I write is written in a Test Driven Development style.