On the Reading of Books

Much of my time writing on this blog is spent advocating for the open web, and the potential it brings for distributed, global, collaboration.  I don’t believe in this any less, despite the critique that follows.

At the same time that I am passionately involved in the creation of the open web, I am also intimately tied to book culture.  Unlike some of my fellow open web advocates, I am not against the book as a result of being for the web.  While I’m usually not one to make predictions, I feel confident in saying that the book is not going to disappear.  There are many reasons for this, but let me pick-up on one for now.

Reading on the web is mainly interested in information, in results, data, etc.  It is about  manifest- much more than latent content.  It is driven by the immediate reaction, by Liking, by linking, by query results.  Reading on the web is influenced by time: the time it takes to find it among so many other results, the time it takes to load, the time it takes to read, the likelihood that this text will be here tomorrow.

Reading on the web is also very often (always?) a first reading.  “Have you seen this?”  “Yes, I saw it.”  It is what I read, not what I am reading.

The reading of book reading is different from the reading of the web.  This reading is much slower.  It takes time.  It participates in history.  Recently my wife and I went to a nearby inn for two days, in order rest and spend time together.  We each took along books to read, and when she saw me reading my book she asked, “I thought you were finished that?”  She was right, I’ve read that book many times, and will likely read it many more.

The reading of book reading is rereading.  The book provides a place of return in a way that isn’t impossible on the web, but in practice never happens.  What does the replacement of progression with return do?  I believe that one of the most important things it does is to open a place for thinking.

The reading of rereading is how we get on the path to thinking.  The way to thinking is a path that is easily lost.  Tracking such a path, one is forced to return to the last known sign and walk in a slow circle around it, fanning out ever so slowly, until it can be picked up yet again.  Without return there can be no progress.  Without going back there is no going forward.  Books can provide such signs, and allow us to once again stumble on the path toward thinking.  This is important, since the path to thinking is so long.  One needs reliable signs from the past, places of return, places which are left alone rather than being trampled by progress.

Posted in Reading | Comments closed

Two Experiences with the Local

1) I’ve been amazed this year at the amount of Canola planted in the fields in our county. I’m used to seeing a lot of soy beans, corn, and winter wheat. But the shock of Canola visually, a bright, beautiful, electric yellow, never ceases to give me pause. And this year it’s absolutely everywhere.

I was interested in this, and wondered if it was new to this area. I did some reading and was surprised to learn that Canola isn’t an import to this region, but actually a Canadian cash crop. Canola, or the unfortunately named rapeseed, is grown in order to produce an oil edible by humans, one with a low erucic acid content. It was originally cultivated in the 1970s in Canada, and by 1978 the the name was changed to “Canadian Oil Low Acid,” or Canola.

2) On Father’s day I took our girls out to the field in front of our house.  I wanted to try and show them something I’d seen the night before while mowing the grass.  We snaked our way around various conifers, bent low, looking.  Eventually I spotted it, sitting totally still, almost perfectly hidden at the base of a spruce.  I motioned to the girls to go around to the other side of the tree, so we stood a better chance of catching it.  I reached my hand down and was able to lightly pet its perfect fur, but when I tried to put my hand beneath it, it took off.  And so began a 15 minute chase around trees and through long grass.  Eventually my wife joined us and she and my eldest daughter were able to catch it.

Hares, unlike rabbits, are not born naked and helpless underground.  Instead, they are born with fur, and able to run.  This baby literally fit in the palm of my hand, with ears and feet no longer than the tip of my index finger.  It’s fur was more like bird down than course fur.  The four of us were mesmerized by this wonderful creature, which finally settled down in my daughters’ loving arms.

After we let it go (if it hadn’t been Father’s day, I think I would have been overruled and we’d have had another pet), I pulled out some guide books to figure out what we’d caught.  It was clearly a hare, but I wanted to know more about what kind it was.  The book led me believe that we’d caught a European Hare, a species that was introduced to Ontario in the early 1900s, and most interestingly to me, in my home town of Brantford.

Posted in Nature, family | Comments closed

Great Horned Owl

One of the things I look for is the Great Horned Owl. When I was a small child I saw my first. It had been killed (by a car as I recall) and my uncle, a taxidermist, was going to stuff it. He brought my brothers and I to see it, and the three of us held it, wings outstretched. The size of this bird was incredible to me, as were its talons.

