/page/2

Wood racquet demo: the Wilson Jack Kramer Pro Staff


I got a few of these Wilson Jack Kramer Pro Staff wooden racquets from eBay, and strung my first one from Brad Gilbert’s tennis shop in San Rafael a few years ago. (It was too small for the automatic Babolat stringing machines, so the stringing pro had to bring out the old Prince NEOS manual machine to string it.) I don’t live in the Bay Area any more, and it was difficult to find people who could string woodies. (For example Mason’s Tennis Mart in NY can’t string woodies.)


While out visiting family in Southern California I found that Hank Lloyd’s in Costa Mesa can string woodies, so I got one of my Jack Kramer Pro Staffs strung up with basic 17 gauge Prince synthetic gut at 55 lbs. The strung weight of the racquet is over 13.5 ounces, and the head size is 65 square inches. Grip size is 4 5/8 inches. I have a couple other Jack Kramer Pro Staffs that are over 14 ounces, but since I’m not used to playing with woodies, I didn’t want to hit with them yet as playing with a racquet over 13.5 ounces is tough enough as it is.


You can check out a video of myself hitting with the Jack Kramer Pro Staff wood racquet here.


In tennis, old school is the best school!

Wood racquet demo: the Wilson Jack Kramer Pro Staff

I got a few of these Wilson Jack Kramer Pro Staff wooden racquets from eBay, and strung my first one from Brad Gilbert’s tennis shop in San Rafael a few years ago. (It was too small for the automatic Babolat stringing machines, so the stringing pro had to bring out the old Prince NEOS manual machine to string it.) I don’t live in the Bay Area any more, and it was difficult to find people who could string woodies. (For example Mason’s Tennis Mart in NY can’t string woodies.)

While out visiting family in Southern California I found that Hank Lloyd’s in Costa Mesa can string woodies, so I got one of my Jack Kramer Pro Staffs strung up with basic 17 gauge Prince synthetic gut at 55 lbs. The strung weight of the racquet is over 13.5 ounces, and the head size is 65 square inches. Grip size is 4 5/8 inches. I have a couple other Jack Kramer Pro Staffs that are over 14 ounces, but since I’m not used to playing with woodies, I didn’t want to hit with them yet as playing with a racquet over 13.5 ounces is tough enough as it is.

You can check out a video of myself hitting with the Jack Kramer Pro Staff wood racquet here.

In tennis, old school is the best school!

[Flash 10 is required to watch video]

Cecilia Bartoli and Bryn Terfel performs the “Pa-Pa-Pa” duet from Mozart’s Die Zauberflöte.

A triangle puzzle in JavaScript

(Try out my JavaScript implementation here.)

The triangle path

Lets say you have a triangle lattice of numbers. Starting at the top of the triangle and moving to adjacent numbers on the row below, you want to add up the largest numbers along the path. Question: What is the maximum possible sum? For the following example, this maximum possible sum occurs on the path highlighted in bold:

    5
   9
  4 6
 0 7 1 5 

The sum of the path is: 5 + 9 + 6 + 7 = 27.

The puzzle

Write a program that can determine the maximum possible sum for any triangle (lattice of numbers). The brute-force method would be to add up all the possible paths, and then choose the largest sum. For the example triangle above, this requires summing 8 paths:

5 + 9 + 4 + 0 = 18 
5 + 9 + 4 + 7 = 25 
5 + 9 + 6 + 7 = 27
5 + 9 + 6 + 1 = 21 
5 + 6 + 6 + 7 = 24 
5 + 6 + 6 + 1 = 18 
5 + 6 + 8 + 1 = 20 
5 + 6 + 8 + 5 = 24 

These triangle lattices have the following properties:

2 rows:

   a11 
 a21  a22 

   # of elements: 3 
   # of paths: 2

3 rows:

     a11 
   a21  a22 
 a31  a32  a33  

   # of elements: 6 
   # of paths: 4

4 rows:

       a11
     a21  a22 
   a31  a32  a33 
 a41  a42  a43  a44 

   # of elements: 10 
   # of paths: 8

General properties

In general, the properties of the triangle lattices can be summarized in the following table:

