Press "Enter" to skip to content

Russell Finn’s Blog Posts

“Regime Change” at Apple

Matt Drance nails it:

There’s a long-standing pattern of separating watershed products important to the company’s future. The Mac and Apple teams. Mac OS X and Classic. The iPod division. iOS and Mac OS X. Suddenly, Tim Cook has pulled the reins in. Federighi owns software. Ive owns design. Cue owns services. Period.

Apple’s insane growth has pushed the situation over the edge. Too much size and separation inevitably bring politics, chaos, dropped balls, and finger pointing. None of those things are good for Apple’s products or customers.

Best summary of the significance of the change I’ve heard to date.  This should end up being a net positive for Apple (despite the loss of Forstall’s talent, which was apparently becoming increasingly overshadowed by his interpersonal style).  And, to overuse a cliché, this is now Tim Cook’s Apple.

Comments closed

Debugging software for laymen

Brent Simmons provides what is possibly the best description for laymen of the joy/agony of debugging software that I’ve ever seen:

If it took 10 minutes to reduce memory usage by 96MB, then — were there a linear relationship — it should take under half a minute, less than 30 seconds, to go the rest of the way.

That’s the way things work in the real world, after all. If you have 100 bags of leaves to carry out to the curb, each bag will take about the same amount of time as the others.

Instead, it will probably take me about two hours, maybe more, to get rid of that last 4MB.

It’s almost as if you carried out 96 bags of leaves easily and quickly, then realized you can’t get those last four bags, even though they’re exactly the same as all the others, without pouring a new driveway first.

Which is crazy, right? If the real world operated like that all the time, we’d go completely nuts.

Comments closed

O @comcastcares, hear my plea

As of this evening the TV Guide channel is not displaying the scrolling list of program information — just the mindless “American Idol Rewind” and other programming at the top of the screen. You can usually see an empty space at the bottom where the program listing would fall.

When we called the customer support 800 number, the representative was completely clueless and apparently unable to understand our description of the problem. First she told us to unplug our cable-ready TV set from the cable and plug it back in (we’re still analog here and have no cable box). Predictably that had no effect. After my wife and I tried to explain the problem again, she finally decided that the problem was with the network — that is, the TV Guide Network had chosen to stop sending us program listings. She suggested we contacted the network to complain about the change.

As a result, we have no source of program listings from Comcast. The “Channel Lineup” page on comcast.com has had the message “We are currently working to provide channel lineup information for your area” for at least a year. (Our town straddles multiple counties and has its own cable franchise. Last summer Comcast decided to move everyone in town to the same system, which means that we’re now on the “other” system.)

The CSR dutifully ended the call with “Thank you for choosing Comcast”, which is a joke since our original system (Adelphia) was bought out by Comcast. Oddly we had no problems with Adelphia, but the major impact of Comcast (beside shifting our system) was to repeatedly raise our rates while moving channels from the analog tier to the digital tier.

I personally watch very little television and would ditch cable for over-the-air (and over-the-Internet), but my wife enjoys having the TV on while working in the kitchen, and the kids watch Nickelodeon, Disney Channel, etc. Frankly, Verizon can’t bring FIOS to our town fast enough for me. (Sadly there’s no evidence that they’re even considering this, although they’re hooking up an adjacent county.)

[The six loyal readers of my blog probably couldn’t care less about this issue; this post is really just to have something to point Frank Elias (@comcastcares on twitter) toward.]

Edit: In the interest of full disclosure, I got two responses on Twitter the same evening; apparently it was a known issue (involving the digital transition?) and cleared up in a few days.

1 Comment

Where have you gone, Fake Steve Jobs?

As Fake Steve Jobs, Dan Lyons made a terrific anonymous satirist. As Newsweek’s technology columnist, he leaves something to be desired.

Pass over the Microsoft marketer’s crack about Macs being “washed with unicorn tears” pass by, because, really, that just makes him look like a dick. Move on to Lyons’ observation that Apple is declining to build cheap netbooks and instead, “in January … rolled out that 17-inch laptop with a $2,800 price tag. Talk about tone-deaf.”

