Vincent Gable’s Blog

October 29, 2008

Two Help Menus

Filed under: Bug Bite,Cocoa,Interface Builder,MacOSX,Objective-C,Programming | , ,
― Vincent Gable on October 29, 2008

I ran into an issue at work where sometimes an application would have two “Help” menus, on OS X 10.5 “Leopard” (but not on OS X 10.4 “Tiger”). The problem was interacting with the UI before the application had finished enough of the AppKit-initialization process.

The application had to install a component, which involved displaying authentication dialogs and such. Because the component was necessary for the application to work correctly, I thought it would be safest to do this as early as possible. But displaying a dialog in code called from awakeFromNib ended up being the cause of the double Help Menu issue.

Waiting until applicationWillFinishLaunching: or applicationDidFinishLaunching: to interact with the user fixed the problem. (In my case, it was safe to defer the installation until then.)

I am not aware of any other issues from putting up a window “too early” … however, it seems to me that doing it is asking for trouble. The AppKit/Cocoa environment obviously isn’t 100% ready at that point. Why risk running your code with half-baked libraries if you don’t have to?

Whenever possible, I will defer “first run” behavior until applicationWillFinishLaunching: or applicationDidFinishLaunching:.

October 26, 2008

Early Voting Machines

Filed under: Security,Usability | ,
― Vincent Gable on October 26, 2008

A fascinating article from 1936 on voting machines. They are not some new invention,

Inventors of the voting machine undertook to eliminate (improperly marked ballots). First man to give the problem attention appears to have been Jan Josef Baranowski in Paris, France, in 1849. He suggested that adding machine principles be applied to voting and that a closet be provided in which the voter could make his choice by turning handles or pushing buttons opposite the names of candidates. De Brettes in that year and Werner von Siemens in 1859 in Germany constructed primitive legislative voting machines, operated mechanically to cast either white or black balls. Thomas Edison patented a crude machine in 1869. At about the same time, Vassie, Chamberlain, Sydserff and Davy produced devices in England.

The exuberant article really puts the utter failure that is modern “electronic voting machines” in stark perspective. As security guru Bruce Schneier points out, “Complexity is the worst enemy of security; as systems become more complex, they get less secure.”

October 24, 2008

50 Customers

Filed under: Quotes | , ,
― Vincent Gable on October 24, 2008

In the early 1950’s, we took a hard look at the future for business computer systems.

Our best estimate, at the time, was a potential of 50 new customers.

IBM Advertisement From the 1980’s (via Modern Mechanix)

October 19, 2008

Xcode Shortcuts

Filed under: MacOSX,Programming,Tips |
― Vincent Gable on October 19, 2008

A complete list of Xcode keyboard shortcuts.

See also, my personal list of useful Mac OS X text-editing shortcuts.

October 14, 2008

A Bag of Hurt

Filed under: Quotes | , ,
― Vincent Gable on October 14, 2008

Blu-ray is a bag of hurt. I don’t mean from the consumer point of view. It’s great to watch movies, but the licensing is so complex. We’re waiting until things settle down, and waiting until Blu-ray takes off before we burden our customers with the cost of licensing.

–Steve Jobs, explaining why the laptops he announced today do not have Blu-ray.

October 12, 2008

Customers are Not Users

Filed under: Announcement,Design |
― Vincent Gable on October 12, 2008

Customers and users are not the same thing. The distinction is important but often missed.

A user is someone who uses the software you make.

A customer is someone who chooses to give you money for your software.

For many classes of software (eg a POS system), the majority of legitimate software users are not customers. They are using software chosen by someone else, often their employer, or an OEM.

The first step to satisfying both users and customers is to not confuse them.

October 11, 2008

Steve Ballmer Admits Microsoft Office For Mac Is Shitty

Filed under: MacOSX,Quotes | , ,
― Vincent Gable on October 11, 2008

Microsoft CEO Steve Ballmer recently admitted Office 2008 for Mac is stunted