(For triangles with n rows, the formula for the # of elements and # of paths can be proved using induction.)

Brute force unfeasibility

As n gets large, the number of possible paths blows up. For example, a triangle with 100 rows has 299 = 6.338253 × 1029 possible paths! To put this very large number in perspective, consider that:

  • the average human body is comprised of around 7 × 1027 atoms
  • there are an estimated 5 × 1030 bacterial cells in the world

A better perspective is to estimate how long it would take to actually calculate the sum of each of the 299 paths in a triangle lattice of 100 rows. The number of floating point addition operations would be 100 × 299 = 6.338253 × 1031. (Since each path has 100 numbers.)

Most contemporary personal computers have computational speeds in the range of gigaFLOPS. (109 floating point operations per second.) Hence for a personal computer it would take roughly 1031/109 seconds = 1022 seconds = 3.16887646 × 1014 years to apply the brute force method on a triangle with 100 rows.

Even using the current world’s fastest computer (the Japanese K computer) with computational speeds in the petaFLOP range (1015 floating point operations per second), the problem would take roughly 1031/1015 seconds = 1016 seconds = 316,887,646 years.

My solution

My first approach to this problem began with a misunderstanding. I initially interpreted the problem incorrectly, which I didn’t realize until I ended up solving a variation to this problem, that I now call the Myopic Traveler variant (see below), where the “myopia” both qualitatively describes the variant and also signifies my own shortsightedness on the complexity of the original triangle problem.

So after figuring out that I am suppose to find the maximum sum out of all possible triangle paths (not just the small subset available to the “myopic traveler”), I began by trying to find patterns. After a fruitless attempt to find patterns on the indices of the triangle lattice, I realized that since I just needed to find the maximum possible sum, information about each and every possible triangle path was redundant, as large portions of the lattice points (especially in the middle of the triangle) are traversed over and over again. However, information about the maximum sum is implicitly embedded in each lattice point, regardless of the individual paths.

Knowing this, I realized that if I were to look at the bottom row of the triangle first, and then determine the maximum amongst the n - 1 pairs of numbers in the nth row, add that maximum to each of the n - 1 numbers in the immediate top (or previous) n - 1 row, and keep doing this iteratively until the top row, I will result in the maximum possible sum out of all of the possible triangle paths. So for the current triangle example, the algorithm looks like this:

Step 1: Determine the maximum out of each consecutive pairs on the bottom row.

    5
   9
  4 6
 0 75 

Step 2: Add the maximum to the appropriate number in the row above, and then determine the maximum out of each consecutive pairs in this row.

      5
    9  6 
  11 13 13 
 0  7  1  5 

Step 3: Repeat Step 2.

       5
    22  19 
  11  13  13 
 0  7   1   5 

Step 4: Repeat Step 3. The maximum sum is the number at the apex.

      27
    22  19 
  11  13  13 
 0  7   1   5 

JavaScript implementation

You can try out my JavaScript implementation of the general solution to the triangle puzzle. For a triangle with 100 rows, finding the maximum sum took less than a second.

The “Myopic Traveler” variant

The following is the variant to the triangle puzzle that I had mentioned earlier. Due to a misunderstanding on my part, this variant is the result of my misinterpretation of the original triangle puzzle. My initial shortsightedness on the complexity of the original triangle problem, along with the apropos nature of this variant, led me to name the variant the “Myopic Traveler”.

Suppose you are a traveler on this triangle lattice, and starting at the top, you can only see the next row (hence the myopia). Then what is the maximum sum that you will end up with?

    5
   9
  4 6
 0 7 1 5 

For this example triangle, the sum of the path of the myopic traveler is: 5 + 9 + 6 + 7 = 27. It is a coincidence that this path also happens to have the maximum sum out of all possible paths of this triangle.

The traveler’s myopia is really apparent in this example triangle (where the number 5 in the last row is changed to 50). You can see the maximum possible sum is not the myopic traveler’s path 5 + 9 + 6 + 7 = 27, but the following highlighted one:

    5
   9 6 
  4 6 8 
 0 7 1 50 

The sum of the path is: 5 + 6 + 8 + 50 = 69. Because the myopic traveler can only see immediate row, this traveler will never have come across the number 50.

Twin path restriction

There is however one restriction I have to add on the possible triangle lattices: there cannot be twin numbers along the path. Otherwise there does not exist a unique maximum sum. For example the following triangle has two “maximum” sums, depending on which twin number you choose for along your path:

Twin path 1:

    5
   9

  6 6
 0 7 1 5 

Choosing the 6 on the right results in the sum: 5 + 9 + 6 + 7 = 27.

Twin path 2:

    5
   9

  6 6
 0 7 1 5 

Choosing the 6 on the left results in the sum: 5 + 9 + 6 + 0 = 20

“Mypoic Traveler” JavaScript implementation

You can try out my JavaScript implementation of the general solution to the Myopic Traveler variant.


Leaving Apple, Redux


Steve Jobs recently announced his resignation as CEO from Apple. (He is unable to continue overseeing day-to-day operations due to his health.) He still however maintains a strong presence in Apple as the chairman of the board. 


    Reflecting back upon the man and his work, recall an in-depth interview (a then-29-year-old) Jobs gave to Playboy magazine in February 1985, one year after Apple had introduced the revolutionary Macintosh personal computer— and a few months before Jobs was ousted from the very company that he founded. Playboy has a knack of landing timely interviews; in 2004, Playboy interviewed Google founders Sergey Brin and Larry Page a few months before the company’s IPO on the NASDAQ stock exchange. Though the Google interview lacked the outright candor of the Steve Jobs interview, it was candid enough to draw critical attention from the SEC (on the potential violation of federal rules concerning IPOs).


    Jobs’ interview didn’t garner retroactive government action of any kind, but instead revealed, in retrospect, an uncanny prescient irony:



    “You know, Dr. Edwin Land was a troublemaker. He dropped out of Harvard and founded Polaroid. Not only was he one of the great inventors of our time but, more important, he saw the intersection of art and science and business and built an organization to reflect that. Polaroid did that for some years, but eventually Dr. Land, one of those brilliant troublemakers, was asked to leave his own company—which is one of the dumbest things I’ve ever heard of.”



    The interview revealed Jobs’ values and vision—unique and anathema to Silicon Valley and Corporate America at large—that he later advanced to resuscitate a comatose Apple during his return to the company in the late 1990s:



    “How come the Mac group produced Mac and the people at IBM produced the PCjr? We think the Mac will sell zillions, but we didn’t build Mac for anybody else. We built it for ourselves. We were the group of people who were going to judge whether it was great or not. We weren’t going to go out and do market research. We just wanted to build the best thing we could build. When you’re a carpenter making a beautiful chest of drawers, you’re not going to use a piece of plywood on the back, even though it faces the wall and nobody will ever see it. You’ll know it’s there, so you’re going to use a beautiful piece of wood on the back. For you to sleep well at night, the aesthetic, the quality, has to be carried all the way through.”



    “There’s always been this myth that really neat, fun people at home all of a sudden have to become very dull and boring when they come to work. It’s simply not true. If we can inject that liberal-arts spirit into the very serious realm of business, I think it will be a worthwhile contribution. We can’t even conceive of how far it will go.”



    Jobs also spoke at length about growing up, revealing a precocious youth that later led to formative stints at Hewlett-Packard and Atari, and teaming up with Steve Wozniak:


    “My mother taught me to read before I went to school, so I was pretty bored in school, and I turned into a little terror. You should have seen us in third grade. We basically destroyed our teacher. We would let snakes loose in the classroom and explode bombs.”


    “When I was 12 or 13, I wanted to build something and I needed some parts, so I picked up the phone and called Bill Hewlett—he was listed in the Palo Alto phone book. He answered the phone and he was real nice. He chatted with me for, like, 20 minutes. He didn’t know me at all, but he ended up giving me some parts and he got me a job that summer working at Hewlett-Packard on the line, assembling frequency counters. Assembling may be too strong. I was putting in screws. It didn’t matter; I was in heaven. I remember my first day, expressing my complete enthusiasm and bliss at being at Hewlett-Packard for the summer to my supervisor, a guy named Chris, telling him that my favorite thing in the whole world was electronics. I asked him what his favorite thing to do was and he looked at me and said, ‘To fuck!’ [Laughs] I learned a lot that summer.”


    “Atari had shipped a bunch of games to Europe and they had some engineering defects in them, and I figured out how to fix them, but it was necessary for somebody to go over there and actually do the fixing. I volunteered to go and asked to take a leave of absence when I was there. They let me do it. I ended up in Switzerland and moved from Zurich to New Delhi. I spent some time in India.”


    “I was working a lot at Atari at night and I used to let Woz in. Atari put out a game called Gran Track, the first driving game with a steering wheel to drive it. Woz was a Gran Track addict. He would put great quantities of quarters into these games to play them, so I would just let him in at night and let him onto the production floor and he would play Gran Track all night long. When I came up against a stumbling block on a project, I would get Woz to take a break from his road rally for ten minutes and come and help me. He puttered around on some things, too. And at one point, he designed a computer terminal with video on it. At a later date, he ended up buying a microprocessor and hooking it up to the terminal and made what was to become the Apple I. Woz and I laid out the circuit board ourselves. That was basically it.”


    The interview is a fascinating record of a man, nearing his thirtieth birthday, who (unbeknownst to him) was about to be forced out of the company that he started. Jobs was at first devastated at the turn of events, but years later he stated “that getting fired from Apple was the best thing that could have ever happened to me” during his inspiring commencement address to Stanford University’s class of 2005.


    Jobs ends the interview on the topic of “turning over the reigns to the next generation”:


“It’s a very interesting challenge, isn’t it? How to grow obsolete with grace.”


(You can read the entirety of Playboy’s Steve Jobs interview here.) 
[Length: 16,917 words]

Leaving Apple, Redux

Steve Jobs recently announced his resignation as CEO from Apple. (He is unable to continue overseeing day-to-day operations due to his health.) He still however maintains a strong presence in Apple as the chairman of the board.

    Reflecting back upon the man and his work, recall an in-depth interview (a then-29-year-old) Jobs gave to Playboy magazine in February 1985, one year after Apple had introduced the revolutionary Macintosh personal computer— and a few months before Jobs was ousted from the very company that he founded. Playboy has a knack of landing timely interviews; in 2004, Playboy interviewed Google founders Sergey Brin and Larry Page a few months before the company’s IPO on the NASDAQ stock exchange. Though the Google interview lacked the outright candor of the Steve Jobs interview, it was candid enough to draw critical attention from the SEC (on the potential violation of federal rules concerning IPOs).

    Jobs’ interview didn’t garner retroactive government action of any kind, but instead revealed, in retrospect, an uncanny prescient irony:

    “You know, Dr. Edwin Land was a troublemaker. He dropped out of Harvard and founded Polaroid. Not only was he one of the great inventors of our time but, more important, he saw the intersection of art and science and business and built an organization to reflect that. Polaroid did that for some years, but eventually Dr. Land, one of those brilliant troublemakers, was asked to leave his own company—which is one of the dumbest things I’ve ever heard of.”

    The interview revealed Jobs’ values and vision—unique and anathema to Silicon Valley and Corporate America at large—that he later advanced to resuscitate a comatose Apple during his return to the company in the late 1990s:

    “How come the Mac group produced Mac and the people at IBM produced the PCjr? We think the Mac will sell zillions, but we didn’t build Mac for anybody else. We built it for ourselves. We were the group of people who were going to judge whether it was great or not. We weren’t going to go out and do market research. We just wanted to build the best thing we could build. When you’re a carpenter making a beautiful chest of drawers, you’re not going to use a piece of plywood on the back, even though it faces the wall and nobody will ever see it. You’ll know it’s there, so you’re going to use a beautiful piece of wood on the back. For you to sleep well at night, the aesthetic, the quality, has to be carried all the way through.”

    “There’s always been this myth that really neat, fun people at home all of a sudden have to become very dull and boring when they come to work. It’s simply not true. If we can inject that liberal-arts spirit into the very serious realm of business, I think it will be a worthwhile contribution. We can’t even conceive of how far it will go.”

    Jobs also spoke at length about growing up, revealing a precocious youth that later led to formative stints at Hewlett-Packard and Atari, and teaming up with Steve Wozniak:

    “My mother taught me to read before I went to school, so I was pretty bored in school, and I turned into a little terror. You should have seen us in third grade. We basically destroyed our teacher. We would let snakes loose in the classroom and explode bombs.”

    “When I was 12 or 13, I wanted to build something and I needed some parts, so I picked up the phone and called Bill Hewlett—he was listed in the Palo Alto phone book. He answered the phone and he was real nice. He chatted with me for, like, 20 minutes. He didn’t know me at all, but he ended up giving me some parts and he got me a job that summer working at Hewlett-Packard on the line, assembling frequency counters. Assembling may be too strong. I was putting in screws. It didn’t matter; I was in heaven. I remember my first day, expressing my complete enthusiasm and bliss at being at Hewlett-Packard for the summer to my supervisor, a guy named Chris, telling him that my favorite thing in the whole world was electronics. I asked him what his favorite thing to do was and he looked at me and said, ‘To fuck!’ [Laughs] I learned a lot that summer.”

    “Atari had shipped a bunch of games to Europe and they had some engineering defects in them, and I figured out how to fix them, but it was necessary for somebody to go over there and actually do the fixing. I volunteered to go and asked to take a leave of absence when I was there. They let me do it. I ended up in Switzerland and moved from Zurich to New Delhi. I spent some time in India.”

    “I was working a lot at Atari at night and I used to let Woz in. Atari put out a game called Gran Track, the first driving game with a steering wheel to drive it. Woz was a Gran Track addict. He would put great quantities of quarters into these games to play them, so I would just let him in at night and let him onto the production floor and he would play Gran Track all night long. When I came up against a stumbling block on a project, I would get Woz to take a break from his road rally for ten minutes and come and help me. He puttered around on some things, too. And at one point, he designed a computer terminal with video on it. At a later date, he ended up buying a microprocessor and hooking it up to the terminal and made what was to become the Apple I. Woz and I laid out the circuit board ourselves. That was basically it.”

    The interview is a fascinating record of a man, nearing his thirtieth birthday, who (unbeknownst to him) was about to be forced out of the company that he started. Jobs was at first devastated at the turn of events, but years later he stated “that getting fired from Apple was the best thing that could have ever happened to me” during his inspiring commencement address to Stanford University’s class of 2005.

    Jobs ends the interview on the topic of “turning over the reigns to the next generation”:

“It’s a very interesting challenge, isn’t it? How to grow obsolete with grace.”


(You can read the entirety of Playboy’s Steve Jobs interview here.)
[Length: 16,917 words]

Massimo Vignelli’s 2008 update to his 1972 NYC subway map. You can download a high-resolution PNG file of the Vignelli’s 2011 MTA Weekender map here.

Massimo Vignelli’s 2008 update to his 1972 NYC subway map. You can download a high-resolution PNG file of the Vignelli’s 2011 MTA Weekender map here.

1972 NYC subway map by Massimo Vignelli

1972 NYC subway map by Massimo Vignelli

Using Google Docs spreadsheets as a “database”

In my previous posts I had mentioned that my Library page uses a Google Docs spreadsheet as a pseudo-database. The following is an outline on how to do this.

The HTML:

On my Library page you see a form where you can search for various terms in my library. Let’s use the “music search” as our example, with this spreadsheet containing the data. The HTML for the drop-down menu, text field, “music search” submit button, and the two resulting iframe objects are as follows:

<form method="post" onsubmit="musicQuery(this.term.value, this.type.value); return false"> 
  <select name="type">
    <option value=a selected>composer
    <option value=b>title
    <option value=c>works
    <option value=d>performers
    <option value=e>ensembles
    <option value=f>label
    <option value=g>category
    <option value=h>media
    <option value=i>box 1
    <option value=j>box 2                        
  </select>
  <input type="text" name="term" />
  <input type="submit" value="music search" />
</form>
<iframe id="count_frame" frameborder="0"></iframe>  
<iframe id="test_frame" frameborder="0"></iframe>

The JavaScript:

You see that in the form tag, I used the onsubmit attribute to call the following JavaScript function:

musicQuery(this.term.value, this.type.value)

where this.term.value is the input in the text field, and this.type.value is the selection from the drop-down menu.

I define the musicQuery() JavaScript function as the following:

function musicQuery(term, type) {
  // The column variable is initialized
  var column = 'A';
  
  // This matches the drop-down menu value with the column in the spreadsheet
  if (type=='a'){column = 'D';}
  else if (type=='b'){column = 'E';}
  else if (type=='c'){column = 'F';}  
  else if (type=='d'){column = 'G';}
  else if (type=='e'){column = 'H';}
  else if (type=='f'){column = 'I';}  
  else if (type=='g'){column = 'L';}  
  else if (type=='h'){column = 'M';}  
  else if (type=='i'){column = 'B';}  
  else if (type=='j'){column = 'C';}  
  
  //  This returns the search results from the spreadsheet in Google-generated HTML format into an iframe 
  document.getElementById('test_frame').src = 'https://spreadsheets.google.com/tq?tqx=out:html&tq=select * where ' + column + ' like "%25' + term +'%25" order by '+ column +' &key=0ApXPq_cCdV4wdGZYRl9LbHQ5TGhPWlB2SWRvQUtKaHc&hl=en&authkey=CJ_y5sIH&gid=1';

  //  This returns counts of the number of titles and discs from the spreadsheet in Google-generated HTML format into an iframe 
  document.getElementById('count_frame').src = 'https://spreadsheets.google.com/tq?tqx=out:html&tq=select count(' + column + '), sum(J) where ' + column + ' like "%25' + term +'%25" label count(' + column + ') "Number of titles", sum(J) "Number of discs" &key=0ApXPq_cCdV4wdGZYRl9LbHQ5TGhPWlB2SWRvQUtKaHc&hl=en&authkey=CJ_y5sIH&gid=1';        

}

The Google API Query

As you can see in the JavaScript code, the HTML returned inside the iframe object is generated by Google’s servers according to a data source URL. This URL contains the Google query, and you can read more about how to use it in Google’s documentation on “Setting the Query in the Data Source URL”.

In the musicQuery() function, the data source URL for the ‘test-frame’ id is:

'https://spreadsheets.google.com/tq?tqx=out:html&tq=select * where ' + column + ' like "%25' + term +'%25" order by '+ column +' &key=0ApXPq_cCdV4wdGZYRl9LbHQ5TGhPWlB2SWRvQUtKaHc&hl=en&authkey=CJ_y5sIH&gid=1'

The following is the data source URL broken up into its constituents:

// the prefix of the data source URL
https://spreadsheets.google.com/tq? 

// this specifies HTML output
tqx=out:html 

// the SQL-like query is embedded here
&tq=select * where ' + column + ' like "%25' + term +'%25" order by '+ column +' 

// this is the public key to access the spreadsheet
&key=0ApXPq_cCdV4wdGZYRl9LbHQ5TGhPWlB2SWRvQUtKaHc&hl=en&authkey=CJ_y5sIH&gid=1 

How to run SQL-like queries on Google Docs spreadsheets

Google Docs spreadsheets have become quite useful with the ability to run SQL-like queries on them using Google’s API query language.

I will use as an example the following spreadsheet. The first sheet named “books” contains the data, and the second sheet named “queries” contains the results of the queries.

Example 1:

Let’s say I wanted to run a query on the “books” sheet where I wanted to count the number of titles for each category, and then order the list in descending order by number of titles. In a normal database (MySQL, PostgreSQL, etc.), the SQL query is:

select category, count(title)
from library_book
group by category
order by count(title) desc;

Using Google’s API query language, the following query is entered in cell A1 in the “queries” sheet:

=query('books'!A1:L, "select K, count(D) group by K order by count(D) desc label K 'Top categories', count(D) 'Titles'")

You will notice that at the end of the query there is an additional clause not native to SQL:

label K 'Top categories', count(D) 'Titles'

This is a property of Google’s API query language that allows me to label the top row of the resulting columns whatever name that I want.

Example 2:

Let’s say I wanted a list of the top 25 authors by number of titles, sorted descending by number of titles. In SQL the query is:

select author, count(title)
from library_book
group by author
order by count(title) desc
offset 1
limit 25;

(Note that the clause “offset 1” is to remove the 1st row from the results. This is due to the fact that the 1st row from the results has no author, and I’m not interested in the number of books with no author, as these books are usually compilations or reference books that instead has an editor.)

In Google’s API query language, the query is entered in cell D1 in the “queries” sheet:

=query('books'!A1:I, "select E, count(D) group By E order by count(D) desc limit 25 offset 1 label E 'Top 25 authors', count(D) 'Titles'")

Other uses:

In a subsequent post I will discuss how to treat a Google Docs Spreadsheet as a pseudo-database using JavaScript. An example of this is my Library.

Robert Taub – Babbitt: Three Compositions for piano
[Flash 9 is required to listen to audio.]

Milton Babbitt
Three compositions for piano
Robert Taub, piano
(Harmonia Mundi, 1992)

How to get Tumblr to work with Google Prettify

In my previous post I mentioned how Tumblr’s server-side parsing screws up Google Prettify. I deduced that the “less-than” symbol causes Tumblr to think that it is the first character of an HTML tag, and hence doesn’t render any of the characters following the “less-than” on the same line. Thus I have to use the HTML code for the “less-than” symbol inside the pre tags:

HTML number: &#60;
HTML name: &lt;
The less-than ASCII symbol: < 

Keep in mind that the HTML codes only work within the pre tags. Outside the pre tags the “less-than” symbol does not render due to Tumblr’s server-side parsing rules.

The following are examples of Google Prettify in action rendered properly, where the “less-than” symbol has been replaced by its HTML code, using as a nice concise example, various implementations of the insertion sort algorithm:

Pseudocode

for j ←1 to length(A)-1 
    key ← A[ j ] 
    A[ j ] is added in the sorted sequence A[1, .. j-1]
    i ← j - 1
    while i >= 0 and A [ i ] > key
        A[ i +1 ] ← A[ i ]
        i ← i -1
    A [i +1] ← key

C

void insertSort(int a[], size_t length) {  
    int i, j, value;  
  
    for(i = 1; i < length; i++) {  
        value = a[i];  
        for (j = i - 1; j >= 0 && a[j] > value; j--) {  
            a[j + 1] = a[j];  
        }  
        a[j+1] = value;  
    }  
}

C++

template< typename Iterator >  
void insertion_sort( Iterator First, Iterator Last )  
{  
    Iterator min = First;  
    for( Iterator i = First + 1; i < Last; ++i )  
        if ( *i < *min )  
            min = i;  
  
    std::iter_swap( First, min );  
    while( ++First < Last )  
        for( Iterator j = First; *j < *(j - 1); --j )  
            std::iter_swap( (j - 1), j );  
}

Java

static void insertionSort (int[] A) {  
    for (int i = 1; i < A.length; i++) {  
      int a = A[i];  
      int j;  
      for (j = i - 1; j >=0 && A[j] > a; j--){  
        A[j + 1] = A[j];  
      }  
      A[j + 1] = a;  
    }  
}

Perl

sub insertionSort {
    my @unsorted = @{$_[0]};
    my @sorted   = @{$_[1]};

    INSERTION:
    for my $current ( @unsorted ) { 
        for my $pos ( 0 .. $#sorted ) {
            if ( $sorted[$pos] >= $current ) {
                splice @sorted, $pos, 0, $current; # Insert $current
                next INSERTION;
            }
        }

        push @sorted, $current; # No larger value has been found in @sorted
    }

    return @sorted;
}

my @unsorted = qw(1 82 73 745839 928 7346 8 6 4 8 0 6 34 102);
my @sorted   = qw(1 5);

@sorted = insertionSort(\@unsorted, \@sorted);

PHP

for($j=1; $j < count($array); $j++){  
    $temp = $array[$j];  
    $i = $j;  
    while(($i >= 0) && ($array[$i-1] > $temp)){  
       $array[$i] = $array[$i-1];  
       $i--;  
    }  
    $array[$i] = $temp;  
}

Python

def insertsort(array):  
    for removed_index in range(1, len(array)):  
        removed_value = array[removed_index]  
        insert_index = removed_index  
        while insert_index > 0 and array[insert_index - 1] > removed_value:  
            array[insert_index] = array[insert_index - 1]  
            insert_index -= 1  
        array[insert_index] = removed_value

Ruby

def insertion_sort(array)  
  array.each_with_index do |el,i|  
    j = i - 1  
    while j >= 0  
      break if array[j] <= el  
      array[j + 1] = array[j]  
      j -= 1  
    end  
    array[j + 1] = el  
  end  
end
Interior\Exterior Set, Doge&#8217;s Palace, Venice
(Kodak 35mm B&amp;W film using a Nikon F3)

Interior\Exterior Set, Doge’s Palace, Venice
(Kodak 35mm B&W film using a Nikon F3)

Customizing the CSS of the Cargo theme

Most blog sites have limited customization capabilities. Wordpress is not bad, however their free accounts do not allow you to customize the CSS. If you want to customize the CSS, you have to download all the Wordpress PHP files and treat it as its own web framework locally with a local MySQL database. The problem is finding web hosting, or rather, free web hosting. Having worked with Rails, Django, and Symfony, ideally I wanted a dedicated server. Dedicated servers however are not cheap.

    After reëvaluating my requirements, I decided that I only really need to have complete control over the HTML and CSS. For server-side stuff I will have to continue to just experiment locally on my own server. With Tumblr, I can have complete control over the HTML and CSS, and unlike Wordpress, it’s free. As for database capabilites, there is a JavaScript workaround in conjunction with Google Doc spreadsheets that I will discuss in a subsequent post, but if you want to see this pseudo-database in action, go to my Library.

    I recently came across the Cargo theme. (You can install the theme from this link.) Having just sporadically used a perfunctory Tumblr theme over the years (using instead Wordpress), I was immediately attracted to its layout. In spite of Tumblr’s server problems, which from my experience are more frequent than the server problems of Wordpress, Facebook, and Google, I decided to spend some time fully customizing this theme.

    In addition I used Google Prettify to display my code snippet in a “pretty” fashion. You can download the CSS and JS files, modify them, and upload them to any server to host the files. (I use the free account version of Dropbox; ideally, Tumblr should host these files.) However there are issues in using Google Prettify in Tumblr as well as Wordpress, as there are server-side parsing that screws up the rendering of the code, and I have addressed how to fix this problem in a subsequent post.

    The following are my CSS modifications:

/* You can also view/download the CSS file here:
http://dl.dropbox.com/u/21028329/binary_simulacra_cargo_theme.css
*/

/* H1 tag for binary|simulacra font */
#nav_list h1{
  font-weight: normal;
  font-size: 24px;
  color: #000000;
  line-height: 30px;
  font-family: courier new; 
}

