Bruce Garrett Cartoon
The Cartoon Gallery

A Coming Out Story
A Coming Out Story

My Photo Galleries
New and Improved!

Past Web Logs
The Story So Far archives

My Amazon.Com Wish List

My Myspace Profile

Bruce Garrett's Profile
Bruce Garrett's Facebook profile

Blogs I Read!

Wayne Besen

Box Turtle Bulletin

Daily Kos

Mike Daisy's Blog

The Disney Blog

Disney Gossip

Brad DeLong

Dispatches From The Culture Wars

Epcot Explorer's Encyclopedia

Envisioning The American Dream


Ex-Gay Watch


Joe. My. God

Made In Brazil

Peterson Toscano

Progress City USA




Fear the wrath of Sparky!

Truth Wins Out Blog

Wil Wheaton

Gone But Not Forgotten

The Rittenhouse Review

Steve Gilliard's News Blog

Steve Gilliard's Blogspot Site

Great Cartoon Sites!

Howard Cruse Central

Tripping Over You
Tripping Over You


Commando Cody Monthly

Scandinavia And The World

Dope Rider

The World Of Kirk Anderson

Ann Telnaes' Cartoon Site

Bors Blog

John K

Penny Arcade

Other News & Commentary

Lead Stories

Amtrak In The Heartland

Corridor Capital

Railway Age

Maryland Weather Blog

Foot's Forecast

All Facts & Opinions

Baltimore Crime



Page One Q
(GLBT News)

Michelangelo Signorile

The Smirking Chimp

Talking Points Memo

Truth Wins Out

The Raw Story


International News & Views


NIS News Bulletin (Dutch)

Mexico Daily

The Local (Sweden)

News & Views from Germany

Spiegel Online

The Local

Deutsche Welle

Young Germany

Fun Stuff

It's not news. It's FARK

Plan 59

Pleasant Family Shopping

Discount Stores of the 60s


Photos of the Forgotten


Comics With Problems

HMK Mystery Streams

Mercedes Love!

Mercedes-Benz USA

Mercedes-Benz TV

Mercedes-Benz Owners Club of America

MBCA - Greater Washington Section


Mercedes-Benz Blog

BenzWorld Forum

July 31st, 2021

Adventures In Old Computer Repair

Old in computer years anyway. Old in Apple computer years specifically. Which is to say only a decade old and still perfectly good. Anyway…

Some years ago I bought a nice second hand Macbook Pro laptop. In 2012 it was the very top of the line for fifteen inch Macbook Pros. It has the 256k SSD, and 16gb core ram, and the new and improved “Retina” video display. It was expensive even for a Macbook Pro. But now it’s “old” and I got it for a much more reasonable price. I fell in love with it instantly. New Macs don’t have all the connection ports this one does. You have to buy their adaptors. This one not only has all the connection ports built right in, it has a built-in Superdrive, and an SD card slot, which makes it a nice travel companion for my DSLRs. And lord have mercy that Retina screen is Very Nice. It was everything I wanted in a Mac laptop, though it was admittedly somewhat heavy. Problem with it was it had a couple intermittent keyboard keys. E and D. They worked, but sometimes I had to press more than once to get their attention.

Eventually that became annoying enough that when I saw a Facebook ad for a place in Severna Park that repaired older Macs I took it to them. It was slickly and professionally laid out, not at all like some computer nerd’s basement. They not only repaired but also sold old Macs, and they claimed to be a fully authorized Apple service shop. I had great expectations.

The plague was in full swing then, and I was told when I dropped it off that it might take a while. I was fine with that. I told them if the keyboard needed replacing I would pay for it. The guy behind the counter, who was a bit stand-offish and rude, said it probably only needed cleaning, which would take less time and cost me a lot less. I was skeptical, but willing to be convinced, and I counted it a plus that they were telling me the repair would probably be cheaper than I expected. I asked if just having the Guest account was okay. I didn’t want to give out my admin password. They said Guest was fine. Several weeks later I got a call to come pick it up, it was fixed.

But it wasn’t. The same keys were still intermittent. So I took it back. I had to show the guy behind the counter that the keys were still intermittent, which wasn’t easy when the problem is…you know…intermittent. But I got it across eventually that the repair, whatever their technician had done, hadn’t worked. Fine says the guy behind the counter, still a little standoffish and rude, if it needs a new keyboard after all we’ll deduct the cost from what you paid previously. A day later I got another call that it was fixed and ready to be picked up.

This time I tested it at the counter. Same problem as before, but worse. The keys weren’t even intermittent anymore, they had simply stopped working. I was directed to another counter off to the side, and showed the guy there the problem. He said it might take weeks to get a new keyboard on it because it was a very labor intensive process to remove all the little screws they needed to remove. He really emphasised that. Very labor intensive. Very Very labor intensive. Probably take weeks. Maybe even months. Okay, fine, says I, but I want this fixed. I really want this laptop working because it is everything I want in a travel laptop. 

Two hours later I get a call saying they’d put in a new keyboard. I drive back and brought it home, not even bothering to test it at the counter because I pretty much figured they had done no such thing and it was either fixed now or I was taking it elsewhere. Ah yes…Now the 3, E, D, and C keys weren’t working…the entire vertical row was inoperative. Later I discovered that now the operating system wasn’t detecting the Superdrive. So I was done with them.

I looked around Google some more, and found a place in Parkville that did work on older Macs. It was a much smaller place than the one in Severna Park; basically a basement shop in what used to be a house on the main drag. I explained the problems to the lady behind the counter who, let it be said, was Much nicer to her customers than the guy in Severna Park. I asked again asked if Guest was okay. I couldn’t imagine why it wouldn’t be since all that was needed was to check that the keyboard and Superdrive were working. She said it was fine.

Two days later I get a call from some older man there telling me he couldn’t do the work without my admin password. Oh really? I told him I would take back the laptop instead.

So for nearly a year now the laptop has just sat idle. I could use it with a USB keyboard, but the firmware wouldn’t allow me to plug in another Superdrive. But this was a top of the line Mac not that long ago, and everything I want in a travel laptop. I just loved that big sharp 15 inch screen. A little on the heavy side maybe, but worth carrying it around for that screen, the big fast solid state drive and every port and connector I could ever need right on it. So a couple weeks ago I tried Googling for Mac repair near me, and discovered a new place had opened up in the Rotunda, which is walking distance to my house.

It’s part of a chain called “Juvix The Tech Guy”. They’d just opened shop at the Rotunda. I brought the laptop there and explained the problem. They asked Me right away if I had Guest enabled and I said it was. I told them about the trouble I’d had in Severna Park and the lady behind the counter grinned like she’d heard it before from her other customers. I wondered if it was that specific place or just all of them nearby that people were venting to her about.

First email I got from them a few days later said the Superdrive was working again and all it needed was to be plugged back in. Also that a new keyboard was on order. Apparently the Enter key and one of the shift keys weren’t working now either. A week later I got an email saying they were still waiting for the keyboard to arrive. A couple days later I get another email saying the new keyboard had arrived, and a few hours later another saying it had been installed and everything tested and my laptop was ready for pickup. Total bill was $141.

I bring it home. So nice to live where everything is in walking distance. I get it running and…wow…Everything Works. Just like that. My ideal Mac laptop is ideal again.

Sweet. I can’t speak to all the shops in the chain, but the Juvix The Tech Guy at the Rotunda here is a first rate operation with a good crew and not atrociously expensive. Email me if you need to know who the crappy repair places were.

by Bruce | Link | Comments Off on Adventures In Old Computer Repair

December 4th, 2020

A Coming Out Story, Episode 30…Real Soon Now…

Final strip for ACOS 30 almost finished. I hope to put the new episode up tonight and make it public tomorrow morning. I’ve discovered I need to let my cartoons simmer overnight before going live.

Notice I’m using GIMP now instead of Photoshop. After Adobe bricked the Windows copy I spent 850 dollars for I vowed to get myself off Adobe products. They claimed I’d somehow bought a “bulk” license that had expired even before I registered it. They’d let me use it for two years after the alleged expiration date. Then one supposes, since their new rental software business model wasn’t such a big hit, the tweaked their license algorithm and remote turned off my copy when it failed the new check.

I called their support number to ask what was going on and that I’d spent serious money for that copy, and their service droid told me to be more concerned about all the money Adobe was loosing to Piracy. But I’d bought a legitimate license. They even let me register this so called expired license that cost me 850 bucks and use it for two years.

The wonderful thing about commercial software is there are so many different directions they can point their fingers to blame for customer abuse. Adobe of course can blame the vendor I bought the license from that they claimed was already expired when they let me register and use it for two years. But of course, after two years the vendor isn’t much likely to refund my money. And more than likely they’ll claim it was a perfectly legitimate license and it’s Adobe that’s fucking with me, not them. And the fact is, buried inside nearly everyone’s licensing terms, is a clause allowing the vendor to change the terms of the license out from under you whenever they feel like it.

Think about that, those of you who think you have a permanent license for an Adobe product. 

So I’ve switched to GIMP, which has turned out to be a nearly perfect replacement for Photoshop. And it’s open source. But there is one small problem.

GIMP has a well known problem with tablet input devices, like my Wacom. It seems there is a bug in GTK2 that they’ve been dallying with fixing for 5+ years (It’s Open Source!), and the only machine that GIMP works properly on with my Wacom is the MacBook Pro you see here. So for the duration, that has become my art room computer.

Allegedly GIMP 3 fixes all that (real soon now!). There is a development release, GIMP 2.99.2, that allegedly has the tablet fix in it. But what you get, apart from a development release they tell you up front might crash on you at any moment, is a tarball that you have to compile.

I don’t have an up to date Linux system (it’s on my todo list) so I’ll just stick with the MacBook Pro for now. I’m actually really happy with GIMP. It does some things I need better than Photoshop, and its quirks are easily adapted to. I have a reference document I’ve been working on that steps me through a How To in GIMP things I did all the time in Photoshop, like ingesting line art onto a transparent layer. (It’s in Google Docs if there are any GIMP users here who want to look at it…message me) Moving and sizing objects on a layer is very odd in GIMP if you’re used to the way Photoshop does it, but once you understand it the process is very straightforward. Likewise copying line art from one image to another. But I can do everything in GIMP that I once did in Photoshop…at least regarding my cartoons…so I’m happy.

At some point I need to work on moving my photography workflow away from Lightroom. They say there are lots of good alternatives, some of which work way better at things like noise reduction and shadow detail.

by Bruce | Link | Comments Off on A Coming Out Story, Episode 30…Real Soon Now…

March 22nd, 2016

Left Brain, Right Brain, Silicon Brain…

Browsing through my local network folders I stumbled on some old BBS message files and an associated log file that made me realize I had written my own NNTP client way, Way back in the day. I had completely forgotten this. So I went looking through my old source code tree for the source. It was a program I’d named TRILOBYTE. Back then I was into naming my programs after obscure critters.

