Calendar
< July 2007
SuMoTuWeThFrSa
1 2 3 4 5 6 7
8 91011121314
15161718192021
22232425262728
293031    


Sun, 01 Jul 2007

# /etc/X11/xorg.conf (xorg X Window System server configuration file)

# # This file was generated by dexconf, the Debian X Configuration tool, using # values from the debconf database. # # Edit this file with caution, and see the xorg.conf(5) manual page. # (Type "man xorg.conf" at the shell prompt.) # # This file is automatically updated on xserver-xorg package upgrades *only* # if it has not been modified since the last upgrade of the xserver-xorg # package. # # If you have edited this file but would like it to be automatically updated # again, run the following command: # sudo dpkg-reconfigure -phigh xserver-xorg Section "Files" Fontpath "/usr/share/fonts/X11/misc" Fontpath "/usr/share/fonts/X11/cyrillic" Fontpath "/usr/share/fonts/X11/100dpi/:unscaled" Fontpath "/usr/share/fonts/X11/75dpi/:unscaled" Fontpath "/usr/share/fonts/X11/Type1" Fontpath "/usr/share/fonts/X11/100dpi" Fontpath "/usr/share/fonts/X11/75dpi" # path to defoma fonts Fontpath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType" EndSection Section "Module" Load "i2c" Load "bitmap" Load "ddc" Load "extmod" Load "freetype" Load "glx" Load "int10" Load "vbe" EndSection Section "InputDevice" Identifier "Generic Keyboard" Driver "kbd" Option "CoreKeyboard" Option "XkbRules" "xorg" Option "XkbModel" "pc105" Option "XkbLayout" "us" EndSection Section "InputDevice" Identifier "Configured Mouse" Driver "mouse" Option "CorePointer" Option "Device" "/dev/input/mice" Option "Protocol" "ImPS/2" Option "ZAxisMapping" "4 5" Option "Emulate3Buttons" "true" EndSection Section "InputDevice" Identifier "Synaptics Touchpad" Driver "synaptics" Option "SendCoreEvents" "true" Option "Device" "/dev/psaux" Option "Protocol" "auto-dev" Option "HorizScrollDelta" "0" EndSection Section "InputDevice" Driver "wacom" Identifier "stylus" Option "Device" "/dev/input/wacom" Option "Type" "stylus" Option "ForceDevice" "ISDV4"# Tablet PC ONLY EndSection Section "InputDevice" Driver "wacom" Identifier "eraser" Option "Device" "/dev/input/wacom" Option "Type" "eraser" Option "ForceDevice" "ISDV4"# Tablet PC ONLY EndSection Section "InputDevice" Driver "wacom" Identifier "cursor" Option "Device" "/dev/input/wacom" Option "Type" "cursor" Option "ForceDevice" "ISDV4"# Tablet PC ONLY EndSection Section "Device" Identifier "nVidia Corporation G72M [Quadro NVS 110M/GeForce Go 7300]" Driver "nvidia" Busid "PCI:1:0:0" Option "AddARGBVisuals" "True" Option "AddARGBGLXVisuals" "True" Option "NoLogo" "True" Option "ConnectedMonitor" "CRT-0,DFP-0" EndSection Section "Monitor" Identifier "Generic Monitor" Option "DPMS" Horizsync 31.5-80 Vertrefresh 56-85 EndSection Section "Screen" Identifier "Default Screen" Device "nVidia Corporation G72M [Quadro NVS 110M/GeForce Go 7300]" Monitor "Generic Monitor" Defaultdepth 24 Option "TwinView" "yes" Option "MetaModes" "1280x800,1280x800;1024x768,1024x768" Option "TwinViewOrientation" "Clone" SubSection "Display" Depth 1 Modes "1280x800" EndSubSection SubSection "Display" Depth 4 Modes "1280x800" EndSubSection SubSection "Display" Depth 8 Modes "1280x800" EndSubSection SubSection "Display" Depth 15 Modes "1280x800" EndSubSection SubSection "Display" Depth 16 Modes "1280x800" EndSubSection SubSection "Display" Depth 24 Modes "1280x800" EndSubSection EndSection Section "ServerLayout" Identifier "Default Layout" screen "Default Screen" Inputdevice "Generic Keyboard" Inputdevice "Configured Mouse" Inputdevice "stylus" "SendCoreEvents" Inputdevice "cursor" "SendCoreEvents" Inputdevice "eraser" "SendCoreEvents" Inputdevice "Synaptics Touchpad" EndSection Section "DRI" Mode 0666 EndSection
[19:25] | [personal] | # |

Tue, 13 Jul 2004