/* hover properties for H1 tags */
#nav_list h1 a:hover{
  text-decoration:none;
  color:#999999;
}

/* right navigation font */
#nav_list ul.faint li a{
  color: #999999;
  font-size: 12px;
  line-height: 18px;
  font-family:Helvetica, Arial, Verdana;
  word-spacing: 2px;
}

/* font properties for bottom of right nav bar */
#nav_list ul li{
  font-size:12px;
  line-height:18px;
  word-spacing: 2px;	
}

/* P tag for bottom of right nav bar */
#nav_list p{
  font-style:italic;
  font-size:12px;
  line-height:18px;
  font-family: Helvetica, Arial, Verdana;
  color:#999999
}

/* grid font */
.grid .post_thumb .inner{
  padding-right:10px;
  padding-left:10px;
  padding-top:10px;
  line-height:18px;
  color:#ffffff;
  font-size: 14px;
  font-family: Helvetica, Arial, Verdana;
}

/* H2 header font for posts */
#entry h2,
.list h2{
  font-size: 28px;
  font-weight: normal;
  letter-spacing: -1px;
  line-height: 30px;
  color: #000000;
  margin-bottom: 10px;
  font-family: courier new; 
}

/* hover properties for H2 tags */
#entry h2 a:hover,
  .list h2 a:hover{
  text-decoration:none;
  color:#999999;
}

