Startup

The best way to come up with startup ideas is to ask yourself the question: what do you wish someone would make for you?

— Paul Graham

2011.03.29 Tuesday ACHK

The computer software industry

The most amazing achievement of the computer software industry is its continuing cancellation of the steady and staggering gains made by the computer hardware industry.

— Henry Petroski

2011.03.22 Tuesday ACHK

The Social Network

Speaking to an audience at Stanford University, Zuckerberg stated that the film portrayed his motivations for creating Facebook inaccurately; instead of an effort to “get girls”, he says he created the site because he enjoys “building things”. 

— Wikipedia on The Social Network

One of the most interesting things to me was his analysis of what The Social Network got wrong. People in Hollywood couldn’t imagine that someone would build something because they were interested in building things, so they had to create another, perhaps more “movie-compatible,” motivation for him.

— Mark Zuckerberg on What Hollywood Doesn’t Get About Silicon Valley

— Jessica Livingston

2011.03.21 Monday ACHK

ANSI Common LISP

.

ANSI Common LISP (by Paul Graham) was the book I borrowed for a Machine Intelligence course project in 2000. My memory was that the author was called “Paul something”. I thought that Paul was the one who had invented LISP.

No. It should be John McCarthy.

Later on, during my teaching-in-high-school period, by a Wikipedia biography, I realized that that Paul was not as great as I thought, because he was not the one who had invented LISP.

However, now, I regard him as one of my five most important teachers.

— Me@2010.03.08

— Me@2011.03.14

.

.

.

2011.03.14 Monday (c) All rights reserved by ACHK

Prefix notation

A more serious problem is the diffuseness of prefix notation. For expert hackers, that really is a problem. No one wants to write (aref a x y) when they could write a[x,y].

In this particular case there is a way to finesse our way out of the problem. If we treat data structures as if they were functions on indexes, we could write (a x y) instead, which is even shorter than the Perl form. Similar tricks may shorten other types of expressions.

— Paul Graham

2011.03.09 Wednesday ACHK

Blub programmer

大世界 3.2

    Our hypothetical Blub programmer wouldn’t use either [Cobol or assembly]. Of course he wouldn’t program in machine language. That’s what compilers are for. And as for Cobol, he doesn’t know how anyone can get anything done with it. It doesn’t even have x (Blub feature of your choice).

    As long as our hypothetical Blub programmer is looking down the power continuum, he knows he’s looking down. Languages less powerful than Blub are obviously less powerful, because they’re missing some feature he’s used to. But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn’t realize he’s looking up. What he sees are merely weird languages. He probably considers them about equivalent in power to Blub, but with all this other hairy stuff thrown in as well. Blub is good enough for him, because he thinks in Blub.

    When we switch to the point of view of a programmer using any of the languages higher up the power continuum, however, we find that he in turn looks down upon Blub. How can you get anything done in Blub? It doesn’t even have y.

    By induction, the only programmers in a position to see all the differences in power between the various languages are those who understand the most powerful one. (This is probably what Eric Raymond meant about Lisp making you a better programmer.) You can’t trust the opinions of the others, because of the Blub paradox: they’re satisfied with whatever language they happen to use, because it dictates the way they think about programs.
   
— Paul Graham

2011.03.02 Wednesday ACHK

Windows

Product progression

Original line

    * Windows 1.0
    * Windows 2.0
    * Windows 2.1 aka Windows/286 and Windows/386
    * Windows 3.0
    * Windows 3.1
    * Windows 3.11 aka Windows for Workgroups
    * Windows 3.2

Windows 9x

    * Windows 4.0 (Windows 95)
    * Windows 4.1 (Windows 98)
    * Windows 4.9 (Windows Me)

Windows NT

    * Windows NT 3.1
    * Windows NT 3.5
    * Windows NT 3.51
    * Windows NT 4.0
    * Windows NT 5.0 (Windows 2000)
    * Windows NT 5.1 (Windows XP)
    * Windows NT 5.2 (Windows Server 2003 and Windows XP Professional x64 Edition)
    * Windows NT 6.0 (Windows Vista and Windows Server 2008)
    * Windows NT 6.1 (Windows 7 and Windows Server 2008 R2)

   
