Message to the Citizens of Not Yet Named City

December 6th, 2008

Dear citizens of Not Yet Named City,

Every single morning at 5:45 AM, you beseech me via Facebook Notifications:

The citizens of not yet named city want you back because they miss you! Their happiness is now at 100%. Check on your city now!

I’m sorry, I’m not coming back.  Never.  Give it up.  Please stop calling me.

I know you miss me, I know it must be rough for you.  But I don’t miss you at all.  Fortunately, your happiness is now at 100%, which tells me a) our virtual relationship is maintenance-free anyway, and b) missing me is one of those simulated-friend things you only do in simulated-friend-land because you are bored with your non-existence.  You don’t really miss me, you just e-miss me.

I thought about checking on my city, maybe for the weekend or something, I thought I might just show up and say something like “Hi, sorry I didn’t call, but I figured if you actually miss me you’ll drop whatever you’re doing and hang out with me for the length of a pint of cheap beer or so.” But then I realized that was selfish and manipulative, and wrong.  I’ve got to stop treating my friends like that.  And also, you don’t exist.

My people, you do look fabulous, not existing like that.  They say you can’t be too rich or too virtual.  You color-coordinate well with the avalanche of status symbols and nominal Facebook clutter spring-loaded in my toolbar, that seething tower of festive to-dos that threatens to leap out and crush me if I dare click near it.  Crammed into this virtual glovebox are three melting snowballs, five urgent questionnaires, two flat beers, three stale donuts gone uneaten for months, the festering underpants of Batman’s sidekick Robin,  and a li’l green patch that died.  None of these things are real, but all of them were gifts, so I am forbidden by ethics to ever throw them away.  Non-existent gifts from absent friends, on Facebook.

Loyal Unnamed-ians, please understand: I am mortal, human; there’s only so much of me to go around.  I cannot be upgraded to faster hardware just because my hit count has risen.  And I am busy, with real things in the real world … if you can call writing real … well, hmmm … but I also have yardwork!  Yes, yardwork is real, and I am behind on a whole lot of it! Pruning, weeding, mulching!  The happiness level of the Citizens of Mykle’s Ostentatiously Large Yard never seems to rise above 85% or so, and is now hovering near 50%.  Being vegetables, those citizens don’t so much miss me as they die like flies the minute I ignore them. If you, Citizens of Not Yet Named City, could come out of Facebook and visit me for once, just to help me out with the landscaping, or maybe clean the chicken coop once a week, or turn the compost, then perhaps I would be inclined to visit you too.

I also have a family to care for and support, although they are somewhat more self-sufficient than my yard.  But they too crave my attention, and deserve it.  They are real.  I can touch them.  I like to touch them, smell them, see them, jump up and down next to them, yell at them, drag them to boring events.  They are physical.  You are just one more source of typewriter cramps and numb butt.  I know you can’t help it, I know the Facebookverse has its own physics and limitations.  I’m not mad at you, I’m just tired.  And you don’t exist.

Is that offensive?  Is it rude for me to judge you on the basis of your reality?  Am I a close-minded bigot of an existentialist?  Many people are happy, proud even, to dote upon the citizens of their Already Named Cities, cities with names like Gingeropolis, Kevinlandia, The Isle of Shanelle.  Civic pride thrives in these hip, humming, fictitious towns.  They are the virtual cities of the internet future.  Have you considered moving there?

Citizens of Not Yet Named City, I beseech thee: get a life.


Why Credit Remains Tight

October 10th, 2008

It’s October 10, 2008, and for the last two weeks, world credit markets have been seized with illiquidity, or whatever you’d call the opposite of liquidity … dryness, I guess.  Credit has grown stiff and creaky.  The cost of short-term lending has shot up.

Treasury Secretary Henry Paulson has made clear that the rapid increase in the cost of short-term collateral-free borrowing between banks, businesses and other banks — a.k.a. the “commercial paper” market — is the doomsday scenario that all the world’s governments should now fight to prevent.

And central bankers around the world are reaching further agreement that reducing the cost of credit is an urgent goal to prevent a global financial meltdown, and that to do so, we must infuse banks with cash.  Billions and billions of dollars, euros and yen of delicious money.  This has been Paulson’s argument for some time, but now other G7 financial analysts are coming to the same conclusion.