/* H3 header font for posts */
#entry h3,
.list h3{
  font-size: 20px;
  font-weight: normal;
  letter-spacing: 1px;
  line-height: 24px;
  color: #000000;
  margin-bottom: 10px;
  margin-top: 20px;
  font-family: Baskerville;
}

/* P tag properties in posts */
p{
  font-family: Baskerville;
  font-size: 16px;
  line-height: 20px;
  word-spacing: 1px;
  color: #000000;
}

/* A tags in posts */
#entry .copy a,
.list .copy a{
  color:#000000;
  text-decoration:none;
  padding:1px;
  margin:-1px;
  border-bottom: 1px dashed;
}

/* hover properties for A tags in posts */
#entry .copy a:hover,
.list .copy a:hover{
  background-color:#B0C4DE;
  color:#ffffff;           
  text-decoration:none;
}

/* properties for UL tags in posts */
#entry .copy ul li{
  font-family: Baskerville;
  font-size: 16px;
  line-height: 20px;
  word-spacing: 1px;
  color: #000000;
  list-style-type: disc;
  margin-left:20px;
}

/* BLOCKQUOTE tag for quotes in posts */
#entry blockquote,
.list blockquote{
  padding-top:5px;
  padding-bottom:5px;
  padding-left:25px;
  border-left:2px none #999999;
  font-family: Baskerville;
  font-size: 16px;
  line-height: 20px;
  word-spacing: 1px;
  color: #000000;
}