Yes, how terribly tone-deaf to introduce a long awaited upgrade to a machine in high demand among Apple’s customer base, on which Apple can continue to make a comfortable profit margin in a difficult economic environment by selling customers with ready money just the machine they want. What could they have possibly been thinking?

Meanwhile, PC manufacturers race to the bottom and wring the last bits of profit from cheaper and cheaper machines. But that’s no skin off Microsoft’s nose, because they (presumably) get the same profit putting Windows on netbooks as they do on high-end workstations.

In fact, Microsoft probably makes more off netbooks, because they typically ship with Windows XP, for which the bulk of Microsoft’s R&D costs have long since been paid.) No wonder they’re “turning the corner.”

Meanwhile, Apple has consistently declined to compete in the low-end market, and yet has continued to flourish financially, to the bewilderment of analysts everywhere. Presumably, unlike doctors, financial analysts are not taught about Willie Sutton.

As for me, I’m looking towards Apple’s next set of financial results, due out on the 22nd of April. I’m also (speculatively) waiting for the day when Apple announces its next low-cost portable computing device, which I predict will (a) not be a “netbook” as we think of one today, (b) cost significantly more than $300, and (c) sell like hotcakes.

I’ll come back to Dan Lyons’ “commentary” then.

(Tip of the hat to Daring Fireball.)

Comments closed

OCPython, anyone?

As dynamic scripting languages become more widely used, many developers are interested in using them to write “native” Mac OS X software, rather than having to learn Objective-C (which, of course, is a dynamic language in its own right). And in fact it is often possible to do so, using Apple’s BridgeSupport to generate the necessary metadata. Apple explicitly supports bridges for Ruby (RubyCocoa) and Python (PyObjC).

Nevertheless, there is necessarily an impedance mismatch between the runtime models — when passing objects to Cocoa, the bridge must convert the object from the dynamic language’s runtime to an Objective-C object derived from NSObject, and vice versa. This introduces a certain amount of inefficiency, which is not normally a big problem, but it would be desirable to avoid it.

Now, over the last few months, I’ve seen a variety of projects to do this by using the Objective-C 2.0 runtime to implement the object model for the dynamic language. In other words, objects in the dynamic language are subclasses of NSObject and no conversion is necessary.

These range from the venerable F-Script, which is even closer to Smalltalk than Objective-C, to Tim Burks’ original language Nu, which uses a Lisp-like syntax. I believe I’ve seen a reference to a JavaScript implementation as well, but I can’t seem to find it now.

The project that seems to be getting the most buzz in the Mac community right now is MacRuby, a port of Ruby 1.9 done by the developer of RubyCocoa (who is also an Apple employee). There was even a article about it featured on the Apple developer site recently.

Conspicuous by its absence from this list is my preferred dynamic language Python. I would love to see an implementation of Python hosted on the Objective-C runtime. I’ve always felt Python’s language model was a good match for Cocoa (of course, PyObjC not only predates BridgeSupport but even Cocoa itself, going back to the days of NextStep), and I’m personally more familiar with it than Ruby or other dynamic languages. So it seems like a logical step to take.

This project couldn’t be called MacPython, because that name has already been used to denote the Mac port of Python. For now I’m calling it “OCPython”, but I’m certainly open to a cleverer name (especially if there’s one that can riff on IronPython; unfortunately the element most associated with Mac OS X is Carbon, which is entirely wrong for this project).

I’ve been thinking about which version of Python to use as a jumping-off point; originally I was leaning towards 2.5 because it’s the version shipped with Leopard, but now I’m persuaded by Bill Bumgarner’s comment to use 3.0 and take advantage of the revised, less crufty implementation. (This is based on the stated goal of the 3.0 development project; I haven’t actually looked at the source code yet.)

I wish I could say I’m prepared to get the project off the ground myself, but right now I’m between jobs, as they say, and given the current financial situation I’m actively looking for full-time employment and can’t dedicate much time to something that won’t bring in any revenue. (Of course, if anyone out there would like to fund development of OCPython, contact me immediately.)

