First things first: I've concocted a quick little poem, somewhat inspired by the slow-drip gentrification of Toronto's Kensington Market district.
Passage
A single block, stray dog soul - not kicked, but
washed
away:
grey-bright boxes eviscerate unsightly dysfunctions
with apoplectic neon sales-pitch frenzy panoramas.
Fate handshake-sealed in concrete-glass citadels
where lucre holds sway.
-- Evan Stratford
Yeah, so I said I would endeavour to write a poem a day. I haven't been doing that; turns out that, as with most creative undertakings (and I emphatically include programming in this category), it makes most sense to write when you have something to write about. What's new? I'm taking part in the annual FASS production. Performances are this Thursday at 8 pm, Friday at 7 and 10 pm, and Saturday at 8 pm; then it's Strike Party, 6 am stagger to Mel's, long rest on Sunday, mad rush to make up for lost time in this whole undergrad race. That said: if you're in Waterloo, come to FASS! Faculty, alumni, students, and staff alike have put in tremendous efforts to ensure a profusion of hilarity for you, our dear prospective audience members; come and repay those efforts with rapt attention, ribald (yes, this is the adjective I meant to use) laughter, and fervent clapping!
10:30 am, Kitchener. A poofy-haired lime-green-Doof-shirted university student staggers through the door into Recycle Cycles, a volunteer-run bike-repair shop on the second floor of the Working Centre off Queen Street. The following exchange ensues:
Me: I'm going on a very long bike trip this summer, so I'd like to learn something about bike repair.
Staff: Okay - what do you want to learn, exactly?
Me: Well...I was thinking I would just take a bike apart and put it back together again.
One brief and lighthearted public shaming later (that only takes about 15 minutes, right?) I was kneeling beside an old run-down road bike with a handful of wrenches as Dave (who, it turns out, used to be a PhD candidate in CS (with research interests in AI and pattern recognition) before he quit to try his hand at the whole startup game) patiently explained the basics. In the course of four hours I removed the pedal arms, detached the pedals, dismantled the pedal axle assembly (ball bearings and all), replaced the cones, slotted the whole mess back together again, took apart the rear axle, replaced the back gears, reassembled the back tire into place again, tested and tuned the derailleur for proper shifting, and crimped end caps onto the gear cables. Things I still need to go over:
- Cable replacement. While these do loosen over time, fraying is the main concern here.
- Inner tube replacement. This is not technically difficult, but it still helps to have a few dry runs - improperly installed tubes can pinch and explode, thus ensuring hilarity for everyone except you.
- Front fork repairs. A friend was biking along the sidewalk in Bronte when his front tire lodged in a crack, causing the entire bike to pitch forward into the ground with such force that the front fork shattered. (Side note: the impact cleft his helmet in twain.)
In short: this was an amazing experience. I've ranted many times before about the need for a more direct, social, and experiential model of education. Memorization is obsolete; we must transition to comprehension, application, synthesis. By itself, bike repair makes a passable exercise in spatial and mechanical reasoning. As part of a larger module, it could elicit any number of questions. Why are the parts designed this way? How could we make them more efficient? What advantages does cycling have over driving? What disadvantages? Why is cycling more prevalent in certain cities or countries? How do you make a bike-share program economically feasible and robust against petty theft? These in turn spark discussions on everything from industrial design to physics to politics to ecology to economics - all from a simple yet practical exercise.
Unfortunately, these sorts of practical exercises are usually confined to trade schools or mechanical engineering workshops, where they are delivered in a primarily utilitarian fashion. I think there is significant room for informal apprenticeship in modern education; it certainly plays well with the emergence of communities based around interest rather than geography. Any thoughts?
After roughly two days of frantic partitioning, cursing, re-partitioning, cursing, downloading, re-installing, and cursing some more, I've done it: my computer finally works as normal, and is now upgraded to Karmic Koala. This state of affairs started off, as these things often do, with something completely unrelated. I was hoping to test out Toribash, a stick-figure beat-em-up that came with fervent recommendations. I had it on good authority that the Linux version was somewhat short of working, so I installed the Windows version under Wine instead. I was soon presented with a very sluggish title screen; the frame-counter clocked in at a whopping 7 fps, leaving something to be desired in the useful interactivity department.
After some rummaging through various Ubuntu fora, I came across some instructions for improving the performance of integrated Intel video chipsets under newer kernel builds. Add a repo, install a couple of packages, change device settings in xorg.conf - all relatively mundane stuff. Five minutes later, I rebooted my computer...
...and never got beyond the login screen, which froze up promptly. Ouch. I booted into recovery mode, rolled back the xorg.conf changes, started X - still nothing. I dusted off my knowledge of command-line wireless utilities and popped open some troubleshooting guides under lynx. One of these guides helpfully suggested that I look through the apt logs and manually roll back package installs until it worked. I wisely decided this was excessive and opted for a fresh installation of Ubuntu instead.
Only one problem: back when I first loaded Ubuntu onto this MacBook, I lacked the wisdom to create separate root and home partitions. I booted from Live CD, opened GParted, resized my existing Ubuntu partition, created a new partition, and copied everything in /home over to the new partition. Total time spent: roughly 6 hours, most of it in the copying phase. I booted into recovery mode to sanity-check that the new partition mounted properly.
It worked, thankfully, and so I was able to install Karmic over what had previously been my root partition. I booted into recovery mode one last time, edited the fstab to pick up my mount, rebooted - and voila! I had a working install, complete with all my old config. This experience convinced me that human-readable config files will always be superior to the supreme crapitude of the Windows registry; you can easily port settings between different systems and OS versions with relative confidence that everything will just work.
At this stage, I'm still missing some essential packages. I haven't completely restored my development environment, and I'm short creature comforts like VLC and codecs and Skype; I hope to have these installed very soon. That part is trivial, though, thanks in no small part due to the excellent work Canonical has put into apt-get and the software repos over the years.
So, to make a long story short:
- Take everything you read on Linux fora with a heavy but non-lethal dose of sodium chloride.
- Don't adjust configs unless you've read the manual and have a decent idea of what you're doing. (There's some wiggle room here for toy installs; computer users should always be encouraged to play around! Just don't knock out your main development system.)
- Always separate your root and home partitions. (I think these should be separate by default, and I'm not alone.
When I sat through years of high-school English spent mining Shakespeare for obscure sexual metaphors, I never thought I'd find myself saying this - so let it be recorded here for posterity:
I'm actually enjoying Creative Writing.
What gives?
- Creative Writing is active education, by contrast with the passive "I'm going to talk at you for a couple of hours, mmmkay?" model usually foisted on otherwise highly interested students.
- If you're one of the 2.5 or so stalwarts who have followed my blog through its previous incarnations here and here, you know that I wrote In Silico as part of NaNoWriMo. (If you didn't follow my blog back then: I made the 50k word mark, so there.)
- It's not programming. I mean, I love programming, but I already spend the majority of my waking hours on it.
Yesterday's Creative Writing class consisted of our first poetry workshop session, wherein we read and critiqued poems written by our fellow classmates. Critique is difficult to get right, and is not synonymous with criticism; good critique should point out obvious flaws, but it should also aid the recipient in identifying and building upon what works. Furthermore, the critique reflects the experience of the critic; it is hopefully not a stretch to suggest that one's capacity for precision and insight is directly correlated with said experience. This was made obvious by the remarks of comparatively more literate members of the class, who were able to identify linguistic shortcomings, appreciate highly effective devices, and suggest alternate interpretations with much greater ease than my poor CS-addled brain could ever hope to.
This advice could be applied equally well to the code review process. A bad review process is typically one-sided; the reviewer imposes their every preference on the hapless reviewee, who unquestioningly and silently does their master's bidding. A better review process is two-sided. The reviewee feels free to respond, to push back where they disagree; the review process becomes more conversational. The best review process, I'll argue, is many-sided - much like the workshop session in Creative Writing, it admits critique from all corners. More importantly, it allows reviewers to critique each other, to agree with common praises or misgivings, to debate contentious points. The reviewee is not left out of this process; rather, they are freely invited to defend choices made, much like the reviewee in the two-sided review. In short: the best review process is meta-critique.
Which article? This article, which makes the audacious claim that Dell's decision to bundle GPS with the Mini 10 is, well, dumb. Their reasoning? "Netbooks are just too darn big for this job!" - the job being turn-by-turn car navigation.
The author has obviously been firmly entrenched in a very deep hole for much of the last five years, as has anyone else who seriously believes the only reasonable use case for GPS-enabled netbooks is in-vehicle navigation. Geolocation data is powerful: think local search, augmented reality; think geotagging, geocaching, geohashing; think Google Latitude and Google Goggles and Seek 'n Spell; think the end of IP-based location estimation, the start of reliable traffic-flow analysis, the ability to connect with nearby devices through mesh networks, the ability to track lost devices. This is just a start - despite unresolved privacy concerns, I give it at most ten years before consumers will demand geolocation from their gadgets.
So why have it in a netbook? Despite the fantastic usability of touchscreen mobile devices, they still aren't quite full-on computers; they function mostly as read-only devices, with small exceptions in terse environments like Twitter and text-messaging. I wouldn't program or blog on one. On the other hand, the mobile environment is smaller, more immediate - well-suited to the immediacy of things like Google Goggles. I wager that there is significant market space for more intensive location-based web apps aimed at non-mobile devices, and potentially even more market space for location-based apps that transfer seamlessly between the two environments. If Joe Hewitt's dream of a mobile web (as opposed to disjoint ecosystems of device-specific apps) should ever bear fruition, frameworks to make this sort of crossover much easier will soon follow.
Even more poetry - I'm hoping to put together something worthy of final submission within the next couple of weeks, so comments are appreciated. (Also, this will give me third-party confirmation that my hacked-together reCAPTCHA comment form WordPress theme magic actually works!)
Winter
Snow and sleet sweep silent streets sucked dry
whose sole crime is crossing space and time to appear - here,
in frozen climes,
at this slumbering somber time of year
when frost strikes fear into hearts that yearn
for summer sun, a sun scarce found amidst the hail and mist
that still song and dance this time of year,
this slumbering somber time of year.
A thousand faces peer through ice-glazed glass:
eyes gloomy, full shivers dispelled
in huddles by heaters that glean heat from wire or gas
and lend it to frigid floors;
what need for the warmth of friends drawn near?
Chimes of clocks tick seconds away in the empty space
of solitary wait, each second another step away
from water's weighty solid form
that presses on eaves that creak and sway
this slumbering somber time of year.
Cold wind clenches its wintry hold,
clasping shut spirits with closed fist,
its howl a clamorous dirge both ancient and bold
that clings, its clarion call crisp
as crunch of crystal under frost-numb feet
in boots that clamber through thick of white.
Treacherous, this trudging over bank and pile;
each face filled with fright at the absence of birds' trill.
Rare the smile that pierces long whiles spent in
company of fire, a last defense against the months
that separate more favoured climes from this time of year:
this slumbering somber time of year.
More poetry, courtesy of my ongoing and partly academic experiment with creative writing. Enjoy!
Twoness
Twoness is togetherness, as one and the same
Two close bound by purpose -
or, that which bears witness spent, only in name.
Twoness is againstness, foes locked as in game;
Push met with push in infernal embrace,
anger and violence most inhumane.
Twoness that sees oneness mourns loss of love's flame,
A face transfixed by brooding memory
In tight-drawn rictus of exquisite pain.
Twoness, seeing threeness, must want it explained
How three's complexity could ever permit
Any bond or pact to fast remain.
Twoness is but manyness, as viewed through a pane
Whose rigid frame blocks perception
Of truths innumerable as drops of rain.
On the surface, this Boston Globe op-ed exposes a painful truth about the admissions process and the illusion of meritocracy. Read between the lines, however, and another story emerges: that of the primacy of data mining in modern social analysis, especially when coupled with striking visualizations. The ever-popular Trendalyzer is an iconic example; by combining the standard Cartesian plane with colour and size, this simple tool manages to intuitively display correlations over four dimensions.
How could one visualize the columnist's point? The truth of college admissions, IQ tests, and SAT scores is one of socioeconomic distinction - and therefore of geography. If we were to take census data, combine them with popular university rankings (yeah, these are Canadian examples; I'm sure readily-accessible US datasets exist), and display the whole mess by region (postal code, neighbourhood, riding/electoral district, etc.), we might get a clearer picture of the distinction. I think very few of us would be surprised to find significant correlation between socioeconomic condition and tertiary education.
This raises a burning question: how much human creative potential is being wasted? Put another way, what is the estimated efficiency of education? If you follow Daly's reasoning in arguing that resource scarcity will forcing us to transition from growth to development, then this question becomes central to policy on everything from electrical power to brainpower.
To further pursue this thought: it might turn out that policy is an insufficient tool for developing the required infrastructure. There, I said it.
Governments might be near-irrelevant to our creative future.
And why not? Smart power and traffic grids, social networking, crowdsourcing...the list goes on; and every last one backed by cold, hard data gathered not by government-affiliated agencies but by private enterprise. Government is losing the data battle by a wide margin, with scant evidence that they have any clue how to catch up.
Hold on to your hats. The next few decades should be interesting.
Student returns to campus, only to be rudely reminded that he hasn't covered his elective requirements yet. Student flails frantically through course calendar, trudging through the execrable QUEST interface in an effort to unearth courses which are both interesting and available. Student settles on two more electives: Creative Writing and General Relativity.
The first assignment for Creative Writing is simple - write a poem of at least 140 words over at least 14 lines. This poses a unique problem: poetry is something I wrote off at multiple points throughout secondary school as boring, pretentious, or some convex combination thereof. In an effort to dust off whatever minuscule poetic skill I might have developed from the English education foisted upon me by our curriculum-setting overlords, I've decided to put my faith in the value of practice:
The Lineup
Man, arrayed in wintry garb,
Scarf-shrouded matron,
Lonely bespectacled soul,
For this moment alone
Heavyset, prominent jaw;
Pores pensively over news-sheet.
Age-worn mask of propriety;
Shares pleasantries and tea.
Clutches cherished BlackBerry;
Awaits interaction.
Their journeys converge
(I'm rather fond of arrayed. Your guess why.)
To further pad what will hopefully be my last term here at Waterloo with awesomeness, I've taken up a role in the annual theatrical production known as FASS. The theme of this year's production is video games; hilarity is promised!
Last words: I know you're wondering about the post title. This image explains all.