/* font of the date at the bottom of posts */
.date {
  font-size:12px;
  color:#999999;
  font-family: Helvetica, Arial, Verdana;
}

/* A tags at the bottom of posts */
#entry .info a,
.list .info a{
  color:#999999;
  text-decoration:none;
  font-family: Helvetica, Arial, Verdana;
}

/* P tags in the info section at bottom of posts */
.info p{
  font-size: 12px;
  color: #999999;
  font-family: Helvetica, Arial, Verdana;
  position: relative;
  bottom: 10px;	
}

/* indent for the links on the Links page */
p.links {
  position: relative;
  left: 20px;
}

/* Have to add this because the audio file description leaks out in the grid */
.post_thumb p{
  font-size: 0px;
}
Endgame: Searching for Bobby Fischer 
(Kodak 35mm B&amp;W film using a Nikon F3)

Endgame: Searching for Bobby Fischer
(Kodak 35mm B&W film using a Nikon F3)

Transcribing the Goldberg Variations

J. S. Bach’s masterpiece for keyboard, the Goldberg Variations (published in 1754), was originally titled (in 18th-century High German) by the lengthy and unassuming:

Clavier Ubung bestehend in einer Aria mit verschiedenen Veraenderungen vors Clavicimbal mit 2 Manualen

[Keyboard Practice consisting of an Aria with diverse variations for the harpsichord with 2 manuals]


