I believe we have a huge opportunity to integrate technology into our education system and empower a new generation. Our kids must become makers of technology, not just users of it. We can create this transition while reducing software and hardware budgets over time.

1) Teach middle school kids programming (start in 7th grade). Kids may choose to continue as an elective in upper grades (just if they were in band or dance)

2) In 8th grade, kids may elect to:
    (a) take “build your own computer” class, they learn about Linux and how to solder simple circuits and at the end of the year (or maybe the semester), they build a complete system that they can take home with them. Part of the class, involves debugging hardware issues that are initially created as fake situations, and later real-world problems from the computer lab. There’s a shop where kids can volunteer after school to help other kids (and grown-ups) trouble-shoot issues with their computers.
    (b) take additional programming classes, where they build up to AP Computer Science. They learn to make new software and also to modify real-world open source software and submit patches. Just like in 2nd grade, when they learn that the author of a book is not a decoration on the cover, but a human person who wrote the book, they learn that there are real people who make software. They learn how this basic part of our world works. The good ones, who are most interested, are given the opportunity to TA and later teach the 7th graders.

Start with a pilot program with one class, learn what works, then iterate and expand. Create an ecosystem of kids teaching kids with grown-ups helping. We’ll teach them that communication is an essential skill — critical thinking and effective expression go together. These are not just mindless kids who can follow orders, these are makers. Soon we’ll have high school graduates who might choose this path. They can pay their way through college, writing code, building hardware or they can get jobs right out of high school.

I’ve seen this work. I co-founded RailsBridge, which transformed the San Francisco Ruby Meetup from 2% women to 18% in 6 months [1]. We’ve created a viral growth engine which has spread all over the world, with spin-off groups teaching other languages and experimenting with other formats. There are hundreds of volunteers who have taught thousands of women and men. It started with one simple workshop. [2] In June, we’re planning our 94th. [3] Everything is open source: code, curriculum and process. No volunteer has done their job well until someone else can do it.

I believe that the way to boil the ocean is to make every tenth molecule generate heat.

I wanted to experiment with Ogg and WebM and the <video> tag, and I thought the easiest way would be with my favorite command-line transcoder, ffmpeg. It’s fabulous support for just about every audio and video file format makes it fabulous for hacking.

Sadly “brew install ffmpeg” doesn’t support the new file formats and codecs, so I had to compile it myself, as well as the codec libraries. Here’s what worked (on MacOSX Mountain Lion):

0. Clone from git and use a stable branch
Check the bottom of the download page for descriptions of latest stable versons.

git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg

Look for the version tag you want with: git tag -l
I picked 1.2.1 “Magic”

git checkout -b n1.2.1

1. Install Xcode, Homebrew, then and Remaining Dependendencies
following MacOSXCompilationGuide instructions.

2. Compile libvpx (needed for WebM)
I took these instructions from the UbuntuCompilationGuide, and swapped out the prefix to be what the Mac instructions told me to do:

git clone --depth 1 http://git.chromium.org/webm/libvpx.git
cd libvpx
./configure --prefix=/usr/local --disable-examples
make
sudo make install
make clean
cd ..

3. Configure & build ffmpeg
I picked just the libraries I needed plus whatever didn’t require extra dependencies:

./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libaacplus --enable-libcelt --enable-libfaac --enable-libfdk-aac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-openssl --enable-libopus --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvo-aacenc --en
make && make install

Ready to Make Movies!

Ogg Theora/Vorbis

I just followed the instructions on the ffmpeg wiki I used lower video and audio quality since the wiki recommendations ended up creating a huge file.

ffmpeg -i mymovie.mov -codec:v libtheora -qscale:v 3 -codec:a libvorbis -qscale:a 3 mymovie.ogv

WebM

ffmpeg -i mymovie.mov -vcodec libvpx -acodec libvorbis mymovie.webm

size chart

 2788953  pool-480p.mov
19459157  pool.mov
 2870873  pool.mp4
  833597  pool.webm
 3022359  pool3v3a.ogv
 4398308  pool4v3a.ogv
 5755066  pool5v5a.ogv
 7767888  pool6v5a.ogv
11424378  pool7v5a.ogv

I stopped for a couple of days in NYC on my way to Amsterdam for the Dutch Mobile Conference and decided to stay in Chelsea, which I had never really explored before this. I shared a cab from the airport with some locals who told me about the Chelsea Highline — used to be an abandoned elevated Rail line, and has now been transformed into a park. I posted a series of images on Flickr.

ChelseaHighline1
Very New York.