From the point on, I have always kept one eye open for these great owls. I have never seen one alive in the wild, until this past week. Our woods is sometimes home to a Great Horned Owl. I have spent many evenings sitting on our screened porch listening to it in the dark. The whole woods goes quiet to listen, and the call travels for miles, making it hard to pinpoint exactly where it is. However, you know it’s a Great Horned Owl when you hear it.

Once, while standing on our deck and observing a full moon, I saw it fly silently across the sky. Only its silhouette was visible, but even that was magnificent. Recently, my wife drove into our lane one evening and her headlights caught a large animal on the ground. “It looked like a groundhog, but then it stood up and flew away.”

Last Thursday we took our girls out for a walk before bed, following the edge of the woods, pausing as we came to the mouth of a creek. As we approached the creek’s edge, I saw a bird descend from a tree to my left. At first I mistook it for a heron, but its flight pattern was wrong. As I turned my head I could see that its body was too short and round, and its colouring too dark for a heron. “That’s an owl!” I cried, as it flew into the woods. I ran after it. I couldn’t see where it had gone, but hoped that we had spooked it and it would land a short distance away. After running 500 feet, I paused, trying to decided which way to go. Ahead and to my right I could hear a great commotion: a Red Wing Blackbird or Eastern Kingbird was making a great raucous, and clearly upset that something had come within the vicinity of its nest. I took off toward the sound.

Deeper into the woods I came to a tree with a limb extending parallel to the ground, low, and bare of leaves. There in the middle, with its back to me, and a furious Red Wing Blackbird encircling it, was the owl. I slowed my pace and walked as quietly as I could. Approaching from behind, and with the little bird masking my sound, I managed to get underneath, and then beyond the owl. As I looked up at it, it swivelled its great head around and down toward me. It’s two yellow eyes pinned me to the ground. We both sat motionless, looking at each other for 30 seconds or more.

Eventually I decided to call to it, and did my best owl call. Upon hearing me, it cocked its head to one side and leaned in toward me. Figuring I had done something right, I tried again. This time it took off deep into the woods. I didn’t go after it, but stood there pondering what I had just seen.

I have spent the past 4 years looking for that particular owl. An owl, like so much in nature, is not something you can see because you want to, or have because you desire it. It does not exist for your pleasure or consumption. It is not on display like the work of art, or available like the manufactured good. It is, quite simply, a gift to have this experience. Tonight I went and walked the same path, and saw nothing. I might never see it again, but I will continue to be open to receiving this gift, which is the proper mode of being in the world.

Posted in Nature, family | Comments closed

Your homework

I spent a good chunk of today on youtube with my audio friends, trying to find some demo music for something big we’re cooking up.  When it was done I had 50 tabs with cool music, and I’d be remiss if I didn’t assign some of it to you for homework:

Posted in Digital Swag | Comments closed

Questions about books after dinner

“Dad, do you know the Odyssey?”
I do.
“How do you know it?”
I’ve read it in English many times, and fought with it in Greek, too.
“Tell me something about it.”

I leave you in Browning’s hands for a more complete account of a similar exchange.  Allow me to quote “Development” at length:

MY FATHER was a scholar and knew Greek.
When I was five years old, I asked him once
“What do you read about?”
“The siege of Troy.”
“What is a siege, and what is Troy?”
Whereat
He piled up chairs and tables for a town,
Set me a-top for Priam, called our cat
—Helen, enticed away from home (he said)
By wicked Paris, who couched somewhere close
Under the footstool, being cowardly,
But whom—since she was worth the pains, poor puss—
Towzer and Tray,—our dogs, the Atreidai,—sought
By taking Troy to get possession of
—Always when great Achilles ceased to sulk,
(My pony in the stable)—forth would prance
And put to flight Hector—our page-boy’s self.
This taught me who was who and what was what:
So far I rightly understood the case
At five years old; a huge delight it proved
And still proves—thanks to that instructor sage
My Father, who knew better than turn straight
Learning’s full flare on weak-eyed ignorance,
Or, worse yet, leave weak eyes to grow sand-blind,
Content with darkness and vacuity.