This pedantic title together with the apocryphal story that Bach wrote this piece for an insomniac Count (to be performed by a certain Johann Gottlieb Goldberg) did not help its popularity, as this piece did not enter the concert pianist/harpsichordist repertoire until the 20th-century, when Wanda Landowska, Rosalyn Tureck, and (most notably) Glenn Gould prominently featured the Goldberg Variations in their concerts and recordings. Like Bach’s music in general, the Goldberg Variations became quite attractive to transcribers. Notable examples of transcriptions of Bach’s music include:

  • Ferruccio Busoni’s transcription of the Chaconne in D minor (solo violin) for piano. Here is a performance of the original piece for solo violin by Arthur Grumiaux (part 2). Now here is a performance of Busoni’s transcription for piano by Hélène Grimaud (part 2).
  • Wendy Carlos’ transcriptions of selections of The Well-Tempered Clavier and The Brandenburg Concertos (as well as other Bach “hits”) for the Moog synthesizer! Here is the first movement of the Brandenburg Concerto No. 3 performed in its original instrumentation by the Freiburg Baroque Orchestra. Now here is a performance of the same piece transcribed for Moog synthesizer.
  • The Swingle Singers, an a capella jazz singing group formed in Paris in 1962, has transcribed Bach to great success. Here is a performance of the same 1st movement of Brandenburg Concerto No. 3 by the Swingle Singers.
  • Catrin Finch transcribed the Goldberg Variations for harp! Here is her performing the Aria. (Behind the scenes.)

Notable composers who have transcribed Bach’s music include Mozart, Schoenberg, Stravinksy, and Webern.

The Goldberg Variations in particular have been transcribed for (amongst other instrumentations): harp (above), classical guitar, string trio, string orchestra, and brass quintet. Of the transcriptions for strings, Dmitry Sitkovetsky’s transcriptions for string trio and string orchestra have been highly successful:

The following are selected exemplary performances of the Goldberg Variations on its original instrumentation, the keyboard (harpsichord/piano):

  • Glenn Gould performs the Aria and Variations 1-7 on the piano.
  • Pierre Hantaï performs the Aria and Variations 1-8 on the harpsichord.

In addition to studying the Goldberg Variations on piano, I have also made some attempts at transcribing the piece for both string trio and and string quartet. Each ensemble poses unique challenges, as the string trio often has the viola sharing melodic lines with both the violin and cello, and the string quartet has the addition of another violin, which is often redundant unless one transcribes more creatively. So far I have only worked on the Aria and Variations 1-4 (out of 32 variations).

> Aria:

The transcriptions are roughly straightforward as the viola is the only part that has any double-stops. The trio and quartet are almost identical in that the first and second violins in the quartet alternate in sharing the violin line in the trio. This is not a very creative solution, and hence I will have to come up with a better attempt.

> Variation 1:

This is a two-part invention straightforward to play on the piano (or harpsichord), so one problem is dividing up the bass-line into two parts for the viola and cello. This requires a kind of re-interpretation of the bass line by introducing counterpoint where there isn’t explicit counterpoint.

(A good example of this kind of contrapuntal interpretation is found in Glenn Gould’s recording of the C minor prelude from the Prelude and Fugue No. 2 in C minor, BWV 847 from Book I of The Well-Tempered Clavier; 1963, Sony Classical. This recording was used in one of the “short films” from François Girard’s excellent movie, 32 Short Films About Glenn Gould.)

Another problem for the string trio is in the transition line in bars 21-22, where the viola has to play fourths, which apparently is an awkward interval for string players. Also the first and second violins in the quartet alternate in sharing the violin line in the trio. Not a good solution.

> Variation 2:

I had major difficulty here, and this will be a work in progress. I will post any decent transcriptions in the future.

> Variation 3:

This variation is a canon at the unison, so for the quartet it is natural for the first and second violin to play the two voices in the right-hand part of the keyboard. The harmonic bass line can be entirely played by the cello, however the viola can be integrated into the bass line in the second section if desired. I will provide alternate versions of the quartet, one incorporating the viola and one leaving it out.

Transcribing for string trio however is a major challenge, as the range of the canon at the unison, though perfect for two violins, is quite difficult for a violin and a viola since the canon is out of the range of the viola. Thus the counterpoint must be broken up. Thus the problem is splitting up the canon so that it gives the illusion of making musical sense to the listener though the violin and the viola must engage in a kind of contrapuntal alchemy to create this illusion of a canon at the unison.

> Variation 4:

This variation in four-voices is like a four-part chorale, so for the quartet there is virtually no transcribing to be done, just simple separation of the voices. The easiest variation to transcribe so far.

For the trio on the other hand, there are major challenges, as all three instruments must perform a lot of double-stops in order to share the inner voices. Needless to say the trio transcription needs to be vastly improved.

> Variations 5-32:

Forthcoming.

Mango study #2 (watercolor and ink)

Mango study #2 (watercolor and ink)


Wood racquet demo: the Wilson Jack Kramer Pro Staff


I got a few of these Wilson Jack Kramer Pro Staff wooden racquets from eBay, and strung my first one from Brad Gilbert&#8217;s tennis shop in San Rafael a few years ago. (It was too small for the automatic Babolat stringing machines, so the stringing pro had to bring out the old Prince NEOS manual machine to string it.) I don&#8217;t live in the Bay Area any more, and it was difficult to find people who could string woodies. (For example Mason&#8217;s Tennis Mart in NY can&#8217;t string woodies.)


While out visiting family in Southern California I found that Hank Lloyd&#8217;s in Costa Mesa can string woodies, so I got one of my Jack Kramer Pro Staffs strung up with basic 17 gauge Prince synthetic gut at 55 lbs. The strung weight of the racquet is over 13.5 ounces, and the head size is 65 square inches. Grip size is 4&#160;5/8 inches. I have a couple other Jack Kramer Pro Staffs that are over 14 ounces, but since I&#8217;m not used to playing with woodies, I didn&#8217;t want to hit with them yet as playing with a racquet over 13.5 ounces is tough enough as it is.