I finally found it and looked over the code to see if it jogged any memories. It’s kinda disturbing I didn’t remember this one At All. But there it was. It was a riff off something I’d written in another modem program’s scripting language that basically just logged onto a service, downloaded all the new messages on the boards I was interested in, uploaded any replies I’d previously placed in an upload folder, and then logged off.

I’d written it in VB1 it seems, but I think looking at the main source file I had a DOS version I’d worked on first. It contains my first ever state machine code to process the NNTP transactions. I know it worked because I have folders with USENET news articles in them this thing downloaded, and reply files it successfully uploaded according to the log files. Writing my own NNTP state machine, with nothing more than the protocol documentation to guide me, was actually a pretty big accomplishment for back then. I’m a little concerned now that it completely dropped out of my memory.

I can still recall coding my first PIM software (I called it “Beetle”)…and “Owl”, which was going to be my own weird client/server take on BBS-ing. I’d developed an entire system based around the concept of a message board warehouse where instead of logging on and reading and writing online you would run a program that quickly connected, downloaded all your new messages and email, upload your replies, and then disconnected. You would then read and write offline. It was a solution for the days when long distance phone charges were high and most amateur BBSs were single line and if someone was hogging the line nobody else got in. I figured if I could create a BBS system that reduced connection time to a bare minimum it would make connecting to out of state, maybe even out of country BBSs cost effective and feasible. The Internet pretty much wiped all that away by the time I finished developing my new system. So it never really got much past the early prototype stage. Such is life.

I’d completely forgotten I wrote Trilobyte. And it had some pretty nifty code in it too. Some of it probably came from the client part of Owl. There’s the Twit filters and Scud Topic filters which were things I’d implemented in LOGMOP, a PDS Basic program I’d written to clean my BBS message file downloads of flame wars and idiots.  It was lost to the grey matter, but there in the silicon. I wonder if this is some sort of new evolutionary path we’re all going down now…

by Bruce | Link | Comments Off on Left Brain, Right Brain, Silicon Brain…

December 5th, 2015

Apple: The Cutting Edge On Your Throat…

[UPDATE…]  Actually…the Apple “Lightning To Thirty Pin” connector Does  provide full iPod Out integration with accessories after all. I went ahead and spent fifty bucks on one at my local Apple Store because I’d started reading enough positive reviews of it to believe it was at least worth the risk. On the one hand were the initial reviews like this CNET one which flat out says the iPod functionality is missing. On the other were comments in various support forums including Apples, which indicated that at least for some folks it was working just fine. One of these said they had a Mercedes ‘E’ Class of the same year as mine. There were plenty of others though, who said it wasn’t working at all.

So I took a chance, bought one and plugged it and the new iPhone into my Mercedes, and as it turns out, everything works just as I would expect now.  So either Apple had a change of heart, or the initial reviews got it all wrong, or more likely Apple as is its wont gave out rather limited information regarding its hardware and the media just filled it the blanks however they thought best.

So everything is working now with the new iPhone and Spirit. I have all my menus back, my playlists, the alphabetic searching through things using the dashboard keypad. It’s all there, just as it was with the 4s. Fifty bucks for the adaptor, but that’s how it rolls with Apple.

I’ll say this though. I’m noticing a much improved sound quality out of this new iPhone…even through the car stereo. Bluetooth sound is even a little better…at least as far as streaming Pandora and Internet Radio.

So…(ahem)…as to the bitter heated rant I vented below about Apple breaking things and not giving a flying fuck…

never mind


Mostly. I’m Still not happy about how Apple likes to break things. It’s a chronic problem with them. But at least this upgrade turned out to be not so disastrous as I’d initially thought. The angry rest of this  post is after the break, if you still want to read it. And I will not this: not one word from Apple in any of the support forums was ever, to my knowledge, heard. They could have made things a lot clearer regarding this adapter and maybe there wouldn’t still be so much angst out there over the new connector. I still stand by my characterization of the Apple Complaint Department. And for any iPhone or iPod accessories that won’t take the Apple  adapters because of form factor or because of other issues…well…you’re still SOL…

Read the rest of this entry »

by Bruce | Link | Comments Off on Apple: The Cutting Edge On Your Throat…

March 29th, 2014

Don’t Worry…It’s Only Geek Humor…

This came across my Facebook stream the other day…


I think I’ll name mine The Network That Dare Not Speak Its Name…


by Bruce | Link | Comments Off on Don’t Worry…It’s Only Geek Humor…

January 2nd, 2010

Upgrading My Blog…

I just upgraded to the very latest WordPress…so if you notice any odd things happening around here please let me know. I think I have everything running smoothly again…but you never know…

by Bruce | Link | React! (1)

July 25th, 2009

An All Macintosh Household…Finally

[Geek Alert…]

My Windows/Linux workstation, Mowgli, died some weeks ago.  It’s had a recurring problem having to do with somehow loosing the keyboard state when it was turned off and refusing to turn back on again until I’d gone through this ritual of unplugging the keyboard and switching off the power supply at the back end and then plugging the keyboard back in and switching back on the power supply.  It was a frustrating exercise in appeasing recalcitrant hardware and I was getting tired of it.  But simply replacing Mowgli’s motherboard wasn’t a simple option.  Ever since Microsoft went to its software branding anti-pirating technology what had been the painfully slow, gruesomely ugly chore of reinstalling Windows took on an added test of wills between Redmond and its customers. 

Please activate my license again.

You’re stealing our product!

No…I’m just reinstalling it.  Please activate my license again. 

This is not the same computer you licensed this software for. 

I had to replace the motherboard. Theses things fail you know.  Please activate my license again.

Ah-Ha!  The hard drive is different too!  And the video card!

Duh.  I figured as long as I was buying a new motherboard I’d upgrade a few other parts to.  Why is it every time Windows Upgrade runs my computer gets a little slower?

This is a different computer.  You are not licensed for more then one computer.

No…seriously…you think I’d go to all the time wasting nail biting hair pulling cursing profanely pain of installing Windows just for kicks and grins??  Hey, I know, I think I’ll reinstall Windows today.  No idiot, my fucking hardware failed and I had to buy new parts!  Activate my license again.

You’re a software thief!  You must buy a license for this software!


Please wait while you are transferred to our sales department…


I’d planned on just giving up on Windows and running Linux on Mowgli long ago.  But Linux has posed its own problems lately, the killer one for me being that for some reason "the community" decided to break Samba somehow.  Samba is the open source networking layer that lets you connect to Windows computers and share resources such as files and printers.  Previous versions let me network just fine with Bagheera, my art room PowerMac G5, and Akela, my Powerbook G4, just fine.  More recent versions can’t seem to talk with them at all.  Windows XP never had any problems talking to the Macs, so if there was a problem it was either something introduced in Vista or something introduced in MacOSX Leopard that only affected Samba, but not Windows XP.  Since I started networking Casa del Garrett, I’ve taken advantage of being able to balance my storage needs between the art room and the front office.  Networking here has to work, or I’m running up and down the stairs with a flash drive in my hand.  And while the exercise is probably good for me, the frustration isn’t.

I’m at a stage in my life now where I just need my computers to work.  I don’t have time anymore to keep on fiddling with them just for kicks and grins.  I have work to do, both at home and for my employer when I’m working from home.  I need things to be reliable here.  And the only absolutely reliable computers in the house for the past half decade have been the Macs.  I have never had any problems with either Bagheera or Akela.  Never.  I’ve had Mowgli apart dozens of times.  And when it hasn’t been apart, I’ve been struggling for hours to resolve either some Windows issue or some Linux issue, usually right in the middle of some other important project.  I need computers I can mostly just setup and use and they keep working.  That’s the Macs.

And the Macs had the added benefit of Much nicer software licensing terms.  There is no branding…at least none that’s visible to the end user.  You just install OSX and it runs.  I assume Apple already knows its own computers are supposed to be running its OS.  And I’ve upgraded both Bagheera and Akela twice now with no fuss at all.  What is more, I’ve actually replaced the system drive in Bagheera with a bigger one and simply file-copied over the old to the new drive and the new drive booted OSX without complaint.  You just can’t do that with Windows.  You need to use drive imaging software for that, and pray the anti-piracy code in Windows doesn’t decide you’re running an unauthorized copy.  Hell…I can file-copy the system drives of either of my Macs to an external drive and boot from it if I need to.  Try that on a Windows box, go ahead.

And the five license "family" OSX packs cost less then two single licenses.  That’s also true for the "productivity" software Apple sells too, such as iLife.  Ever since they came into the house, the Macs have just been all-around easier machines to live with.

I’d been considering becoming an all Mac household for some time now. My plain was to replace Bagheera, which is a PowerMac G5, with one of the newer Intel multi-core Mac Pros next year, and then move the PowerPC box up to the front office where Mowgli was.  But Mowgli died before I could put that plan into action, and my budget this summer just didn’t have room for a Mac Pro.  I considered a Mac Mini, but even one of those ended up being over a thousand bucks when I’d added the extra memory and disk space I figured I’d need.  And you’d better buy one of those with everything you want already in it because you are not opening it up yourself to add anything later.  

I really wanted something more like what I had in Bagheera.  The tower case Macs are so cleanly, so damn elegantly laid out inside that getting into one to add memory, or a new hard drive, is a pure pleasure.  I wanted to keep the option of working on my own hardware open.  I remember my jaw dropping when I opened Bagheera that first time to add memory to it and saw how beautiful it was in there.  Then later, when I opened it again to add a second hard drive, I was floored to see not only how easy it was, but how Apple had even put the extra screws I’d need for the job in a series of screw holes right next to the empty drive bay.

So I looked around at the second hand market, and found a company that deals in used Macs.  They had another PowerMac similar to Bagheera for about $450.  With added memory the total cost came to $550.  It’s sitting beside me now, and I’ve named it Baloo. 

Baloo came vi FedEx in a huge box swaddled in what looked like spray insulation foam.  The first thing I did after unpacking it was take it up to the office and plug it into everything and boot it up, to make sure it arrived in working order.  It was running Tiger (OSX 10.4) and seemed to be in fine shape. It was only later that I discovered it was not the machine I ordered.  I had ordered a machine similar to Bagheera, a 1.8g G5 with 1g of system ram.  What I got was a 1.6g G5 with 512meg of ram.  But I’d also ordered an additional 2g of ram to put into it, so I still had enough to run a decently fast machine.  Instead of it being topped up to 3g though, it would be 2.5g. 

I spoke with the company I ordered it from and said I’d be willing to live with what they sent if I got a refund for the difference.  It was annoying, but not fatal because I had the extra memory and the difference in processors wasn’t that great.  And I didn’t want to deal with the hassle of sending it back and waiting for another one.  The company agreed to send me a refund after apologizing for the mix-up, so I’m satisfied.

