Tuesday, October 23, 2012

Programmers Anonymous notes, 1101

Cellular automata are implemented as rules on a discrete grid. This seems to limits the range of possible behaviors, as the rules depend on a finite number of neighbors. SmoothLife is also implemented on a (rectangular) grid, but the rules approximate continuous functions on a large set of neighbors. Finding parameter sets that display interesting behavior is more difficult, but this example shows that motion of coherent structures (gliders) in any direction is possible. Source code. Paper describing the implementation.

Learnable Programming

A visual interface designer with a huge ego criticizes the way everyone else programs:
The goals of a programming system should be:
  • to support and encourage powerful ways of thinking
  • to enable programmers to see and understand the execution of their programs
A live-coding Processing environment addresses neither of these goals. JavaScript and Processing are poorly-designed languages that support weak ways of thinking, and ignore decades of learning about learning. And live coding, as a standalone feature, is worthless.
Alan Perlis wrote, "To understand a program, you must become both the machine and the program." This view is a mistake, and it is this widespread and virulent mistake that keeps programming a difficult and obscure art. A person is not a machine, and should not be forced to think like one.

Relatively Prime's Chinook podcast

Chinook is the greatest checkers player in the world, in fact it is impossible to beat. The product of an 18 year project in computer artificial intelligence, Chinook represents one of the greatest breakthroughs in computer game playing and was the first machine to ever hold a human world championship. (Relatively Prime, stories from the mathematical domain)

Chinook's story is a bittersweet and moving tale, a modern account of John Henry and the steam-drill, though this version is told from the point of view of the machine and its maker, Jonathan Schaeffer, a University of Alberta scientist who led the Chinook team. Schaeffer's quest begins with an obsessive drive to beat reigning checkers champ Marion Tinsley, but as the tale unfolds, Tinsley becomes more and more sympathetic, so that by the end, I was rooting for the human. (Cory Doctorow's description)

"...a time-ordered stream of documents that functions as a diary of your electronic life; every document you create and every document other people send you is stored in your lifestream. The tail of your stream contains documents from the past (starting with your electronic birth certificate). Moving away from the tail and toward the present, your stream contains more recent documents --- papers in progress or new electronic mail; other documents (pictures, correspondence, bills, movies, voice mail, software) are stored in between. Moving beyond the present and into the future, the stream contains documents you will need: reminders, calendar items, to-do lists."Eric Freeman, David Gelemter in Lifestreams Project Home Page
Lifestreams represent a source of information about people's intents that can be mined.[3] 

Numerical approximations of pi
The English amateur mathematician William Shanks, a man of independent means, spent over 20 years calculating pi to 707 decimal places. This was accomplished in 1873, although only the first 527 were correct. His routine was as follows: He would calculate new digits all morning; and then he would spend all afternoon checking his morning's work. This was the longest expansion of pi until the advent of the electronic digital computer three-quarters of a century later.

Stern–Brocot tree
In number theory, the Stern–Brocot tree is an infinite complete binary tree in which the vertices correspond precisely to the positive rational numbers, whose values are ordered from left to right as in a search tree.
The Stern–Brocot tree was discovered independently by Moritz Stern (1858) and Achille Brocot (1861). Stern was a German number theorist; Brocot was a French clockmaker who used the Stern–Brocot tree to design systems of gears with a gear ratio close to some desired value by finding a ratio of smooth numbers near that value.

No comments:

Post a Comment