can you find the applications you want on the Mac? Well, you don’t really get full Microsoft Office (on the Mac).”

I doubt this surprises anyone, but boy would I be depressed if I worked in the Mac BU (Business Unit), and the CEO came out and poo-pooed my work. That’s not doing right by your people.

I’ve written before about how I dislike using Microsoft Office 2008 for Mac, and how its high sales figures are in spite of it’s quality, not because of it.

Incentive Plans Always Fail

Filed under: Announcement | , , ,
― Vincent Gable on October 11, 2008

This article by Joel Spolsky convincingly argues that incentive plans will always fail damagingly,

As some of your workers substitute making the most of an incentive program for serving customers the best way they know how, the customer experience will suffer. Your best employees will find themselves fighting with incentive seekers to keep the business on track.

Co-incidentally I had a bad experience, caused by an incentive plan, at Best Buy a few days ago. I bought a GPS navigator, because I needed one then, and couldn’t wait for one to be shipped to me (even though it would have been cheaper to get one online). The cashier keep trying to push an “extended warranty” on me, even after I said “no” repeatedly. Undaunted, she switched tactics, and tried to scare me by telling me how often the model I was buying failed. At this point the sale hadn’t yet been made. But the cashier was trying to convince me that the thing I was about to buy broke all the time. Unbelievable!

If the cashier’s story is to be believed, she sees about one GPS unit returned every (6 hour) day, and sells about 20-30 in the same time. So now you know what I know about Best Buy’s quality and service.

An AppleScript Quine

Filed under: Announcement,Programming,Research | ,
― Vincent Gable on October 11, 2008

Here is my first quine. It’s written in AppleScript, because I wasn’t able to find, another AppleScript quine.

When run quine.applescript will make Script Editor create a new window containing the source code. It’s particularly meta if you use Script Editor (the default application) to run the quine, because it’s not just printing itself, it’s writing itself in the IDE!

Fortunately, the problems I’d originally had with Script Editor and the quine seem to have been fixed.

EDITED TO ADD: Here’s the quine’s source, but you really should download it to run it, because wordpress has a habit of subtly mucking with copied code…

set d to "on string_from_ASCII_numbers(x)
	set s to ASCII character of item 1 of x
	repeat with i from 2 to number of items in x
		set s to s & (ASCII character of item i of x)
	end repeat
end string_from_ASCII_numbers
set set_d_to to {115, 101, 116, 32, 100, 32, 116, 111, 32}
set scriptEditor to {83, 99, 114, 105, 112, 116, 32, 69, 100, 105, 116, 111, 114}
set quine to string_from_ASCII_numbers(set_d_to) & quote & d & quote & return & d
tell application string_from_ASCII_numbers(scriptEditor) to make new document with properties {contents:quine}"
on string_from_ASCII_numbers(x)
	set s to ASCII character of item 1 of x
	repeat with i from 2 to number of items in x
		set s to s & (ASCII character of item i of x)
	end repeat
end string_from_ASCII_numbers
set set_d_to to {115, 101, 116, 32, 100, 32, 116, 111, 32}
set scriptEditor to {83, 99, 114, 105, 112, 116, 32, 69, 100, 105, 116, 111, 114}
set quine to string_from_ASCII_numbers(set_d_to) & quote & d & quote & return & d
tell application string_from_ASCII_numbers(scriptEditor) to make new document with properties {contents:quine}

October 9, 2008

Function Over Brand

Filed under: Design,Quotes | , ,
― Vincent Gable on October 9, 2008

There is something to be said for the fact that the phone with the strongest brand in the world has no visible branding whatsoever on its front face.

John Gruber on the iPhone. But you knew what phone he was talking about.

I’ve always been deeply opposed to any branding strategy that values a brand over a product. Adding branding to something’s “face” makes it harder to use, because it adds visual noise to the very part of the thing you have to interact with (and figure out how to use). For example, an “Intel Inside” sticker next to a keyboard is one more square-thing you have to rule out when looking for the right button to press.

Older Posts »

Powered by WordPress