To complete this picture you need a USB thumb-drive on the far right.
July 26, 2008
July 25, 2008
Trained Open Source Security
So it’s a matter of training. And that’s pretty much true of Open Source security models. Think of Open Source software. Having a bunch of random people look at the code to tell you if it’s secure won’t work. If you have well-trained people who look at the code, that will work! Open Source just means you can see it, it doesn’t guarantee that the right people will see it.
The interview is much broader, and worth reading.
July 23, 2008
Wow, Macs Really Are Easier
Atul Varma learns to love his Mac
…In a nutshell, though, I had always assumed that Macs were only marginally easier to use than PCs. I guess I’ve found over the past two months that in some ways, this holds true—the Mac is essentially an incredibly sexy-looking PC, with the same annoyances and a few polishes that make it a bit more humane to use. In other ways, however, the difference is truly like night and day.
This is a story about such a situation.
… I had to go through 8 wizards in all, so that’s a grand total of twenty-four clicks required to unplug my keyboard and mouse from one side of my computer and plug them into the other side. I’m not actually installing brand-new hardware here.
The first time I had to plug this keyboard and mouse into my Mac, I was floored. In the best-case scenario, I expected it to think for a second or two and then give me a reasonably unintrusive message informing me that I could use my USB mouse and keyboard. That would have been pretty humane.
But it did one better.
The Mac didn’t tell me anything, because my mouse and keyboard just worked the moment I plugged them in. When you plug in a power cable or a pair of headphones into a computer, you don’t get some kind of confirmation message from your operating system, because it’s obviously supposed to just work—why should plugging in a USB keyboard and mouse be any different?
… I have to admit that when it all adds up, I find my Mac to be significantly easier to use than my PC.
July 19, 2008
Cabinets
I don’t close cabinets after I open them. Every cabinet in my kitchen is open.
This is an inverse of a few other people’s quirks.
You have to re-open any cabinet you close to use it again. Leaving them open is faster, and it lets you more quickly scan their contents. If you are ashamed of what’s in your cabinets…. fix that problem, don’t cover it up with a cabinet door!
There is only one exception to this rule. My bathroom cabinet gets closed, but only so I can use the mirror on it.
Now this all makes good sense. But, I can’t help but wonder if I do this because it’s the right answer … or for some other reason, and the rest is just rationalization.
July 17, 2008
Null-Terminated Argument Lists
I was using +[NSDictionary dictionaryWithObjectsAndKeys:] to make a new dictionary, but one of the objects in the dictionary was the result of a call to a method that was returning nil
, so the dictionary was incomplete.
This got me thinking about NULL
/nil
terminated argument lists. I don’t think they are a great idea (the compiler should be able to handle the list-termination for you!), but I think they are an especially bad idea in Objective-C.
The problem that it’s very common to have a nil
object in Objective-C, relative to, say C++. Many Cocoa methods return nil
on error. Since doing stuff with nil
(generally) won’t cause an exception, these nil
s stick around much longer then in other languages. As you can see, nil
is a pretty poor choice of a sentinel value.
It’s the 21st century! The compiler could tell an Obj-C method using a variable-argument-list how many arguments are in the list. This is trivial when all arguments are of type id
. Since Obj-C methods use a radically different syntax from C functions, it shouldn’t effect existing C-code. Unfortunately, I don’t see this being added, because Objective-C is already so mature.
In the meantime. Be a little more suspicious of any objective-C methods taking a NULL
-terminated list. I wish I had a perfect solution to avoid them, but I don’t! Sometimes they are the best way to do something. If you have a great work-around for constructing, say an NSDictionary
with a variable number of key/values please let me know!
July 16, 2008
Determinism and Bending the Rules
There is a very clever little experiment that you would be amused by, run by my colleague Jonathan Schooler. He has a bunch of students read a paragraph or two from the Francis Crick book, Astonishing Hypothesis, which is very deterministic in tone and intent. And then he has another group of students reading an inspirational book about how we make our own decisions and determine our own path. He then lets each group play a videogame in which you’re free to cheat. So guess who cheats? The people who have just read that it’s all determined cheat their pants off.
—Tom Wolfe and Michael Gazzaniga discuss neuroscience, psychology, status, and free will over at Seed Magazine.
(Via Big Contrarian.)
July 15, 2008
Using a File Erasure Tool Considered Suspicious
I have often recommended that people use file erasure tools regularly, especially when crossing international borders with their computers. Now we have one more reason to use them regularly: plausible deniability if you’re accused of erasing data to keep it from the police.
Finder -> Secure Empty Trash
July 14, 2008
Crash Reporter Prefs
/Developer/Applications/Utilities/CrashReporterPrefs.app
can make crash reports much more useful. It will show crash-reports for background processes, and stack-trace in the notification dialog.
Crash report-files are stored in ~/Library/Logs/CrashReporter/
Unfortunately, crash reports are not sent back to third-party developers, even when you send them to Apple.
EDITED TO ADD: This still works in Snow Leopard (Mac OS X 10.5.6)
July 10, 2008
Money and Sales are Not a Metric for Good
Sergey Solyanik recently explained why he left Google for Microsoft.
The second reason I left Google was because I realized that I am not excited by the individual contributor role any more, and I don’t want to become a manager at Google.
And I don’t know enough about Google or Microsoft’s management culture to offer any insight on this point.
I can’t write code for the sake of the technology alone – I need to know that the code is useful for others, and the only way to measure the usefulness is by the amount of money that the people are willing to part with to have access to my work.
He goes on to say that Microsoft measures everything in money, but at Google there are “eye candy” projects that are free, so he does not feel successful making them.
Now I feel the same way about writing code for the sake of technology alone. It is ultimately unfulfilling. And I have great respect someone who knows what they want to do, and does it. But I strongly feel that sales and profit are not the right metrics to measure how useful something is. There are several reasons for this
Customers and users are not the same thing.
Maximizing profits is distinct from, and often antagonistic to, maximizing quality.
The marketplace is too chaotic and relative to measure quality.
Ironically Microsoft Office 2008 For Mac is the perfect example. It’s the best selling version of Office for the Mac ever. If sales are a metric, it should be the best version of office. But it’s not (v5.1 may have this honor, at least for Word). Why it sucks is it’s own series ; I won’t go there for now. There are two big reasons why Mac Office 2008 sold so well in spite of it’s poor quality.
Firstly, there are more Mac users now then at any point in history. And Mac market-share is still rising. When 2.5x as many Macs are being sold today as 2 years ago it would be very difficult not to sell more copies of a popular Mac software package!
Secondly, 3 years ago, Apple switched from PowerPC to x86 microprocessors. Non-x86-native versions of office run excruciatingly slow on x86 computers. Microsoft made a “business decision” to not support Mac Office customers by denying them an x86-native update for versions of Office prior to 2008. There was a two-year period when the only Macs Apple would sell you had x86 processors, and the only version of office you could buy was not x86 native. This really sucked for users. But it paid off for Microsoft. They saved money by not supporting customers (which means higher profit, which is the only metric of good software, right?). But more importantly, it crippled older versions of office, which forced people to upgrade. People who would normally say “Well, I paid $500 for my copy of Office, and it may be old, but it does what I need, so I’ll skip the ‘upgrade’ and stick with ‘ol reliable, thankyouverymuch!” now had a horrible reason to upgrade. It isn’t that Office 2008 is so much better then other versions of Office, it’s that older versions of Office stopped working!
Customers != Users
I am a Mac Office 2008 user, but not a customer. Personally I think it’s is a shitty product, and I hate using it. But my employer’s IT department bought it for me, since it’s the only way to get Entourage, the lame Outlook clone for the Mac. And Entourage is the only way to get notifications from the company’s Exchange server whenever I get an email or calendar update, so I have to use it every work day.
You can’t look at the sale of Mac Office that I use and say “Vincent thought it was worth $500”, because that’s not what happened! What happened was that “Some company that Vincent works for thought it was worth $500…. because it played nice with their email server“. I hardly enter into the fucking equation at all! It’s more about the email servers then me, and I have absolutely no input on how the email servers were set up 10 years before I was hired.
Chaotic Market
And about that $500 figure ($499.95 is the estimated retail price of “Office 2008 for Mac
Special Media Edition”, and $500 is a nice round number so I’m sticking with it). Pricing is a black art. (That article is 5000 words, but I do think it’s worth reading). The only Office 2008 product I use every day is Entourage. But you can’t buy just Entourage, you have to buy it as part of an “Office 2008” bundle. And Microsoft loves to segment it’s pricing
So it’s unclear what you are buying, why, or how much of the money you give Microsoft is because of a clever pricing system, not clever software.
$1 does not mean the same thing to all customers. Obviously rich customers, say corporations, CEOs, etc. can pay more for something then the average Joe. Software that targets corporations or governments obviously will have a sticker price orders of magnitude higher then, say, a blog-authoring tool. But it is a mistake to conclude that just because a blogger can’t part with more money, that blogging software is less useful then “enterprise” email clients. Both fundamentally are communication tools, and both have changed the way that people interact.
Measuring “Good”
So how do you measure quality? There are several ways. User satisfaction, though hard to quantify, is probably the best. I recently attended a Red Cross training session on how to use AEDs. The teacher highly recommended the Zoll brand units we had purchased, and told us a few war-stories about how well Zoll-made equipment held up in the field, even after being dropped off the back of ambulances, and run over with a fire-engine. You only get high praise from your users by doing things right. (It’s possible to get praise from your customers by being cheap)
Another measure is productivity — how much more have people been able to do by using new software? This is quantifiable as time-to-complete-a-project or projects-completed-per-unit-time. However, it may be expensive to measure.
Unfortunately there is no silver bullet. Measurement is always difficult to do well — especially outside of a laboratory. Profit and sales are a data point. And they can tell you something — but they are not a good proxy for utility, satisfaction, or quality.