Programming Blog

What use is a computer if you can't do anything real with it?

Note: some live links on these pages have been removed because they are broken and may take you to a site holder. They are only shown for historical purposes (click at your own risk).

Windows 10 Shameless Rip-off

Imitation is the sincerest [form] of flattery. - Charles Caleb Colton

I really like this new Windows 10 multi-windows feature. It’s about time Windows implemented something that’s been in Linux windowing systems for some time. Now I can reduce the clutter on my development PC where I typically run many different programs at once.

How Hardware Affects Soft Real-Time Performance

Desktop Intel i7 Extreme vs. Embedded High Performance i7

One day I was wanting to test some new hardware I had just put together for my main development PC. My company normally ships machine vision systems using a quality embedded motherboard (Q67 chipset), an Intel i7-2600 3.4 GHz CPU with 4 hyper-threaded cores and 4 GB of RAM running Windows 7 32-bit. …

Testing Qt Threads

NOTE: the quality level of this post is beta. I created this test program simply to test various combinations of QThread signal-slot operation. See the reading list for the proper way to use QThread.

Testing Qt Thread Operation

Soft Real-Time Performance Testing

In this entry I will provide the latest versions of test programs I use to check the real-time performance of threads on soft real-time operating systems such as Windows, Linux and Mac OSX. Soft real-time systems can provide near true real-time performance, but can have delays in their response to external signals of 0.1 seconds or longer depending on how they are used. …

Folding-Hyperspace on YouTube

I have recently created a portfolio of my work on YouTube (link to channel). These are promotional sales videos for my employer Ventek’s products which I shot and edited. I did not design or program all the equipment shown, so here is a guide to the videos and my involvement. …

Fun with Windows 8.1

I like to test new stuff from Microsoft often to see how they are doing, but was not too impressed with Windows 8 when it first came out. When Windows 8.1 was released I grabbed it from MSDN, installed it into a VMware virtual machine, and gave it a spin to see if they made any improvements.

DS_Store_Cleaner - Fixit Program for Mac OSX

Well, I was so unhappy with the problems I was having with .DS_Store files and broken folders that I created a quick and dirty Mac OSX program to fix the problems. I have finally packaged it in a DMG image so other power users to make use of it.

Mac .DS_Store Horrors

Update June 24, 2013

I created a program to fix this problem. You can read about it and download it from here.

Original Post

I just spent all of the previous day fighting a problem with .DS_Store. I use a QNAP NAS for data storage (Linux box with RAID AFP and SAMBA file shares). …

Qt DLL Version Use

Another example of DLL Hell in action.

I run into a problem while building a new development system this last week. I had previously been using Windows XP Pro and Microsoft Visual Studio 2008. On the new system I moved to Windows 7 Ultimate and MS VS 2010. …

Robust Programming

Note: this documentation is in beta format right now. I plan to expand on it sooner rather than later. Considering it is a very important point when doing industrial applications, I thought it should be covered now.

Qt Framework Update

News Flash 2012-08-09 Nokia sells Qt to Digia. Perhaps the best solution to Elop's folly.

Not that Qt will die - Digia claims there are almost half a million Qt developers out there. The platform is used for some high-profile applications including the VLC's Videolan Media Player, Google Earth and Mathematica. Digia is promising support for Android and iOS as well as continued support for embedded platforms including QNX (the foundation for the latest RIM OS) and VxWorks (which is doing such sterling work on Mars at the moment).

Qt Framework Update

You can see a few screen shots of what I've done with the Qt Framework here.

First, The Positive Things

Easy Qt Database Forms #2

2012-07 Update

While I make use of QSqlTableModel::setRecord to set new values when the user performs a submit operation, this may not work with some databases in all cases. What works with SQLite and MySQL doesn't appear to work correctly with MS SQL using the ODBC interface. …

Performance .NOT

Performance .NOT, a look at .NET Memory Performance Counters

I decided to review the .NET memory garbage collection problem I wrote about back in tip #11 as many articles have appeared recently on MSDN on memory management and how to tune it. …

Easy Qt Database Forms #1

2012-07 Update

