Wednesday, December 30, 2015

Baking an Object Pascal and Raspberry Pie for the Holidays.

If you've not been living under a rock over the last couple of years, I'm certain you've noticed the recent release of the new Raspberry Pi 2 Model B. Packed in this little not-much-bigger-than-a-playing-card form factor is a quad-core ARM Cortex A7 along with 1GB of RAM. It also sports HDMI video/audio, Ethernet, 4-USB ports and a programmable parallel port for peripheral interfacing. Booting several versions of Linux is a snap... but what about using your favorite language and mine, Object Pascal to target this device?

Monday, December 14, 2015

The Chronograph - Part 5

When developing the Ballistic Chronograph, I decided that I needed a way to have, effectively, a command-prompt. I also wanted to have a way to display text in an auto-scrolling view. It would be used similar to Object Pascal' Writeln, C's printf or C#'s Console.WriteLine. The Arduino libraries already have an abstract class for writing text, Print. If you've done any Arduino programming, you've already used this class indirectly via the HardwareSerial class.

Wednesday, December 9, 2015

Mentors and inspiration

Recently I've had the pleasure of reconnecting with a past colleague. Chuck Jazdzewski was the man instrumental in my coming to Borland to join the Turbo Pascal team. I count him as one of my professional mentors. While I also worked closely with Anders Hejlsberg, it was with Chuck that I worked with on a more day-to-day basis.

Thursday, December 3, 2015

The Chronograph - Part 4

The touch panel and touch keyboard were an interesting challenge. I picked this one up mainly because the price was well into the "impulse buy" range. I didn't really have a plan for it, but figured it would be interesting to play with. After a little bit of Google-fu, I found that the 4-wire resistive touch panels were rather common, and best of all, there is an Arduino library for it.  I also picked up the display because HSC claimed to have data on it. It turned out that used the relatively common T6963C interface. There is an Arduino library for that as well.

Monday, November 30, 2015

Cyborging a Cheap Laminator

I decided to take a detour from covering the Ballistic Chronograph and cover some tooling I use for creating my own custom Printed Circuit boards. Having the ability to go from thought, to design, to a working device, gadget or tool is what makes doing hardware these days so fun. In the in the span of a long, lazy Saturday or Sunday, I can build a project that would have taken several weeks or would not be nearly as clean and well packaged.

Sunday, November 29, 2015

The Chronograph - Part 3

Now I'm going to turn my attention to the software for the stand-alone controller shown in the previous post.

Before I ever started working on the UI for the device, the first order of business was to get the code needed to actually perform it's primary function written.

Saturday, November 28, 2015

The Chronograph - Part 2

In the last post I showed the electronics behind the ballistic chronograph sensor array, or using chronograph terminology, the "screens". The frame for the screens was built from 1"x.5" extruded aluminum U-channel, .5"x.5" aluminum angle, and 3/16" steel rods for the uprights. Various bits of hardware and some .25"x1" steel spacers from my parts bin, drilled out on one end to 3/16" and tapped to 6-32 on the other. The cross pieces at the top which house the sensors are actually plastic U-Channel surface wiring conduit snap covers.

Now I'll cover initial stand-alone controller I built. This part of the project evolved as I was building it. It started with a trip to the (sort of) local surplus electronics store, HSC Electronic Supply.

Wednesday, November 25, 2015

The Chronograph - Part 1

As mentioned in this post and teased in this one, one of the things I was going to write about was the construction of a ballistic chronograph. The intent of this post is to outline it's construction and my approach to building it. It's intended use and all the information surround that is beyond the scope of this post.

Strings with a reference count > 1 are immutable

And have always been.

Let me explain. Assigning to a string variable from another has always been merely copying of the reference along with a bit of reference count management.

  A, B: string;
  A := 'a string';
  B := A;
  // string instance reference count = 2

Tuesday, November 24, 2015

Friendly reminder...

String instances are thread-safe. String variables are not.

Let's define what I mean by "instances" and "variables";

Instances are those string entities which live out in the heap that represents a string value.
Variables are the things you declare, either local, global, or a field of a class or record.

Monday, November 23, 2015


Just a little teaser. Here's a video of a presentation I did with David I demonstrating the Ballistic Chronograph I built a couple of years ago. This is actually revision 2. The same screens were used with a new custom controller that linked via Bluetooth to a Delphi Android application.

As you can see from the video, Nerf guns aren't particularly powerful.

Sunday, November 22, 2015


Now that I've moved my blog to a more personal setting, I'm much more comfortable with talking about more than things related to my position at Embarcadero/Idera. While the dust settles around Idera's acquisition of Embarcadero, I'm going to focus on some things I do outside of RAD Studio and Delphi.

While some may know this as I've not really kept it secret, I started my professional career as a electronics/computing hardware engineer. I built and designed access control and magnetic stripe equipment. These devices were based on the 6800/6803 embedded 8-bit micro-controllers. Even while working on Turbo Pascal/Delphi/RAD Studio, I've continued to enjoy firing up the soldering iron, grabbing a handful of components and made stuff.

New home...

I've moved my blog from to my own hosted domain. I've owned this domain for many years and had it redirect to the aforementioned address. I decided to move to this new location in order to ensure the content remains under my control. I've noticed that other people's blogs have been summarily deleted on the other site even though there was still some excellent content.

New posts will happen here... should I decide to actually begin posting more content. I'm still deciding... For now, update your newsfeeds to point here, should you be so inclined.