circle of fifths and a capo

I’ve learned a lot by watching other guitar players like James Taylor who is both smart and a little lazy. I like that, though, because I’m the same way. Rather than remembering odd chords like C#min, which fret that’s barred across and the chord shape, I’d rather focus on making fast chord changes in an area of the guitar’s neck that I can better control for sound. But maybe you don’t know all this, so a small refresher could be in order.

Chord Progression

Honestly, most western music has a chord progression which is reasonably similar, believe it or not. But knowing this requires a little music theory. Rather than going into that, I’ll just say that it does and that we can use a trick to make this a lot easier.

Circle of Fifths

Somebody spent the time to organize all the chords and their relationships with each other. It’s called the Circle of Fifths because any major chord clockwise from the last is the “fifth” in the last one’s progression.

For example, in the key of Cmaj: C, D, E, F, G… that G note is the fifth note of Cmaj. So you’d expect Gmaj to be the next clockwise chord and of course it is.


Majors and Minors

A Cmaj scale begins with C and has all white notes on a piano in its scale. Oddly enough, an Amin scale begins with an A and also has all white notes on the piano in its scale. So depending upon the lowest of three notes you might play within a Cmaj or Amin, it might sound similar. The distinction is probably even less on a guitar with only six strings and a limited set of octaves, given the tuning.

We then say that Amin is the relative minor to Cmaj. In the Circle of Fifths, you’ll find them either on an inside/outside ring close to each other like the one above.

All Kinds of Time – Fountains of Wayne

The guitar song I’m learning today is something I bought from iTunes yesterday. It sounds simple enough and I’ve just searched for the guitar tabs although they’re often unusable as published. I say this because a lot of guitar players out there don’t know enough musical theory to make this easy.

What I do get from these websites is the key that the song was written in and an attempt of someone’s to follow the chord progression. I’ll then use this as a starting point to make this a useful tab.

Circle of Fifths + Capo = Win

A capo is a device which you can attach to the neck of your guitar to basically change the pitch of all strings at the same time. By putting a capo in the right place, you can adjust what chord you actually play to get the chord you want.


Back to the chords in question, All Kinds of Time includes the following chord progressions.

Intro & most stanzas of the song: Emaj, Bmaj, C#min, Amaj
Chorus: Emaj, Bmaj, Dmaj, Amaj
Bridge: Amin, Emaj, Bmaj, Amin

Unfortunately, that’s a lot of barred chords. In theory, they’re alright but they don’t allow you to easily add/remove strings (hammer-on/pull-off) to make things a little more interesting. If I can move things down to the first position, I know that I can do this so it’s worth the effort.

Looking at just the intro for a moment, I’ve written the chords as numbers (1 through 4) on the Circle of Fifths. Now that we know the song progression’s shape, it’s easy enough to play it either in a different key altogether or—by adding a capo—we can play in the original key but in a different set of chords that will end up sounding like this.


So my first attempt was to try to change it—as played—into the key of Cmaj. This resulted in a collection of chords which I was mostly happy with but I didn’t like one of them. Next, I then moved it into the key of Dmaj as played and that works out much better.

The Easier Way

Add a capo to the 2nd fret and play the song with the following chords instead (as if the capo is the nut).

Intro & most stanzas of the song: Dmaj, Amaj, Bmin, Gmaj
Chorus: Dmaj, Amaj, Cmaj, Gmaj
Bridge: Gmin, Dmaj, Amaj, Gmin

Only the Bmin (second fret) and the Gmin (third fret) now are fretted chords and the rest are all in the first position. Having drawn the chord progression numbers on a laminated Circle of Fifths, you can then just move them around and the same shape as used before, just with a new starting position.

This puts a Dmaj chord as the one most-used and it’s quite arguably the prettiest-sounding chord for hammer-on/off decoration on the E string. The Amaj and Bmin chords get similar treatment on the same B string. The Gmaj can be decorated on its A string. It sounds rather good and I’ve only just begun playing it today. This would have been hopeless, as found on the Internet and I’ve just turned it into a playable song with a little trickery that I learned from James Taylor.


go figure

