Matt Brubeck: Planet Matt

Bookmarks: The School Issue - Preschool - Can the Right Kinds of Play Teach Self-Control? - NYTimes.com

Posted in Bookmarks on March 06, 2010 04:22 PM

"If you want to succeed in school and in life, they say, you first need to do what Abigail and Jocelyn and Henry have done every school day for the past two years: spend hour after hour dressing up in firefighter hats and wedding gowns, cooking make-believe hamburgers and pouring nonexistent tea." Profile of a school using the Tools of the Mind method.

Journal: Mozilla

Posted in Journal on March 04, 2010 06:57 PM (comments)

SpreadFirefox Affiliate Button

Later this month I am starting a new job with the Mobile Firefox team at the Mozilla Corporation. I'll be staying in Seattle, with occasional trips to the Mozilla offices in Mountain View. I'll work mostly at home but I plan to come downtown about once a week to work at the library, coffee shops, StartPad, or friends' offices. Let me know if you are in Seattle or the Bay Area and want to get together sometime. After I start working from home I should be eager for company.

Kiha is still doing good things and I'll be watching their progress eagerly. I learned a lot there and I like the direction Kiha is taking, but Mozilla's offer was too good to pass up: working on free software, open standards, new platforms, and with many hackers whose work I know and admire.

Trivia: I've now had more non-student jobs in eight years than my dad has in thirty-eight.

Asides: How did I miss @dkpan's 24-hour Haruki Murakami reading last summer, one block from my office? http://occidentalpark.wordpress.com/events/

Posted in Asides on March 03, 2010 02:41 AM

How did I miss @dkpan's 24-hour Haruki Murakami reading last summer, one block from my office? http://occidentalpark.wordpress.com/events/

Asides: Found the banknotes' owner, @dkpan. Due to his name's shortness, it was unabridged on the library's hold slip. We got in touch on Facebook.

Posted in Asides on March 03, 2010 02:32 AM

Found the banknotes' owner, @dkpan. Due to his name's shortness, it was unabridged on the library's hold slip. We got in touch on Facebook.

Asides: Tonight I found one Soviet- and one Iranian banknote in my library book ("Girl with Curious Hair").

Posted in Asides on March 03, 2010 02:13 AM

Tonight I found one Soviet- and one Iranian banknote in my library book ("Girl with Curious Hair").

Asides: @mhewner Ringdroid was written Audacity author Dominic Mazzoni, who first introduced me to Josh Haberman (and thus indirectly to you)!

Posted in Asides on March 02, 2010 07:12 PM

@mhewner Ringdroid was written Audacity author Dominic Mazzoni, who first introduced me to Josh Haberman (and thus indirectly to you)!

Bookmarks: Correct way to handle mobile browsers

Posted in Bookmarks on March 01, 2010 07:27 PM

Redirect mobile users to the mobile site automatically, or require them to choose explicitly? Pro and con.

Weblog: The network is the human being

Posted in Weblog on March 01, 2010 08:00 AM

Nathanael Boehm wrote a nice essay last month called The Future of Employment?, about a disconnect between workers' and employers' views of social networks. (This post is based partly on the ensuing Hacker News thread.) Boehm wrote:

When I need help with a challenge at work or need to run some ideas past people I don’t turn to my co-workers, I look to my network of colleagues beyond the walls of my workplace. Whilst my co-workers might be competent at their job they can’t hope to compete with the hundreds of people I have access to through my social networks.

The late Sun Microsystems taught us that the network is the computer. It's true: we still use non-networked computers for specialized tasks, but nobody wants one on their desk – it's just so useless compared to one that talks to the entire world. Boehm could have titled his essay The Network is the Employee. There are still tasks that people do in isolation, but the ability to contact a network of peers and experts makes the difference in my job, and many others.

Alone together

The lone computer programmer in a small business has thousands of colleagues on Stack Overflow, Reddit, and so on. It's a messy way to find answers, but it's sure better than the days when your only choice was to call tech support – or smack the box with your fist, whichever seemed more useful. I can't begin to list all the problems I've solved and things I've learned by Googling for others with experience, and getting help from a different expert for every problem.

Decades before the web, computer geeks had virtual communities on mailing lists, Usenet, and IRC. Now every job in the world has its corresponding forum. Even the night clerk at the gas station has Not Always Right.

Teaching has long been a solitary profession. Despite working in a crowded classroom, teachers are isolated; they rarely have colleagues observing or participating directly in their work. This has such an impact that teachers are sometimes trained in meditation or reflection techniques, to make up for the lack of external feedback. So I'm curious what happens when teachers start to work together remotely the way programmers do.

You will be assimilated

Boehm's essay also reminded me of a vague sci-fi idea I've been kicking around: the first group minds will evolve from the intersection of Mechanical Turk, virtual assistants, social networking, and augmented reality.

