Tuesday, September 30, 2008

Double Breeder

Inspired by Nick Gotts style putting two puffers at right angles to produce "unlimited novelty", here's putting two breeders at right angles in Conway's Game of Life.

http://www.mit.edu/~kenta/three/double-breeder.lif

Fiscal Conservatism and Transfers

The key idea of fiscal conservatism, i.e., a conservative fiscal policy, is that when the government spends money, say, on a bullet, that money is spent on that bullet, and that money is not coming back. The economic resources spent in creating that bullet could have been more efficiently allocated by the market.

However, it is different for government transfers, i.e., when the government raises money through taxes and gives it to another party. This is a zero-sum redistribution of wealth within the economy, a "mere transfer", and that money is coming back, to be spent by the recipient of the transfer.

The benevolent government carries out such transfers in hopes of effecting a second-order positive effect from the wealth redistribution, and hopes that the positive effect outweighs the distortions in incentives caused by taxation.

Thus, fiscal conservatism and the degree of wealth distribution are distinct ideas, and phrases like "small government" and "lower taxes" conflate them.

With this in mind, I am convinced that the $700 billion dollar bailout is just a transfer. Real estate developers and sellers did well, mortgage lenders and buyers took a loss, and if the bailout passes, then some of that loss will be shouldered by taxpayers. (Maybe the tax rate can be raised on profit from real estate sales, thus completing the circle.) In the grand scale of things, it's simply money flying around from one hand to another. The government is not really spending (or wasting) money on anything.

Don't lose sight of real government spending, for example the Iraq war.

Wednesday, September 24, 2008

Video Hosting

Compete against Youtube, et al, with a standalone application (or browser plugin, extension). Use distributed technology to lessen the hosting bandwidth cost.

The host serves: trackers, a search service, public keys, private key backup, mapping from email addresses to private keys, the "master" database of the initial insertions of all videos and metadata (which is subsequently served out peer to peer), and handles (sadly) all the censorship of explicit content and copyright infringement.

Technologies: Hashcash, Ratings (wisdom of the masses), Plausible Deniability, Onion Routing (10% of the time), Public-key cryptography, cryptographic checksums, "Make available offline", Ogg Theora, trackerless (DHT).

Censorship is unfortunate, but I think there is enough rope that a determined attacker to build a non-censoring version of the service hosted elsewhere. The only thing that needs to be kept secret is the mapping from private keys to email addresses.

Ratings (Wisdom of the masses)

If you have a bunch of people rate an object, you open the door for a lot of spam or botnet rating distortion. But if one person can also rate lots of different objects, then you can pay attention to people whose ratings are similar to yours, and discount people whose ratings are different from yours to filter out the spam.

Tuesday, September 23, 2008

.recently-used.xbel

It's been noted that GNOME goes through great lengths to resurrect .recently-used.xbel even if the user has tried to disable it by making it read-only or unwriteable. Where is this being done? Looking through the code finds the following suspects:

gnome-control-center-2.23.90/libslab/bookmark-agent.c

gnome-main-menu-0.9.11/main-menu/src/main-menu-ui.c

gtk+-2.14.2/gtk/gtkrecentmanager.c

Thursday, September 18, 2008

Abbreviated Calendar

Some calendars with 28 days or 21 days chopped out of each month.

Isn't it interesting that the last days of the month always end up on the same days of the week as the first days of the month?

If you are good at taking numbers modulo 7, these calendars are good enough.

The month of February sometimes entirely disappears.

28-day cuts:

Sun Mon Tue Wed Thu Fri Sat
===========================
       |1   2   3  |1  |1
 2008  |January    |Feb|Mar
       |29  30  31 |29 |29
---------------------------
2   3  |1   2  |1   2   3
March  |April  |May
30  31 |29  30 |29  30  31
---------------------------
1   2  |1   2   3  |1   2
June   |July       |August
29  30 |29  30  31 |29  30
---------------------------
3  |1   2  |1   2   3  |1
Aug|Septemb|October    |Nov
31 |29  30 |29  30  31 |29
---------------------------
2  |1   2   3
Nov|December
30 |29  30  31

Sun Mon Tue Wed Thu Fri Sat
===========================
               |1   2   3
 2009          |January
               |29  30  31
---------------------------
1   2   3  |1   2  |1   2
March      |April  |May
29  30  31 |29  30 |29  30
---------------------------
3  |1   2  |1   2   3  |1
May|June   |July       |Aug
31 |29  30 |29  30  31 |29
---------------------------
2   3  |1   2  |1   2   3
August |Septemb|October
30  31 |29 30  |29  30  31
---------------------------
1   2  |1   2   3
Novembe|December
29  30 |29  30  31

21-day cuts:

Sun Mon Tue Wed Thu Fri Sat
===========================
 2008  |January
       |1   2   3   4   5