Funny thing is, we’ve been doing this for a little while now, we’ve kept on infusing and infusing and infusing the banks with cash, and yet they keep raising their commercial paper rates.  This is the opposite of how it’s supposed to work, apparently.  The cash infusions are supposed to assure everybody that nobody’s going broke.  They are supposed to remove uncertainty, and reduce panic.  It’s like they’re supposed to spend the cash on Valium, but they’ve been buying up crystal meth instead.

Why isn’t it working?  Why aren’t banks loosening up their credit when we give them billions of dollars?  After all, if I gave you billions of dollars, wouldn’t you relax a little bit about your finances?

But imagine this scenario: Suppose I give you billions of dollars, and then I told you in no uncertain terms that if you don’t start lending right away, I’ll be forced, against my wishes … to give you billions more dollars!  Would that motivate you to lend?  What message am I sending there?

Paulson and his cronies have made a classic investing error — they didn’t forsee that the market would develop counterstrategies to their strategies.  At first, I’m sure, all of the major commercial paper lenders truly were scared, concerned about their solvency, unsure what they owned, and hoarding cash.  But at this point, with the cash-infusion concept going global, the bankers have figured out that the longer they snafu the credit markets, the more free money they’ll receive.

To reiterate: we are now paying the major banks billions of dollars to prolong this crisis, for their own benefit. The longer they can hoard credit, the more they get paid.  The wealth of nations will be theirs.

“But that’s madness!” you cry.  “The stock market is collapsing!  Those bankers must be losing millions every day!”  And that may be true for the bankers.  But for the banks themselves, with all their assets having slid into oblivion already, I don’t know that their exposure to the market crash matters much compared to the possibility of receiving HUNDREDS OF BILLIONS OF DOLLARS FOR FREE.

I think Smilin’ Hank Paulson may have figured this out, and that’s why he’s decided to side-step the middlemen and get the US Government into selling this commercial paper stuff.  And frankly, that makes a lot more sense to me than handing out hundreds of billions of dollars to Hank’s personal friends and former co-workers.

In fact, I have to wonder why we didn’t enter the commercial credit market weeks ago, since it directly addresses the specific market problems we’re worried about, without resort to trickle-down theories.  And since government can clearly make money on this, as opposed to Paulson’s plan of spending billions on chronically unknowable and unsellable securities.

But I’m willing to bet there’s a counter-strategy there, too.  Like, let’s see … could Goldman Sachs borrow billions of dollars from the government, and then refuse to pay it back?  And then ask for a bailout?  I’m just brainstorming here …

In the long run, the only thing that works is to let the rotten bastards fail.  Let it all break down, and then pick up the pieces and start over.


Instruments

September 19th, 2008

All my friends

When I applied for a public arts opportunity last summer, I suddenly needed to document, document, document.  Fortunately, on a beautiful Indian Summer Sunday in NE Portland, my dear friend Seamus agreed to come over and shoot some pictures of some of the crazy monsters in my basement.

The upright bass was built from an old drawer with solid fir panels, a banister, and some bicycle parts.  It’s got pickups that lead into the small red amp at right.

That amplifier, aka the Two Hour Breathing Apparatus, is maybe the most practical instrument I’ve built; it’s battery powered and can play on the street for two or three hours.  The case is a beautiful old airtight box that one held an emergency oxygen supply for miners.  It was given to me by Tim Cook of ENVI Construction.

The drums

This is the drum kit I play in the Golden Greats; it’s much more beat up than the other instruments because it actually gets taken to gigs regularly.  It would take pages and pages to catalog all the miscellaneous bits of this, not to mention the evolution it’s been through.  But it has held up amazingly.

Death Star -- detail

Death Star -- detail

This is the Death Star — it’s a multi-player music toy.  The large white panel is actually an interesting flat-panel speaker, designed for in-wall use.  It lacks bass, so there’s a sub-woofer below, but the actual detail of the speaker is remarkably good.  There’s a jack for guitar, a circuit-bent synthesizer, and a trash-can lid that serves as both percussion instrument and plate reverb.   The large gold thing on the right works as a microphone if you’re willing to stick your face in it.


Yo Gamma Gamma!

September 11th, 2008

Last Friday was the first time I ever saw this blog on a Windows machine.  Egad!  So very dark!  Really I’m not doing this just to be illegible.  Is there really no monitor calibration wizard in Windows?  I guess not.  I have upped the text brightness to compensate.  If this is the first time you ever saw words here … welcome!


Video: Speed-Vest in Action!

August 23rd, 2008