I got out my Leopard install disk and did a clean reformat and install on Baloo’s system drive.  I’d saved money by buying the family license pack for two household Macs…I was saving more now by adding a third.  Problem is none of the household Macs, which are all PowerPCs, will run the upcoming "Snow Leopard" version of OSX, so the next OS upgrade, when it happens, will be a lot most costly.  But I’m not going to be in any big hurry for it.

When Mowgli died I pulled its data drive and put it in a IDE to USB converter box.  Then I hooked it up to Akela, then copied its contents over to an external Firewire drive I’d partitioned and formatted in the MacOS file system.  While I was running Akela as my front office computer, I kept the firewire drive attached to it and used that as my data drive.  With Leopard installed on Baloo, I simply unplugged the firewire drive I had connected to Akela and put it on Baloo and now I had all my data on Baloo now. At some point, I’m going to add a second data drive to Baloo and copy the firewire drive to that, and then use the firewire drive as my backup drive.  I’m going to keep the external backup drives I used with Mowgli archived in case I find I need something off of them later.  The backup drives have data backups for both the Linux and Windows systems I ran on Mowgli and not all of that was copied over to the firewire drive I have on Baloo now.  I’m also archiving the original data drive that was in Mowgli.  Baloo starts with a fresh set.  Hard drive space is cheap.

I’ve been adding the software I normally use in the front office to Baloo as I go along.  Firefox… Thunderbird… Neo Office on the Mac rather then Open Office… the NetBeans IDE for Java development…  Oh…and MoneyDance, the checkbook software I’m using lately.  MoneyDance is a Java application, so it runs on Windows, Macs and Linux, and the user license attaches to the user, not the computer.  So if I want to run it on any of the computers here at Casa del Garrett I can, provided that it’s me that’s using it, and only one instance of it is running at any given time.  Nice.

So Baloo 2 and I are getting acquainted and the process is happening just the way I expected it to…smoothly and without fuss.  Baloo was the name of my old IBM PS2 Model 80, which is headed for the recycling center soon now.  So I’ve passed the name along.  In Kipling’s Jungle Books, Baloo was the wise old teacher.  In its first incarnation, Baloo was the IBM PC I used for maintenance work on the old DOS programs I’d developed back in my early contractor years.  I had an Ethernet card in it, and actually had it networked to the other household Windows computers with a copy of Windows For Workgroups For MS-DOS.  I haven’t fired up Baloo 1 in years though.  In its second incarnation here, Baloo is the old PowerPC mac that’s taking care of my front office chores while I figure out what to do with Mowgli. 

I still need a machine I can run Windows and Linux on occasionally for work related tasks, so that’s what Mowgli may become eventually.  Or not.  I have a whole new test center facility that I’m working on at the Institute and I can use that if I need to for any Institute work.  I really don’t feel like bothering with either Windows or Linux at home anymore. 

by Bruce | Link | React! (1)

July 2nd, 2009

From No Macs In My Life To A 100 Percent Apple Household In Just Five Years…

[Geek Alert…]

My life with computers started with a Coleco Adam, and was not auspicious.  It was 1983, back when consumer home computers had just started to appear on the store shelves, not just the back page advertisements of the hobbyist magazines.  Apple, Atari, Commodore, Texas Instruments, Radio Shack and Heathkit all had one you could buy, most still horribly expensive.  They had only text based user interfaces, and if they had graphics capabilities at all, they were very crude and slow.

Initially I saw little use for them, but I had a ColecoVision game console I played constantly and one day Coleco announced it was coming out with a home computer that would do it all, and play the same ColecoVision cartridges.  A Commodore C64 could be had for around the same price, but I already had a big investment in ColecoVision game cartridges.  Plus, the Adam came bundled with its own printer: a really nice (in theory) daisy wheel printer which would make good letter quality output, as opposed to most of the consumer dot matrix printers of the day.   My typewriter skills were tragic.  Worse, though I had a huge vocabulary for my age (due to being such a bookworm), I reliably failed to correctly spell a lot of it.  When I saw a word processor demo…I think it was on an Atari…and discovered I could compose words on a computer screen…backspace, erase, correct, rearrange all of it before printing out a single page of paper…I was floored.  Then I saw it spell check.  That did it.  I had to have one.

But like thousands of others I had to return my Adam the day after I bought it because it was defective.  Not a good beginning to my entry into the world of computers.  But because of all the hype from Coleco about what the Adam could do, I turned around and with the refund bought a Commodore C64.  And my love of computers took wing almost immediately.  In retrospect, it was probably a given that I’d get my hands on a computer eventually.  I was always a little techno nerd, and had built my first Heathkit radio when I was a fifth grader (my teacher at the time refused to believe I’d built that radio myself when I brought it to show and tell and insisted I’d had help, which made me furious…).  Computers and I were going to get a thing going eventually.  We just were.

So now I had my first…well…second one.  There was a kit you could buy for the Commodore that let you decode teletype traffic.  It included a software cartridge and a box that converted the signals from the radio to something that could be fed into the Commodore’s serial port.  I’d been hooked on shortwave radio since I discovered at eight or nine that I could listen to broadcasts from around the world on mom’s old one.  So that kit was high on my list of things I wanted to try out.  As soon as I got the Commodore home I ordered up one and when it came I connected it the really nice ICOM shortwave receiver I’d bought a few years previously with some inheritance money.  Finally I could listen in on some of those mysterious beeping-clicking-chirping sounds I kept hearing on certain frequencies. 

As I look back, this was oddly enough the real beginning for me.  From my studies of radio I was already familiar with the concept of bandwidth…a thing the expensive ICOM receiver was able to adjust to better capture a signal.  But with the RTTY converter kit I started becoming familiar with the basic concepts of electronic communication systems…how to work the serial port…bits, words, baud rate, and eventually also packets and protocols, concepts that would later be useful in understanding computer networking.

But the Commodore had one other thing that intrigued me.  When you started it up without a software cartridge in it, the initial screen you got was its Basic interpreter.  I began playing with that and right away the discovery that I could make the computer do stuff by feeding it instructions in Basic became an absorbing curiosity. 

I could make it display words and shapes and colors on the screen…move them around and…ohmygosh, calculate the answers to complex math problems!  Sweet!  Algebra was my downfall in grade school, so this last really got my attention.  With one of these things I could solve problems I simply could not cope with.  Or so I thought.  How I wish back then that someone had told me that algebra was just another kind of symbolic logic, because I actually did have a head for solving logic problems.  I was doing it right there on the Commodore, every time I wrote a simple Basic program, although I didn’t realize it then.

I still needed a word processor.    I checked around and found a program called PaperClip that ran on the Commodore.  It did it all on that little machine.  But it required one of the Commodore disk drives to run it.  Which made sense.  Even if they’d sold it on a cartridge, which a lot of software for the Commodore came on in those days, you still needed a place to store your written text while you were working on it.  So I got the money together somehow and bought one.  I quickly discovered I could store my Basic programs on that drive too.  Good.  Now I didn’t have to key my programs in every time I wanted to run them.  Now I could write big ones, that did more things.  This was when I really started learning how to compose software code, and test and debug it.

As time went on I began to bump into the limits of my Commodore’s horsepower.  IBM came out with its PC and some friends of mine had one in their household.  The thing awed me whenever I came to visit.  Then I learned that some enterprising folks were selling parts you could put together to make one of your own.  I’d been building Heathkit electronic gizmos for years, so the notion I could build my own IBM-PC from parts immediately took wing in me and I ran with it.  When the next county HAM Fest came along I went with a list of parts and came home with the makings of the computer that would change my life. 

And I knew after I had it together and working that something big had happened.  I can still remember vividly sitting on the edge of my bed, just staring at it, amazed.  It had a 16 bit microprocessor.  It had 1 megabyte of ram, 648k available for user program space.  I’d installed two double sided 5 1/4 inch Teac floppy drives, the best most reliable drives made, that could each hold a whopping 360k of data.  I’d bought a Hercules Graphics card, one of the most powerful and sharpest monochrome cards made.  And I’d installed a 2 megabyte expanded memory card, from which I could create a 2 megabyte ram disk.  This was serious business.  And so it was.  That computer, and what I learned to do with it, eventually got me my first job as a programmer.  Which led me, eventually to my first apartment of my own, then to a new car, and then to my first house, and to working on the Hubble Space Telescope.  Wish I’d held onto it now, but you only see these things clearly in retrospect.

Had IBM not started to immediately lock down the PC platform I’d have been more grateful to them.  But my love turned mostly toward Microsoft.  They’d developed the operating system the PC ran on.  But more importantly to me and my new career, they’d developed and extended the Microsoft dialect of the Basic programming language I’d begun to earn a really nice living with.  And their professional developer’s tools were easily affordable, compared to the stuff the big computer companies sold. Even after IBM entered the microcomputer market they still didn’t get what it was about.  One story I heard was that while IBM was hawking it’s new OS/2 operating system at tech conferences, they’d sell you the driver development kit for about ten grand if you asked.  That was pretty typical pricing for software from the big iron crowd.  Microsoft on the other hand, working its competing NT operating system, would sell you their driver development kit for fifty bucks…but if you gave them a nice song and dance at the conference about the really cool thing you were working on, they’d just give it to you for free. 

That was then.  In those days I viewed Microsoft with something like revolutionary ardor.   They had taken on the big establishment corporate behemoth IBM and won.  They had brought the power of the computer out of the big corporate data centers and into the hands of the people.  They had made tools available to everyone, at prices most of us could afford, to create software that ran rings around anything the big iron mainframes could do, other then by raw horsepower.  I can still remember demonstrating my DOS Basic IDE to several Baltimore Gas and Electric mainframe programmers, how their jaws simply dropped when I showed them that I could run and debug my program right there in the editor, and how the editor would even check my syntax for me as I typed.  This was back in 1993 and these were simple DOS programs, but they danced rings around what anyone was doing on the mainframe.

Microsoft practically gave me my career as a software developer, and all the perks that came with it: a good income, a place of my own to live in, and a new car.  Just a few years before I’d been living in a room in a friend’s basement, mowing lawns and doing Manpower jobs to make ends meet.  I’d had to scrounge up a junker car from a friend to travel to Baltimore for my first job as a programmer.  Now I had a new car, and my first apartment that was all my own, and enough money at the end of the week to think of buying things like…well…like a better computer.  I soon graduated from that first IBM PC compatible I’d built to other more powerful ones.  But I always kept building my own.  That way, I could get exactly the hardware I wanted in it.

