Software or Hardware?

For a long time I collected Motorola radios. I soon realized a “trick” — a lot of them had the same ‘guts’ and just had different software controlling them. If you cut the little “stopper” off of the channel knob on the channel knob and changed 2 bytes in the firmware, you had a 16-channel radio.

The higher-end radios were even more seriously software-dependent. The price of a radio could go up hundreds of dollars (thousands when new) depending on the features it has. But it turns out that the whole series had the same hardware, and various features were loaded via software. (This was actually publicly-known.) Soon, people realized how to suck the software out of one radio and drop it into another radio, and suddenly most hobbyist-owned radios had just about every feature possible.

I’m getting out of the radio trade, though. I began by getting a lot of two Canon digital SLRs off of eBay. The two cameras were very similar: both, in fact, had the same sensor. I kept the 10D, which was bigger and had a solid-metal casing, and sold the 300D, which was smaller and had a silly silver plastic case. Mine has a bunch of features that the 300D didn’t: ISO3200, the ability to control flash brightness, and a whole mess of “Custom Functions” that let you fine-tune things, to name a few.

It turns out that I was more right than I realized about them being closely related, though. There’s a firmware hack that brings a lot of the 10D functionality to the 300D. (All the ones I mentioned and then some!) Of course some features are missing: you can’t select autofocus points, for example.

But it’s interesting to learn that model differentiation via ‘crippling’ features in software is more prevalent than I’d once believed.

Stupid, Stupid!

In Windows, often I’ll open something from the web, edit it, hit save, and then close it.

And then I have no clue where it is, because it saves it to a “Temp” directory.

Worst of all, because you open it from the web and not disk, it doesn’t how up in “Recent Documents.”

There are several ways this problem can be fixed. But no one has. It’s been a problem for years, too. And I can’t stand it!

Errors

I think I’ve mentioned that I’m running experimental software for my desktop environment. So every now and then it crashes. And the first time I log back in after my desktop environment crashes, I get this bizarre error: “Nautilus can’t be used now due to an unexpected error.”

I know that Nautilus is GNOME’s file manager, but I bet not everyone does. So imagine that your computer randomly locks up and, when you come back, the only thing you get is this message that a program you’ve never heard of can’t start for unknown reasons.

Of course, knowing what Nautilus is doesn’t help. Why is it starting a file manager? Well, apparently, because it draws the icons on my desktop.

But there’s a little “Show more details” box. (Kudos on this, BTW: it’s a good way to accommodate both the technical and the non-technical people.) Here’s what it says, verbatim

Nautilus can’t be used now, due to an unexpected error from Bonobo while attempting to locate the factory.Killing bonobo-activation-server and restarting Nautilus may help fix the problem.

And what does that mean? What factory is Nautilus looking for (is that even a technical term?)? What does Bonobo have to do with it? Why is there no space between “factory” and “Killing,” making it look like it’s looking or a file called factory.Killing?

I like the idea of having a simple error with the option to see the technical explanation. That’s a really good idea, and a great usability enhancement. But some notes:

  • An error saying that something meaningless to the user can’t be used for unknown reasons really conveys no information at all.
  • The technical explanation is even worse. Even when you figure out what Bonobo is, the explanation is bad. What was the unexpected error? If it keeps coming up, how might I go about fixing this “unexpected error” that I can’t even see? What does locating the factory mean? Is it a file path issue? Is it safe to kill bonobo-activation-server while I’m working, or will it bring everything down? Am I killing it or restarting it? Or will Nautilus do that? Why isn’t there a “Try to fix” button to do exactly what it tells me to try?

Maybe it’s a step in the right direction, up from “Error -134239520439: An error has occurred in UNKNOWN” type stuff. But if the error message ‘knows’ how to fix the problem, why doesn’t it do it? And why can’t error messages ever give a good explanation of what happened? What’s wrong with, “Nautilus has failed to start. Without Nautilus, your desktop will not have any icons. Click on ‘Show more details’ to see what happened and how to fix it,” with not just an OK (or “Dismiss”) button, but an “Autofix” button?