Welcome, Teh Internetz. Thanks for the sudden bump of interest in the Speed-Vest. Since our original posting over a year ago, the vest has undergone testing in both MPH and KPH, traveled from Minneapolis to Portland to Vancouver and back, been damaged in a disco and reborn on the workbench. If you’re in Seattle next month, come check out the 2008 Pro Walk/Pro Bike Conference, where Brady will have the Speed-Vest on display.

Here’s some video of the Speed-Vest in action. That’s me stunt-riding, with Brady on steady-cam. You can also find it, with other updates at the newly-relaunched speedvest.com.

(music by The Golden Greats!)


The Shining $PATH

March 21st, 2008

The search-path algorithm for UNIX is broken, and has been broken for a long time.

$PATH is fine for specifying bin directories; in fact, there ought to be just one $PATH per host, which all processes can inherit, rather than users having to set such things in their dotfiles. $PATH isn’t obsolete, but it needs help.

The problem is with interpreting the order of the PATH variable. The historic algorithm, implemented by the first exec() and its descendants, is to search each of the dirs in $PATH, in the order in which they appear, until a file matching the provided command name is found, and then exec that file. It’s a simple algorithm: fast, easy to implement … but it’s also the cause of a whole genre of UNIX aggravations.

Now that we live in The Future, and our computers are smart, here’s my vote for a better algorithm: first match the command name against pattern keys in the list of key-value pairs in the $PATH_HINTS variable; if nothing is found, default to standard UNIX behaviour.

The PATH_HINTS variable would map patterns to bin directories, like so:

mysql.*=/usr/local/mysql/bin;php$=/usr/bin;php4=/usr/old/bin

This expresses something like: if i’m executing “mysql” or “mysqldump” or “mysqladmin”, look for it in /usr/local/mysql/bin. If i’m executing “php”, look in /usr/bin — but if i’m “php4″, run it from /usr/old/bin; for “php5″ or “php6″ or “php2000″, follow the search path like you usually would.

I’m using regular expressions here; someone might be able to convince me that file-glob matching patterns are better, perhaps for performance reasons … but if you’re really concerned about exec performance, provide a complete path to the file you want to execute. Duh.

My system has three copies of mysql installed, and I need the second one … which lives in /Applications/MAMP/Library/bin, if you can believe it. (UNIX veterans are cringing, of course.) I don’t want to re-order my PATH just for that, because re-ordering my PATH could have unintended consequences, especially as regards the three versions of Perl on my system. (And yes, I have my reasons, and they’re good reasons.)


Set my iPhone free!

January 25th, 2008

Usually, if I can think of some software, the Internet has already written it. So here’s a list of the things an iPhone could do with the right 3rd-party applications — legal and otherwise:

  • Stream music from a computer running iTunes (or any DAAP server), optionally save it to my iPhone.
    • Google’s iPhone Remote can get you to the files & let you stream them, but the interface is crude & the security issues need to be addressed.
    • WeBot is fairly slick for over-the-internet access of music files, though it looks like maybe I must route the music through their servers even if I’m within range of my mac. But it might do the trick for my home song server. Still not really DAAP compatible, tho.
  • Stream music from someone else’s iPhone (a DAAP server), and/or let two iPhone users connect and swap songs manually.
  • Stream music from an iPhone to an AirPort Express via AirTunes.
  • Record audio.
  • Share pictures, audio, or any other kind of file between iPhones.
  • Stream internet radio via playlist files, or any other standard now in use.
    • – Seeqpod does something in this space — they send a quicktime audio file that knocks iPhone Safari into video-playing mode, so you get all the controls. It works, but Seeqpod also does a bunch of other meddling that gets in the way. Even worse, they seem to be missing a lot of the best stations, including many which already netcast. KFJC, KUSF, KPSU, KCMU … college radio, basically, is absent.
    • i’m amazed that Live365 doesn’t have an iPhone version of their site.
    • Other people must be working on this.
  • Remote-control iTunes on a Mac or PC, or some other server software that streams to an AirPort.
    • – Signal does this, although it’s fairly clunky
  • Make internet phone calls over a wi-fi connection for free.
  • Trace the iPhone’s location through the day, and create a time/location map using Google tools.
  • Attach a photo and an audio caption to a pin on a map, and upload that data to an online mapping community.
  • Option to save any web-embedded MP3/AAC/video files I view.
  • Sync via Bluetooth.
  • Use the built-in accellerometer as a pedometer, counting my steps.
  • iChat — free live chat, instead of expensive SMS.
  • Free SMS via internet anyway! End the farce of SMS charges!
  • A calculator with all the math functions, not just the four easy ones.