Which was so unlike the other kid on the block back then…Apple.  Apple computers were there right from the beginning of the personal computer revolution.  The Apple II was the first consumer PC that came complete in the case with a keyboard.  It was the Visicalc spreadsheet, mated to that early Apple II computer, that brought the PC into the workplace, and made IBM finally take notice of the market for those little "toy" computers.  But the Apple was hugely expensive and even then, was its own world.  Especially after struggling with all the non-standard ports and software quirks of the Commodore (even it’s character set wasn’t standard ACSII…) I wanted nothing more to do with closed systems.  At the time I thought Microsoft didn’t either.  At the time I thought Microsoft was all about the freedom the personal computer brought down from the corporate heights to everyone.  Go ahead…laugh at me.  I can laugh too.  Now.

Time passes…the universe expands…  I got the job of my dreams at Space Telescope, largely for the skills I’d developed writing business applications in Microsoft Visual Basic.  But by then I’d become massively disillusioned by Microsoft’s highly predatory nature.  Bill it turned out, wasn’t a revolutionary after all.  He was just another robber baron, willing to betray every ideal of the personal computer revolution for power and money.  Software was just a means to an end.  He’d realized that the future world would be driven by software, and he wanted to be the John D. Rockefeller of software.  By comparison, Steve Job’s little Cult of Macintosh didn’t seem so egregious, although I still didn’t want any part of it. 

I gravitated to Linux and the Open Source movement.  At work, most of the systems were Unix based, so learning to run and maintain Linux at home helped me greatly with my working skill set.  I eventually took on the task of maintaining the Linux test center for our engineering branch.  I tested and ran various Linux distributions at home too, in the hope that I could wean myself off of Microsoft systems.  By that time, two things had permanently soured my relationship to Microsoft.  First, they’d trashed their Basic development platform, replacing it with a pathetic .NET bastardization.  Second, they’d implemented software branding in the OS, which made it nearly impossible for me to experiment with building new hardware at Casa del Garrett.  But as time went on, and my responsibilities at work grew, I needed more and more to have computers around me that didn’t have to spend a lot of time fixing and tweaking and fiddling with and Linux is a lot of things but not that.  And in my personal private world the story was much the same. 

The computer had entered parts of my life I’d never dreamed of.  My photography hobby was now thoroughly tied to the computer, as were the cartoons I was now putting up on my web site.  I was starting to get really, really tired of how often my Microsoft workstation at home, or the Linux ones, were blowing up on me because some software update had broken everything right as I was trying to get some work done.  And now the hardware for them seemed to also be going down in quality.  I was always having to rebuild a machine because some part of it had failed.  My closet was full of computer parts now, that I was relying on more and more to be able to swap around until I got something fixed.

At work, the Macintosh was gaining more and more ground, largely because the Mac OS then was based on a Unix kernel.  In 2004 I bought my first one, a 12" PowerBook G4 laptop, to take with me on a trip to a software developer’s conference.  I bought it mostly to explore the Mac OS for the first time, and to familiarize myself with it enough that I could be useful to the Mac users at work, and to the Mac users in our external user community. 

Macs had by then evolved greatly since that first Macintosh came out in 1984.  The operating system as I said, was now based on a Unix kernel and was now truly preemptively multi-tasking and powerful.  There was an actual terminal window in the Mac now…a thing that had once been considered heresy…so now a developer or a power user could get inside of the file system and the OS and dig around a bit.  This was something that previous Macs had been determined to keep you out of.  And Macs lived in much better harmony with third party hardware now.  They even worked with two-button mice!  And though the Mac was still a highly closed ecology, let it be said that Microsoft, by way of stabbing so many of its software and hardware partners in the back, was working mightily it seemed to shrink its own ecology.  How many viable commercial non-Microsoft word processors are still in production for Windows?  How many alternative compilers and software development platforms?  At least Apple’s ecology worked.

And that was the thing.  That little Mac laptop I bought was a pure pleasure to use on that first trip, and on every trip thereafter, business or vacation. It took a little while to get use to the Macintosh way of doing some things, particularly and annoyingly regarding the keyboard mapping inside of text editors.  But it got to the point where I simply took for granted that the Mac would work when I started it up, and that the software updates wouldn’t break it.  That was a new experience for me. 

So much so that a year later I bought a second one, and dedicated it to the art room.  Macs had always held on to their reputation in the arts and publishing businesses and I felt the Power Mac G5 I’d bought would fit perfectly into my art room workflow.   And so it did, becoming both a darkroom and a virtual drawing board.  I still develop my own black and white film, still do most of my artwork with the traditional tools on my drafting table.  But I don’t bother with silver prints anymore, I just scan in the negatives and go to work in the computer.  The results are so much better, and there is no mess to clean up afterward.   And now I also do a lot of post production work on my cartoons in the Mac after scanning them into Photoshop.  It’s mostly just touching up things here and there, and the lettering, which my hand was never good at.  And once they’re in the computer, I can publish them on my web site, for the world to see.  Having a worldwide audience for my cartoons was something I could only dream about once upon a time.  Now, thanks to the computer, it is a reality.

Those two household Macs, Akela (the laptop) and Bagheera (the G5 tower) have become staples of the household network.  So rock solidly reliable that over the years I have come to take them for granted.  They just work.  I don’t sweat the software updates.  I don’t sweat the hardware upgrades on the G5.  There is something to be said after all, for control-freaking the hardware and the software ecology.  Users chaff at Apple’s tight control…I still do…often.  Yet, it all just works.  Time and again when Mowgli, my Intel Windows/Linux box would break down for some reason, either a hardware or software failure, I would have to attach its data drive to one of the Macs so I could keep working.  The Macs have never given me any problems.  I can rely on them. 

So now I had two Macs that I came to utterly rely on.  Then came the iPod.  Years previously I’d bought a second generation Sony Walkman and then later a Walkman CD player.  When I saw that I could put almost my whole CD collection on an iPod, and carry hours and hours of music with me wherever I went, I had to have one. Naturally when I got it home I mated it to one of the Macs instead of the Windows box.  It all just seamlessly worked together.

Then along came the iPhone.  Once I carried around a Palm Pilot to help me manage my calendar and other personal information.  Then when the Kyocera smart phone came out I could combine phone and PIM and then I had my contact information with my cell phone where it made some sense for it to be.  I began to hope the someone would intergrate an mp3 player with a cell phone/PIM.  But the first few tries I saw were less then wonderful.  The Kyocera could play music, but it didn’t do it well, didn’t hold much, and the interface was cumbersome.  The I saw my first iPhone.  Cell phone… PIM… iPod… eMail… Web Browser… Road Atlas… Video player… Application Platform…  Computer…  In the blink of an eye that little touch pad device swept away everything I ever thought about what a smart phone could be. 

You see where this is going, right?  The computer had become an integral part of my life.  Probably yours too, and probably you take that for granted.  But for nearly half my life computers were something only big corporations had the money, let alone the room for.  So I have witnessed some amazing changes in how computers are used, and I am still taken aback sometimes at how ubiquitous they’ve become, and how radically they’ve changed the way we live.  Listen to music…on a telephone…?  Why the hell would I want to do that?   Now most of my time is spent using computers in one form or another.  And at home, whether it’s working on some photographs on Bagheera, or listening to the iPod while doing household chores…most of the time I’m running something made by Apple. 

It was insidious.  I had no plans whatsoever to join the cult of Steve Jobs.  I wanted nothing to do with it actually.  He got me anyway.  By making a better computer.  And then by doing what was never in Bill Gates to do: make them liberating. 

People smirk at Job’s relentless focus on making his products "cool".  But it forces him to think outside the box.  Bill just wants to put the world into his box.  The difference really shows not on the desktop, but all the places nobody in their wildest dreams would have thought back in the 1970s to put a computer in.  That IBM executive who once wondered why the hell anyone would want to use a computer to write a memo…I wonder what he would have thought to hear someone say that one day they’d be putting computers into telephones. 

Bill had Windows on cell phones long before Steve got MacOS on them.  But when Bill brought out Windows Mobile he was about putting Windows into cellphones and adding cellular technology to his items of world conquest.  See…you can even open a Word document in one and read it…You can read Outlook Mail…share your calendar with other Microsoft Exchange users…  It was Windows on a cellphone.  When Steve brought out the iPhone he was about reinventing the telephone.  There’s the difference between Bill and Steve.  Yes, MacOS is at the heart of the iPhone.  But the iPhone is not about MacOS.  The iPhone is about what you can do with the technology now, that you couldn’t before.  Not an incremental step from familiar territory into well explored territory, but a grand glorious crazy leap into the future. 

That kind of thing still has appeal to those of us who got into the personal computer revolution at the beginning.  So I have this little cell phone now…a thing I can hold in the palm of one hand…and I’m feeling like a kid again, beholding the world of tomorrow.  I love that feeling.  This little gizmo would make that first IBM PC compatible I built tremble in awe if it had feelings.  If I could have foreseen my iPhone 3Gs back when I was sitting alone in my bedroom, staring amazed at the PC I’d just successfully built, I’d have known that the future really was going to be everything I’d ever dreamed it would be.  Had I seen a Zune…not so much.

So I’m writing all this because a few days ago Mowgli died…again.  This makes the fourth major hardware failure I’ve had with Mowgli since I bought the Mac Laptop back in 2004.  And I can’t count the software glitches that kept him down for days at a time until I could work my way through it.  And with Microsoft’s new Windows license enforcement code, I can’t just simply fire up my copy of XP once I put a new motherboard in Mowgli.  This will be that XP install’s third motherboard and so I’ll have to phone Redmond and convince them I am not stealing their software so they will kindly unlock my copy remotely.  Fuck that.  I have had too many problems with Windows and Windows updates and Windows applications and Windows drivers and Windows this and Windows that to be begging them allow me to run software I have bought and paid for.  If my Windows platform was as reliable and as pleasant to use as my Macs I’d grit my teeth and bear it.  But it isn’t.  It never was.

So I’m replacing it.  With a Mac.  I’ll still be able to fiddle around with Linux since the Macs will boot off of external drives and most Linux distributions have always produced a version that ran on Macs too, whether they be PowerPC Macs or the new Intel based ones.  I could even run Windows on a Mac now, via one of the enabling VMs such as Boot Camp or Parallels, although Redmond restricts which versions of Vista and presumably Windows 7 you can do that with.  Which is the other thing I hate now about Windows…all the idiotic flavors of it. 

The office is running on Akela for the moment.  I put Mowgli’s data drive in a IDE to USB converter box and hooked it up to Akela, then copied its contents over to an external Firewire drive I’d partitioned and formatted in the MacOS file system.  My plan is to eventually move that data to a network drive, probably off a new router like the Apple Airport, that all the household computers can access.  I connected Akela to Mowgli’s ViewSonic monitor, the Altec sound system and the router and turned off it’s wireless for now.  I bought an Apple keyboard since I wanted a standard layout, not the laptop layout, to work on and all my spares are IBM PS2s and I don’t have any PS2 to USB connectors.  With the external keyboard I can run Akela with its lid closed and it’s almost like I’m working with a Mac desktop computer instead of a laptop.  I’m tempted to just run the office on a laptop forever now, since Akela has plenty of horsepower for it.  But it’s good to keep a laptop that is separate from your day to day home office so that when you take it anywhere it has no sensitive data on it.

