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
Matt Brubeck: Planet MattPosted in Bookmarks on March 06, 2010 04:22 PM
Posted in Journal on March 04, 2010 06:57 PM (comments)
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.
Posted in Asides on March 03, 2010 02:41 AM
Posted in Asides on March 03, 2010 02:32 AM
Posted in Asides on March 03, 2010 02:13 AM
Posted in Asides on March 02, 2010 07:12 PM
Posted in Bookmarks on March 01, 2010 07:27 PM
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.
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.
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.
Posted in Bookmarks on February 28, 2010 04:51 AM
Posted in Journal on February 25, 2010 04:47 PM (comments)
Posted in Bookmarks on February 24, 2010 06:59 PM
Posted in Bookmarks on February 17, 2010 11:35 PM
Posted in Bookmarks on February 17, 2010 08:25 PM
Posted in Bookmarks on February 13, 2010 12:25 AM
Posted in Asides on February 12, 2010 04:32 PM
Posted in Asides on February 11, 2010 06:53 PM
Posted in About me on February 10, 2010 07:05 PM
Posted in Bookmarks on February 09, 2010 04:41 PM
Posted in Bookmarks on January 22, 2010 04:28 PM
Posted in Asides on January 19, 2010 03:16 PM
Posted in Bookmarks on January 17, 2010 05:22 PM
Posted in Asides on January 17, 2010 04:04 AM
Posted in Bookmarks on January 13, 2010 10:27 PM
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:
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.
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.