Mounting my Google Drive on Ubuntu 19.04

…is supposed to work right out of the box. Just open the Gnome settings app, choose “Online Accounts”, and add your Google account. You’ll have to enter your credentials, and make sure that “Use For…Files” is turned on.

Then open Nautilus file manager, look at the locations panel on the left, et voilà, you should see a “<your.google.account>@gmail.com” drive ready to be mounted.

And I did… except when I tried to mount it, I got a timeout error.

Continue reading

Stop Snoring?

I wish I could.

I’m a snorer. I snore. I snore loudly and nightly. Like my father before me, and his father before him. I snore so loudly that I get complaints. From my wife, my kids, roommates, house guests…

Maybe there’s a seismology team at the university scratching their heads over those low-magnitude earthquakes they detect every night.

But y’know, there’s an app for everything nowadays, so why not try one?

Continue reading

Summer Ventures ’99

It was the end of June, in a long-gone year when we were yet naïve enough to use two-digit years, though Y2k loomed large on the horizon, and cameras still required film.

I was a high school student. It was summer. I set foot on the campus of Appalachian State University, in the heart of Boone, NC. I was enrolled in Summer Ventures. And I had no idea what to expect.

It was the Summer of ’99.

Continue reading

Project: Dremel-carved Clock

It’s been quite a while since I’ve done a hands-on project, but I had an 8″ x 10″ x 1/2″ block of basswood, and one of those DIY clock movements from the craft store.

So due to my fondness for Star Trek, I thought I’d take my Dremel and carve out a TOS Enterprise clock. (The results are not pretty.)

Continue reading

Struct Unions in .NET

Suppose that you have an array of bytes that you need to convert into a fixed-size struct. This might happen, for example, if you’re parsing a data stream from a hardware device.

In C, it’s easy enough to do this with pointers. Or you could create a struct union between a byte array and your fixed-size struct.

If you’re using VB.NET, your options appear more limited. You can get an IntPtr to the array, and use Marshal to create an instance of the struct. But if you try to create a union between a byte array and a struct, the runtime throws a TypeLoadException.

TypeLoadException: “Could not load type […] from assembly […] because it contains an object field at offset 0 that is incorrectly aligned or overlapped by a non-object field.”

But… here’s a weird trick (not VB.NET specific) that a coworker ran across, which we experimented with, and which I do not endorse.

Continue reading

New Website

Greetings all! It’s been a long time since my last update — over four years!

This site started out as a personal blog, but most of the content falls into two categories: machining, and other stuff.

Trouble is, the machining stuff is by far the most popular content. People still regularly read my articles on MTConnect, even though most of the information is five years out of date.

So I’ve decided to spin that content off to a new website. None of the current articles on this site are going away — but I am trying to update the content, and will direct readers to the new site as I do.

So if you’re here for MTConnect, Okuma THINC, or other machining content, please check out the new Machining Code site. And if you want to see updated content on a particular topic, send me a comment there.



Coding for Everybody

Recently I read a post entitled The Hypercard Legacy. For those not familiar with HyperCard, it was a tool that in the 80s and 90s enabled ordinary Mac users to create their own computer programs.

More than a quarter-century after HyperCard’s release, I find it interesting how far we have strayed from this “anyone can code” mentality, into today’s walled-garden environments where only approved applications may be downloaded from an app store.

Continue reading


Okuma App Store


Okuma has recently launched an App Store. The site is not just for Okuma-developed apps: products by several THINC partners are featured on the store.

Registration is required to download, but to see the range of possible THINC solutions, you can browse the apps at MyOkuma.com.



I bought a Chromebook. Why would I buy a Chromebook?

Actually, I’ve been using this Acer C720 for about three weeks, and so far I’ve been pleased. Since my netbook died a couple years ago, I haven’t had a lightweight device with decent battery life. I don’t care for tablets: I like a device with a built-in keyboard. The Chromebook fills this role well.

For now, I’m using a stock installation: no developer mode, no chrooted Linux. The vast majority of my usage is web browsing and writing. The only option for web browsing, unsurprisingly, is Chrome, but it’s been my default browser for quite awhile.

For writing, there’s no lack of choice for text editors on the Chrome web store. Usually I like to use a markdown editor, but for now I’ve been using Caret. It provides basic plaintext editing with syntax highlighting. In theory, it has a plugin system, but I’m still trying to figure out how to write a plugin for it — my biggest complaint is the inability to view word count for selected text, rather than the entire document.

(Of course, if you need word processing capabilities, there’s Google Docs. )

Downside: there’s still no IDE on par with Visual Studio. With my desktop machine out of commission recently, I have no means of developing Windows applications. Sigh.


Garter Snake

Dear Garter Snake in my Backyard,

I have no problem with you. My philosophy is you don’t bother me, and I don’t bother you.

But when you slither unseen onto my patio as I’m getting out the lawnmower, don’t be surprised when I step on you.

My bad, admittedly, but you’re the one whose guts are smeared all over the patio.