It happened, two or three years afterward
That—I and playmates playing at Troy’ Siege—
My Father came upon our make-believe.
“How would you like to read yourself the tale
Properly told, of which I gave you first
Merely such notion as a boy could bear?
Pope, now, would give you the precise account
Of what, some day, by dint of scholarship
You’ll hear—who knows?—from Homer’ very mouth.
Learn Greek by all means, read the “Blind Old Man,
Sweetest of Singers’—tuphlos which means ‘blind,’
Hedistos which means ‘sweetest.’ Time enough!
Try, anyhow, to master him some day;
Until when, take what serves for substitute,
Read Pope, by all means!”
So I ran through Pope,
Enjoyed the tale—what history so true?
Also attacked my Primer, duly drudged,
Grew fitter thus for what was promised next—
The very thing itself, the actual words,
When I could turn—say, Buttmann to account.

Time passed, I ripened somewhat: one fine day,
“Quite ready for the Iliad, nothing less?
There’s Heine, where the big books block the shelf:
Don’t skip a word, thumb well the Lexicon!”
I thumbed well and skipped nowise till I learned
Who was who, what was what, from Homer’s tongue,
And there an end of learning.
Had you asked
The all-accomplished scholar, twelve years old,
“Who was it wrote the Iliad?”—what a laugh
“Why, Homer, all the world knows: of his life
Doubtless some facts exist: it’s everywhere:
We have not settled, though, his place of birth:
He begged, for certain, and was blind beside:
Seven cities claimed him—Scio, with best right,
Thinks Byron. What he wrote? Those Hymns we have.
Then there’s the ‘Battle of the Frogs and Mice,
’That’s all—unless they dig ‘Margites’ up
(I’d like that) nothing more remains to know.”

Thus did youth spend a comfortable time;
Until—“What’s this the Germans say in fact
That Wolf found out first? It’s unpleasant work
Their chop and change, unsettling one’s belief:
All the same, where we live, we learn, that’s sure.”
So, I bent brow o’er Prolegomena.
And after Wolf, a dozen of his like
Proved there was never any Troy at all,
Neither Besiegers nor Besieged, nay, worse,—
No actual Homer, no authentic text,
No warrant for the fiction I, as fact,
Had treasured in my heart and soul so long—
Ay, mark you! and as fact held still, still hold,
Spite of new knowledge, in my heart of hearts
And soul of souls, fact’s essence freed and fixed
From accidental fancy’s guardian sheath.
Assuredly thenceforward—thank my stars!—
However it got there, deprive who could—
Wring from the shrine my precious tenantry,
Helen, Ulysses, Hector and his Spouse,
Achilles and his Friend?—though Wolf—ah, Wolf!
Why must he needs come doubting, spoil a dream?

But then, “No dream’s worth waking”—Browning says:
And here’s the reason why I tell thus much.
I, now mature man, you anticipate,
May blame my Father justifiably
For letting me dream out my nonage thus,
And only by such slow and sure degrees
Permitting me to sift the grain from chaff,
Get truth and falsehood known and named as such.
Why did he ever let me dream at all,
Not bid me taste the story in its strength?
Suppose my childhood was scarce qualified
To rightly understand mythology,
Silence at least was in his power to keep:
I might have—somehow—correspondingly—
Well, who knows by what method, gained my gains,
Been taught, by forthrights not meanderings,
My aim should be to loathe, like Peleus’ son,
A lie as Hell’s Gate, love my wedded wife,
Like Hector, and so on with all the rest.
Could not I have excogitated this
Without believing such man really were?
That is—he might have put into my hand
The “Ethics”?
In translation, if you please,
Exact, no pretty lying that improves,
To suit the modern taste: no more, no less—
The “Ethics:” ’tis a treatise I find hard
To read aright now that my hair is gray,
And I can manage the original.At five years old—
how ill had fared its leaves!
Now, growing double o’er the Stagirite,
At least I soil no page with bread and milk,
Nor crumple, dogs-ear and deface—boys’ way.

Posted in Home School, Reading, family | Comments closed

Open Source Research at Seneca