---------------------------
January            |Februar
6   7   8   9   10 |1   2
---------------------------
February               |Mar
3   4   5   6   7   8  |1
---------------------------
March
2   3   4   5   6   7   8
---------------------------
March  |April
9   10 |1   2   3   4   5
---------------------------
April          |May
6   7   8   9  |1   2   3
---------------------------
May
4   5   6   7   8   9   10
---------------------------
June
1   2   3   4   5   6   7
---------------------------
June   |July
8   9  |1   2   3   4   5
---------------------------
July               |August
6   7   8   9   10 |1   2
---------------------------
August
3   4   5   6   7   8   9
---------------------------
Aug|September
10 |1   2   3   4   5   6
---------------------------
September  |October
7   8   9  |1   2   3   4
---------------------------
October                |Nov
5   6   7   8   9   10 |1
---------------------------
November
2   3   4   5   6   7   8
---------------------------
Nov|December 
9  |1   2   3   4   5   6
---------------------------
December
7   8   9   10

Sun Mon Tue Wed Thu Fri Sat
===========================
 2009          |January
               |1   2   3
---------------------------
January
4   5   6   7   8   9   10
---------------------------
February
1   2   3   4   5   6   7
---------------------------
March
1   2   3   4   5   6   7
---------------------------
March      |April
8   9   10 |1   2   3   4
---------------------------
April              |May
5   6   7   8   9  |1   2
---------------------------
May
3   4   5   6   7   8   9
---------------------------
May|June
10 |1   2   3   4   5   6
---------------------------
June       |July
7   8   9  |1   2   3   4
---------------------------
July                   |Aug
5   6   7   8   9   10 |1
---------------------------
August
2   3   4   5   6   7   8
---------------------------
August |September
9   10 |1   2   3   4   5
---------------------------
September      |October
6   7   8   9  |1   2   3
---------------------------
October
4   5   6   7   8   9   10
---------------------------
November
1   2   3   4   5   6   7
---------------------------
Novembe|December
8   9  |1   2   3   4   5
---------------------------
December
6   7   8   9   10

Building Firefox on Ubuntu Hardy

apt-get build-dep firefox
aptitude install mercurial libasound2-dev libcurl4-gnutls-dev libjpeg-progs

Wednesday, September 17, 2008

How much space does Windows XP take?

Some notes from reinstalling my thinkpad z60t using built-in rescue and recovery (restore to factory original state).

GB usedCumulative GB
Initial Install6.5
First Batch of Windows updates 2.89.3
XP SP3 1.210.5
Delete swap area -2.08.5
Windows Media Player 11 0.28.7
More Windows updates 0.18.8
Lenovo System Update 2.311.1

GB=10243 = 1073741824 bytes.

Absolute minimum space needed is 11.1GB or 11.9*109 bytes. Resized to 15 "GB" in the Debian installer but the installer used GB=109 bytes, so ended up getting only 13.9 GB, leaving 2.8 GB free.

It looks like 2GB could be saved if hibernation is disabled.

Tuesday, September 16, 2008

Scaling up

The holy grail of high performance computing looks like this:

The program must use 64-bit memory addressing to use any amount of memory, use the hard drive as additional memory, use multiple hard drives efficiently so as to avoid thrashing any single hard drive. The program must scale to shared memory multiple processors or cores (SMP), and to distributed memory message passing, and do the right thing depending on the latency between distributed nodes. Use GPGPU and FPGA. The program must be robust to hard drive failures and to entire distributed nodes going down.

The operating system might take care of some of these issues.

I believe function programming is the solution. A very high level description of a computation is automatically (or human-assisted) compiled for the given architecture.

Saturday, September 13, 2008

Proof Art

Mathematical proofs displayed as public art, because a good proof is beautiful. People can mull over it for a few decades.

Friday, September 12, 2008

Fishtank

Create a realistic aquarium screensaver with fish.

Wednesday, September 10, 2008

XMonad wishlist

Having used XMonad for a little while, here are some things I want. Some I will get around to as soon as I get a hang of configuring it. Others probably require considerable architectural overhaul.

Quick key for maximize and restore.

Quote key to pass commands through window manager to application, like Emacs's C-q. Or vi-style WM mode and Application mode.

Collapse all windows in all workspaces into a single workspace.

The size of a tile need not define the size of the window but the size of the viewport through which possibly only part of the window is visible. The window may be resized and panned behind the viewport. This feature is intended for applications which put a lot of fluff, e.g., toolbars and menubars, around the actual content.

Compositing. Scale and rotate windows and tiles.

Tuesday, September 09, 2008

Old Del.icio.us bookmarklet

javascript:location.href='http://del.icio.us/post?v=4;url='+encodeURIComponent(location.href)+';title='+encodeURIComponent(document.title)

The new Delicious one does not work with NoScript.

Saturday, September 06, 2008

Why open source

Two software that really ought to be open source: anything claiming to be "secure" and user interfaces. The former is so that the user may verify the claim, and the latter is because everyone has different preferences on how they want their UI to look and behave. UI design is so hard that the only way to do it right is to leave it open for modification.

Friday, September 05, 2008

Circle (or Disc)

#! perl -w
die unless ($size=$ARGV[0]);
$center=($size-1)/2;
$radsquared=$size*$size/4;
print "P2\n$size $size\n1\n";