You can check out a video of myself hitting with the Jack Kramer Pro Staff wood racquet here.


In tennis, old school is the best school!

Wood racquet demo: the Wilson Jack Kramer Pro Staff

I got a few of these Wilson Jack Kramer Pro Staff wooden racquets from eBay, and strung my first one from Brad Gilbert’s tennis shop in San Rafael a few years ago. (It was too small for the automatic Babolat stringing machines, so the stringing pro had to bring out the old Prince NEOS manual machine to string it.) I don’t live in the Bay Area any more, and it was difficult to find people who could string woodies. (For example Mason’s Tennis Mart in NY can’t string woodies.)

While out visiting family in Southern California I found that Hank Lloyd’s in Costa Mesa can string woodies, so I got one of my Jack Kramer Pro Staffs strung up with basic 17 gauge Prince synthetic gut at 55 lbs. The strung weight of the racquet is over 13.5 ounces, and the head size is 65 square inches. Grip size is 4 5/8 inches. I have a couple other Jack Kramer Pro Staffs that are over 14 ounces, but since I’m not used to playing with woodies, I didn’t want to hit with them yet as playing with a racquet over 13.5 ounces is tough enough as it is.

You can check out a video of myself hitting with the Jack Kramer Pro Staff wood racquet here.

In tennis, old school is the best school!

[Flash 10 is required to watch video]

Cecilia Bartoli and Bryn Terfel performs the “Pa-Pa-Pa” duet from Mozart’s Die Zauberflöte.


Leaving Apple, Redux


Steve Jobs recently announced his resignation as CEO from Apple. (He is unable to continue overseeing day-to-day operations due to his health.) He still however maintains a strong presence in Apple as the chairman of the board. 


    Reflecting back upon the man and his work, recall an in-depth interview (a then-29-year-old) Jobs gave to Playboy magazine in February 1985, one year after Apple had introduced the revolutionary Macintosh personal computer&#8212; and a few months before Jobs was ousted from the very company that he founded. Playboy has a knack of landing timely interviews; in 2004, Playboy interviewed Google founders Sergey Brin and Larry Page a few months before the company&#8217;s IPO on the NASDAQ stock exchange. Though the Google interview lacked the outright candor of the Steve Jobs interview, it was candid enough to draw critical attention from the SEC (on the potential violation of federal rules concerning IPOs).


    Jobs&#8217; interview didn&#8217;t garner retroactive government action of any kind, but instead revealed, in retrospect, an uncanny prescient irony:



    “You know, Dr. Edwin Land was a troublemaker. He dropped out of Harvard and founded Polaroid. Not only was he one of the great inventors of our time but, more important, he saw the intersection of art and science and business and built an organization to reflect that. Polaroid did that for some years, but eventually Dr. Land, one of those brilliant troublemakers, was asked to leave his own company—which is one of the dumbest things I’ve ever heard of.”



    The interview revealed Jobs&#8217; values and vision&#8212;unique and anathema to Silicon Valley and Corporate America at large&#8212;that he later advanced to resuscitate a comatose Apple during his return to the company in the late 1990s:



    “How come the Mac group produced Mac and the people at IBM produced the PCjr? We think the Mac will sell zillions, but we didn’t build Mac for anybody else. We built it for ourselves. We were the group of people who were going to judge whether it was great or not. We weren’t going to go out and do market research. We just wanted to build the best thing we could build. When you’re a carpenter making a beautiful chest of drawers, you’re not going to use a piece of plywood on the back, even though it faces the wall and nobody will ever see it. You’ll know it’s there, so you’re going to use a beautiful piece of wood on the back. For you to sleep well at night, the aesthetic, the quality, has to be carried all the way through.”



    “There’s always been this myth that really neat, fun people at home all of a sudden have to become very dull and boring when they come to work. It’s simply not true. If we can inject that liberal-arts spirit into the very serious realm of business, I think it will be a worthwhile contribution. We can’t even conceive of how far it will go.”



    Jobs also spoke at length about growing up, revealing a precocious youth that later led to formative stints at Hewlett-Packard and Atari, and teaming up with Steve Wozniak:


    “My mother taught me to read before I went to school, so I was pretty bored in school, and I turned into a little terror. You should have seen us in third grade. We basically destroyed our teacher. We would let snakes loose in the classroom and explode bombs.”


    “When I was 12 or 13, I wanted to build something and I needed some parts, so I picked up the phone and called Bill Hewlett—he was listed in the Palo Alto phone book. He answered the phone and he was real nice. He chatted with me for, like, 20 minutes. He didn’t know me at all, but he ended up giving me some parts and he got me a job that summer working at Hewlett-Packard on the line, assembling frequency counters. Assembling may be too strong. I was putting in screws. It didn’t matter; I was in heaven. I remember my first day, expressing my complete enthusiasm and bliss at being at Hewlett-Packard for the summer to my supervisor, a guy named Chris, telling him that my favorite thing in the whole world was electronics. I asked him what his favorite thing to do was and he looked at me and said, ‘To fuck!’ [Laughs] I learned a lot that summer.”


    “Atari had shipped a bunch of games to Europe and they had some engineering defects in them, and I figured out how to fix them, but it was necessary for somebody to go over there and actually do the fixing. I volunteered to go and asked to take a leave of absence when I was there. They let me do it. I ended up in Switzerland and moved from Zurich to New Delhi. I spent some time in India.”


    “I was working a lot at Atari at night and I used to let Woz in. Atari put out a game called Gran Track, the first driving game with a steering wheel to drive it. Woz was a Gran Track addict. He would put great quantities of quarters into these games to play them, so I would just let him in at night and let him onto the production floor and he would play Gran Track all night long. When I came up against a stumbling block on a project, I would get Woz to take a break from his road rally for ten minutes and come and help me. He puttered around on some things, too. And at one point, he designed a computer terminal with video on it. At a later date, he ended up buying a microprocessor and hooking it up to the terminal and made what was to become the Apple I. Woz and I laid out the circuit board ourselves. That was basically it.”


    The interview is a fascinating record of a man, nearing his thirtieth birthday, who (unbeknownst to him) was about to be forced out of the company that he started. Jobs was at first devastated at the turn of events, but years later he stated “that getting fired from Apple was the best thing that could have ever happened to me&#8221; during his inspiring commencement address to Stanford University&#8217;s class of 2005.


    Jobs ends the interview on the topic of “turning over the reigns to the next generation&#8221;:


&#8220;It’s a very interesting challenge, isn’t it? How to grow obsolete with grace.&#8221;