More Fun and Games with Cars

So here's a story. A boyhood friend and I were riding our bikes, checking out the old neighborhood where we grew up. He was in the lead, and we were barreling down a hill at high speed. I didn't realize he was planning to turn right until it was too late. Blam! Over the handle bars I went, as I skidded into his back wheel.

No harm done. Well, almost. My brakes seemed frozen in a clamped shut position and the wheels were out of true. We limped to a bike shop, where the proprietor was able to take care of the problems (my friend's bike was OK) in 15 minutes (for $15). But as I was patting my pockets: oh no, keys gone. Friend went back to the scene of the accident to look for them (while my bike was in the shop). No dice. Crap. On my ring was the ONLY KEY to the new (used) car (another Subaru wagon) sitting in his driveway (blocking his garage).

Triple-A locksmith would be able to make me a new key on the spot right? Wrong. This was a newfangled key system, and it'd take hours and lots of money to figure out a key. Subaru doesn't hide key codes in the car body anymore, and dealers aren't about to give up key codes by VIN number, even if such a database exists.

So I have to get it towed. Triple-A calls back to confirm its an all-wheel drive, meaning I'll need a flatbed (turns out that's not so -- special dollies work with the regular tow trucks). Flat bed arrives, but the adventure is still young. This guy (lates 20s?) is the most trained employe on duty that night, and when the radio crackles with news of an accident on I-84, he feels called to the scene. We become an emergency vehicle, blaring the horn, forcing cars on the ramp to one side (I-84 is already quite backed up from the smash).

I don't think anyone was hurt, but someone driving while suspended (no license) cut off someone else, forcing them to the wall, where the car flipped on its side. My tow truck guy was trained to right rolled vehicles, and quickly took command of the situation. Later I told him I thought he made all the right calls (judgement-wise) and he said he appreciated my saying so.

We towed the car all the way out to the dealer in Vancouver (it was getting dark). I was scheduled to have an alarm system installed Monday, but now it looked like the dealer was going to have to make me a new keyas well. I left a note.

Got home to messages (cell battery was long dead, so no one had been able to tell me earlier) that the keys had been found, by a witness to the bicycle collision, who had them at home. I could retrieve them the next day, which I did, and promptly got a ride (from a fellow Quaker) back to the dealer, to rescue the car -- no point leaving it there, I'd show up next morning as if nothing had happened. Which I did. Have a security system now, I hope a deterrent to future would-be theives. I also biked in a big loop over both bridges, while the installers worked, hoping to get into a little bit better shape for the upcoming STP (a marathon 200 mile 2-day bike ride -- more on that later).

[00:00] | [personal] | # |

Sat, 10 Jul 2004

A Programming Class

So I finished the adventures in open source class at the police station. According to the academy, student reviews were quite positive. My co-teacher is moving out of state, so this particular chemistry is unlikely to be repeated, but the course content persists in various electronic formats (including Docbook SGML) and I hope will be built upon, by myself, the other teacher, or the academy (which has privileged access at this point).

This wasn't technically a math course, although mathematics was more than superficially present, and touched upon in several contexts.