For years, if I needed to write a computer program, I’d have used one of the following: C, C++ or C#. Those have been the mainstays of programmers who needed an executable program for at least the two decades. Today, though, I’ve just written my first executable in a new language that’s surprisingly easy to work with.


The Go language is like the new kid on the block of compilers. Like the ones mentioned before, it will take text and convert it into instructions the computer can do.

Probably the best thing about the Go language is that it’s entirely open-sourced. If you wanted to work on the compiler itself, you could do so.


The program I’ve just written is technically called a Command Line Interface (CLI) program and will display technical details inside the selected GCODE file for a 3D print job.


Typical session of the program in use:

$ SlicingInfo RC_3DBenchy.gcode
Slicer:          Cura_SteamEngine 2.3.1
Layers:          239
Quality:         low
Profile:         Low Quality Robo C2
Filament size:   1.75
Hotend temp:     190
Bed temp:        0
Supports:        False
Retraction:      True
Jerk:            True
Speed 1st layer: 10
Print speed:     50
Travel speed:    80
Infill pattern:  cubic

dual-spool coolness, etc

Anticipating a dual-extruder upgrade soon for the Robo C2 printer—imagine printing in two colors for the same part—I’ve designed and printed a dual-spool holder for those two filaments. It’s an upgrade for the printer and works much better than the original holder.


The original spool holder stuck out of that rectangular hole in the back of the printer, sometimes falling out during the middle of a print job. Aesthetically-pleasing but impractical, I’ve now replaced the original.


I’ve created step-by-step instructions for creating two versions: one for the full kilogram rolls and one for the half-kilogram variety.



Another design challenge with the Robo C2 printer is the way that the print bed is cantilevered from the back of the printer. It’s a bit like a diving board and similarly wobbles at its front-most extremity as you’d expect. This isn’t really optimal for 3D printing because it results in poor quality with taller parts and especially those which are oriented toward the front of the printer.



I’ve therefore designed a cantilevered stability plate to afix to the bottom of the print bed itself which should provide some firmness in this dimension. Eight M3 type aluminum bolts are the only thing needed other than this part.


five minutes to admin status

You’d think that a work or home computer would be reasonably secure since companies like Microsoft have 70,000 employees and perhaps some of them are dedicated to the task of keeping you safe.

Would it surprise you to know that it takes me on average about five minutes to hack into a Windows (NT/XP/7/8/10) computer?

No, really. In about two minutes and with physical access to the computer in question, I can insert a USB drive, boot it into another operating system and make a couple of adjustments. Rebooting then without the USB drive (perhaps another three minutes), the system is hacked and I have admin access.

If you wanted to protect your computer from this kind of hacking attempt, you’d need to physically lock it up when you’re not there.


Not that I use this technique, but there’s even a hack now in which something innocent-looking like a keyboard or USB thumb drive or a camera could go rogue. We’re used to devices like this to be well-behaved. If it’s a keyboard, it behaves like a keyboard. But just because they usually behave, that doesn’t mean that someone couldn’t program it otherwise.

In this case, hackers pushed code to the small firmware area of a USB drive so that it initially behaved like a USB drive… only later to change its mind and report to the operating system that it now wanted to be a keyboard. I don’t think anybody saw that coming.

So… re-formatting the USB drive would make the problem go away, right? No. In this case, the actual code is on a different chip in the device so you—the consumer—have no way to get to that chip.

But it gets worse. The device could pretend to be an Ethernet card or almost anything else. It could log your keystrokes, alter files, send emails using your email program, install software, it could transmit your keystrokes via radio waves so that someone remotely could pick them up.

If you wanted to protect your computer from this kind of hacking attempt, you’d be super vigilant about which devices you plug into your computer.


As if that weren’t enough, someone hacked what is quite possibly the most used wi-fi chipset in all mobile devices, the Broadcom chip. At least six billion smartphones are affected by this exploit which was described this summer.  If an Internet worm is created which uses this exploit, it could jump from one device to the next and right past login prompts, anti-virus software and firewalls without stopping.

If you wanted to protect your computer from this kind of hacking attempt, you’d need to immediately upgrade your smartphones and other portable devices which include wi-fi.