I’m looking forward to the SDK release in February.


You need to restart your comptuer.

November 8th, 2007

An irksome and aggravating linguistic trend, a popular mistake, has now spread so wide through English-speaking culture that it’s included in the firmware of my MacBook Pro.

“You need to restart your computer.”

Whether you are a programmer explaining how I should cope with your system’s collapse, or a bureaucrat describing how best I should waddle through the maze of your forms, or anyone else attempting to enforce petty personal rules, one thing is certain: I don’t need this. I don’t need to fill out your form 2319-A. I don’t need to put down my video camera in your store. And I definitely do not need to restart the computer that moments ago held my unsaved work.

These needs are your needs. Not mine. I’m not the needy person in this relationship. My needs are simple: for things to work, for people to speak English correctly, and for certain individuals — really, just a handful of them — to fuck off. And those off-fucking people have needs too, I’m sure. I don’t think it would be healthy for me to project my off-fucking needs onto them, when they are so needy already. They don’t need to fuck off and die. I need for them to fuck off and die, and decompose, and be forgotten, and perhaps implode. That’s different.

The correct phrasing therefore is: “Your computer needs you to restart it.”


named pipelines in unix

August 28th, 2007

while using a collection of filter and mungers and sorters to extract statistics from the apache logfiles in the traditional manner, it occurred to me that we really need a shell that’s able to create a thing called a ‘named pipeline’.

this is similar to, but not the same as, a named pipe. to wit: suppose my webserver’s filesystem is 80% full due to immense logfiles, and i am sifting those files for data. first, i have to combine them:

cat file1 fil2 file3 | sort | grep | munge > output

.. except actually file2 has got a bunch of crud from a previous egrep in it, and needs special treatment, so:

cut -d: -f2- file2 > file2.fixed
cat file1 file2.fixed file3 | sort | grep | munge > output

… only there’s not enough space on my filesystem for a second copy of most of the contents of file2, and anyway i’m only looking for a tiny percentage of that file.

what to do? well, named pipes are a handy unix-ism for this situation:

mknod file2.fixed p
cut -d: -f2- file2 > file2.fixed
cat file1 file2.fixed file3 | sort | grep | munge > output

that solves my space problem. only, i’m still re-running my sort over and over — kind of figuring it out as i go — and whenever i need to run it again, i have to re-start that stupid cut command. feh. what i need is the power of bash:

mknod file2.fixed p
(while true; do; cut -d: -f2- file2 > file2.fixed ; done) &
cat file1 file2.fixed file3 | sort | grep | munge > output

… which will re-start the command every time the pipe is opened for reading. that’s about what i want. only, instead of typing all this mess:

mknod foo p
(while true; do; cmd | cmd | cmd | cmd > p; done)&

i’d much rather just type this:

cmd | cmd | cmd | cmd |% p

when i type that special |% notation, the shell should first create the named pipe, then spawn a process to execute the pipeline into the named pipe, restarting it as necessary for as long as the shell is running and the named pipe exists.

in addition, it ought to have a mechanism for quietly halting when the named pipe is deleted, and maybe for automatically restarting such pipelines when they are found abandoned by a previous shell. and someone ought to be able to figure out what’s coming down that pipe without having to suck on it — i.e. there needs be a mechanism to inspect which commands are hooked to what pipes.

in short, the resulting named pipe ‘p’ is more than just a pipe, it’s a predefined pipeline that can be started and read from any time, but that consumes minimal resources until it is called upon. hence ‘named pipeline’.

(of course we’re consuming some memory here, with all those commands standing around blocking for output. but perhaps our clever implementation will avoid executing the commands until such time as their output is requested.)

if i was smarter or less lazy i might hack that %| syntax into the source of bash. but instead, i’m going to write a utility called ‘plumb’, maybe like so:

plumb p ‘cmd|cmd|sort|grep|etc’ # to create and start a pipeline
plumb p # to inspect
replumb p # to restart

sadly, the commands must be single-quoted, or the pipes escaped somehow, in order for this to work in the shell. but it’ll do for now.

making named-pipeline creation trivial allows me to construct what would otherwise be an unwiedly-long unix pipeline as a series of small, easily joined & inspected fittings. i can set up a large pile of sub-processes, each ready to filter the data another step, none of them consuming file space in the process of doing so, and with these craft my ultimate super-grep one step at a time.