Last Thursday, David Agnew (President of Seneca) and Gary Goodyear (federal Minister of State (Science and Technology)) announced that Seneca college had received one of 12 NSERC grants.  The grant is specifically targeted to Seneca’s Centre for Development of Open Technology, to help us grow our involvement in open source, and to help local businesses do the same.  If you don’t know, NSERC grants are a big deal, and it’s a huge honour to have received it.  It was also a lot of work for those of us applying!  But it’s paid off, and I wanted to say something about what it means for Seneca students reading my blog.

The grant brings $2.3 Million in funding over 5 years, and is meant to be combined with funding from industry partners.  It will allow us to fund research and co-op positions, like the 9 students who are working this summer on various open source projects.  It means that we can take more of the work we do in the open source courses (OSD600, DPS900, OSD700, DPS911, SBR600, etc.) and have it grow into larger projects, working directly with local industry partners and the open source community.  We’ve known how to do this for a while now but didn’t have the resources to make it happen.  Now we do.

One of the things I thought was key in the announcement of this grant is that the government, Seneca, and our partners all understand that working on open source is the best way to gain industry experience as a student.  I’ve written about this many times before, but I’ll say it again: if you want to work in software, you need experience.  And getting experience means getting a job, but a job needs experience…unless you get involved in global, collaborative, large scale development as a student before you have a job.  The way to do this is to contribute to open source projects.

I’ve had students come to me with all kinds of crazy ideas about what open source means.  Many have this idea that you can’t have a job or make money with open source.  We wouldn’t have this grant if that were true!

“Our government supports innovation because it creates jobs, improves the quality of life of Canadians and strengthens the economy,” said Minister Goodyear. “We are supporting this project at Seneca College to strengthen the competitiveness of small and medium-sized businesses, and enable young Canadians to prepare for the jobs of tomorrow.”

“This funding is an important acknowledgment of the valuable, innovative research taking place at Seneca,” says Seneca College President David Agnew. “Building on a reputation of excellence in the open source community, this will help create graduates who have learned not only through hands-on experience, but through applied research that is changing the way we do business.”

The jobs of tomorrow are here today, and they require that you know how to:

  • work with large, legacy code bases measured in millions of lines
  • know how to collaborate with co-workers, both in person and electronically
  • understand how to maintain existing code vs. starting from scratch
  • know how to leverage existing technologies and tools
  • know how to manage software release cycles and project planning
  • know how to solve real world problems vs. made-up assignments
  • know how to leverage the open web, and its ways of working

I think current examples are good, so let me give you one.  The other day I was catching up on industry news, and noticed this article on cnet news:

Mainstream microprocessors have been 64-bit for years. Operating systems have followed suit. Now it’s time for a program used by hundreds of millions of people to make the leap: Firefox.

Programmer Armen Zambrano Gasparnian announced the first 64-bit Firefox builds for Windows on Friday, offering an FTP site for those who want to download it. But the software isn’t for mainstream users yet.

That guy making the announcement for Mozilla about the first 64-bit enabled builds of Firefox, know who he is?  He’s a Seneca grad who got involved with open source and now has an amazing job as a Release Engineer with Mozilla Corporation.  How did he get hired into such a position out of school?  He worked on this stuff while he was still a student.  He took our open source courses and got involved with the right projects and the right people.  He got the experience he needed while he was at Seneca in order to jump right into industry, where he’s now doing cutting edge work.

I could tell you many similar stories, but the story I’m most interested in at the moment is the one I’m going to be telling about you in 2-3 years.  My question right now is this: how do we get you, current Seneca student, working on the cutting edge of industry via open source?  We have ways to get your career started early if you’re willing to get involved with what we do.  Your first chance to do this comes in September.  Will you be signed up for the open source classes?  If so, we’ve got some amazing opportunities to discuss with you.

Posted in CDOT, Mozilla Education, Seneca, Teaching Open Source | Comments closed

On Distinction

The other night Luke and I were out for coffee, and our conversation, as it always does, turned to teaching, reading, and thinking.  He was telling me a story about a friend of his, who is struggling through the life of the junior academic.  “I don’t have time to read,” complained the friend, who spends most of his days preparing for new introductory courses, writing grant or other applications, and generally jumping through the various hoops laid before him.  In short, he’s too busy being a professor to be the kind of professor that would be able to do the things he always imagined and dreamed about doing, namely, reading, writing, and thinking.