I haven’t decided yet, but I’m leaning towards buying a Mac Mini for now, since it’s just straight pluggable into the peripherals I already have gathered about Mowgli, and now Akela.  I don’t really have the money now to replace Bagheera with a newer Mac Pro or Mowgli with an iMac.  My plan ideally would have been to replace Bagheera possibly next year and then move the older PowerPC machine upstairs to the office.  I need the more powerful Mac to be in the art room, where the graphics intensive work is.  But for now I need a new Office machine and it will not be another Windows box.  I am done with Windows.  I’m just not fucking with it any more.  Five years ago I wouldn’t have dreamed I’d be an all Mac household.  Now I am. 

It happened that fast, after the first one came into the house.  I am amazed.  But happily so.

by Bruce | Link | Comments Off on From No Macs In My Life To A 100 Percent Apple Household In Just Five Years…

February 22nd, 2009

Great Moments In Chutzpa

Via Slashdot…  Oh look…Microsoft CEO Steve Ballmer is pleading for openness…

Apple is top of mind for execs at MWC

BARCELONA, Spain–iPhone maker Apple isn’t at GSMA Mobile World Congress 2009 along with the rest of the mobile phone industry, but the company’s growing success is definitely top of mind for key executives in the mobile market.

The iPhone and Apple’s successful App Store got more than a passing mention on Tuesday during a panel moderated by The Wall Street Journal technology columnist Walt Mossberg.

Ballmer argued that device openness was important to give customers more choices. And he pointed to the number of choices that Windows Mobile customers have when choosing a device.

"I agree that no single company can create all the hardware and software," he said. "Openness is central because it’s the foundation of choice."

This from the company that tied Internet Explorer to the Windows OS in order to kill Netscape.  This from the company that penalized computer makers (and for all I know still does) for offering their customers Linux too if they wanted Linux.  This from the man who still insists that Linux violates a number of Microsoft patents, but won’t say which ones.  This from the company that gamed the ISO standards process by forcing through its own 6000+ page "open xml" format, which is riddled with Redmond patents, and Microsoft Office legacy bugs and glitches over the vendor neutral Open Document format, so Microsoft could claim MS Office documents were "open", despite the fact that nobody but Microsoft can implement this so-called "open" format in its entirety.  Openess anyone? 

Yeah…Apple is a closed system.  You can’t run the iPhone OS on any other phone but an iPhone.  You can’t run Mac OS on any other computers but Apple’s.  Apple hardware needs Apple software to run.  Microsoft’s definition of openness on the other hand, is everything needs Microsoft software to run.  When the whole world is locked tight as a drum into Microsoft platforms, then everything will be naturally and seemlessly interoperable.  Openness.

Hey Steve…you want openness?  Publish your file formats.

by Bruce | Link | Comments Off on Great Moments In Chutzpa

February 15th, 2009

How I Spent My Valentine’s Day…

I’d been thinking about the self-publishing options available to folks now (see my post below), and I found myself that morning scanning through some web links about photo book publishing.  I’ve wanted to put together a book of my art photography too.  I began scanning pages of comment about how well Apple’s online photo book publishing mechanism works with Aperture…the Apple photographer work flow software I use. 

I discovered several insights into the problem of color management I’ve been wrestling with, ever since I got a request, that came with a promise of actual money, for a print of one of my Puerto Valarta images.  It took me so many test prints to get the colors right off the printer, that I actually lost money on it.  But it was worth it to me, just for the satisfaction of knowing I had a fan of my art photography out there who was willing to give me good money for a print they’d particularly liked.

Here’s the image that gave me so much trouble:


This is off the Puerto Vallarta gallery.  You can’t really see it in this JPEG, but the actual image is rich with delicate detail in the floor tile and brick work, and there are so many beautifully subtle colors and gradients.  I love it myself.  But getting what I saw on Bagheera’s screen (Bagheera is my art room Mac) to match what I got from my printer, a very nice Epson R1800, turned out to be a royal hassle.  This JPEG doesn’t do it much justice either…but I wouldn’t expect much fidelity from a JPEG.  The printer was another story.  I spent a lot of money on it to get something I could produce art quality prints with and I had no idea it would turn out to be so hard.

The worst…and you may find this hard to imagine…was that damn beige wall around the brick archway.  I could not for the life of me get it right out of the printer.  I could get the tile floor.  I could get the brickwork.  I could get the lovely wood in the shadows, and in the bright golden light of the morning sun in Puerto Vallarta.  I could get the dog perfect…just perfect.  I could not get that goddamned beige wall.  It starts out with a distinctly reddish cast at the far end, and gradates over the stucco to the lighter, paler beige in the near end.  It is just lovely if you get it right.  But I kept getting a yellowish wall, or an orange-ish wall or some puke colored wall.  I was having fits until finally, just by accident, I hit on a combination of Aperture output settings and printer color settings that got it right, and I was able to give my customer a good print of it.

This…I thought…cannot be right.  I’d taken a profusion of notes during my struggle to get a good print of this image and looking through them the only thing I could say for sure is I had a combination of settings that would work on That One Photo and probably I’d have to do it all over again for any others.  I knew there was this thing called "color management" you could enforce…somehow…which was supposed to use the color profiles of your printer and monitor to make sure that what you see on the screen is exactly the same as what you see in the final print.  But whenever I looked into any of these color management systems they were all horribly expensive to buy and more complicated to install and use then I had the money or the time to fool with.  There had to be an easier way.

Last summer I was asked at the last minute to do the photography for a relative’s wedding. Some of the photos I took were with the Canon 30D digital SLR.  But some shots, the critical couple and family portraits were done with the Hasselblad.  I’ve been hemming and hawing for months now about getting them prints because I knew it was going to be a massive effort to get each individual print right.  They’ve been very patient, but it’s been embarrassing.

So I’m reading this article online about using Aperture to publish photobooks via Apple’s photobook service, and I see a simple, straightforward explanation of how Apple’s own internal color management system works that I’d never been able to find while I was struggling with the Puerto Vallarta photo…and suddenly everything snapped together for me. 

I had only a vague idea that Apple even had color management built into the operating system.  And there it was, laid out for me in an simple step-by-step process, to set it up in Aperture.  Apple’s system is called "ColorSync", and since it was built-in to the OS, it Was as simple as I thought it had to be.  Just a matter of getting the latest color profiles for my printer installed and then, in Aperture, switching on the onscreen proofing and making sure it was using the printer profiles.  The default is the Apple RGB space.  On the printer side instead of trying to set up a third-party color management system, I just switched on ColorSync.  When Aperture printed, I just had to make sure it was using the printer profile for the particular kind of paper I had in it when it sent output to the printer.  That was all I needed to do.

I ran a test print of the image above through it and it came out…perfectly.  Then I got into the wedding photos I’d taken last summer.  The wedding portraits were all taken outdoors under a tree with a little lake behind it and the lighting conditions kept varying because the bright puffy beautiful clouds in the background kept passing in front of it.  I picked out an image of the couple that needed some adjustments in the light levels and tweaked until I got everything to my satisfaction.  Then instead of making a test proof print, I just sent it directly to the printer using the ColorSync setup and the expensive high gloss paper.  I wanted to see the final product right up front.  It came out exactly right.

I was thrilled.  Now I could make as many art prints as I wanted and not have to worry too much about wasting paper and spinning my wheels searching for the right combination of printer settings to get something to print the way I wanted it to print.  I started work on the wedding prints I’d been promising my family…the southern Baptist side down in southern Virgina…for so long.  It was great.  Everything was coming off the printer perfectly.  Just perfectly.  I was delighted.

I’d printed up a nice 13" by 19" print of the couple’s wedding portrait, and thinking to myself with that sense of completeness and inner satisfaction an artist gets when you have a head of steam up and it all comes together and its all perfect that, Hey…They’re really going to like this…  Hopefully it’ll make up for the delay in getting it all to them…  And then I realized what I was doing.

It’s Valentine’s Day, I’m 55, I’ve been single almost all my life except for maybe that short affair I had with Keith ten years ago and even that was more a roller coaster of yes we are no we’re not yes we are no we’re not until he dumped me…I’m sick, absolutely sick with loneliness and despair is settling in to keep me company in my old age…and here I am happily, cheerfully even, working on other people’s wedding photos.  Like…this is what my life was always meant to be after all.  I exist, to serve other people’s happiness.  I was born to watch other people get a love life and settle down.  Keith settled down.  My first high school crush is happily settled down and has been for over thirty years now with the person he calls his soulmate.  And a certain heartless jackass I know in Arlington Virginia keeps telling me my problem is I just don’t work at it enough, like a sanctimonious billionaire who thinks the only reason people are poor is because they are lazy and just don’t want to work.

I get to watch it all…the parade of life.  I get to point my camera at it.  I get to make drawings and paintings of it.  I have the skill…and the eye.  I get to document it all as it passes me by.  That’s why I was put here on this earth I guess.  I think I saw it, finally, last night.

How I spent my Valentine’s day: I made other people’s wedding prints.  Trust me, it wasn’t what I’d planned on doing.  If someone had even suggested it I’d have laughed in their face.  I’ll do them later…just not Valentine’s Day.  Not when I’m so lonely while the whole fucking world celebrates being in love.  And it just…happened.  Like an omen.  Like a tap on the shoulder reminding me I have a place in this world, and that’s not it.  How I spent my Valentine’s day: I made other people’s wedding prints.

Well…I need to go get some more photo paper.  And…ink. 


[Edited a tad…]

by Bruce | Link | Comments Off on How I Spent My Valentine’s Day…

February 2nd, 2009

Microsoft Stealth Firefox Plug-In, Or, Where Does Bill Want You To Go Today?

Browsing Slashdot, I just came across this, and figured it needed sharing right away…

Microsoft Update Slips In a Firefox Extension

Posted by kdawson on Sunday February 01, @10:45PM
from the hitch-hiker dept.

An anonymous reader writes 

"While doing a weekly scrub of my Windows systems, which includes checking for driver updates and running virus scans, I found Firefox notifying me of a new add-on. It’s labelled ‘Microsoft .NET Framework Assistant,’ and it ‘Adds ClickOnce support and the ability to report installed .NET versions to the web server.’ The add-on could not be uninstalled in the usual way. A little Net searching turned up a number of sites offering advice on getting rid of the unrequested add-on."

The unasked-for extension has been hitchhiking along with updates to Visual Studio, and perhaps other products that depend on .NET, since August. It appears to have gone wider recently, coming in with updates to XP SP3.

Dig it.  Microsoft is not only trying to modified everyone’s Firefox browser, they’re doing it surreptitiously And in a way that makes it difficult for most home users to undo.

