Wednesday, April 30, 2008
In the last weeks something remarkable happened in the Python3 sources: self kinda became implicit. Not in function definitions, but in super calls. But not only self: also the class passed to
super. That’s remarkable because it means that the language shifts into a completely different direction.
I’m generally not a fan of magic, but I don’t really see the problem with adding an abbreviated form for the most common uses of
super. That it was so verbose before always seemed to me to be a wart on an otherwise clean language.
I spent a lot of time this week and then all this morning playing with different toolbar placements and options. I appreciate all the feedback, but I’ve just decided that for 2.0 the placement will stay at the bottom.
Tuesday, April 29, 2008
Sunday, April 27, 2008
I realised I was at the point where I was using FogBugz as little more than the world’s worst email client. From now on, I’ll keep tickets and customer support better separated, so that a better job can be done on each.
InformIT interviews Donald Knuth:
From a scheduling standpoint, all I know at present is that I must someday digest a huge amount of material that I’ve been collecting and filing for 45 years. I gain important time by working in batch mode: I don’t read a paper in depth until I can deal with dozens of others on the same topic during the same week. When I finally am ready to read what has been collected about a topic, I might find out that I can zoom ahead because most of it is eminently forgettable for my purposes. On the other hand, I might discover that it’s fundamental and deserves weeks of study; then I’d have to edit my website and push that number 2015 closer to infinity.
Friday, April 25, 2008
For several years I’ve kept the bulk of my home directory in a revision control system. This allows me to synchronize my files across the two machines I use commonly, keep a backup on my home NAS box, and have complete revision history of files.
There’s a price, however: the SCM keeps metadata on my machines, and this can add up. Plus there’s the time needed to commit files. When it became clear I needed to switch away from Subversion because it doesn’t cooperate with iWork files, I decided to look into alternatives.
This type of setup is much easier when the VCS doesn’t litter the filesystem with invisible folders. git gc is usually overkill; I would have liked to see numbers for git repack; git prune.
Wednesday, April 23, 2008
TransactionKit, from the developer of RegexKit, provides a thread-safe, lock-free replacement for NSDictionary/NSMutableDictionary. The design uses multi-version concurrency control—transaction numbers, essentially—to allow concurrent read and write access with better multi-threaded performance than using locks. Unlike NSDictionary, TransactionKit uses chaining, so it likely uses more memory and is not as cache-friendly. Chaining works nicely with atomic compare-and-swap operations, so it’s common in lock-free data structures, however open addressing can also be made lock-free. For example, Cliff Click implemented a very efficient closed hash table (with linear probing) in Java that outperforms ConcurrentHashMap (which uses lock striping). Note that TransactionKit is incompatible with Objective-C garbage collection, which the developer regards as flawed.
Microsoft’s decision to turn off the MSN Music authorization servers serves as a painful reminder that DRM ultimately severely limits your rights. Companies that control various DRM schemes, as well as the content providers themselves, can yank your ability to play the content which you lawfully purchased (and now, videos) at any moment—no matter what your expectation was when you bought it.
Monday, April 21, 2008
Encyclopædia Britannica (via Jason Kottke):
If you’re a Web publisher—a blogger, webmaster, or writer—you can get complimentary access to the complete Encyclopædia Britannica online.…and, if you like, an easy way to give your readers background on the topics you write about with links to complete Britannica articles.
But NAT isn’t a brick wall, even though it’s often called a passive firewall. Most NAT-capable routers also include one of two standard methods of allowing software running on a computer with a private address to ask the router to open up a limited form of incoming access. Automatic port mapping protocols on the router open one or more ports—a kind of numbered slot that can be attached to an IP address—and hand the port number or numbers back to the requesting software. As long as the router itself has a publicly routable IP address that can be reached via the Internet, port-mapped applications can now be reached as well.
Peter Bright (via Buzz Andersen):
This approach—forced on it due to screwing up the Copland project—put Apple in a strong position. The new OS was free of many of the legacy constraints that the Copland approach would have caused; the clumsy old APIs were restricted to the Classic environment, and they didn’t form a part of the modern OS core. Although the new APIs were not entirely new—the Obj-C Cocoa API was based on the NeXTstep API, and Carbon was similar to the old Mac OS API—they were cleaned up, allowing bad decisions of the past to be fixed.
Win16 was never well-designed in the first place, and Win32 has replicated poor decisions in abundance. Win32 is a big API; it’s really huge, many thousands of API calls, and it’s totally inconsistent. It’s inconsistent in every way imaginable.
I imagine this is improved in .NET, though.
Update: Part II addresses .NET.
Jake Voytko shows how to derive big-O estimates of algorithmic complexity using integration. The normal CS way is to solve recurrences, which can be more precise than necessary and may be more difficult (or, at least, less familiar).
Thursday, April 17, 2008
Cathy Shive and Jonathan Dann:
…we now have two new abstract super-classes for our controllers, XSWindowController and XSViewController. When we subclass them to build our UIs, we get the controller architecture that we illustrated at the beginning of the post and the following features built in to our view controller:
- Automatic memory management!
- Automatic inclusion in the responder chain!!!
- A designated method for removing observations or bindings!
- A relationship with the window controller and document!
Tuesday, April 8, 2008
Backup is not something I can afford to screw around with. If there’s any possible point of failure, it’s unacceptable. So, I decided to drop this “unsupported” configuration and picked up a 1 TB Time Capsule. The situation has not improved.
The thing about Git is that it’s oddly liberal with how and when you use it. Version control systems have traditionally required a lot of up-front planning followed by constant interaction to get changes to the right place at the right time and in the right order. And whoa unto thee if a rule is broken somewhere along the way, or you change your mind about something, or you just want to fix this one thing real quick before having to commit all the other crap in your working copy.…Git is quite different in this regard.
I like git add --patch and git commit --amend.
Borrowing ideas is fair game, but copying an entire app is wrong. And it’s creepy, in a Microsoft-of-the-’90s way, when it’s a $150 billion company cloning an app from a 10-person company.
Google App Engine looks interesting, though.
Saturday, April 5, 2008
The main reason I switched from Safari to Firefox in the first place was memory consumption on my PowerBook G4—after just a few hours of my use, Safari 3 inevitably consumes at least 300 MB, often more, of private memory. In the same usage, Firefox 3 never seemed to use more than 90 MB, even after a few days.
But for this I really, really like Safari.
Friday, April 4, 2008
From time to time, someone I know asks me an ordinary and reasonable question: “What’s your iChat (or Skype) ID?” My usual reply is to give them the information along with a big disclaimer: I’m almost never logged in. In fact, let me be completely honest and say I thoroughly dislike instant messaging (IM) except in a few specific situations. For months, I’ve been thinking about why this is—both the technological and psychological aspects—along with whether it somehow exposes a fundamental character flaw, and whether it’s something I should attempt to change. Having experimented with a variety of approaches to instant messaging (as well as its close relative Twitter) and having done a considerable amount of introspection, I’m inclined to think that my personality type is fundamentally ill-suited to instant messaging.
As another introvert who doesn’t like IM, I find the multitasking aspect most bothersome.
Thursday, April 3, 2008
David Heinemeier Hansson:
I think they’re going to get it. Killer apps makes or breaks any platform. With Github, I think the Git hub just scored one. Rails is going to be hosted there for the launch. Capistrano, Prototype, and Scriptaculous already moved there.
I hope so. Git is great. It can speak Subversion, so that’s not a problem, but I don’t want to have to install and learn all the other DVCSs.
As soon as we got the news in June, we began adjusting our product development plans. No one has ever ported an application the size of Photoshop from Carbon to Cocoa (as I mentioned earlier, after 9 years as an Apple product Final Cut Pro remains Carbon-based), so we’re dealing with unknown territory. We began training our engineers to rewrite code in Objective C (instead of C++), and they began prototyping select areas to get a better view of the overall effort.
In the end, both Apple and Adobe chose not to mitigate their risks with expensive long-term projects. Adobe believed its investment in Carbon would be protected. Just as Apple created Carbon in the first place to help Adobe, so too would it stand by its friend by bringing the framework into the 64-bit era. And Apple, for its part, continued to believe that its gentle persuasion would eventually bring Adobe around to the Cocoa side of the fence. For all the bad blood and unfortunate consequences, it’s somewhat heartening to realize that the two companies’ faith in each other so thoroughly informed their decisions.
The uncomfortable truth is that the fastest way to run Photoshop CS4 on a Mac will be to run it under Windows. It’ll be particularly interesting to see benchmarks comparing 64-bit Photoshop on Mac OS X using VMware or Parallels against the native 32-bit Mac version.
Anyway, for a high-profile, award-winning app from one of the biggest software companies out there, the out-of-the-box experience for the new Elements is crappy. Really, it’s the worst I’ve seen in ages. So I had to write this post to complain about it, of course. And it got longer than I expected it to. And rantier.
I had a similar reaction when installing it yesterday. Chris Turner says it took more than 24 minutes to install it. I plan to do as much work as possible in Acorn and use Photoshop only when necessary, e.g. to convert images into small PNG or JPEG files.
Ars Technica reports that Apple’s iTunes store is now the largest seller of music in the US. I think I know how Pauline Kael felt in 1972.
Wednesday, April 2, 2008
By eschewing the concept of a flash based word processor, Google is leaving itself vulnerable to Adobe. Adobe has acquired, and I would imagine is now heavily investing in the first web based word processor with true pixel level type control, called BuzzWord. Adobe has better distribution than any other company on the Internet, and Adobe has the best web client technology, and adobe owns PDF. As I see it, Adobe is well poised to beat Google at being *the* web document company, just as they are *the* print document company.
He also has a follow-up.
Tuesday, April 1, 2008