GMail

So I’m now forwarding all my e-mail to GMail. (Mostly because OWA is the worst mail client ever.) As you’re probably aware, there are sponsored ads. (Actually, I’m not sure why Adblock Plus isn’t catching them, but I digress.)

Today one of the other members in the Democrats here e-mailed me. His e-mail didn’t even discuss anything political, but I guess it picked up on the word “Democrats” in his signature. The ads were mostly about Ron Paul.

But the best… I just e-mailed one of my professors saying that I’ll miss her class tomorrow. The ads on the side are now for TheFakeDoctorsNote.com: “Print A Doctors Excuse Instantly.” How convenient!

phototool

If I had more time right now, and was more familiar with how to parse EXIF data in shell scripts, I’d write a script that could parse a directory (or set of directories) and:

  • Weed out duplicates. (MD5 hashes would be fine.)
  • Adjust (based on manually-inputted corrections) timestamps on photos for a given camera. Mine was a day off. Someone else had the right date but set the year as 2008. This is just what a shell script is for, no?
  • Optionally, sort photos by:
    • Date (imagine 4,820 photos from about five people, being sorted into 14 folders, one for each day.)
    • Camera (indirectly, person)
  • Resize photos

Imagine if one command could transform these 4,820 photos into a set of 14 folders, one for each day, and resize them all to 1600×1200.

I come across needs like this often enough that I might just have to look into writing this…

Blog Work

I wanted to mention a few things I was thinking of / plan to do on the blogs, to invite comments / suggestions.

  • The /main interface…
    • Should be the main page. I’m hoping this will be easy to accomplish. (WP makes heavy use of mod_rewrite, something I haven’t used before.)
    • Should truncate posts at some reasonable length.
    • Should show the blog something was posted to, not the author of the blog.
      • This is more of a pedantic thing, but it’s correct.
      • I have this and /meta, a blog about the blog. Both show up as “n1zyy”
  • The timezone seems seriously screwed up?
  • Some of the templates need work
    • A few (nonzero, featured on Andrew’s site, in particular) have all sorts of random crap in them, such as ads / strangers’ Flickr galleries. These need to be removed.
  • home.php doesn’t exist, which results in errors beings spewed everywhere
    • I wonder if I can just touch it.
  • I really, really need some caching going on here
  • Should I import all the old posts?
    • Part of the problem is that there are lots of lingering links to exact pages. WP uses a new URL format, so even if I import everything, old links will be broken.
      • This would help spur people to remove ancient links?
    • I haven’t really had anyone ask. I don’t want to go importing someone else’s old content to my website if that person doesn’t want me to.
    • Many of the people haven’t yet indicated any interest in renewed activity here.
  • I want to play a bit with the concept of shared categories; e.g., we could have a “Computers” category at, say, /computers, where posts by any of us with the the category of “Computers” would show up.
    • This would be somewhat of a pain, as each of us has our own list of categories.
      • Coding around it is entirely possible, but would require multiple levels of queries… Which is fine if people are interested, which is what I’m wondering
    Oh, and one more–doing ordered lists in the “Visual” composer is really screwed up. I keep having to fix it in the Code view. But that’s one for the WP devs, not me.

    Writing Code

    A few things I’ve learned in writing code:

    • $huge_array is a perfectly valid name for a large array… Until you realize that you were actually trying to create a hash, which is apparently not a PHP feature at all, in which case you suddenly realize that you’re going to need like six $huge_array’s… In which case I broke down and gave them decent names.
    • To determine if something is sound programming practice, try it and see if the program crashes, or, in my case, if PHP throws errors. If not, you’re golden.
    • The PHP.net manual is amazing. I just learned how to use foreach() tonight.
    • Coding is like swimming: even if you’ve gone years without exercising the skill, you can pick it up in no time. And also like swimming, if you’ve sucked at it all your life, you’ll still suck at it just as much later on.
    • When you can’t think of a good way to code in a feature, just put in a comment indicating what it should do. (So far, though, the PHP compiler hasn’t done a very good job with filling in code based on my comments…)