People switch to Firefox, largely because they are concerned about the many security flaws in Internet Explorer.  So what does Microsoft do?  Instead of making a better web browser, they infect the one people are turning to in order to have a more secure computer.  Here’s what I think: Microsoft didn’t do this simply to get its .NET technology into Firefox whether users wanted it or not…they did it to make users who are afraid to use IE, afraid to use Firefox too.  Because now you have no idea what new security holes Microsoft has opened up in Firefox.  This is an absolutely brilliant bit of Microsoft FUD (Fear, Uncertainty, Doubt). 

Somehow, I don’t think this is going to win them any fans.  Somehow I don’t think Microsoft gives a damn either.  Microsoft will never change its predatory behavior.  It needs to be broken up.


Some Microsoft droids on Slashdot are bellyaching that…well gosh, Adobe installs plug-ins onto Firefox and so does Sun in the form of its Java plug-in and golly a bunch of other software makers do that too so what’s so bad about Microsoft doing it?  You people just like to hate on Microsoft is all.  Which of course conveniently ignores the reality of Microsoft’s ownership of the operating system and the fact that this Firefox plug-in is being delivered in an update to the fucking operating system. 

Microsoft’s position for years has been that its browser (Internet Explorer) is part of the operating system and cannot be separated from it.  Fine.  Swell.  Great.  Really.  But Firefox is not part of the operating system.  So Windows updates need to leave it the fuck alone!  Or…at minimum…ask first.  I realize that asking is not part of the Microsoft vocabulary though…

by Bruce | Link | React! (1)

January 25th, 2009

Meanwhile, In Linuxville…

[Geek Alert…]

I run CentOS 5.2 here on Mowgli, the main workstation here at Casa del Garrett.  Those of you who’ve been with me for a while, may remember my "Clawing My Way To Linuxville" series of posts.  So far, I’ve been enormously happy with CentOS, which is basically Redhat Enterprise but without the proprietary Redhat parts.  Linux nowadays seems to be a perfectly acceptable replacement for Windows in a lot of applications.  So I was unimpressed, to say the least, to read all this over on Slashdot a moment ago…

Linux: Linus Switches From KDE to Gnome

An anonymous reader writes "In a recent Computerworld interview, Linus revealed that he’s switched to Gnome — this despite launching a heavily critical broadside against Gnome just a few years ago. His reason? He thinks KDE 4 is a ‘disaster.’ Although it’s improved recently, he’ll find many who agree with this prognosis, and KDE 4 can be painful to use." There’s quite a bit of interesting stuff in this interview, besides, regarding the current state of Linux development.

KDE and Gnome the two popular graphical user interfaces for Linux.  Think of them as the Windows part of Microsoft Windows.  Reading the Slashdot user comments about KDE debacle put me in mind of the disaster that was Windows’ Vista, but on a smaller scale.  This only affects one windowing system…the other is apparently still stable and usable.  But many Linux users find Gnome to be much too simplistic.  I use KDE myself, largely because of it’s flexibility and it’s feature depth.  I particularly like the copy buffer icon on the taskbar.  I use that a lot because the Linux copy buffer is not nearly as smoothly integrated with everything else as the Windows and Mac copy buffers are.  That’s the difference between Open Source and proprietary.  In Open Source land you have a lot of different people all doing their own thing while still trying to get along with each other somehow. 

I’ve been unaffected by this KDE issue.  CentOS isn’t bleeding edge Linux.  Sometimes that means there are features missing from it that the more trendy Linux distributions have.  But it is very stable and usable and that’s why I’ve kept with it.  That they have waited for KDE 4 to get itself sorted out before pushing it out to their user base really impresses me a lot now.  I had no idea all this was going on over in KDE-land and that’s because the CentOS software updates never forced it on me.  If my Linux desktop had broken the way some of these Slashdot commenters are complaining about I’d have been furious.

What you need to understand about Linux, for those of you still a bit mystified by it, is that Linux is just a kernel.  The kernel is the most basic part of a computer operating system…it’s the low level functionality that manages memory, input-output, loads and runs applications, and so on.  The part you and I interact with is called the Shell.  A shell can be a simple text based command-line or it can be a dazzling graphical interface with Windows and sound effects and all sorts of eye candy.  But basically the shell is the user interface…the part that allows you to tell the kernel what you want it to do, and get messages back from the kernel about what it’s doing.  There are also other "layers" that control things like the network connections and video display.  Think of all this as layers of an onion, with the user interface, the part you and I see, at the top and the kernel at the bottom, right next to the actual hardware which is at the very center.  That’s your computer the way the software running on it sees it.

Linux is just the kernel part.  Everything else is the layer stuff added onto it.  That layer stuff is usually packaged into "distributions" so you and I don’t have to spend hours if not days building everything ourselves from the kernel out.  Popular distributions are Redhat, SuSE, Madriva, Ubuntu, Debian.  There are tons of others, including such as "Scientific Linux" which some folks at work use, and Kbuntu, which is Ubuntu disaffected.  Each Linux distribution, or "distro", builds up and tweaks the layers in its own way.  Some are more targeted toward server usage.  Some, like Ubuntu, target the desktop user.  The thing to keep in mind is that they’re all different takes on how to build a complete operating system from the basic Linux kernel.

As I said, I run the CentOS distro nowadays.  It’s not nearly as trendy as Ubuntu, and there have been times I’ve been disappointed that it lags well behind other Linux distributions in terms of features and supported applications (I still can’t get the Amazon mp3 downloader to work on it)  But CentOS is a very stable platform to be running on, which I really appreciate.  I can do most everything I need to do on it, and what I can’t do on CentOS I can on one of my household Macs.  So I don’t need Windows anymore.  I have an XP license for Mowgli that I haven’t booted up in almost a year.  Its security patches are so out of date now that I’m almost afraid to.

CentOS, as I said, is Redhat Enterprise without the Redhat proprietary parts.  It’s all open source and "free" software.  The other thing you need to understand about Linux, is the Open Source part.  Open Source is free as in "free beer", but more critically to those of us who work with computers for a living, Open Source is free as in freedom.  That Windows XP license I have is a good example of what I mean. 

I had to rebuild Mowgli some time ago, when its motherboard failed.  XP uses an online license branding scheme that only unlocks Windows for use if you have a valid license key.  When you install it on a computer, you have to give it your key and it phones back to Redmond to verify that the key is genuine.  Then it grabs the serial number off your CPU, and the mac number off your network card and a few other unique IDs from various hardware components and then it computes a "brand" for your individual machine which it then encrypts and records somewhere.  Whenever you start Windows up it checks the brand against the hardware to make sure it’s still running on the same machine you installed it on. 

Suppose you have a hardware failure and you have to replace something with one of those unique IDs the brand was generated against?  XP will know when you boot it up after replacing hardware, that something changed.  So long as your license key was valid, it will simply recompute the brand.  But only up to two times.  After that, you must call Microsoft and ask for permission to reinstall XP.  You have to call Microsoft in other words, and convince the droid you’re talking to that you’re not pirating their software by copying it onto more machines then you bought a license for.

This is simply not an issue with Open Source software.  Your machine breaks…just fix it and re-install Linux.  Replace a motherboard?  No problem.  Need more power?  No problem.  Go ahead and upgrade anything on your machine.  Replace that memory.  Get a new video card.  Get a faster network card.  Upgrade the whole motherboard.  It doesn’t matter.  Need a second machine?  Fine.  Go ahead and install your copy of Linux on that one too.  Go ahead and give a copy to all your friends for that matter.  It’s no problem.

As a software engineer whose career has shifted a tad away from coding applications to designing and integrating systems, I’ve seen over and over how restrictive licensing demands from commercial vendors stifle productivity and innovation.  And it’s making people switch to Open Source more and more.  At the Open Source Developer’s Conference in Portland last year, a group of folks from one NASA project focused on satellite image analyis, told us how they chose several Open Source development platforms to do their experiments on, specifically because they knew they’d eventually have to scale them up to more powerful computers and they didn’t want to have to deal with re-licensing and re-branding their software every time they upgraded their hardware. Now whenever they need to upgrade the hardware they just pick their software up and plop it down on the new hardware and that’s that.  Free software is about Freedom, not free as in getting something for nothing. 

Some commercial Linux distros are trying to take a more Microsoft approach to their business model, and have instituted a limited software branding scheme.  They do that mostly to sell their maintenance services to the business community.  Redhat Enterprise now brands itself in a way similar to Windows XP.  But you don’t need to bother with Redhat unless you are a business and you would rather use their technical support then your own in-house IT staff to maintain your workstations.  Linux and other Open Source software is typically distributed under a license that allows anyone to use the software and freely incorporate it into their own proprietary software products, so long as the Open Source part remains open and freely re-distributable. 

That is how CentOS can distribute a Linux version that is almost Identical to Redhat Enterprise.  It is basically all the open source parts of Redhat enterprise, without any of the the proprietary Redhat stuff in it. So it’s missing, basically, the Redhat installer, the Redhat software updater, and a few other proprietary Redhat componants.  Open Source replacements exist for all those proprietary componants, so this is no problem.  You are completely on your own in terms of support…but that’s the other side of the freedom coin.  If you need support, then you can always buy a commercial distro.  End user licenses for those are usually a lot less expensive then a Windows license anyway.

A co-worker says that Open Source suffers from the "too many cooks" problem, and he’s right to a degree.  But this disaster with KDE just goes to show how that can be a protection from the one dictatorial grand and glorious vision that turns out to be crap…like Windows Vista.  No one company controls Linux.  Linus Torvalds still controls the Kernel he started so many years ago as a student project.  But the Linux kernel is one part of an Open Source community of people and software.  It’s not the whole thing that’s suddenly gone bad now, like Windows Vista, just one Open Source component, and there are actually many alternatives you can use in the meantime, Gnome being only one.  Freedom can be messy.  So many people going in so many different directions.  But that’s a good thing.

by Bruce | Link | Comments Off on Meanwhile, In Linuxville…

January 24th, 2009

A Little Household Computer Upkeep…

[Geek Alert…]

Well I installed the new 1 terabyte data drive into Bagheera (the art room computer) and copied the contents of the backup drive back over to it.  When that was done I did another Unix diff on the two drives and when it all looked good I restarted Bagheera with the new drive in place.  Because last time iTunes had given me the least amount of trouble, I started it up first.  As it so happened, this time around it was iTunes that gave me the most trouble, but I eventually got past it.

When I first installed the secondary data drive into Bagheera, I moved my iTunes library over to it on the theory that it having it there would give it space to grow independently of the system drive.  Replacing a system drive because you need more space is a bear of a chore, compared to replacing a drive that holds nothing but data.  And anyway the iTunes music library is data, as opposed to iTunes itself which is an application, so it belonged on the data drive.