For example, when discussing the transition from IPv4 to IPv6, in which internet addresses get lengthened from the current 32 bits to 128 bits, we found it most handy to be able to shell into Python and take advantage of the native long integer (precision integer) routines. 2**32 returns 4294967296L, and 2**128 returns 340282366920938463463374607431768211456L (the L at the end means "long" -- indicates we've switched types). Clearly the latter is a *much* bigger number. My coteacher expressed it in terms of IP addresses per square meter of the earth's surface, or something like that -- quite dense.

To take another example, we showed them how to hexdump a text file (or a binary for that matter). This gives entre to the all important ASCII encoding scheme, wherein Latin keyboard characters have their 7 or 8 bit binary representations, encoded in hex (base 16). And again, just as with the transition from IPv4 to IPv6, we're in the midst of a transition to a broader base. Instead of encoding with 0-255 (decimal, 8-bit, extended ASCII), we're moving to unicode. Instead of a mapping based on 2**7 or 2**8, we're moving to a map based on as many bits as needed, not just 16 (e.g. see UTF-8).

However, beyond this base-2 and base-16 stuff, mostly linked to mappings and/or permutations, we had a lot about coordinate geometry.

The starting point was this library of polyhedra stored in a particular text format at www.netlib.org/polyhedra/. These polys list vertices at the end, in a section marked :vertices, followed by a row giving some information about how many to expect. Earlier in the file, a section marked :solid,, if it exists, diagrams, using integers, how these vertices connect up. In other words, if the vertices are labeled 0-5, then a row in :solid would indicate a face, starting with the number of sides, followed by vertex-labeling integers.

So a core challenge of this course was to focus on the data structures and methods needed to read such files and extract just the relevant information. I had this coded before the class even started, so the presentation would mostly exercise reading muscles, not writing muscles. Just as recognition is easier than recall, when it comes to language learning, so eyeballing and parsing already-written source code is easier than writing it from scratch, and a good way to develop the skills (strong readers become strong writers).

The output of our polyhedron-reading code was more text, but in another format. The goal was to write a file in the scene description language understood by POV-ray, the Persistence of Vision Ray Tracer found at www.povray.org. To this end, I presented students with a minimal API: points (of measurable radius -- so spheres really), edges (cylinders) and faces (polygons) would be our stock in trade. To sketch a polyhedron in words, we needed only to specify the xyz coordinates of all the points, edges and faces, using the syntax expected by POV-ray.

The focus in this initial challenge was the topic of data structures. This is where I think ordinary K-12 mathematics might be usefully enchanced. Instead of focusing rather exclusively on sets, an SMSG holdover, and then only barely holding on to the associated concepts and notation, we broaden the view to take in lists and dictionaries. Lists stand for structures accessed by integer indices. Arrays or higher dimensional structures, accessed through more indices, all fall under this "list" heading. Dictionaries stand for associatively accessed data, i.e. some arbitrary but fixed key is paired with each value, and values are then retrieved not by integer index, but by key (possibly an integer, possibly a string -- anything immutable). Sets come across as a subtype of dictionary: all keys (keys must be unique) and no values.

So, for example, vertices might usefully be stored as a map (in a dictionary), mapping consective integers to xyz coordinate triples. Why not a list? A list would work in similar circumstances, but in these netlib polyhedra, the first vertices listed often pair with a :net section, all about drawing the polyhedron as a planar net, something one could fold along the creases to form the polyhedron. Given our focus on the :solid section, it behooves us to throw away many of the vertices, and yet to keep the original integer addresses. The map structure accomplishes this. So what if our lowest vertex address is 5? vertex[5] will be the xyz triple we need.

Edges might be most logically stored as a list of pairs, e.g. [(5,6),(6,7),(7,5)...], where the square brackets denote "list" and the curved parentheses denote "tuple" (similar to a list, but with immutable elements). But wait! Doesn't all this edge information derive from the faces? If my face is (5,6,7) with 5 connecting to 6, 6 to 7 and 7 back to 5, then can't I extract all the necessary edge information from the face information? Indeed. And this becomes another programming challenge.

Note: Don't get the wrong idea about this class. All this data structures and polyhedra stuff was a mere subset of the Python programming component. We did a whole lot more than just this, including playing with Pyblosxom, the Python software behind this blog, GrainOfSand

(to be continued)

[00:00] | [mathed] | # |

Stolen Car Epic

So did I mention my car was stolen. Actually, it was my wife's -- title in her name. A 14 year old Subaru wagon, of the kind that is prevalent in this neck of the woods. Stolen from Lloyd Center theaters (the ones outside the mall -- that parking lot). License plate VNA-981 if you ever see it (I should add a VIN: ).

Well, I got a replacement, another Legacy wagon (not an Outback -- don't need that extra cladding). Used, an '01. I showed up at the dealer with all these printouts from hours on the internet, so they knew I wasn't oblvious to the going rates and best deals. That was smart, but on the stupid side I forgot to take a check list, and so spaced checking the little stuff when they kept the motor running -- dang, no cupholders in the back, and like that (but I got the parts retail, and still came out with an OK price I think).

What movie you ask, when the car was stolen? Decided to see 'Troy' -- sort of for old times sake, a cast-of-thousands epic, like with Heston or Taylor, but this time with Pitt. I dunno, maybe it'll help a kid or two get through the Illiad in the original (translation that is). The story is very different when the gods don't actually have speaking parts or a significant role as characters (as the critics pointed out at the time).

[00:00] | [personal] | # |

Tue, 11 May 2004

International Science Fair

David Feinstein, applied mathematician and former TA for Feynman at Cal-Tech, delivered his presentation about truth and certainty this afternoon (yesterday afternoon by now). I was one of the group leaders (shop talkers) at a table for high school aged competitors from all over the world (Cleveland, Alaska, Malaysia etc. at my table).

Later, I looked around at the exhibits (still being set up -- open to the public starting Thursday). This contraption solves a Rubic's Cube -- a computer driven device.

rubicsdevice

At dinner later, in the huge Convention Center ballroom, I met a patent attorney from Munich -- this was his first visit ever to the US, though he'd traveled in Asia and South America. I invited him out for beers (we took public transit over to my neighborhood) then drove him back to his hotel. We had a fun time comparing notes.

swen

[00:00] | [wanderers] | # |

Russell's Packing

supplies1

OK, so for some weeks now Russ has been sending me excerpts from this dialog he's been having with Tim Cox. Last time he called, I was riding a 30 mile loop, training for the STP, and by the time our chat turned to synergetics, the trucks were whizzing by at close range, and I couldn't concentrate.

So tonight (that would be Monday night -- blog entries after midnight, so Tuesday) I decided to get to the bottom of what he's been talking about and called him to request a simple explanation -- which I got, and summarize as a project (which I undertook soon after our conversation).

First, I went to Freddie's (local supermarket) and bought these supplies: marbles (pack of 0.75 for $2.99), superglue that works with glass, some clay to hold the marbles in place.

supplies2

Next, I glued marbles into tetrahedral clusters. What Russ has been telling me is you can build the CCP (= IVM = FCC) just with these clusters, and no other assembly. It's like they're space-fillers, although we're not talking about solids here, but agglomerations of spheres that complete the IVM. We've been overlooking this simple solution: just build it will all-regular-tetrahedral clusters.

OK, so here you see the clusters.

clusters

Then I make a base as per Russ's instructions, and fill it with an inverted tet (pointing down).

base

fillbase

I started with lighter and darker colored clusters, so I could distinguish up from down, but the marbles really weren't balanced that way in the baggies I got, so the coloring scheme broke down towards the end.

Another tetrahedral cluster on top completes the 3-frequency tet.

3freq

It didn't take long to expand out to 4-frequency.

4freqa

4freqb

Thank you Russ, I understand now what you were saying.

[00:00] | [synergetics] | # |

Sat, 24 Apr 2004

Restructured Text

This is a first attempt at ReStructured Text.

Just getting docutils installed on the server was a bit of a chore.

I had to:

  • copy docutils-xxx.tgz to the server and untar it
  • install with --install-purelib set to pyblosxom homedir
  • include rst as a plugin (config.py)
  • run ./blog in the cgi-bin directory to test it

The effort was worth the work however, as now I'm able to post .rst entries, and have them be parsed by this most intelligent parser.

[00:00] | [personal] | # |

Fri, 23 Apr 2004

More Fun with Python

I'm back at Powell's on Hawthorne. I couldn't get an already-written movie database looker upper to work (a screen scrapey kinda thing), so decided to write one myself. My day's efforts are on display at: getmovie.py.

I'm thinking this module might be fun to include in the Adventures in Open Source course that might happen (if anyone signs up -- still early, as we're looking at end of June).

I need to learn restructured text again, and incorporate that parser into this here blog.

[00:00] | [personal] | # |

Wed, 21 Apr 2004

More fun with wireless

I think I've got the hang of it now. I'm at the Fresh Pot on Hawthorne and having no trouble connecting by wireless. With this coffee thing, the goal is to prove to myself I'm not addicted, and then allow myself to have it on special occasions. This counts as a special occasion.

[00:00] | [personal] | # |

Tue, 20 Apr 2004

/python/compose.py

Python Code
#parser py

def f(x):
    return 'f(%s)' % x

def g(x):
    return 'g(%s)' % x

def compose(f1, f2):
    def newf(x):
       return f1(f2(x))
    return lambda x: newf(x) # make return anonymous
[00:00] | [python] | # |

Sweet Success!

OK, I'm now living my dream. Here I am, in RedWing Coffee Shop, using a free node provided by personaltelco.net. Node 561 to be exact. Took awhile to get dhcp to work. Never managed to connect at LinuxFest. But airports worked fine, so I knew it could be done.

I went off coffee about 3 weeks ago, almost a month now, so I just had some green tea, quiche... anyway, this was the dream. Time to pick up Tara from school -- but as a final step, let's use aap to upload this to the blog.

[00:00] | [personal] | # |

First Post

This was my first post to this world-readable blog. Thanks to Jerrit, I'd played around with it earlier on my laptop. Then I found this article in Linux Journal about aap, an alternative to 'make' or 'ant' (for scripting tasks), and had this fantasy of sitting in some cafe, writing a blog entry, and updating my blog automatically using aap. That's what I'm working on getting working right now.

My first problem with configuration on the server was the footer wouldn't appear, and with it, the sidebar and links to my websites.

aap seems to be working pretty well, although I had a permissions issue with one of the subdirectories it creates locally, to track signatures. That must be because I installed as root, but want to run it as my regular self.

[00:00] | [personal] | # |