While I make use of QSqlTableModel::setRecord to set new values when the user performs a submit operation, this may not work with some databases in all cases. What works with SQLite and MySQL doesn't appear to work correctly with MS SQL using the ODBC interface. …

Implicit Sharing and Multi-Threading Problems

2012-07 Update

It seems I have misunderstood the Qt documentation on implicit sharing, and for good reason: it is not very clear. After asking a question about this at the Qt Wiki (I can't find it now or I would link it) I was told that the key to understanding this was that a copy of an implicitly shared object must be made with mutex protection, but the copy could be modified by another thread without using a mutex. …

The Qt Framework and real-time projects

The Qt Framework and (soft) real-time projects

2012-07 Update

Please see the new Tip #19 for an update on how Qt is working out.

2007-04-01 Update

The Qt_RealtimeIO_App has been updated to remove some unnecessary code related to event processing. …

Drawing Circles with Euler's Method

A Fast Circle Drawing Method

After creating a fast line drawing method I started to look at fractals and other geometric objects. It is easy to use sine and cosine functions to draw circles, but suppose you wanted to draw a circle using only addition and multiplication. …

Fast Line Draw Method

Many years ago (around 1984) I got my very first Motorola VME-10 development system. It ran a real-time OS named VersaDOS and could multi-task if you wanted to hook several CRT terminals up to it. It was based on the 68010 CPU and had a fairly nice graphics system. …

Is .NET suitable for real-time projects?

Update Note, 2007-02-03

The results you get may be different from what I show here. Someone reported to me that they ran these on their system and didn't see the problem, but they were using a custom beta version of .…

Kylix 3 and BCB6 Real-Time Test Programs


Borland once decided to support Linux with the Kylix C++ and Pascal compilers, but now all they support is Win32 and .NET. You can still download the Kylix 3 free compiler from Borland to build and run these test programs. …

Data Recovery with Knoppix

This 3.5 MB PDF download is a short introduction to using Knoppix (see or to recover and repair Windows systems.


SMP Test for Dual+ CPU Performance


This SMP program was written in C++Builder 4. The full project source and EXE file can be downloaded by clicking here (318KB).

SMP Introduction

SMP (or symmetric multiprocessing) is an Intel and Microsoft standard for gluing several CPUs onto one memory and I/O bus. …

A Disktest program to crash Windows


This disktest program was written in Delphi 3. The full project source and EXE file can be downloaded by clicking here (149KB).


Want to show the network administrator who really runs the server? …

More Real-Time Windows NT

Update: 9/9/98

Another issue with using Windows NT for real-time operation has come to my attention (I may cover this better in a future tip). There is no control over the disk cache in Windows NT and this can cause problems if you don't have enough system RAM. …

CRT Gamma Correction

This is not so much a real-time tip, but is related to problems I encountered due to the lack of gamma correction on the "Wintel" standard PC. The Apple Mac has always had better gamma correction than the Wintel PC, and with the addition of ColorSync 2.0 to the Apple operating system, color matching is more accurate. …

Linking 3rd-party DLLs

UPDATE: 1/24/98

This tip discusses how to link third-party DLLs written with Microsoft Visual C++ into Borland C++. Due to differences in how the compilers export functions, this can be a major problem when DLL suppliers don't follow the rules. …

High Speed Windows I/O

High Speed Operations

Can a high speed control system be built with Windows 95 or NT? The answer is yes - provided you can live with certain limitations. Shown below is a screen shot of a Windows 95 application that is gathering an analog voltage buffer of 512 points at a rate of about 240 buffers per second and doing a complex analysis of the data:

Real-Time Windows

Real-Time Testing of Windows 95 and NT

Windows 95 and NT are not hard real-time operating systems. Win32 programs running on the fastest Pentium hardware can experience delays of around 15 milliseconds (much worse on 95). …

Port I/O in Win32

One of the biggest problems encountered when using the Win32 API is a lack of good low level support for devices. DOS allows you to do anything you want, but Win32 runs in protected mode and will trap any access to device I/O instructions. …

© James S. Gibbons 1987-2015