Today I read Glenn Harlan Reynolds essay in the Washington Examiner, and was struck by a similar problem well known to students.  He writes:

First — as with the housing bubble — cheap and readily available credit has let people borrow to finance education. They’re willing to do so because of (1) consumer ignorance, as students (and, often, their parents) don’t fully grasp just how harsh the impact of student loan payments will be after graduation; and (2) a belief that, whatever the cost, a college education is a necessary ticket to future prosperity.

Bubbles burst when there are no longer enough excessively optimistic and ignorant folks to fuel them. And there are signs that this is beginning to happen already.

A New York Times profile last week described Courtney Munna, a 26-year-old graduate of New York University with nearly $100,000 in student loan debt — debt that her degree in Religious and Women’s Studies did not equip her to repay. Payments on the debt are about $700 per month, equivalent to a respectable house payment, and a major bite on her monthly income of $2,300 as a photographer’s assistant earning an hourly wage.

And, unlike a bad mortgage on an underwater house, Munna can’t simply walk away from her student loans, which cannot be expunged in a bankruptcy. She’s stuck in a financial trap.

In both cases, the professor and the student have bought (literally) into a dream: the dream of freedom.  Freedom to work, to read, to think.  In both cases, the dream has turned out to be a nightmare, with endless layers of bureaucracy and personal and professional relegation.  Both have sacrificed their lives to an institution that promised one thing, and delivered quite another.

It’s funny.  The thing both of them want, or claim to want, is available to them if they are willing to give up something not insignificant: prestige.  You can decide to work a lesser job, but in doing so have the time and space to follow your passions, to learn, to read, to think, to make.  You can, if you decide to condescend, go to a lesser school (or not go to school at all!), and find the time you need to follow a course of study as deep and broad as you like (there’s a line I love in “What is Called Thinking?” where Heidegger tells his students to spend the next 10 years reading Aristotle–that’s not something you do in the context of a school!).  But you have to give up distinction.  You have to give up being important.  You have to give up brand recognition, titles, and degrees.  However, if you’re actually interested in what you say you are, that shouldn’t matter, right?

It does matter to most people I know.  Very few are willing to get on an unmarked walking path when there is an institutional highway right over there.  Increasingly we’re entering a time where it’s possible to do what I’m describing, to self-educate, to do things outside the context of institutional modes of learning, to be in the world but not of it.

Also funny to me is the fact that the desire for distinction, if that’s what is really driving so many of these people (and I believe it is), is not going to be possible by following the path of everyone else.  If everyone goes to the same schools, takes the same courses, does the same things, there will be no distinction possible.  But, if you strike out on your own, if you read different books and read in different ways, if you follow paths which don’t fit nicely in the course of a semester, you’ve already become distinct.  You don’t have to do anything else than simply be doing things that way to have achieved what you wanted.

Luke is a useful model for me in this.  Here’s a guy with a philosophical and critical mind that seems to go in every direction.  Yet he’s chosen to give up on being a famous professor and writer, and instead to stay home and raise his boys.  He’s emptied his life of all sorts of things that the world says are important; and interestingly, in doing so, he’s found room for all the things the world is seeking.  One reads by reading.  One thinks by thinking.  It’s just a matter of taking, making, finding the time.

Posted in Home School, family | Comments closed

Experiments with audio, part X

I’m working with an ever growing group of web, audio, and Mozilla developers on a project to expose audio data to JavaScript from Firefox’s audio and video elements. Today we show you how much JavaScript can really do.

Since my last post, quite a few new people have joined our group, a lot has changed in our implementation, and we’ve achieved a few things worth writing about.  I also can’t keep these demos under wraps any longer, so it’s time for another post.

One of the first pieces of advice I got in the bug, when I started writing this patch to expose audio data in Firefox, was to use Vlad’s new typed arrays (aka WebGL Arrays).  My first implementation used an array-like object to expose the audio data, and JS arrays for writing samples.  Both worked well, but neither was as fast as we’d like, and it meant various hacks to work around performance issues.  Vlad was kind enough to give me a crash course on how to implement them via quickstubs, and over the past few weeks, Yury Delendik and I have worked long hours to rewrite our entire implementation to use them.