Starting around the 1990s, it was possible to instantly "know" any fact that was published online. Since then, we've increased the amount of content online, our tools for searching it, and ways of connecting to the network. Today we have instant access to almost any published knowledge, anywhere.

There are more people on the net too, and more ways to find and talk to them. Most of us can contact dozens of friends at any given moment, plus friends-of-friends, co-workers, fellow members of communites like Hacker News or MetaFilter, and also complete strangers. Along with raw facts, we have access to vast amounts of human judgement, experience, and skill.

One product of this is the "virtual assistant," who provides a service that was once exclusive to high-powered executives. Now personal assistants can work remotely (often overseas), spread costs by serving many masters, and leverage the internet superpowers listed above. Their services are mostly targeted at small business owners and the Tim Ferriss crowd, but I'm sure someone soon will market virtual assistance to all sorts of other creative workers, teachers, even stay-at-home parents.

So, how long before I can touch a button to let a remote assistant see what I'm seeing in real-time and help me make transportation plans, translate foreign signs and speech, look up emails related to whatever I'm doing or thinking, or even advise me on what to say? Some of these queries will go to my circle of friends, others to the general public, and some to a personal assistant who is paid well to keep up with my specific needs. And that assistant of course will subcontract portions of each job to computer programs, legions of cheap anonymous Turkers, or his or her own network of helpers. At that point, I'm augmenting my own perception, memory, and judgement with a whole network of brains that I carry around, ready to engage with any situation I meet.

If nothing else, I hope someone writes a good sci-fi thriller story in which a rogue virtual assistant manipulates the actions of unsuspecting clients, leading them to some unseen end.

Bookmarks: New Moon Girls Online - New Moon Magazine

Posted in Bookmarks on February 28, 2010 04:51 AM

"Our bi-monthly magazine is 100% advertising-free, highest-quality content for girls age 8 and up! You won't find diet advice or popularity contests here." The copy I saw in the library had some good science and engineering articles, among other things.

Journal: Back-formation

Posted in Journal on February 25, 2010 04:47 PM (comments)

A conversation from a few months ago:
Me:
Hi, Eleanor! I see you put your clothes on by yourself.
Eleanor (in a dress):
Oh, it's only one clo.

Bookmarks: Hg Init: a Mercurial tutorial by Joel Spolsky

Posted in Bookmarks on February 24, 2010 06:59 PM

"In this user-friendly, six-part tutorial, Joel Spolsky teaches you the key concepts."

Bookmarks: Vimium - Google Chrome extension

Posted in Bookmarks on February 17, 2010 11:35 PM

"Vimium provides keyboard shortcuts for navigation and control in the spirit of Vim."

Bookmarks: creationix's Do

Posted in Bookmarks on February 17, 2010 08:25 PM

A JavaScript concurrency library (similar to Oni or Arrowlets) for Node.js.

Bookmarks: GF - Grammatical Framework

Posted in Bookmarks on February 13, 2010 12:25 AM

A functional programming language for parsing and transforming both programming languages and natural (human) languages.

Asides: Google Buzz now asks you to choose and preview your privacy settings before your first post is published: http://bit.ly/bngqpP

Posted in Asides on February 12, 2010 04:32 PM

Google Buzz now asks you to choose and preview your privacy settings before your first post is published: http://bit.ly/bngqpP

Asides: Bought plane tickets to go to Baltimore/DC next month. I hope it's thawed out by then.

Posted in Asides on February 11, 2010 06:53 PM

Bought plane tickets to go to Baltimore/DC next month. I hope it's thawed out by then.

About me: Google profile

Posted in About me on February 10, 2010 07:05 PM

Follow me on Google Buzz, Chat, Reader, etc.

Bookmarks: Worse Is Better

Posted in Bookmarks on February 09, 2010 04:41 PM

Richard Gabriel recounts the history of the classic papers by himself and "Nickieben Bourbaki."

Bookmarks: Prezi - The zooming presentation editor

Posted in Bookmarks on January 22, 2010 04:28 PM

Instead of "slideshows," uses a single canvas with slick zooming and panning.

Asides: @bernard_ben Got an Android phone? I like SeattleBusBot (by co-worker @joulespersecond), Google Sky Map, Google Voice, and Toddler Lock.

Posted in Asides on January 19, 2010 03:16 PM

@bernard_ben Got an Android phone? I like SeattleBusBot (by co-worker @joulespersecond), Google Sky Map, Google Voice, and Toddler Lock.

Bookmarks: Khan Academy

Posted in Bookmarks on January 17, 2010 05:22 PM

Short educational videos "covering everything from basic arithmetic and algebra to differential equations, physics, chemistry, biology and finance."