At the moment, there doesn’t appear to be an unhackable operating system. I can’t imagine being someone in the military or the government or in charge of a bank right now because it’s just an ugly time for security. You seemingly can’t trust even a computer mouse in a world like this.

I suppose it’s best then to suggest that you backup your important data frequently enough so that you don’t lose everything at some future date.


Soon enough, I’ll be hacking some sort of remote shutter thing to my 3D printer and firing off photography from GPIO within a sliced print job. But for now, I’m just getting used to this camera. It’s a Nikon D3200 and these were all through a Nikon AF-S 55-300mm zoom lens, aperture-priority, F/8 on a semi-cloudy day in Pacific Beach with an Insignia UV filter and lens hood.


remove ads from outlook

I find myself at the moment without a license for Office 365 and for the time being, I’m just using the web-based version of Outlook as found on This would probably be bearable only it’s a fair bit irritating to me with their frequent ad rotation/animations as seen in the right panel.

I’m guessing that people in marketing must think that if they’re not irritating, we won’t pay attention to them. But how should rudeness result in a sale? That just defies logic to me but that’s how they think now.

Adding Insult to Injury

Looking into this further, I can see that Microsoft is allowing third parties to track what I do, what I type, etc. I’ll be culling some of these abuses as well.

The Fix

Without further ado, I indicate the work-around to stop their ad server from functioning. I’ve given the instructions for OS X. For a Windows computer, you’d use Notepad to edit c:/windows/system32/drivers/etc/hosts instead.

$ nano /private/etc/hosts

Initially, you’ll need to supply the you password. When finished adding these lines, you would enter Ctl-O, Enter and Ctrl-X and finally exit. Refresh in your browser and the ads should be gone.


is it safe?

Today’s title comes from the movie Marathon Man with Dustin Hoffman as the lead. I must admit that I haven’t seen it. The concept sounds scary enough, though: someone is expected to know information which they simply don’t possess. Somewhere in the movie the lead character is mistaken for a spy, perhaps and finds himself in a dentist chair where he is asked repeatedly this question.

Believe it or not, we have a very big security problem at the moment and few people are focusing much attention on it. Let me explain…



For a long time, we’ve all enjoyed the Internet. Packets of information are sent here and there. The underlying mechanism is usually called TCP/IP and that last “IP” part is described as version 4 or simply IPV4. Within all these specifications, there’s the concept of the sending computer’s address and the recipient’s. These “IP addresses” are critical to delivering content. A popular IP address is which is Google’s primary DNS server. There are four numbers in each case, separated by periods.


A good analogy here is the zipcode system in place at the United States Postal Service, for example. Some five-digit combination of codes like 90210 points to a specific post office. If you were fortunate enough to have a P.O. box there, 90210 plus that box number would allow you to receive your copy of Beverly Hills Magazine or similar.

Often, though, cities grow bigger and the USPS needs to break up zipcodes (re-issuing new ones) or other clever methods to accommodate more and more people. They decided to extend the five-digit system to add four more digits to the end. An example might be 90210-1234.


In a similar fashion, the Internet got more popular and something needed to be done. We ran out of IP addresses a long time ago, to be honest. There’s only so many individual computers which may be addressed using those four numbers from the IPV4 section above.

For decades, they’ve been putting off doing anything serious about this problem because of some reasonably-good workarounds. The best of these is to have everyone inside their own homes, businesses and even colleges use what is essentially, an unusable set of IP addresses. The technical term is a private IP address range. Buy a Netgear router for your home, plug it in and I could reasonably guess that your new home router now has the IP address of just like other consumers. In one way, it’s not really a valid, routable address but things just work because of some trickery involved.

So, making those four-number styles of IP addresses longer in theory might make everything better, right? For two decades now, various people have been pushing hard to add those extra numbers to everyone’s computers, to every router, to all routing software, to all computer operating systems, to all software development kits.

Imagine thousands and thousands of ants silently working hard to build something that most of us cannot see, don’t understand and then one day twenty years later we find out that some huge anthill has taken over. The work happened so slowly that we didn’t take much notice.

IPV6 is here and we didn’t even know it. In fact, few know anything about it at all.

Rest Inertia

