I hope you’ll update your feed subscription to http://n.exts.ch/?format=atom for the most uninterrupted service.
Oh, and if you’re reading this, my sincere thanks for tuning in! Feel free to say “hi” over in the comments; long ago I forgot how to view visitor statistics on this host and have had to write like nobody/everybody’s watching ever since.
]]>Now it’s time to stop thinking what could have been — with the first Calf Trail, with the previous team — and start working wisely on what should be.
Practically, this means I’m now a freelance software developer. There’s a big distinction between “freelance” and “independent”. What I’m setting out to do, I can’t do alone.
I’m depending on clients to apply my strengths to their markets. I’m depending on friends to cover my weaknesses with their sight (and insight). I’m depending on family to keep me healthy and homed. I’m depending on faith, to not disappoint when all I’m really after is all that is left.
Freelance means I am dependent on all of creation but possessed by none of it. This, I fiercely believe, is how life here should be.
]]>“So convenient a thing it is to be a reasonable creature, since it enables one to find or make a reason for everything one has a mind to do.”
Today I was given the need, to keep finding the reason, for what I have always had a mind to do.
If I had a hundred reasons for starting a business the first time, they’re lost now to a thousand questions of why I would attempt it a second.
Today my employment at &yet was terminated.
There are no “good riddances” when friends disagree to agree, only sadness. There need be no “goodbyes” when friends agree to be, only peace.
Now I may have enough time to try again, which has me scared. I do not know where the trail will lead this time, but I am excited.
]]>As it turns out, my Canon 350D (a.k.a. Rebel XT) digital SLR camera is not supported by CHDK. This means it’s outside of the normal CHDK ecosystem of motion detection, BASIC/Lua scripting and the like.
However, there is a way to hack the 350D to enable a smaller handful of “bonus” features and settings, including an ISO extension to ASA 3200 and an intervalometer mode useful for things like time-lapse photography. I had a few hiccups getting it going — proceed at your own risk! — especially from Mac OS X it seemed, but here’s how I did it:
There’s some more detail and links in the instructions buried within the banner ad–splattered CHDK Wiki page for the Rebel XT, as well as the best overall summary of how to actually use the custom menu features enabled by the custom code on your CF card about halfway down the page. If you have questions, the best place to get help and find even more details is probably this forum thread.
Not quite plug-and-play but on the bright side, there’s very little fluid dynamics or tax regulations involved. Now when I plug in a compact flash card I’ve made bootable, I get even more control over my exposures than the camera already provides out of the box.
With this hack running, I can also set my camera to just keep taking pictures, say, every 10 seconds — should be great for time lapse and remote photography situations. If I want to disable all the experimental “power user” features, I just turn my camera on with a non-bootable card in the CF slot, and it goes back to its normal featureset.
]]>If the battle is whether Apple’s tools or HTML5 is the best way to write iPhone apps, whether Google’s frameworks or HTML5 is the best way to write Android apps, whether Windows Presentation Foundation or HTML5 is the best way to write Windows apps — my money’s on “native” in any and every case. Some developers aren’t as bothered by oppressive distribution policies as they are by the differences between platforms. They see JavaScript as the new Java — write once, run anywhere — and see generic-but-native-looking HTML5 apps as superior to the native apps they mimic.
The trouble is that users don’t value “consistent across platforms”. Why would they? They expect consistency within a platform. Developers who look at web apps as a “cross-platform solution” because of “HTML5″ do themselves a double disservice: not only do they devalue their own app by making it subtly inconsistent to native iPhone apps, they devalue the foundation they’ve built upon by muddying the web’s unique consistency.
Interestingly enough, it was Apple’s experiments that in large part sparked what we now call HTML5 — even before they tried to pitch web technologies as the iPhone SDK. Their 2004 introduction of Tiger’s new WebKit features, and their use in HTML-based dashboard widgets, was not uncontroversial — especially the debut of the <canvas> element. The controversy was not just about a browser adding this new element ahead of the standards process, but whether its nature fundamentally fit the web.
This wrestling may have been too quickly forgotten when the zeitgeist turned to The Web vs. Flash. Which one did we want in our pockets? Which one would we allow into the App Store? (We know who shot a rather rich mixture of fuel across that flame too!) Cute young <canvas> livened up that party, while the more web-ish SVG kept faithfully raising the children back in her own namespace.
Now APIs for 2-dimensional, and perhaps someday 3-onto-2-dimensional, drawing at such a low level as <canvas> provides is one of the most native-ish things a sandboxed web page could hope to ever do. But what distinguishes <canvas> from Flash? Very little as far as the topic at hand — the user experience may certainly benefit indirectly from an open standard implemented by competing vendors accessible from the same code that manipulates other document content, but its fundamental direct nature is one of a rectangular garden in which every website may try to plant its own reimplementation of superficial patterns and behaviour borrowed from hither and yon.
Like Flash, <canvas> is a useful medium for games. Games are their own platform. There are certain habits in game design; one of these patterns is that every game paints its own interaction. The Web, too, is its own platform!
Should the web platform shun games as one of its many contents? Certainly not! The web is a platform for content — perhaps the platform for content — and I’m beginning to suspect that that is exactly how a web *app* should look and behave as well. And not just any content, but linked content. Hyperlinked hypercontent for hyperconnected hyperhumans.
Raw pixels do have a place in that, as do video and audio and maps and molecule models.
You may recall me puzzling, in my early days of transition from desktop interfaces, at the attraction of building “apps” on what began as the physics paper platform. Just as physics is discovering what a tangled web may lie beneath their spherical cows of uniform density, it’s becoming harder and harder to ignore just how revolutionary “sharing within internationally dispersed teams” was even just for some academic information. And the web was never intended to be limited to a single format, so the idea of applying it — finding applications of it — building web apps for any task that can be turned into information, is not unfounded. Because of the web, any part of our lives that can be turned into content is limited only by the velocity of its light cone and the weight of its incoming links. It’s a powerful, powerful platform.
(The web’s other attraction is not unique to the web: any medium seems to gather a healthy school of builders who may not understand the first thing about foundations but are willing to keep bracing lumber together until they find an arrangement that’s worth tying a rope swing beneath. However, the web platform is actually especially conducive to this; how many of us don’t look back fondly at the first tree forts we built, that were our early homesteads in this great forest?)
So what is “native” to the web? Cloning every desktop and mobile operating system into a least common denominator cross-platform app framework has failed before, and it will fail again. I even see a very low return on investment trying to mimic the design patterns and interaction behaviours of only The Mac (or the iPad, for that matter) with the new tools HTML5 has given. The Macintosh interface was designed for specific hardware and a rather earlier period of transition. Not to mention, its modern implementation has much deeper consistencies and broader features than the different 80% each one of us relies on, which varies whether we’re keyboard people or mouse people, know Emacs meta shortcuts or copy/paste, have a multi-button scroll mouse or prefer a braille display. A web app’s best bet is not to pirate these patterns, like a camcorder snuck into a matinee, but to embrace the medium of hypercontent it’s been given.
That’s really what the web is: important information, flexibly found and presented, easily shareable via links. Since the web is not the world, people need specialized means of integration between their lives and whatever information they care to share by projecting it into existing and still-missing forms of content. Making that better is what web apps are.
]]>What community could I be a part of? I listed. All were too this or too that. Too young, too old. Too clueless, too proud. Too pointless, too advanced. I would refuse to join, or they wouldn’t have me as a member.
I supposed maybe I needed to get better at seeing potential. And showing potential.
Which I do need.
What, though, about enjoying people for who they are, not what they could be?
I’m stuck with this world, until death do we part. There’s not much that will make it spin faster; the days are already too brief anyway. Somehow too the people in it. Every community. All the people.
]]>“Ha! What you say, Daddy?” giggles Tobias, suddenly breaking the silence of our room, as dark and quiet as we can get it. Squirmy baby brother Malachi is now fast asleep across the hall with mommy, the most practical arrangement we could come up with as we corralled our bouncy little boy back into bed at eleven. He’s been laying quieter than me on his half, but what I sensed is correct: he’s as awake as I am.
We talk a bit about the situation, a two and a half year old young man and his insomniac father.
“Shall I put on some music?”, and he whispers in agreement back so Arvo Pärt’s choral works join us from the headboard. I keep clicking the tiny speaker quieter, and with it the morning’s alarm, as the beautiful music fills our silence and, gradually, flutteringly, my thoughts. I wonder what Tobias could be, would be, thinking about; his energetic fingers and legs and brilliant little vocabulary obediently mute beside me as I too try not to toss and turn.
I couldn’t have listened to both discs (all two hours?) but before I finally fell asleep I remember my iPhone and oldest son both at peace above and beside me.
It’s the same old questions. Sometimes I find serenity, deciding “what Tobias wants to be when he grows up — that’s more important now”. But Malachi is already growing up too.
Two boys already, whose dad still hasn’t ruled out firefighter or airplane pilot or rock star or farmer. But probably something to do with computers. Something that takes all the will and energy and unlikelihood of ever fitting in and turns it into something good, all within whatever amount of time we have here on earth to figure out why we’re here and get it done. Would they be better off if I proved it possible, or better if I didn’t fail again?
Maybe this, like so much else, really isn’t up to me. But it’s still keeping me up.
]]>Jonathan Zittrain, in this article (which you should read) and in his book (which I should read), argues that a society in which a few corporations completely control our devices in the name of security, and to better serve their profitholders — that a society which allows that will ultimately end up an un-safe, and un-growing, society. So we should be building up and building on platforms that don’t discourage freedom and sharing and other similarly unpatriotic ideas.
Which is half, but not the better half, of my little Beyond 1984 project.
I’m tempted to say the other half is about homeland-warming things like such as in money making and consumer happiness. But that’s a cynical take. The other half is about putting away cynicism. We already have Zittrain’s “angry nerds”: they’re the Stallmanites, the cypherpunks, the anarcho-pacifists and other tinfoil-hat flouride-fearers that you’d never want at your company Christmas party.
Angry nerds? Angry nerds are a dime a dozen! We’re the solution to what exactly now?
Meanwhile, Twitter’s repressed are excited that maybe Google+Path can re-centralize the violence inherent in Facebook — O frabjous day! And if that’s already more than what 99% of computer owners care about, it’s certainly not the world’s richest 1% who are going to patronize the development of a free society either.
So the other half of going Beyond 1984 is going not so much by avoiding what’s wrong with the Orwellian but by embracing what’s good. Embracing well-distributed, privacy-respecting, citizen-empowering hardware and software designs may be a worthwhile goal — or maybe not.
I don’t imagine anger, or fear, or even schadenfreude, can inspire much great industrial design. Angry nerds like me need to go beyond building systems that are Anti-Ungood. Going beyond what 1984 represents will require abandoning those themes ourselves.
So that’s what this little Beyond 1984 project is: researching libertarian technology, if it could be built for healthy reasons.
]]>-
We’ve gone from blatantly complicated devices that Only Nerds Control, to superficially simple devices…that Only Nerds Control.
-
Somehow it is cheaper to build iCloud on top of a new $1 billion data center across the country than on, say, a couple hard drives attached to an Airport Extreme in my living room and yours.
-
One billion dollars.
-
That’s what storing our data is worth to Apple.
-
They aren’t the only ones giving away the mainframe to sell the…the what? “If you are not paying for it, you’re not the customer…”
-
…though that’s not always the full story. Of the biggest datacenters: only Google and Facebook simply sell our Attention. Amazon mostly asks for our Acquirings. Apple hopes to earn our iAllegiance.
-
It’s worth, by their estimation, over one Billion dollars.
-
The end result is that Personal Computers are no longer quite what they could be.
-
We’ve outsourced backups, we’ve outsourced shared storage, we’ve outsourced network security. These were once luxuries of only the dedicatedly computer-savvy.
We value these luxuries enough to give up whatever it is the big iron gets for providing them.
-
We’ve outsourced ourselves.
-
We’ve gotten some very accessible technology — in exchange for our previous privacy, our former fraternity and our iNdividuality.
-
Us nerds escaped centralized mainframes for complete computers we could call our own.
But now we’re escaping back to centralized mainframes which complete computers we could call our own.
-
Our users’ computers, or perhaps the computerized “users” themselves, we can now own.
-
And we’re finding it quite profitable.
-
Is this okay? Or —
-
Is this some 1% winning?
-
Is this just economies of scale?
-
Or is this a tragedy of the commons?
-
The joke is the jocks start with the power in school, which buys them nothing, and the nerds end up with the power in the rat race, which buys them yachts. A better triumph of the nerds would be changing the world order, rather than controlling it.
-
Or so I suspect.
Fortunately, iOS 5 just added support for a more standard protocol called S/MIME, and so I had recently come across a nice article on setting up secure email on both Mac OS X and iOS 5. Since I mostly want S/MIME for email encryption rather than signing (there’s a good overview of the distinction on its Wikipedia article) I decided to just create a self-signed pair rather than procuring a certificate from some annoying, overpaid and insecure centralized certificate “authority” as that article recommends.
Creating a self-signed S/MIME certificate is actually very quick and relatively easy using the Keychain app that comes with Mac OS X, but I wanted to document the process as getting a certificate that Mail recognizes did require overriding at least one of the assistant’s defaults:
Update: Turns out Mozilla Thunderbird will not accept the certificates generated through this process. I’ve had success by creating a standalone personal certificate authority and then using that to sign a user-only certificate. I need to test it a bit more before writing it up here, but it might be a bit simpler process in the end.
Once you’ve done that, you’ve taken care of the “The Certificate” step and can just follow the rest of the instructions in Ars Technica’s “How to secure your e-mail under Mac OS X and iOS 5 with S/MIME” article using the certificate you created instead of one from some corporation.
There is one major drawback to a self-signed (decentralized) certificate. As you’ve seen yourself after creating your certificate, it will not be trusted by default — only several dozen corporations and governments and rogue nations are trusted to forge certificates; you are not on any platform’s pre-approved issuer list. So: after you give your public key to your email contacts (as will be necessary for them to decrypt your messages) they will have to repeat steps 9 and 10 above to manually trust your self-signed certificate on their own machine.
]]>