6 Comments

Visual Studio 2005: Not Ready To Lead

Glenn Howe writes of an anomaly in Visual Studio 2005’s C++ compiler:

… I discovered today (Friday) that if you compile something like:

double x = (false) ? 0 : 1.4;

that x will not equal 1.4 as most people (and the gcc compiler) would think, but rather it will equal 1.0. Why? Because it sees 0, interprets it as an integer and decides that if both halves of the : have to have the same type, then that type will be integer. The fact that this is in the middle of an assignment to double means nothing.

Yes, in fact it does mean nothing; the type of the lvalue on the left-hand side of an assignment expression has no effect on the type of the rvalue on the right-hand side.

He goes on:

I’m not even saying that Visual Studio is wrong. It’s different from gcc which leads to platform specific bugs, …

Well, I was a language lawyer in a previous life, so I can’t let it rest there. (And those of you out there saying “Of course Visual Studio is wrong!” should recall that gcc doesn’t always get it right, either.)

Where were we? The type of the conditional operator, right. To find what that type should be, we have to look at the definition of the operator.

In C99, this is pretty straightforward. Section 6.5.15, which defines the conditional operator, says the result of the expression “is the value of the second or third operand (whichever is evaluated), converted to the type described below”. Looking “below”, it further says when you have two operands of arithmetic type, the result type is the type that would be determined by the “usual arithmetic conversions” applied to the two operands.

Now a simple jump to section 6.3.1.8, which defines the “usual arithmetic conversions”, tells us: “… if the corresponding real type of either operand is double, the other operand is converted, without change of type domain, to a type whose
corresponding real type is double.”

OK, so that’s not completely straightforward, talking about “real types” and “type domains”, but basically we have two numbers, and if one of them is double the other is converted to double, and so that’s that; the type of the expression should be double, as we’d expect, and so Visual Studio 2005 is wrong.

If we’re in C.

C++ is more complicated.

(What a shock, right?)

Well, C++ has to allow for the possibility that either or both operand is a class type, and if so can it be converted to the other’s type, blah blah blah (section 5.16, if you’re following along at home).

Since we don’t have class type operands, we go on, applying the “standard conversions” to the operands (none of which apply here), and then, if “the second and third operands have arithmetic or enumeration type[,] the usual arithmetic conversions are performed to bring them to a common type, and the result is of that type.”

Hey, that was pretty simple after all. No, wait: are the usual arithmetic conversions the same in C++ as they are in C? Good question; let me see… (flip, flip, …) here we are, clause 5: yes, they are.

So from where I sit, Visual Studio 2005 is wrong in C++, too.

Wrong on conditional operators.

Wrong for America.

(I can’t wait for this election to be over…)

Comments closed

Will no one rid me of this troublesome plugin?

So, facing the “Would you like to install Flash Player 10?” message in the browser page at Adobe’s, I had a micro-aneurysm or something, and thought, my daughter spends all her free time playing Flash games, so I’ll need this soon anyway, right? So I clicked “Yes.”

[If you’re reading along at home: STOP! DON’T DO THIS!]

Whereupon Flash downloaded and tried to launch some oddly named helper program which bounced in my dock for about a minute, while Safari spun its rainbow pizza. Finally, the system asked me to confirm I really wanted to run this program downloaded from the Internet —

[Reader, I implore you again, turn back!]

— and finally launched the installer. Which proceeded to ask me to close all running browsers. OK.

No. Wait. I can’t close my browser BECAUSE YOUR STUPID PLUG-IN IS STILL SITTING IN A LOOP WAITING FOR THE HELPER PROGRAM, so it won’t respond to the quit request.

Criminey. Doesn’t anyone at Adobe ever test this stuff out?

I know, I must have this odd configuration where I’m running the latest update of the operating system with the standard system web browser. There’s no way they can be expected to test for that.

Comments closed

Insta-poll: Adobe Flash Player 10