Unfortunately, the current system is what everyone understands. If you ask the average computer geek to “issue an IPV6 address” you will be met by a blank stare, shortly followed by hostility in many cases. Nobody wants to deal with these new addresses. Nobody wants to test their computers with these new addresses. Nobody wants to test their software or their websites with these new addresses.

I will go further to suggest that nobody knows how to do any of these things.

Too Long, Didn’t Read

Here’s an excerpt from the Wikipedia page on IPV6. Part of the problem is that these technical descriptions are written by people who don’t understand that end-users ultimately must understand what’s being talked about.

The 128 bits of an IPv6 address are represented in 8 groups of 16 bits each. Each group is written as four hexadecimal digits (sometimes called hextets) and the groups are separated by colons (:). An example of this representation is 2001:0db8:0000:0000:0000:ff00:0042:8329.

For convenience, an IPv6 address may be abbreviated to shorter notations by application of the following rules.

  • One or more leading zeroes from any groups of hexadecimal digits are removed; this is usually done to either all or none of the leading zeroes. For example, the group 0042 is converted to 42.
  • Consecutive sections of zeroes are replaced with a double colon (::). The double colon may only be used once in an address, as multiple use would render the address indeterminate. RFC5952 recommends that a double colon not be used to denote an omitted single section of zeroes.

An example of application of these rules:

Initial address: 2001:0db8:0000:0000:0000:ff00:0042:8329
After removing all leading zeroes in each group: 2001:db8:0:0:0:ff00:42:8329
After omitting consecutive sections of zeroes: 2001:db8::ff00:42:8329

The loopback address, 0000:0000:0000:0000:0000:0000:0000:0001, may be abbreviated to ::1 by using both rules.

As an IPv6 address may have more than one representation, the IETF has issued a proposed standard for representing them in text.

For most computer professionals, avoidance has been their interaction with this feature.


The problem, then, is our network security globally. Silently, people are adding a routing feature into everything-that-is. Usually, when something like that happens, all computer professionals then are trained about how this new feature works. That definitely has not happened. We are in for such trouble on this one.

Update Fatigue

Another contributing factor to all this is the recent trend to push updates to end-users relentlessly, daily, (too often). For many people, toggling on some auto-update feature lowers their own sense of being nagged into daily updates. The “magic” just seems to happen and the users assume that literally hundreds of people have tested the safety of everything before it’s put out there for an upgrade. The dirty little secret is that it isn’t tested at all in areas like IPV6.


In short, turn off IPV6 support from every computer, router, device and smartphone in your life. Do it as soon as you learn how to do so.

Turn off IPV6 support on everything you own and everything you can control within your life. It’s a ticking time bomb from the standpoint of Internet security.

There will be a time when this new technology is safe. I’m guessing that this will be at least one decade in the future.

For more information, search for “turn off ipv6” in your favorite search engine.

responsive developer mode

I found an Easter egg today. It wasn’t outside, leftover from months ago. It was hiding in my Safari browser all along, a poorly-documented keystroke which I tripped over today.


Cmd + Option + R

I was looking for the hotkeys in Safari in order to reload a page without using the cache. I’d guessed that it was some alteration of the standard Cmd + R combination for refreshing the page and was trying those combinations, only I got more than I bargained for.

Browser Options

From the interface, it looks like I can select different browsers, to include Chrome and even Internet Explorer.


Screen Resolutions and Portables

Looks like I can change from the standard OS X to iOS as well, see what things look like on some of the iPhones, three sizes of iPad and a few screen resolutions for desktops as well.

Toggle It Back Off

And of course, you can toggle the mode back off again with the original key combination of Cmd + Option + R.

da plane

Obviously, I watched too much television growing up. Every week on Fantasy Island, Hervé Villachaize’s character would point to the sky and make this exclamation.


In a 3D printer, it’s really important to start printing on a known, flat plane. And yet, many print beds aren’t made of something rigid like glass so bigger parts end up shaped like the print bed itself. Even small deviations can mess up a print. It’s a problem to be solved, actually.


The software that’s running on my Robo C2 printer is a fork of the popular OctoPrint open-source software. What’s cool about this software is that it will allow you to write plugins to adjust the way it works.


