Google's Chrome browser , being built from the open source Chromium project , is written almost entirely in C++. I, being a long time Object Pascal guy, have had to adjust to using C++ exclusively. This isn't too much of an issue since I've also had to use C/C++ while I worked on the RAD Studio development team. Most notably, the Object Pascal/Delphi compiler is written in mostly C with a…
Last time , I mentioned that the extruder filament drive assembly was itself 3D printed on the converted CNC machine. How is this done without purchasing an off-the-shelf extruder filament drive assembly? In short, I used the CNC machine in its pre-converted state to create the first version of the filament drive. Read more »
Before I say anything about converting my gantry CNC milling machine to do 3D printing, I figured I'd cover the controller I designed and built for the extruder and heated bed. Unlike most purpose built 3D printers, like one built from user-sourced parts, a kit, or even a pre-built unit, a CNC milling machine doesn't provide for controlling the temperature of the extruder nozzle and the heated…
Working with C++ hasn't really been a huge barrier; if you don't mind the painfully long build times. The Chromium developer builds are structured to be more incremental and allow for small, localized changes to build relatively fast. However, many times doing a rebase/update on the local git repository will almost always require a full rebuild. Even on my 24 core, 48 thread machine, builds can…
When working a team environment with a large codebase, it quickly becomes apparent that the code itself is the primary manner in which the team communicates on a day-to-day basis. The code embodies the ideas and thoughts of the author. On the Google Chrome team, no change is ever committed until it is reviewed by the "owners" of the code. Owners are defined on a per directory basis such that any…
While continuing on my quest of researching solutions to over-zealous track-pad scrolling in Chrome , I discovered a really disconcerting issue with the Direct Composition interface APIs . Let me frame this by pointing out this statement from the above linked page: The DirectComposition API is intended for experienced and highly-capable graphics developers who know C/C++, have a solid…
Do you like to live on the edge? Are you accustomed to being repeatedly abused and taken advantage of? Do you like being "that guy" at the party who always seems to be up on the latest new tech, product features, or bugs and fixes? Read more »
So, what does Delphi have to do with Google and Chrome ? Interesting question. It turns out Delphi has been very beneficial to helping me diagnose and troubleshoot the Chrome browser. Read more »
As I end my third week as a new Googler (a Noogler in Google parlance), I figured I would update those few folks that may still be interested even though I've left the RAD Studio/Delphi team. Read more »
It is with sadness and excitement that as of yesterday, February 19th, 2016, I'm no longer an employee at Embarcadero/Idera. I will be starting a new position at Google (Alphabet) on Monday, February 22nd. This caps off a run of 24 years, 1 month, and 13 days at Borland/CodeGear/Embarcadero/Idera. I remember arriving at 1700 Green Hills Dr. on the morning of January 6th, 1992, naive, nervous,…
Today marks an interesting day. As the title suggests, today is year 21 since the public announcement of Delphi. At the Software Development West conference in San Francisco, California, I remember sitting in the audience as I watched my colleague, Anders Hejlsberg , demonstrate the new Object Pascal based development tool. Read more »
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…
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…
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. Read more »
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…
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…
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. Read more »
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…
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. Read more »
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. var A, B: string ; begin A := 'a string'; B := A; // string instance reference count = 2 end ; Read more »
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. Variab les are the things you declare, either local, global, or a field of a class or record. Read more »
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.
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…
I've moved my blog from http://blogs.embarcadero.com/abauer 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…
No, not this Monitor , this Monitor . Ever since it’s introduction, it’s been the subject of both scorn and praise… ok, ok, scorn. Recently, during our current field test for the next version of RAD Studio*, one of our long-time field-testers posted a reference to this excellent blog post by Eric Grange relating to the performance of the TMonitor vs. the Windows Critical Section . In that post,…