Apple’s Copland October 7th, 2008

That’s what I call a massive management failure. Very interesting reading.

In 1989, managers at Apple had a meeting to plan the future course of Mac OS development. Ideas were written on index cards; features that seemed simple enough to implement in the short term (like adding color to the user interface) were written on blue cards, while more advanced ideas (like an object-oriented file system) were written on pink cards. Development of the ideas contained on both sets of cards was to proceed in parallel, and the two projects were known simply as “blue” and “pink”. Apple intended to have the “blue” team release an updated version of the existing Macintosh operating system in the 1990–1991 timeframe, and the “pink” team to release an entirely new OS around 1993.

The “blue” team delivered what became known as System 7 on May 13, 1991, but the “pink” team suffered from second-system effect and continued to slip its release into the indefinite future. Some of the reason for this can be traced to problems that would become widespread at Apple as time went on; as “pink” became delayed, engineers on the project jumped ship to work on “blue” instead, leaving the “pink” team constantly struggling for staffing. Management basically ignored these sorts of problems, leading to continual problems with delivering working products. In the case of “pink”, development eventually slowed to the point that the project was moribund, and Apple semi-abandoned it by spinning it off to form Taligent.

Read more

/ Tags: Project Management Trackback

Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.

October 7th, 2008 / Tags: Design / Trackback

magic_join model creation and rails 2 October 7th, 2008

If you are using Josh Susser’s clean magic_join solution to automagically create a join record an entry on a join table, you might well notice it doesn’t work with rails 2:

protected method `with_scope' called for #<Class:0x2109ddc>

Indeed the with_scope method is now protected.

In lieu of:

class Contributor < ActiveRecord::Base
  has_many :contributions, :dependent => :destroy
  has_many :books, :through => :contributions do
    def push_with_attributes(book, join_attrs)
      Contribution.with_scope(:create => join_attrs) { self << book }
    end
  end
end

Do:

class Contributor < ActiveRecord::Base
  has_many :contributions, :dependent => :destroy
  has_many :books, :through => :contributions do
    def push_with_attributes(book, join_attrs)
      Contribution.send(:with_scope, :create => join_attrs) { self << book }
    end
  end
end

/ Tags: Ruby on Rails, Design, Code Trackback

On machine translation September 28th, 2008

A typical story occurred in early machine translation efforts, which were generously funded by the U.S. National Research Council in an attempt to speed up the translation of Russian scientific papers in the wake of the Sputnik launch in 1957. […] The famous re-translation of “the spirit is willing but the flesh is weak” as “the vodka is good but the meat is rotten” illustrates the difficulties encountered.
/ Tags: Internationalisation Trackback

ISO 3166-1 and ISO 639-2 September 25th, 2008

Thought I should share this since it so boring to parse.

ISO 3166-1

Here are the SQL queries to fill a country table with the country informations from ISO 3166-1. Getting the table structure is pretty straightforward, it contains:

  • alpha-2 code
  • alpha-3 code
  • numeric code
  • uppercase english name1
  • lowercase english name

Download ISO 3166-1

ISO 639-2

ISO 639-3 exists and extends ISO 63902 to cover “all known, living or dead, spoken or written languages”. It’s something like 7500 languages. Not super useful, so I use ISO 639-2 which already contains more than what you need.

Here are the SQL queries to fill up a language table with the 480-ish languages from ISO639-2. It contains:

  • alpha-3 code
  • alpha-2 code
  • english name

Download ISO639-2

Footnotes

  1. Useful to have both lowercase and uppercase as some database servers (such as postgres) cock up with uppercase conversion of foreign characters.
/ Tags: Internationalisation Trackback
Next → ← Previous