Programming

Design Patterns

The past 3 day’s I have had a course in design patterns. Even though I already have quite some experience with design patterns, I decided to formalize my knowledge and use the course as a refresher.

I have to say, I found it quite useful. The first day was not very interesting as it was very basic. But day 2 and 3 went more in depth and were very interesting. I really left with the feeling that I learned something, and that I will better be able to apply this to my everyday work.

Debut on Code Project!

Recently, I was working on a project that needed a simple UI. To save time, I decided to use a Windows Console application. After implementing some simple commands, I thought it would be neat to allow the user to use autocomplete functionality (using the Tab key).

After doing some research, this turned out not to be as straightforward as I first thought. A lot of solutions offered for this problem included using the Console.ReadKey method. The problem with using this method is that it will disable a lot of other functionality like using the arrow up/down keys to scroll through the history of typed commands. Functionality I wanted to keep.

After some more Googling, I didn’t find any solution to this problem and I decided to write my own. I decided to write an article about this and post it on CodeProject.com.
Code Project has often helped me out with useful articles. Time to do something in return.

The article can be found here: https://www.codeproject.com/Articles/1182358/Using-Autocomplete-in-Windows-Console-Applications

New project at work

Since the Adapto team has been growing steadily, and more and more components are finished, we now have the luxury of focusing more on tools around the main product.
One of those tools is an Emulator which is used by developers to emulate a real life situation (shuttles, lifts, P&D’s etc). The current status of the emulator is not so great, since no one has the time to work on it.
That has changed now: I have been asked to develop and support this emulator now.
Again, there are a lot of threading issues in the current version. After having “proven” myself with RUDP, I think this is the main reason I’ve been selected for this job.

After having had a quick look through the code I see a lot of potential. Currently, threads are being used “to use threads”, while I see no reason to use them at all. I am confident that this product will run a lot more stable and a lot faster after all this overhead has been cleaned up. And that’s only one of many improvements I want to implement.

RUDP

I’m currently working on a new project at Vanderlande. For communication between devices we are using a lightweight protocol dubbed RUDP (reliable-UDP).

Unfortunately, the current implementation is not very stable and contains some threading issues. The team has asked me to take a look at the implementation as a whole and implement a more stable version of it. I’m very enthusiastic about the project. It’s not only an interesting subject to put my teeth in, it’s also a good opportunity to learn more about thread safety, a subject I don’t have that much experience with so far.