Along with the suggestion to use typed arrays also came a less welcome suggestion: remove the FFT calculation from C++ and do it all in JavaScript.  When I suggested this in our #audio irc channel, a lot of people were upset, saying that this was a bad idea, that we’d never be fast enough, etc.  However, I pulled it out anyway in order to force them to try.  Corban responded by rewriting his dsp.js library to use Float32Array, which can now do 1000 FFTs on a 2 channel * 2048 sample buffer in 490ms, or 0.49ms per fft (js arrays take 2.577ms per fft, so a lot faster!).  And one of the biggest critics of my decision to pull the native FFT, Charles Cliffe, went off to prove me wrong, but ended up with two stunning WebGL based audio visualizations (demos here and here, videos here and here).

What I like most about these (other than the fact that he’s written the music, js libs, and demo) is that these combine a whole bunch of JavaScript libraries: dsp.js, cubicvr.js and beatdetection.js, and processing.js.  Some people will tell you that doing anything complex in a browser is going to be slow; but Charles is masterfully proving that you can do many, many things at once and the browser can keep pace.

Corban and Ricard Marxer have been busy exploring how far we can push audio write, and managed to also produce some amazing demos.  The first is by Ricard, and is a graphic equalizer (video is here):

The second is by Corban, and shows a JavaScript based audio sampler.  His code can loop forward or backward, change playback speed, etc. (video is here):

Chris McCormick has been working on porting Pure Data to JavaScript, and already has some basic components built.  Here’s one that combines processing.js and webpd (video is here):

I think that my favourite demo by far this time around is one that I’ve been waiting to see since we first began these experiments.  I’ve written in the past that our work could be used to solve many web accessibility problems.  A few weeks ago I mentioned on irc that someone should take a shot at building a text to speech engine in JavaScript, now that we have typed arrays.  Yury quietly went off and built one based on the flite engine.  When you run this, remember that you’re watching a browser speak with no plugins of any kind. This is all done in JavaScript (demo is here, video is here):

In order to do this he had to overcome some interesting problems, for example, how to load large binary voice databases into the page.  The straightforward approach of using a JS array was brittle, with JS sometimes running out of stack space trying to initialize the array.  After trying various obvious ways, Yury decided to use the web to his advantage, and pushed the binary data into a PNG, then loaded it into a canvas, where getImageData allows him to access the bytes very quickly, using another typed array.  The browser takes care of downloading and re-inflating the data automatically.  Here’s what the database looks like:

What began as a series of experiments by a small group of strangers, has now turned into something much larger.  Our community continues to grow, and the scope and scale of the projects being done on our API is increasing.  At the same time, through the work of Doug Schepers and Chris Blizzard, we’ve managed to get the attention of the W3C, which have now started an Audio Incubator Working Group to look at how to standardize this stuff.  One of my colleagues in these experiments, Al MacDonald, has been asked to chair the group, which already has members from Mozilla, Google, and the BBC.  You can get involved and follow @AudioXG for updates.

If you’d like to stay connected to this work, you can join this bug, where I’ll be posting a patch for review in the next week or so (current patch is here).  You can see our Audio Data API documentation, with tutorials and examples (this was recently completely rewritten, if you’ve looked at it before).  You can also grab builds there, which I’m making right now and will be done in the next few hours.

Posted in CDOT, Experiments with audio, Mozilla, Mozilla Education, Seneca, Teaching Open Source | Comments closed

1to100.js — a first computer program

I wrote a lot of code this week, and there’s much I could share about what I did and how I did it.  But only one of the programs has occupied my mind and stayed with me until now, and I want to say something about it.

My five year old has taken to math in a way my wife and I weren’t expecting.  She has a personality that allows her to stay with a topic for a long time, and patiently learn all that she doesn’t know.  It’s an incredible skill, and has allowed her to move through addition, subtraction, multiplication, calculating squares and cubes of numbers, geometry, etc.

The other day she came to me with a realization:

Dad, I’ve made a discovery!  If you add all the numbers from 1 to 100 together, you get 5050!  And I think that it doesn’t matter what order you add them in, it will always be the same.