— Wikipedia on History of Microsoft Windows

2011.02.26 Saturday ACHK

Windows 3.1x

Legacy

Windows 3.x was superseded by the release of Windows 95 in August 1995.

Windows 3.1 found a niche market as an embedded operating system after becoming obsolete in the PC world. Up until November 2008, both Virgin Atlantic and Qantas employed it for some of the onboard entertainment systems on long-distance jets. It also sees continued use as an embedded OS in retail cash tills.

On 9 July 2008, it was announced that Windows for Workgroups 3.11 for the embedded devices channel would no longer be made available for OEM distribution as of 1 November 2008.

— Wikipedia on Windows 3.1x

2011.02.26 Saturday ACHK

Windows API

Windows API itself is a virtual machine.

Windows API abstracts the hardware away from the application programs.

With Windows API, a programmer does not need to care exactly which hardware the computer is based on.

— Me@2011.02.25

2011.02.26 Saturday (c) All rights reserved by ACHK

Autological

1. An adjective is autological if and only if it describes itself. For example “short” is autological, since the word “short” is short. “English,” “unhyphenated” and “pentasyllabic” are also autological.
  
2. An adjective is heterological if it does not describe itself. Hence “long” is a heterological word, as are “abbreviated” and “monosyllabic.”

  
Is “autological” autological?

It can be chosen consistently to be either:

    * if we say that “autological” is autological, and then ask if it applies to itself, then yes, it does, and thus is autological;
    * if we say that “autological” is not autological, and then ask if it applies to itself, then no, it does not, and thus is not autological.

This is the opposite of the situation for heterological: while “heterological” logically cannot be autological or heterological, “autological” can be either.

In logical terms, the situation for “autological” is:

    “autological” is autological if and only if “autological” is autological
    A if and only if A, a tautology

while the situation for “heterological” is:

    “heterological” is heterological if and only if “heterological” is autological
    A if and only if not A, a contradiction.

— Wikipedia on Grelling–Nelson paradox

2011.02.24 Thursday ACHK

Metamagical Themas

There are three articles centered on the Lisp programming language, where Hofstadter first details the language itself, and then shows how it relates to Godel’s incompleteness theorem.

The title is an example of wordplay: it is an anagram of Mathematical Games, the title of Martin Gardner’s column that Hofstadter’s column succeeded in Scientific American.

— Wikipedia on Metamagical Themas

2011.02.23 Wednesday ACHK

重新開機

有一個簡單的方法,可以知道程式作者有沒有為程式用者設想:

看看安裝一個程式時,該個程式會不會要求你「重新開機」。

「好程式」和「壞程式」的分別是,

安裝「好程式」時,它不會要求你「重新開機」。

結論是,大部分情況下,不應安裝任何會要求你「重新開機」的程式。

— Me@2011.02.13

2011.02.15 Tuesday (c) All rights reserved by ACHK

The Truth About Lisp

Learning lisp will alter your life.

Your brain will grow bigger than you ever thought possible.

Paul Graham himself was completely written in lisp, by an earlier version of himself, also written in lisp, by an earlier version of lisp. It’s lisp, paul graham, lisp, paul graham, all the way down.

— Leon Bambrick

2011.01.27 Thursday ACHK

Type inference

While strong, static typing makes Haskell safe, type inference makes it concise. The result is potent: we end up with a language that’s both safer than popular statically typed languages, and often more expressive than dynamically typed languages. This is a strong claim to make, and we will back it up with evidence throughout the book.

— Real World Haskell

— by Bryan O’Sullivan, Don Stewart, and John Goerzen

2011.01.09 Sunday ACHK 

if-then-else

The ubiquitous if-then-else structure, now taken for granted as an essential element of any programming language, was invented by McCarthy for use in Lisp, where it saw its first appearance in a more general form (the cond structure). It was inherited by Algol, which popularized it.

— Wikipedia on Lisp (programming language)

2011.01.08 Saturday ACHK