The language the printer listens to during the print job is called GCODE. Think of it as a list of common instructions that almost all 3D printers use now.


One of the GCODE commands in question is G29 and this tells the printer to run through an autoleveling routine. In some cases, the printer’s extruder will actually touch the print bed in several locations. In others, the extruder assembly will use a light plus a photoresistor to hover above the bed and to gauge its height above it. Using either method, the printer can make a reasonable “map” of the print bed and mathematically create a virtual plane to represent it. If the print bed is a little lower on one side, this routine should allow the printer to compensate for that.

Only…, it doesn’t really work that great, to be honest. Someone deserves a round of applause for trying to fix the problem but honestly, a manual approach is possibly the better way to go here.

Although these printers have a built-in autoleveling feature, manually leveling the print bed is preferred by those who are more advanced at 3D printing.

The Problem

I’m currently now working to manually adjust my print bed so that it is perfectly level and an exact height from the extruder. In fact, I have two replaceable print beds for the same printer so both of them need to be perfectly level and exactly the same height all around. To complicate matters, I anticipate designing and creating a third print bed for this which is heated. And that one should also be perfectly level and the same height as the others. The final goal will be to easily and quickly swap print beds without the task of fussing with any settings.

So now, having created a number of GCODE files over the last four months, I really don’t feel like editing them to remove that unnecessary G29 command. Once you’ve manually leveled everything, an autolevel routine is not only overkill but it can cause problems to the print quality. I needed a way of programmatically switching off the command when seen.

The Solution

I’ve created an OctoPrint plugin which helps to solve this problem. Assuming that I no longer need autoleveling at the start of each job, the plugin tells the printer basically to ignore any G29 commands. I now don’t have to edit countless GCODE files or worry if someone sends me a file—the printer will dutifully ignore this command.

Github:  Toggle Autolevel plugin


experience is simply the name we give our mistakes

September 14, 2017 | Microsoft News Center

REDMOND, Wash. — Sept 13, 2017 — Microsoft Corp. on Wednesday announced that the Windows 10 software — with a slow start so far in customer satisfaction — will get a new name soon.  Terry Myerson, executive vice president, Windows and Devices Group explains:

“I think most of us at Microsoft felt that the Windows 10 name didn’t adequately describe what we were trying to achieve with this operating system. This new name should make it clear what Windows can ultimately do for our customers and how we at Microsoft focus on getting them the best experience possible with instantaneous, streaming updates 24×7 to your desktop, mobile or any device.”

Windows 10 to be renamed

To celebrate the new continuous update feature, Microsoft is renaming Windows 10 to coincide with the upcoming fall update. “The new name is our commitment to up-to-date software, no matter what it takes”, added Terry. “There’s no such thing as too many updates, at least that’s how we think. Our customers shouldn’t have to wait for something as important as a new version of Candy Crush Soda Saga. If we had our way, you’d have the next version of the Microsoft Solitaire Collection app before it’s even been tested by our own QA. Now that’s fresh software.”

“In the past, Windows Update took a back seat to most of what was going on in the computer, like… running a Word document. We feel that updating is much more important than almost anything that our customers could imagine doing with a computer so we are now putting that in the driver’s seat, if you will.”

Windows Update 10

The newly-named Windows Update 10 operating system is a bold new experience for users. With a streamlined, uncluttered interface, customers should find it easy to keep their system up-to-date and all without those unnecessary icons.


One of the best ways to get the Windows Update 10 update is to upgrade to Windows Update 10 by clicking the following link. More information can be found at

Microsoft (Nasdaq “MSFT” @microsoft) is the leading platform and productivity company for the mobile-first, cloud-first world, and its mission is to update every computer and every organization’s computers on the planet to have the very freshest copy of the X-Box app since we want to sell things online like Apple. All your base are belong to us.

Note to editors: For more information, news and perspectives from Microsoft, please visit the Microsoft News Center at links, telephone numbers and titles were correct at time of publication, but may have changed. For additional assistance, journalists and analysts may contact Microsoft’s Rapid Response Team or other appropriate contacts listed at Stop reading this and update your computer. I’m sure there’s a new version that you missed.