I don’t really do much on the computer with my girls, other than allowing them to tear them apart.  But this night I decided to show her how we could ask a computer to prove her theory.  “Let’s write a computer program,” I suggested.  She was excited, since she knew I wrote programs all day long, and was eager to do it herself.

So how do you write a program?  I was fascinated to see that my daughter’s way was to take out a piece of paper and draw a picture.  She drew the numbers in groups, with circles around each, which reflected the way she had solved it herself, adding 1-10, then 11-20, and so on, before adding each of these together (a giant circle enclosing the other circles).  It was a beautiful notation, and rather than write it how I would, I set about implementing her solution.  In a few minutes we had it working: Total = 5050.

Dad, what if we multiplied instead?  Can your computer do that?  But I don’t want to lose the adding!

One more line of code, and she was thrilled to see another number get printed under 5050.  A really big one: 9.33262154439441e+157.  Now we had to discuss what really, really big numbers look like, and how to represent them.

It was one of the more fulfilling programming tasks I’ve done in a long time, and the value of the program was inversely proportional to the length of the code.  Of course we wrote it in JavaScript, and the code to implement this is left to the reader as an exercise, since the exercise is worth more than the result.  The more important code I want to share now is that of time with one’s daughter thinking about numbers.

Posted in Home School, family | Comments closed

View Source as Musical Innovation

I’ve been interested to watch the flood of reactions around the web to our latest demos and audio experiments.  Here are a few:

A number of comments on these and other blogs, and people on twitter, have talked about how Flash already allows some of this.  Reading it as many times as I did, I wanted to respond and suggest that what we’re doing isn’t simply parity with Flash.  I don’t think it’s exaggerating to say that exposing audio data to the open web has the potential to change sound, audio, and music.  The reason is that HTML5 and JavaScript based audio participates in “View Source,” and that means creating a whole new kind of active and passive audio collaboration.

The reason the web has grown like it has, the reason there is so much innovation, the reason so many people of varying levels of expertise can use it, or as Mike Shaver put it in 2007, the reason the web won, is View Source:

If you choose a platform that needs tools, if you give up the viral soft collaboration of View Source and copy-and-paste mashups and being able to jam jQuery in the hole that used to have Prototype in it, you lose what gave the web its distributed evolution and incrementalism. You lose what made the web great, and what made the web win.

The way View Source functions, with respect to HTML documents, is well understood.  It’s so well understood that its absence becomes something you can’t not see.  The Flash-based music visualization or audio app that runs in the browser today looks and sounds great, but that’s all it does–it can’t lead others to iterate and innovate.  Sure, we can deploy audio on the web, but we can’t tinker with it if we can’t get at how it’s made.  Pressing ‘play’ isn’t the same as playing.

Right now the community of people actively working on audio data in the browser is small (about 12 people that I know of), but it already points to what I’m talking about.  When we made Bloop (a processing.js version of Eno’s Bloom), we did it iteratively.  We learned how to generate simple sounds using JavaScript, then built scales, followed by more complex wave patterns, followed by oscillators, etc.  The code bounced back and forth between people on irc and twitter, before it got extracted into a reusable JavaScript library, which has already allowed Corban and Maciej to start building a multiuser synthesizer/sequencer based on our audio api, node.js, and processing.js (code is here).

This way of working is so common on the web, it’s almost not worth mentioning.  But I do mention it because this was, as far as I can tell, the first time people have collaborated on the web to build music using the technologies of web.  And just as it has for all manner of other things, the web made building music easier and faster.

One of the properties of sound is that it bounces off things, echoes, and changes.  The history of music is filled with people innovating by playing with existing sounds.  Allowing sound to exist in a more manifest and malleable way on the web, to become scriptable, viewable, copy-pastable, means that innovations in sound and music will be more frequent and much, much faster.

It’s a good time to be having this discussion, since the trajectory of music on the web is pointed away from sharing and collaboration (and has for a long time been).  What we’re plotting with an audio data API for the web isn’t a new method of delivering music.  This is about a new way of creating and collaborating that is stolen directly from the web’s play book.  The web beat every other way of working using it.  What will happen to music and sound if we let it do the same?

Posted in CDOT, Experiments with audio, Mozilla, Mozilla Education, Seneca, Teaching Open Source | Comments closed