(You can read the entirety of Playboy&#8217;s Steve Jobs interview here.) 
[Length: 16,917 words]

Leaving Apple, Redux

Steve Jobs recently announced his resignation as CEO from Apple. (He is unable to continue overseeing day-to-day operations due to his health.) He still however maintains a strong presence in Apple as the chairman of the board.

    Reflecting back upon the man and his work, recall an in-depth interview (a then-29-year-old) Jobs gave to Playboy magazine in February 1985, one year after Apple had introduced the revolutionary Macintosh personal computer— and a few months before Jobs was ousted from the very company that he founded. Playboy has a knack of landing timely interviews; in 2004, Playboy interviewed Google founders Sergey Brin and Larry Page a few months before the company’s IPO on the NASDAQ stock exchange. Though the Google interview lacked the outright candor of the Steve Jobs interview, it was candid enough to draw critical attention from the SEC (on the potential violation of federal rules concerning IPOs).

    Jobs’ interview didn’t garner retroactive government action of any kind, but instead revealed, in retrospect, an uncanny prescient irony:

    “You know, Dr. Edwin Land was a troublemaker. He dropped out of Harvard and founded Polaroid. Not only was he one of the great inventors of our time but, more important, he saw the intersection of art and science and business and built an organization to reflect that. Polaroid did that for some years, but eventually Dr. Land, one of those brilliant troublemakers, was asked to leave his own company—which is one of the dumbest things I’ve ever heard of.”

    The interview revealed Jobs’ values and vision—unique and anathema to Silicon Valley and Corporate America at large—that he later advanced to resuscitate a comatose Apple during his return to the company in the late 1990s:

    “How come the Mac group produced Mac and the people at IBM produced the PCjr? We think the Mac will sell zillions, but we didn’t build Mac for anybody else. We built it for ourselves. We were the group of people who were going to judge whether it was great or not. We weren’t going to go out and do market research. We just wanted to build the best thing we could build. When you’re a carpenter making a beautiful chest of drawers, you’re not going to use a piece of plywood on the back, even though it faces the wall and nobody will ever see it. You’ll know it’s there, so you’re going to use a beautiful piece of wood on the back. For you to sleep well at night, the aesthetic, the quality, has to be carried all the way through.”

    “There’s always been this myth that really neat, fun people at home all of a sudden have to become very dull and boring when they come to work. It’s simply not true. If we can inject that liberal-arts spirit into the very serious realm of business, I think it will be a worthwhile contribution. We can’t even conceive of how far it will go.”

    Jobs also spoke at length about growing up, revealing a precocious youth that later led to formative stints at Hewlett-Packard and Atari, and teaming up with Steve Wozniak:

    “My mother taught me to read before I went to school, so I was pretty bored in school, and I turned into a little terror. You should have seen us in third grade. We basically destroyed our teacher. We would let snakes loose in the classroom and explode bombs.”

    “When I was 12 or 13, I wanted to build something and I needed some parts, so I picked up the phone and called Bill Hewlett—he was listed in the Palo Alto phone book. He answered the phone and he was real nice. He chatted with me for, like, 20 minutes. He didn’t know me at all, but he ended up giving me some parts and he got me a job that summer working at Hewlett-Packard on the line, assembling frequency counters. Assembling may be too strong. I was putting in screws. It didn’t matter; I was in heaven. I remember my first day, expressing my complete enthusiasm and bliss at being at Hewlett-Packard for the summer to my supervisor, a guy named Chris, telling him that my favorite thing in the whole world was electronics. I asked him what his favorite thing to do was and he looked at me and said, ‘To fuck!’ [Laughs] I learned a lot that summer.”

    “Atari had shipped a bunch of games to Europe and they had some engineering defects in them, and I figured out how to fix them, but it was necessary for somebody to go over there and actually do the fixing. I volunteered to go and asked to take a leave of absence when I was there. They let me do it. I ended up in Switzerland and moved from Zurich to New Delhi. I spent some time in India.”

    “I was working a lot at Atari at night and I used to let Woz in. Atari put out a game called Gran Track, the first driving game with a steering wheel to drive it. Woz was a Gran Track addict. He would put great quantities of quarters into these games to play them, so I would just let him in at night and let him onto the production floor and he would play Gran Track all night long. When I came up against a stumbling block on a project, I would get Woz to take a break from his road rally for ten minutes and come and help me. He puttered around on some things, too. And at one point, he designed a computer terminal with video on it. At a later date, he ended up buying a microprocessor and hooking it up to the terminal and made what was to become the Apple I. Woz and I laid out the circuit board ourselves. That was basically it.”

    The interview is a fascinating record of a man, nearing his thirtieth birthday, who (unbeknownst to him) was about to be forced out of the company that he started. Jobs was at first devastated at the turn of events, but years later he stated “that getting fired from Apple was the best thing that could have ever happened to me” during his inspiring commencement address to Stanford University’s class of 2005.

    Jobs ends the interview on the topic of “turning over the reigns to the next generation”:

“It’s a very interesting challenge, isn’t it? How to grow obsolete with grace.”


(You can read the entirety of Playboy’s Steve Jobs interview here.)
[Length: 16,917 words]

Massimo Vignelli&#8217;s 2008 update to his 1972 NYC subway map. You can download a high-resolution PNG file of the Vignelli&#8217;s 2011 MTA Weekender map here.

Massimo Vignelli’s 2008 update to his 1972 NYC subway map. You can download a high-resolution PNG file of the Vignelli’s 2011 MTA Weekender map here.

1972 NYC subway map by Massimo Vignelli

1972 NYC subway map by Massimo Vignelli

Interior\Exterior Set, Doge&#8217;s Palace, Venice
(Kodak 35mm B&amp;W film using a Nikon F3)

Interior\Exterior Set, Doge’s Palace, Venice
(Kodak 35mm B&W film using a Nikon F3)

Endgame: Searching for Bobby Fischer 
(Kodak 35mm B&amp;W film using a Nikon F3)

Endgame: Searching for Bobby Fischer
(Kodak 35mm B&W film using a Nikon F3)

Mango study #2 (watercolor and ink)

Mango study #2 (watercolor and ink)

A triangle puzzle in JavaScript
Using Google Docs spreadsheets as a “database”
How to run SQL-like queries on Google Docs spreadsheets
Robert Taub – Babbitt: Three Compositions for piano

Milton Babbitt
Three compositions for piano
Robert Taub, piano
(Harmonia Mundi, 1992)

How to get Tumblr to work with Google Prettify
Customizing the CSS of the Cargo theme
Transcribing the Goldberg Variations

About:

Binary Simulacra is a bricolage of text, sound and sight. Fundamentally represented by the binary digits of zeroes and ones, such digital information are essentially “copies” of some “original” entity, where the various processes of mimesis through multiple levels of reproduction (manual, mechanical, and digital) have endowed upon these copies an ontological status that is perhaps best expressed by Jean Baudrillard’s ideas on the word simulacra: that the “copies” themselves have become substitutes in place of the “original” in terms of relevance and significance. In addition to the allusion to the digital, “binary” also alludes to the dual nature of the “original” and the “copy”.

Kevin