As I recall it, last time I did this I simply went into the iTunes preferences dialogue and re-pointed it to the Music folder on the data drive and everything worked again.  This time when I brought Bagheera back up, iTunes had somehow convinced itself that its music library was now on the friggin’ backup drive and pointing it back to the new data drive did not convince it otherwise.  How that happened I have no idea.  In theory, the music library appeared in both places: the new data drive and the backup drive, which I had not dismounted when I rebooted Bagheera.  My guess is the backup drive appeared in the search path first somehow, and iTunes ignored the new drive and automatically re-attached itself to the library on the backup drive. And I could not convince it to go get its music files from the new drive no matter what I did.

After a little digging around online I found out that you have to let iTunes copy its library over to a new drive itself…you can’t just copy it yourself and then point iTunes to the new location.  So…first you point iTunes to the new location by going into Preferences and in the Advanced menu change the iTunes Music Folder location.  Make sure you have "keep the folder organized" and "copy music into the music folder when adding it to the library" checked.  Then you have to go to File -> Library -> Consolidate Library and iTunes will then copy all the music files from the old location to the new.

This was incredibly frustrating as I’d already copied the damn music files…but apparently iTunes now exerts more control over them then it used to…probably to strengthen the DRM technology, although Apple is said to be getting rid of all that soon.  You can’t just copy them yourself and tell iTunes where they are now.  You have to let iTunes do the copy.  So I sat there and watched iTunes copy over every music file I’d already copied over but when it was done it was satisfied and I could play my music again.

Next I fired up Aperture expecting another hassle.  See…I’d just replaced a drive is all.  When I formatted the new drive I gave it the same volume name as the last one, which is "Bagheera_Data_1".   So in theory all the files were in the same location pathwise.  If IMAGE_123.tiff was located in /Volumes/Bagheera_Data_1/Photos/Digital/California_2007/IMAGE_123.tiff on the old drive, then on the new drive wouldn’t you know it, it’s located there too.  Simple, no?  But as I said before, Aperture (and apparently iTunes now) uses a hidden volume serial number to locate where files are, instead of just the volume name.  So when I brought up Aperture last time with the new drive mounted it thought it was missing all its master image files, even though no, they were right where they always were, just on a new drive.  Why Apple does it this way I have no idea but it’s goddamned frustrating. 

And when Aperture came up so slowly that it seemed to have hung I thought for sure I was in trouble.  But apparently the Aperture 2 has smarts enough built-in that when it sees its master file references all broken it goes and looks for them in the most logical places…like…oh…the same Unix pathspec as before.  Wow…what a concept.  But that was why it was so slow coming up apparently, because when it did come up it had found and re-attached all its master image files correctly.


While all this was going on I decided to also start the process of migrating the Macs here at Casa del Garrett from OSX 10.4, otherwise known as "Tiger", to OSX 10.5, otherwise known as "Leopard".   I decided to use Akela, the 12" G4 Powerbook, as my guinea pig.  Akela has several devices installed on it, and some critical software like Photoshop (you are allowed to install one copy of Photoshop on a desktop computer and a laptop so long as both machines are yours).  It also had the Wacom tablet installed on it too, for times when I went on a road trip and I wanted to be able keep on doing my cartoons on the road.  I wanted to see if a straight system upgrade would break any of my critical applications and the Wacom or not.

I have two Macs here at Casa del Garrett: Akela and Bagheera.  So I need two licenses for Leopard.  But really, I only need one install disk.  So I asked one of the nice Apple droids at the Apple Store at Towson Town Mall if I could buy two licenses on one install media.  No, says she, not two…but you can buy a family pack of five licenses.  Well, says I, I don’t need five, only two, so I reckon I’ll just buy two individual install discs.  Oh, says she, but a family pack costs less then two individual install disks.  What??? 

It’s true.  One OSX 10.5 upgrade disc costs $130.  A family pack license, which includes the install disk of course, costs $200.  So buying five licenses, even though I only need two, saves me $60. Not bad, except I’m wasting three licenses…and before anybody asks, according to the license terms I can’t just give them to anyone who doesn’t actually live under my roof, unless they’re a family member off in school somewhere.  But my nephew is running a Windows laptop (which I bought him), so he doesn’t need it.  My niece will probably be running a Windows laptop too when it comes her turn.  But I have to like Apple for making it cheaper to buy five licenses then two, when they could have just priced the family pack such that it was a deal only if you were going to buy three or more.  It saved me $60 bucks.

I backed up Akela and tested the backup by booting off the backup drive before installing Leopard.  If this was the only thing Apple did better then Microsoft I’d be running Apple products here at home all the same.  Being able to recover from a system disk failure by booting off the backup drive is wonderful.  You just can’t do that with Windows…the license branding scheme alone prevents it and Windows has always been funky in the way it uses special hidden files that you can’t copy to a backup drive while its running in order to operate.  Unix like systems, which is what MacOS is these days, don’t do that to you.  At some point I’d like to get something like that going on Mowgli, but booting off a USB drive on an Intel box is more problematical.  I don’t think Mowgli’s current hardware allows it.  On the Mac you can boot off of external Firewire drives, but at least on the PowerPC machines not off of a USB drive.  I think you can on the new Intel based Macs though.

Installing Leopard on Akela turned out to be a very simple process, and so far everything looks good.  I’ll give it a more thorough test tomorrow.  In the meantime, everything is still looking good on Bagheera.  Since Bagheera is so important to my art room work, I’m going to work with it for a couple weeks I think, before proceeding on with my plan, which is to upgrade Bagheera’s system drive and then upgrade it to Leopard.  The current system drive on Bagheera is only 75 gig and I’m up against the line on it.  300 gig drives are selling at Best Buy for around $60, so I may just buy one of those and install it when I’m convinced the data drive upgrade didn’t break anything.  One thing at a time.

by Bruce | Link | Comments Off on A Little Household Computer Upkeep…

January 23rd, 2009

Upgrading Bagheera…(again)

[Geek Alert…]

One reason I started this blog once upon a time, was as a way of journaling.  I hadn’t kept a diary since I was a teenager, and I thought it would be useful to have a journal I could reference from time to time.  I note here, that back in March of 2007 I wrote a series of posts about upgrading Bagheera’s (my art room Mac) data drive from 200 gig to 500

This was back when my Big Scan Project (wherein I am running all the film I’ve ever shot through the Uber nice Nikon Coolscan 5000 ED film scanner I bought back in December of 2006) was starting to really fill Bagheera’s data drive.  The plan was that, hopefully, the price of disk storage would keep going down, so rather then buy several terribytes of hard disk space upfront I would just replace the data drive when it got full and hopefully the next step up would be affordable by then.

I further note in my blog archives that I bought Bagheera back in October of 2004, from the local Apple store in the Towson Town Mall.  Bagheera as I recall didn’t have a second hard drive in it when I bought it.  I added the 2 gig drive at a later date but I don’t see it noted in my blog posts when I installed it, just a first reference to it on November 2005.  I started the Big Scan in December of 2006.  By March of 2007 I needed to upgrade the 200 gig drive to 500.  It’s January 2009, and the 500 gig drive is almost full.  Time to buy more.

I was going to go for 2 terabytes but I couldn’t find 2 locally and my favorite online computer parts store, Directron, didn’t have any for sale, surprisingly, because I know I saw them selling 2 terabyte drives a couple months ago when I was noticing I was getting close to the line on the 500.  But I am up against the line now and I have some projects I can’t do without more disk space so I went to Best Buy and bought a 1 terrabyte Western Digital SATA for Bagheera.

It’s down in the art room now.  Some things have changed since the last time I did this.  For one thing, I’m using SuperDuper as my backup software now, not Retrospect.  Retrospect put everything into one great big backup file with a companion index file…similar to the way a lot of backup programs work.  SuperDuper simply makes a straight file copy of everything onto whatever other drive you point it to, making the backup drive’s file system identical to the one you’re backing up.  What I like about that is that if my data drive fails for whatever reason, I can just plug in the backup drive (after making a safety copy) and I can get right back to work.  Or I can just pull off files directly from the backup drive if and when I need to revert back to a previous copy of something. 

But Retrospect had one feature that SuperDuper does not and that’s it does a verification pass after it’s done backing up.  So I’m currently doing a Unix diff command on the two drives to make sure everything on the backup drive is good before I pull the old data drive out.

I use two Western Digital USB/Firewire external drives for my backups and keep one in my desk at work and the other here and rotate them weekly.  I do this with Bagheera’s system drive too.  The nice thing about Apple computers is that you can make a bootable copy of your system drive onto a Firewire external drive and if your system drive ever fails you can boot directly off the backup drive.  I love that…it gives you much peace of mind.

The other thing that’s changed is I’m running Aperture 2 now.  In my previous post I wrote about how Aperature made upgrading the data drive difficult because it would not use the volume name to get the path back to its referenced image files.  So after I copied over my image library back over to the new drive, Aperture complained that it couldn’t find its reference files and I had to manually "reattach" the masters.  Hopefully Aperture 2 does all that a little more elegantly now.  We’ll see.

So right now Bagheera is doing a ‘diff’ on the data drive and the backup drive.  I expect that to take most of the rest of the night.  When that’s done, if the diff found no problems, I’ll start doing the drive swap. After I get that taken care of, the plan is to upgrade Bagheera’s system drive and upgrade to Mac OSX 1.5 (Leopard).  I’m still at Tiger, largely because I am not sure how well Leopard will run on the only single processor G5 Mac Pro Apple ever made. 

It took two months shy of two years to use up the 300 gig of extra space I bought back in 2007, but I’ve been spotty about sticking to the Big Scan.  If I’d run Bagheera and the scanner constantly it would have probably taken less time, but I have other things I want to use Bagheera for besides scanning in old (and new) film, so the Big Scan is an off and on project. 

Sometime this coming year I may well purchase a more powerful Mac Pro for the art room.  Four years is pretty old in computer years, and already I’m seeing Mac software out there that won’t run on Tiger.  But upgrading Bagheera is budget and work status dependent.  If I’m looking for another job by the end of this year, like a lot of other Americans already are, I may be worried about more then how slow my art room Mac is getting.  If I do it though, I’ll make the old machine into a dedicated film scanner and then just keep running film through it.

by Bruce | Link | Comments Off on Upgrading Bagheera…(again)

January 5th, 2009

A Little Of What I Do For A Living

[Major Geek Alert…]

Some of you may have read the news items about Microsoft’s Zune player freezing up on its users last December 31st. The problem it turned out, was in a bit of software that calculates how many days since January 1st the current date is.  I’ve no idea why the Zune’s software needed to do that, but it isn’t important to what I’m about to show you.  I have fun doing the work I do, in a techno geeky kinda way, and I want to share a bit of that fun with you.

The code that caused that particular bug was leaked out into the wild.  Here’s the relevant fragment:

  while (days > 365)
      if (IsLeapYear(year))
          if (days > 366)
              days -= 366;
              year += 1;
          days -= 365;
          year += 1;