Asides: Atomic Robo is a must-read for anyone who likes Girl Genius or Penny Arcade (I'm looking at you, @bernard_ben): http://doiop.com/atomic

Posted in Asides on January 17, 2010 04:04 AM

Atomic Robo is a must-read for anyone who likes Girl Genius or Penny Arcade (I'm looking at you, @bernard_ben): http://doiop.com/atomic

Bookmarks: Pausing JavaScript with async.js - Elijah Grey

Posted in Bookmarks on January 13, 2010 10:27 PM

"async.js is a library that aims to make it so you don’t have to mess with callbacks when making applications in JavaScript 1.7 or higher by using the yield statement to pause function execution."

Weblog: Finding domain names with Node.js

Posted in Weblog on January 13, 2010 08:00 AM

I'm working on some ideas for finance or news software that deliberately updates infrequently, so it doesn't reward me for reloading it constantly. I came up with the name "microhertz" to describe the idea. (1 microhertz ≈ once every eleven and a half days.)

As usual when I think of a project name, I did some DNS searches. Unfortunately "microhertz.com" is not available (but "microhertz.org" is). Then I went off on a tangent and got curious about which other SI units are available as domain names.

This was the perfect opportunity to try node.js so I could use its asynchronous DNS library to run dozens of lookups in parallel. I grabbed a list of units and prefixes from NIST and wrote the following script:

var dns = require("dns"), sys = require('sys');

var prefixes = ["yotta", "zetta", "exa", "peta", "tera", "giga", "mega",
  "kilo", "hecto", "deka", "deci", "centi", "milli", "micro", "nano",
  "pico", "femto", "atto", "zepto", "yocto"];

var units = ["meter", "gram", "second", "ampere", "kelvin", "mole",
  "candela", "radian", "steradian", "hertz", "newton", "pascal", "joule",
  "watt", "colomb", "volt", "farad", "ohm", "siemens", "weber", "henry",
  "lumen", "lux", "becquerel", "gray", "sievert", "katal"];

for (var i=0; i<prefixes.length; i++) {
  for (var j=0; j<units.length; j++) {
    checkAvailable(prefixes[i] + units[j] + ".com", sys.puts);
  }
}

function checkAvailable(name, callback) {
  dns.resolve4(name).addErrback(function(e) {
    if (e.errno == dns.NXDOMAIN) callback(name);
  })
}

Out of 540 possible .com names, I found 376 that are available (and 10 more that produced temporary DNS errors, which I haven't investigated). Here are a few interesting ones, with some commentary:

  • exasecond.com – 32 billion years
  • petasecond.com – 32 million years
  • petawatt.com – can be produced for femtoseconds by powerful lasers
  • terapascal.com
  • gigakelvin.com – possible temperature of picosecond flashes in sonoluminescence
  • giganewton.com – 225 million pounds force
  • gigafarad.com
  • kilosecond.com – 16 minutes 40 seconds
  • kilokelvin.com – 1340 degrees Fahrenheit
  • centiohm.com
  • millifarad.com
  • microkelvin.com
  • picohertz.com – once every 31,689 years
  • picojoule.com
  • femtogram.com – mass of a single virus
  • yoctogram.com – a hydrogen atom weighs 1.66 yoctograms
  • zeptomole.com – 602 molecules

To get the complete list, just copy the script above to a file, and run it like this: node listnames.js

Along the way I discovered that the API documentation for Node's dns module was out-of-date. This is fixed in my GitHub fork, and I've sent a pull request to the author Ryan Dahl.

Weblog: Weekend hack: Outline grep

Posted in Weblog on January 12, 2010 08:00 AM

I keep almost all of my notes and to-do lists in plain text files, so I can edit and search them with Vim, grep, and other standard Unix tools. I often indent lines in these files to create a simple outline structure, and use the autoindent and foldmethod=indent options to make Vim into a simple outliner.

To get useful output when searching through these outline-structured files, I wrote a simple grep replacement. Given a text file with a Python-style indentation structure, ogrep searches the file for a regular expression. It prints matching lines, with their "parent" lines as context. For example, if input.txt looks like this:

2009-01-01
  New Year's Day!
    No work today.
    Visit with family.
2009-01-02
  Grocery store and library.
2009-01-03
  Stay home.
2009-01-04
  Back to work.
    Remember to set an alarm.

then ogrep work input.txt will produce the following output:

2009-01-01
  New Year's Day!
    No work today.
2009-01-04
  Back to work.

You can download ogrep from the outline-grep repository on GitHub, or just read the literate Haskell file. The code is almost trivial (40 lines of code, plus imports and comments); I'm publishing it just in case anyone else has a use for it, and because some of my friends were curious about how I'm using Haskell. I've now written a few "real-world" Haskell programs (compleat was the first). I'm finding Haskell very well suited to such programs, though this particular one would be equally easy in a language like Perl, Python, or Ruby.

This is a one-off tool to fill a gap in my workflow; there are no configuration options or useful error messages. It would be fairly easy to extend it, though. For example, an option to include children (as well as parents) of matching lines might be handy. I recently realized that ogrep often works for searching through source code too, which may generate some more unexpected use cases.