Which slightly annoying and possibly overused net meme best describes this effort by Adobe to publicize the new features in Flash Player 10?

Adobe outlines Flash 10’s new features on a page that, for people running older Flash versions, leads off with the following instruction:

“To view the feature tour, please upgrade to Adobe Flash Player 10”

Is it:

  1. FAIL
  2. EPIC FAIL
  3. UR DOIN IT RONG

To be fair, when I tried it just now, I got a different result: a pseudo-dialog appeared in the middle of a gray box, with the message “This content requires Adobe Flash Player 10. Would you like to upgrade now?”

No. Not really.

Comments closed

Pirates! returns to the Mac

As noted here, Feral Interactive is bringing Sid Meier’s Pirates! back to the Mac. [Edit: updated game-specific link]

I was inspired by this news to send the following email to Feral:

I was excited to see the announcement of the latest version of Sid Meier’s Pirates! for the Mac. I was the developer of the Mac port of the original version of Pirates! when I worked at MicroProse Software in the 80’s, and it was fun to see the black-and-white screenshot from our version on your website. I look forward to playing Pirates! once again on my PowerMac and MacBook Pro in the near future.

I hope this leads to a successful line of “Legends” — I have always felt that there was money to be made by porting older successful versions of PC games for the growing Mac marketplace, and I’m pleased to see that Feral agrees with me. Good luck with your upcoming launch.

We’ll have to see how this works out. (I know my son would probably vote for Sid Meier’s Railroads! next, being a huge Thomas the Tank Engine fan.)

Comments closed

I have a bad feeling about this

Sometime when I wasn’t looking Apple posted the WWDC session schedule. I hope I’m wrong, but already I see the potential for some serious problems.

WWDC does not seem to have a big reputation for being well-run. I can’t speak to this personally with any great authority; I’ve only attended one previous conference, in 2006. I didn’t really know what to expect, and I was excited just to be there, but even still there were a few issues I noticed. That year the sessions on the newly-announced Objective-C 2.0 and garbage collection were scheduled in a room that clearly was too small for the amount of interest. I saw there was a problem and decided to bypass the sessions, even though I was interested, figuring I could read up on the material later.

Meanwhile, the session on application code signing had been put in Presidio, the largest room — which I interpreted as a sign of the importance of the topic to Apple — but there were well fewer than a hundred people there. So Apple’s track record on predicting attendance is suspect at best.

Now this year they’ve sold out the conference, so we know it’s going to be crowded, and we know many if not most of those people are there for the iPhone. Apple seems to have booked Presidio exclusively with the key iPhone sessions, which is wise, but I fear it won’t be enough. I imagine four or five hundred people lining up early Tuesday morning, parking themselves in Presidio, and staying there for three and a half days. People who try to come for a later session are going to be annoyed if they can’t get in — but if Apple tries to clear the room after each session, people will get really angry.

[In 2006 they apparently ended up “repeating” a few of the overcrowded sessions by replaying them on a video projector one evening. I didn’t go; if I remember correctly, that was Wednesday, the night of the Apple Design Awards and Stump the Experts, and I didn’t want to miss those. This time around I’d probably pass them up, though. For one thing, the former DTS engineer with whom I saw Stump the Experts, and who made it twice as much fun by filling in the back story for me, is probably not attending this year.]

As a would-be independent developer with interests in both desktop and iPhone software, I’m anxious about the scheduling. On the one hand, if the iPhone session fill up I can usually find other sessions of interest to me. On the other hand, the trip out to San Francisco from the East Coast is a big deal in both time and money, and it’s not clear when I’ll be able to do it again, so I’d like to take advantage of the iPhone sessions as much as possible, since they’re clearly of more immediate value. (After all, I’ve got my Hillegas third edition right here already.)

At least if I keep myself on Eastern Time I can show up early every morning and get in line. I’ll miss the evening socializing, but I’m pretty introverted and don’t know anyone in SF, so that’s not much of a loss for me.

I sure hope this works out…

Comments closed