for $i(0..($size-1)) {
  $dx=$i-$center;
  for $j (0..($size-1)) {
    $dy=$j-$center;
    if ($dx*$dx+$dy*$dy<=$radsquared) {
      print "1"
    } else {
       print "0"
     }
    print " ";
  }
  print "\n";
}

circle

Gradients

A pgmgradient program that creates gradients at a specified "angle" in NetPBM format.

Gradient factor 0.1

Gradient factor 0.5

Gradient factor 0.9

Thursday, September 04, 2008

Wednesday, September 03, 2008

A decisive Najdorf game

Glaurung 2.1 against itself, 7000000000 nodes per move. Log file.

1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Be3 e5 7. Nb3 Be7 8. Be2 O-O 9. O-O Be6 10. Qd3 Nc6 11. Rad1 Rc8 12. a3 Na5 13. Nxa5 Qxa5 14. Bg5 Qb6 15. Rb1 h6 16. Be3 Qc6 17. Rfd1 b5 18. Bd2 Bd8 19. Rbc1 Bc4 20. Qf3 Bxe2 21. Qxe2 Ba5 22. f3 Rfe8 23. Nd5 Nxd5 24. Bxa5 Nf4 25. Qd2 Qc4 26. Kh1 Rc6 27. Bb4 Ra8 28. g3 Ne6 29. Bc3 Rac8 30. Kg2 Nc5 31. b3 Qe6 32. Bb4 Qd7 33. Qd5 Qc7 34. Bd2 Nd7 35. Rf1 Qa7 36. Rf2 Qb6 37. h3 Nf8 38. c3 Nd7 39. Qd3 Qa5 40. Ra1 Qc7 41. Re2 Nc5 42. Qd5 Qd7 43. Rb1 Qe7 44. Be1 Ne6 45. Bd2 Qd7 46. Rd1 Nc7 47. Qd3 Qe6 48. Qb1 Ne8 49. Rc1 Nf6 50. Qb2 Nd7 51. Qb1 Nc5 52. c4 bxc4 53. bxc4 Na4 54. Be3 Rxc4 55. Rxc4 Qxc4 56. Rd2 Nc3 57. Qb7 Rc7 58. Qb6 Rc6 59. Qb7 Kh7 60. Bf2 d5 61. exd5 Nxd5 62. Qb1+ Rg6 63. Kh2 Nf4 64. Qd1 Ne6 65. Qc2 Qxc2 66. Rxc2 Ng5 67. Kg2 Rd6 68. h4 Ne6 69. h5 f6 70. a4 Rd3 71. Rc6 Ng5 72. f4 exf4 73. gxf4 Ne4 74. Ba7 Ng3 75. Bb8 Nxh5 76. Rxa6 Kg6 77. Ra5 Ng3 78. Rb5 Ne4 79. a5 Ra3 80. Ba7 Nd6 81. Rc5 Nb7 82. f5+ Kg5 83. Rc7 Nxa5 84. Rxg7+ Kxf5 85. Bc5 Rc3 86. Bb4 Rc2+ 87. Kg3 Nc6 88. Bd6 Rc3+ 89. Kg2 Rd3 90. Bc7 h5 91. Rh7 Kg6 92. Rh8 Ne5 93. Kf2 Rc3 94. Bb6 Kg5 95. Be3+ Kg4 96. Bd4 Ra3 97. Rg8+ Kf4 98. Rh8 Ng4+ 99. Kf1 Rh3 100. Bc5 Kf3 101. Kg1 f5 102. Ra8 Rg3+ 103. Kh1 f4 104. Ra4 h4 105. Bb6 Ne5 106. Bd4 Rh3+ 107. Kg1 Nd3 108. Ra2 Nc1 109. Rf2+ Ke4 110. Rc2 Rg3+ 111. Kf1 Nd3 112. Rc4 h3 113. Bg1+ Kf5 114. Rc8 Ne5 115. Bf2 Rb3 116. Rf8+ Ke4 117. Rh8 Rb1+ 118. Ke2 Rb2+ 119. Kf1 Ng4 120. Ba7 h2 121. Ke1 f3 122. Kd1 Rb1+ 123. Kd2 h1=Q 124. Rxh1 Rxh1 125. Bb6 Ne3 126. Bxe3 Rh2+ 127. Bf2 Rxf2+ 128. Kc3 Rg2 129. Kc4 f2 130. Kc5 f1=Q 131. Kd6 Qc4 132. Ke7 Rg7+ 133. Kd6 Qd5# 0-1

Tuesday, September 02, 2008

A hat

A hat that keeps your head cool. Fans, micro-pumps, and/or coolant to heat exchange with the many blood vessels in the scalp.

Optical illusion CAPTCHA

Three discs in a triangle with wedges cut out of them in just the right places form the optical illusion of a white triangle. Use optical illusions as a basis for CAPTCHAs.

Moderation learning

Use the tremendous number of already human-classified examples of Slashdot comments, e.g., Score 5, Insightful, as training examples for machine learning to develop an automated comment moderator. This may help filter spam, to be able to discover whether a post is on-topic or off-topic.

Monday, September 01, 2008

asserts

There are two kinds of assert statements: one which should never fail, and one which fails on bad user input.