Don’t panic…it’s just code.  Code is to a computer program what a chart is to music.  It’s not so much the program, as instructions for how to create the program.  It’s more human readable then the machine language code microprocessors digest, although that might seem a tad hard to believe if you’re seeing code here for the first time.  It’s a kind of highly structured syntax that is precise enough to describe, step-by-step, a series of actions the computer needs to perform.  That series of actions is called an ‘algorithm’.

An algorithm is a series of steps needed to perform a specific task in a specific time.  So for example, consider the steps necessary to bake a single cake.  Those steps constitute an algorithm because they perform a specific task in a specific time.  The task is baking a cake.  When the cake is baked you are done.  Note that a specific time isn’t necessarily a specific amount of time.  The important thing is there is an end to it somewhere. The steps needed for a cake factory to make ‘cakes’ is not an algorithm because there is no defined end to the task of baking cakes.  It could be one cake or many.  But you can repeat the algorithm for baking a single cake as many times as you like, once you have it defined.

Writing computer programs is essentially the art of creating well defined, simple, straightforward algorithms.  If you’ve got a head for that, the rest is a matter of mastering a particular programming language or more.  The code fragment above is in a language called C++.  Never mind why it’s called that and not something more warm and friendly like Fred or Ethel.  Computer geeks are weird like that.

This code fragment is from a larger bit of code that tries to determine the number of years the current year is from the year 1980, and the number of days since January 1st.  Never mind for now Why.  Just focus on the task: to get the number of years since 1980 and the number of days since January 1st. 

The function this code fragment lives in receives the current date in the form of the number of days since January 1, 1980.  This seems odd, but it is how computers tell time.  At the most basic level, they are merely counting fractions of seconds from a given starting point.  Consider that a mechanical wrist watch (like the one I wear) tells the time only by counting ticks.  If you know how many ticks there are in a second, then you can compute the second, the minute, and the hour by counting the number of ticks and that is just what a mechanical wrist watch does…mechanically.  Computers do pretty much the same thing electronically, but their ticks are much smaller, and far more precise.

We know there are 365 days in a normal year.  So if we get a number that’s, let’s say 10220, we might just divide that by 365 to get the number of years that have passed.  But the added factor of having leap years makes it less simple then that. 

Now let me try to make some sense of that C++ code for you.  As I said, it’s a highly structured syntax that precisely describes the steps a computer program must perform.  Just ignore the brackets…they’re just there to mark off specific sections of the code.  Don’t worry about them.

At the beginning of the code you see the word "while".  This is a Keyword in the C and C++ languages and it denotes the start of a program Loop.  A loop is a series of steps that are repeated.  They are very useful for repeating a series of steps over and over as just a few lines of code instead of one or more lines repeated exactly for every time the steps need to be executed. If, say, you had to do something a hundred times you would write the code to loop through the same steps a hundred times, rather then writing the same steps a hundred times in the code.  If the steps change, then that’s a hundred changes you need to make.  If you’ve written it as a loop you only need to change it once. 

Loops are also helpful if you don’t know ahead of time how many times you might have to repeat a particular set of steps.  In the cake baking example for instance, you might have to stir some ingredients until they are mixed properly.  If you were coding that, you’d write it as a loop where you stir the mix, and then test to see if it’s mixed well enough to stop.  If not, stir once more.  Test…stir…test…stir…  And so on until the the test says you can stop stirring now.

That test is important.  It tells you when you can stop stirring.  For now just hold this thought: it is important to have a way out of a loop.

The keyword "while" has a test enclosed in the parenthesis next to it: (days > 365).  This test compares the variable "days" against a literal value of 366.  Think of a variable as a post office box with a name on it, and something inside.  In this case, the variable is named "days" and it holds a number that represents a given number of days.  This variable is set elsewhere in the code and we don’t need to know why or how at the moment.  We’re just looking at what this one bit of code does. 

The ">" symbol is an Operator in the C and C++ languages, which means "greater then"  If "days" is "greater then" 365 then the next lines of code are executed.  This test is at the beginning of the loop, which means the condition is tested first before any of the code in the loop is executed.  If the test is true, the loop is entered.  If not, the loop is never entered.  So the loop takes a value for a number of days at its very beginning.  If that value is greater then 365, the rest of the loop executes.  If it isn’t, the loop is skipped over.  Think of it as saying "while the value stored in "days" is greater then 365, do the following…"

So we enter the body of the loop.  The next line is "if (IsLeapYear(year))"  Let me unpack that.  The word "if" is another keyword, and it denotes a logical test.  You are testing if something is, or is not true.  The part in the parenthesis is the thing you are testing.  IsLeapYear(year) is a function call with its own set of parenthesis.  Functions are bits of code that return a value.  This particular function returns a value of either true or false.  We don’t need to see how this particular works for this example…just that it will return either "true" or "false" back to our "if" test.  The word "year" in its parenthesis is another variable and it holds a number that represents the number of years since 1980. 

So we are passing in to the function IsLeapYear a number, and it returns either true or false depending on whether or not the number we give it, translates into a leap year.  Remember, we’re counting the number of years since 1980.  Lets say we make "year" equal to 3.  We could as easily write the call as "IsLeapYear(3)", and it would return false, since 1980 plus three years is 1983 which was not a leap year.

Okay…still with me?

An "if" test tests a condition, and the lines of code following the test are either executed or not depending on whether or not the test passed or failed.  If IsLeapYear(year) returns true, then the next line is executed.

The next line is another "if" test.  if (days > 366).  This test compares the variable "days" against a literal value of 366.  It is like the test at the beginning of the loop.  If "days" is "greater then" 366 then the next lines of code are executed. 

These next lines actually do something.  the line "days -= 366" means "take the value that’s stored in the variable named "days", subtract 366 from it and store the result back in that variable.  The line "year += 1" means "add one to the value stored in the variable named year and put the result back in that variable". 

A couple brackets on down (I told you to just ignore them) there is the word "else"  It is another keyword that works with the keyword "if" to denote lines of code to be executed if the if test above fails.  So in other words, if IsLeapYear(year) returns false, then the steps following the word "else" are performed.  Think of the whole thing as "if it’s a leap year do this…if it isn’t (else) do that…"  In this case, that is "subtract 365 from the value of the variable named days", and "add one to the value of the variable named year".

So…still with me?  This is what the code is doing.  The algorithm it embodies is this:

1) Repeat the following for as long as the value of "days" is greater then 365:
2) Check to see if "year" is a leap year.
3) If it is a leap year, check to see if the value of "days" is greater then 366.
4) If it is, then subtract 366 from "days" and add 1 to the value of "year"
5) If "year" isn’t a leap year, then subtract 365 from "days" and add 1 to the value of "year"

There is our loop.  Basically, it is taking a number that is the number of days since 1980, and subtracting 365 days for every normal year, 366 for every leap year, and when it finishes you should have a count of the number of years since 1980, and what’s left over is the number of days since January 1st.  Simple…no?

The bug in it is subtle.  Let’s run through it for December 31, 2007.  Lets say we have run this loop for a while and now we have a value of 26 in "year".  The value of "days" is 730. 

1) The value of "days" is greater then 365…so we do the loop again.
2) Check to see if "year" is a leap year.  26 years since 1980 is 2006.  2006 isn’t a leap year.  So the code following the "else" keyword is executed.
3) We subtract 365 from "days" and add 1 to the value of "year"
4) We’re at the beginning of our loop again.  The value of "days" is 365.  365 is not greater then 365.  So the condition for continuing the loop is now false.  So now we can exit the loop.
5) The end values are, year = 27, days = 365.

Okay.  That works.  But now let’s try it for December 31, 2008.  Lets say we have run this loop for a while and now we have a value of 27 in "year".  The value of "days" is 731.

1) The value of "days" is greater then 365…so we do the loop again.
2) Check to see if "year" is a leap year.  27 years since 1980 is 2007.  2007 isn’t a leap year.  So the code following the "else" keyword is executed.
3) We subtract 365 from "days" and add 1 to the value of "year"
4) We’re at the beginning of our loop again.  The value of "days" is 366.  366 is greater then 365.  So the condition for continuing the loop is still true.
5) Check to see if "year" is a leap year.  2008 is a leap year.  So the code following the "if" keyword is executed.
6) Check to see if the value of "days" is greater then 366.  366 isn’t greater then 366, it’s equal to 366…so the code following the "if" keyword is not executed.
7) We’re at the beginning of our loop again.  The value of "days" is still 366 and the value of year is still 28.  366 is greater then 365.  So the condition for continuing the loop is still true.
10) Check to see if "year" is a leap year.  The value of year wasn’t changed by the last run through the loop.  It is still 2008 and 2008 isn’t a leap year.  So the code following the "if" keyword is executed.

(can you see this thing starting to run away now…?)

11)  Check to see if the value of "days" is greater then 366.  366 isn’t greater then 366, it’s equal to 366…so the code following the "if" keyword is not executed.
12) We’re at the beginning of the loop again…

And that’s where we will keep on ending up until the heat death of the universe, or the Zune’s battery dies, whichever comes first.  This is why the Zunes all locked up on December 31st, 2008.  The code works fine during a normal year, and on every day but the last day of a leap year.  But on the last day of a leap year that loop will run indefinitely, because there is no way out of it on that one day.

Since this code was leaked out into the wild, everybody who does this for a living has an opinion on how to write that algorithm better.  There is a kind of fine art and a pure pleasure to some of us in crafting tight, simple, elegant algorithms and some folks have their own deeply held religious beliefs on how to do it best.  I haven’t had time to really wrap my head around what this algorithm is doing, but for kicks and grins I might try to write a better version of it myself later.  It’s kinda fun to take something like this and try to craft something simple and clean and so logically pure it’s beautiful just to look at.  But I’m in a testing and deployment phase of the project I’m one at work now though, and what went through my head when I saw this was they obviously didn’t test how it behaved during a leap year.

This is the world I live and work in.  This is what programming is and what programmer’s do.  We build these tight little algorithms and embody them in computer code that hopefully allows you to get things done.  Except when they don’t.

[Edited a tad to explain the test at the start of the loop, and make some of the rest of it clearer…]

by Bruce | Link | Comments Off on A Little Of What I Do For A Living

Visit The Woodward Class of '72 Reunion Website For Fun And Memories,

What I'm Currently Reading...

What I'm Currently Watching...

What I'm Currently Listening To...

Comic Book I've Read Recently...


This page and all original content copyright © 2015 by Bruce Garrett. All rights reserved. Send questions, comments and hysterical outbursts to:

This blog is powered by WordPress and is hosted at MomoWeb. Some custom design was done by Winters Web Works. Some embedded content was created with the help of Adobe Photoshop for MacOS and/or The Gimp. I proof with Firefox on either Windows, Linux or MacOS depending on which machine I happen to be running at the time.