plumb file2.fixed ‘cut -f2- -d: file2′
plumb sorted ‘cat file1 file2.fixed file3 | sort -u’
plumb sifted_a ‘egrep a sorted’
plumb sifted_b ‘egrep b sorted’
plumb formated ‘prettyfy sifted_a sifted_b’
plumb beer ‘mail -s “today’s traffic report” myboss@myjob < formatted’

what’s brilliant is, if i inspect ‘formatted’ and find an error introduced by ‘file2′, i can edit ‘file2′ to fix it, and ‘formatted’ will reflect the change without additional work or resource-consumption — an implementation of functional programming in plumbing, basically — thereby enabling:

00 17 * * * cat beer > /dev/mykle


Speed-Vest!

June 18th, 2007

 

 

 

UPDATE 9/11/2008: Look ma!  We have a whole website for the Speed-Vest now — you can sign up for news about the V2 vest, get yer press-blurbs on,
and stay informed about the 2009 Tour De Speed-Vest!
Furthermore, we’ve now got video of the vest in action here.
But if you’re looking for some fairly nerdy reading about how to make one of these yourself … read on!

The SPEED-VEST is a bicycle safety device and advocacy tool which displays the wearer’s current speed on their back in easy-to-read lighted numerals. It improves rider conspicuity while legitimizing bicycle speeds on the roadway. Originally conceived by Brady Clark and engineered by Mykle Hansen, it just won the Hub Bike Shop’s Bike Gadget Contest in Minneapolis, MN.

The system consists of a wheel speed sensor, a wearable numeric display and a small computer that does the thinking. The computer is an Arduino: an open-source embedded computing platform powered by an Amtel microcontroller. It runs for 6 hours on a 9 volt battery, and is about this big:

in the palm of my hand.

 

The numeric display is made from electro-luminescent wire, supplied to us by CooLight.com. El-wire glows brightly when supplied with a very small amount of high voltage, high-frequency current. It’s cheap, flexible and fairly durable. One AA battery can power the SpeedVest display for up to 6 hours.

... and it's pretty.

 

This project was my first foray into microcontrollers. Not knowing much about electronics, I imitated this circuit closely; however the Arduino platform, suggested by the members of Dorkbot PDX, was much easier to use than I had imagined and quickly became my new favorite computer.

I wouldn’t call the project arduous, but the most time-consuming aspect was probably soldering the circuit together on the Arduino’s prototyping daughterboard. Next time, I’m going to learn how to make my own printed circuit board.

soldering, soldering, soldering ...

 

Meanwhile, Brady designed a template for the el-wire digits, based on the digits in old Nixie tubes. It seemed appropriate — it’s almost the same technology, really. Since I had 12 pins to play with, and since you can only overlap so much el-wire, we put five digits on the right and seven on the left:

the stacked numbers template

 

We mounted the el-wire on a piece of black denim, taping on the template as a guide, using a technology the Coollight.com folks hipped us to: the Buttoneer. I don’t know how well it works for re-attaching buttons, but it’s great for this.

the buttoneer at work

 

We achieved sharp corners by running the wire behind the denim through a hole, and then back through to the front at another angle.

the view from behind

 

In order to display the SpeedVest for judging at the Gadget contest, we needed a mannequin. So, we borrowed another great piece of Internet advice. Witness below the birth of the creature known as “Packing Tape Brady”, made possible through the assistance of super-assistant Heather Anderson:

We were up most of the night before the event deadline: debugging code, writing up handouts, fixing bad solder, screen-printing text onto reflective backing, velcro-ing everything together, and arguing about the relative artistic worth of the digits zero and seven. The next morning, we got it all together and brought it to the Bell Museum with about 15 minutes to spare.

 

(Somehow we neglected to get a picture of it working — but it worked!)

Despite some excellent other entries (including the zoobombariffic Superman Bike!), we were tickled pink when the judges at the Bike-In presented Brady and myself with a $150 gift certificate from the sponsoring bike shop, the HUB bike co-op of Minneapolis. And what a gift certificate! This beautiful hand-drawn check would have been prize enough, even if it hadn’t been financially negotiable.

words don't do it justice.

 

The Speed-Vest will be undergoing speed trials in Portland, Oregon at an undisclosed test track this Sunday night. If you are interested in bringing the Speed-Vest to your town or event, or just want more info, please drop us a line:
info @ speed vest . com