hobbies & projects. cars, watches, drones, code, whatever.


  • Tesla Model 3 Mods

    Tesla Model 3 A Tesla Model 3 Performance.
    • Summer wheel setup
      • Avant Garde M510 in matte black, 20" x 8.5" front 10" rear
      • Michelin Pilot Sport 4S 245/35/20 front 275/30/20 rear
      • Black splined lugs
    • Winter wheel setup
      • T Sportline in matte black, 19" x 8.5" front & rear
      • Pirelli Winter Sottozero 3
      • Black covers for OEM lugs
    • Exterior stuff
      • XPEL PPF film on hood, front fenders, bumpers, mirrors
      • 35% tint sides, rear, roof
      • Ceramic coat all around
      • Chrome delete all around
      • Badge delete
    • Interior
      • Brushed black metal film on center console, dash, steering wheel (from RPM Tesla)
      • Interior LED lighting upgrade (from RPM Tesla)
      • T logo puddle lights on all 4 doors
      • Jeda wireless charging pads
      • Maxpider 3D all weather mats
  • Lotus Elise Setup and Mods

    Lotus Elise Lotus Elise

    A 2006 Lotus Elise (Federal/US model).

    • Wheel & tire setup
      • Black Lotus Sport wheels, 16" front 17" rear
      • Toyo Proxes R888R 195/50R16 front, 225/45R17 rear
    • Suspension
      • Inokinetic RaceTech coilover suspension
      • Corener-balanced with 160lb ballast
    • Power
      • BWR Supercharger Kit with CharlieX tune
      • Inokinetic Sonic Fury DE Exhaust
    • Exterior
      • 35% tint sides, rear
      • GRP Mesh Grills on front and rear
      • Black & silver logo badges on wheels, hood, with black rear vinly lettering
      • Really Light Stuff extended view side mirrors
      • Exige-style side vents with GRP mounting brackets and grills
    • Interior
      • Second Skin Luxury Liner sound absorber under seats and behind rear parcel tray
      • Second Skin Damplifier Pro weighted sound deadener on floor pan, undertray, under seats and floor mats
      • Stereo head unit and speaker delete with 3D-printed speaker blanking plates (see thingiverse)
      • Alcantara headliner
      • Lightweight rearview mirror replacement
      • Body-color painted center console and HVAC surround
      • "The Bollock" weighted shift knob
      • Aluminum carpet buttons
    • Misc
      • Alarm antenna wire re-routing for range increase
      • Daytime running lights disabled
      • NuKey aluminum key with 3D-printed keychain (see thingiverse)
      • LED lighting replacement for all interior and exterior except headlights
      • 3D-printed door reflector replacements
  • Drone Hacking

    Quadcopters, tricopters, drones, FPV, etc. Been playing with all manner of these for a while.

    Stuff coming one of these days. For now, here's a video:

  • Slash Frog

    IMG_4474 IMG_4477

    A Traxxas Slash 4x4 Ultimate race truck with lower-than-stock center of gravity. As a child of the 80s, I of course wanted it to look like a Frog.

    • Proline baja body
    • RPM platics throughout, Proline body posts, misc chassis upgrades
    • Stock powertrain
    • A bunch of other bodies
  • Ripley's SCX10

    IMG_4403 IMG_4444 IMG_4414 An Axial SCX10 with Falken jeep body, modified. For Ripley.

    • Axial aluminum links
    • Front-mount battery relocation, with ESC move
    • Aluminum ESC box
    • Stock powertrain and receiver
    • Waterproof steering servo and aluminum horn
    • Pit Bull Rock Beast tires on Axial plastic wheels with metal beadlocks
    • Ripley figure (from Alien) and miscellaneous other scale parts
  • Jeep JKU Setup and Mods

    2012 Jeep Wrangler JKU
    A 2012 Jeep Wrangler JKU with all the things.
    • Wheels & tire setup
      • AEV Savegre flat black wheels, 17" x 8.5"
      • 35x12.5r17 BFG KM02 tires
    • Exterior
      • Rugged Ridge XHD modular system front bumper with stubby ends, hoop, D rings
      • Smittybilt XRC rear bumper
      • ACE rock rails
      • Bestop Hybrid fastback roof
      • Aluminum hood tie downs
      • License plate blanking plate, spare tire relocation
      • Stubby antenna
    • Interior
      • sPOD light switch console above rearview mirror
      • Drake billet shift levers
      • Carolina Metal Masters passenger grab bar
      • Opar A pillar grab handles
      • Rear seat incline supports
      • Bartact seat covers
    • Performance
      • AEV 1.5" sport lift
      • 1" body lift
      • Superchips Flashpaq tuner
      • AFE 2.5" SS 409 catback exhaust
    • Misc Electrical / Utility
      • ARB under hood compressor
      • Custom battery fuse plate
      • sPOD wiring harness and switch box
      • A pillar, front bumper, and rear-spare Rigid LEDs
      • rear spare license plate and Rigid brake light
      • JW Speaker LED headlights, tail lights, fog lights
      • Hertz speakers and sub, Alpine integrated amp under driver seat, reverse cam
      • Rear cargo area tie down points
    • Axial King of the Hammers scale RC car

      IMG_4555 IMG_4547 IMG_4551 IMG_4559 IMG_4515 Out of various Axial parts, I built what is as close as I could get to a King of the Hammers, Ultra4 style racing/crawling truck. I love it.

      • Axial Wraith tubular frame
      • Vanquish Products axle supports, C-hubs, lockouts, and links
      • Recetech beadlock wheels with super swamper tires
      • Holmes CrawlMaster 13T crawler motor
      • SuperShafty bulletproof full metal transmission
      • LED light bar, headlights, and rear race bar
      • Tons of custom plastic and aluminum fabrication for the finishing throughout
      • Futaba radio system
    • Bye-bye Google Reader (a post-RSS web-reading workflow)

      How I learned to stop worrying about RSS and love the Twitter.

      I get most of my web content through Twitter, but had a full RSS setup going as well. Google Reader's imminent shutdown threw me into an existential panic. How would I stay on top of my highly-organized tree of RSS feeds? A few days' survey showed me just how many reading apps are out there right now, RSS and otherwise. It also gave me a chance to think about whether I still cared if I read every single post. Did I ever really empty my Google Reader inbox? Nope.

      Three Modes of Reading

      I think many of us consume content in three distinct modes.


      We look for headlines, snippets, and small nuggets of content that help us keep up on major developments of the day. Real-world news items, tech developments, the latest time-wasting meme, and other random tidbits that we find worth a glance. Scanning is us keeping on top of our stream. We do it nearly continuously, on whatever device we are primarily engaged with at that point in the day. We glance sideways at our phones while in line for coffee, notifications pop up on our laptop screens all day, we skim our email while walking to the shower.


      Sometimes, because we still appreciate long-form content, we actually read something for more than a few seconds. This is a more deliberate activity, done in distinct chunks of time. We read interesting thought pieces on a tablet before falling asleep, we procrastinate in our browsers while temporarily stuck on a problem we're working on, we time-shift content to times when we're ready to think.


      Because we're knowledge workers, we do need to do our homework. We scour the web for content relavant to our particular areas of interest. We save this content so we can keep track of it later. We're usually pretty anal about the system we use for doing this.

      Coming to terms with these three modes has made it easier for me to get my head around my own content consumption patterns and then help me figure out a tools workflow that works for them.

      My Workflow Approach

      Here's a recipe, YMMV.

      Make Twitter and Email your only sources

      I ditched everything but Twitter and email. Almost anything I ever followed via RSS is on Twitter as well, often with more useful headline commentary. Everything else I was using RSS for, like keeping up with Google alerts, I can get via email. Twitter Lists, and the fact that you don't have to Follow people/brands/cyborgs to put them in a List, means you can get as segmented as you like.

      Separate Scan vs Consider content with Labels, Lists, and time-shifts

      First, separate Scan and Consier content at the source level. For Twitter, anything you want to make sure you can scan, Follow it. For email, let it come to your Inbox. You can then keep your Inbox and your main Twitter timeline open as often as you like, Growling at you all day if you want, and make sure you see what's going on.

      For sources you know you don't really need to scan but will instead want to read when you have time (Consider), use Twitter Lists and auto-archiving GMail labels. Got some time, looking for something to read up on, that's when you browse those. This is akin to how many of us have used RSS feeds in the past.

      To move items you've scanned into a consider mode, use a read-later service. The feed from that service you can then read right along with the rest of your consider content.

      Tools-wise, I currently use HootSuite and Instapaper for all of this, on top of what I do in my mail client and in Twitter's interface itself (list management).

      Use a bookmarking tool for Research

      Forget the social aspects, use a bookmarking service to keep track of all that web-based content you think you might want later. I have tons of projects going on at all times, I have bookmarks in all of those areas, and many more.

      I use Pinboard for this. I used to use Delicious, but, well, you know. I don't use Evernote, mostly because I think its inefficient for web links and overkill for notes. Don't stress about the tags as long as they make sense to you. (As an aside, Note and TODO management is a topic in and of itself that we'll talk about another time, short version is use Simplenote and a good fast client like Notational Velocity).

      Make a schema for your Consider content

      Make a structured schema when you organize your Twitter Lists (or even RSS folders) -- define your lists/folders/whatever and write a few words about what they mean. It may seem like overkill to start, but over time, as you build up lots of content and are constantly curating it, it helps to clarify the categories. This also makes it easier to avoid having sources in multiple categories, which makes managing read/unread state easier with clients that don't handle it very well (like most Twitter clients).

      Get your tools hooked up

      Get your apps and bookmarklets humming. Being able to easily time-shift content or save it for rsearch purposes right from your reader is key. I use Chrome and Android. On the desktop, I find the HootSuite Hootlet, Instapaper bookmarklet, Pinboard+, and Pinboard (which feels like the old/awesome Delicious Firefox sidebar) extensions work well. On Android, its Pindroid, Instapaper, and HootSuite.

      Keep track of your shared links. Pinboard has a nice feature for this, where it can automatically tag any link you tweet into your bookmarks (using a non-customizeable-but-still-ok "from twitter" tag). It can do the same for Instapaper.

      Some Examples

      A few common use-case examples...

      To keep up with what specific people I'm interested in are up to, I put them in a "peeps" Twitter List, and Follow those I'm really interested in.

      To get the latest tech news headlines throughout the day, I follow a number of key sources and have Growls firing all day. If I see something I'm interested in reading later, I'll use Instapaper to save it. I have in a "technews-general" Twitter List for those times when I want something more to surf.

      To give myself a good list of stuff to read in a few different personal-interest areas, I put a bunch of niche sources into various Twitter Lists but don't follow them. I use my reader to check in when I've got time and am interested in checking out some content (with a tablet in bed is a good example). I'll use HootSuite for this.

      I get other non-Twitter longish-form content in my inbox, like LinkedIn digest emails, and have them labeled but left in my Inbox. I usually read them in the mornings.


      There are a couple of things I'm still not crazy about.

      I want a magazine.

      My feed-reading experience is still too much like reading a feed. I love Instapaper's "beautiful reading room", but I want that for my feeds, not just for content I send into it. I would use Flipboard if it had a desktop/web version, or Feedly if I could read Twitter lists with it (without maintaining RSS API URLs).

      I want recommendations and personalization.

      I'm keeping an eye on the social recommendations services, they're getting better all the time. I like Prismatic a lot for quality, if only I could get it in some sort of non-site-based channel. Flipboard, Zite, and others have decent options here as well, but I find them all too cumbersome still to include in my main workflow. I wish there were more players trying to provide the recommendations stream and not also the reader experience -- they are different things entirely and I'm not sure one app can really knock it out of the park on both.

    • Deploy script idea: auto on-call for code pushers

      I've been obsessing of late over deploy process stuff, as I'm working on a new stack that involves Heroku and a few other things that are somewhat new to me.  My friend Chris just mentioned off-hand he wished there were a way to auto on-call someone in the hour after they push code.  Yeah, that. So for the idea pile...hook into your deploy script:

      • get the committers in the push (via git or whatever you are using)
      • make sure you have users in your PagerDuty setup for every comitter
      • when the deploy happens, override the on-call schedule in PagerDuty via API to put that user at the top of the rotation for a set period of time

      I need to try this...


    • My Capital Offense (Lemons Racing!)

      I work with a cool and adventurous group of folks.  Though all notable, of relevance here are those that form the Clearspring Motor Club. Yes, it in fact consists of current employees, non-employees, and former employees, but alas, the unifying spirit lives on. Motorcycle rides in the VA countryside, karting, and yes, car racing. Last year, the team did several "crapcan" races, to varying levels of success but with a consistent level of enjoyment. I did one of those -- the DC-area 24 Hours of Lemons race known as Capitol Offense. Great name. We just did it again this past weekend, here's how it went.


      We run a '94 Volvo 940 wagon.  Its gutted, with a full custom roll cage and lots of other critical modifications, like having its rear roof removed.  Scoff though you may, it is super reliable, durable, and with significant lightening, tire, brake, and suspension work, became a formidable racer.  Last year, the car was decked out in Cobra Kai livery -- you know, the bad dojo, mercy is for the weak, etc.  Full costumes, flat black, cobra on the hood, it worked out well.


      (more pics of the Cobra Kai theme at the 2011 race here)

      But this year we took it back to the car's roots in the north of Europe and embraced another thing we love about Sweden, IKEA! Blue base with yellow strips, we had similarly nice costumes and even named our IKEA product: the Effinkürber.

      hood logo

      badges and pricetags

      Theme organized and car more or less prepped, we headed to Summit Point for the big event.

      Test & Tune

      First day at the track is basically a practice day and the tech inspection -- getting your car checked to ensure that it meets with the low standards of crapcan racing, and bribing judges.  We had Swedish meatballs, another brilliant idea of Charlie's. The judges loved them (surprisingly very few showed any reservations about eating gross-looking Ikea meatballs out of a crockpot plugged into the back of a stripped Volvo).


      Said meatballs earned us the coveted "bribed" stencil, which we gazed upon with pride. In addition to the four drivers -- Drew, Charlie, Stewart, and I -- we had assistance from Aditya, who for some odd reason decided to crew instead of drive for this, his first race.


      spring shortening

      With new brake pads, more flat black paint, and one turn of the rear suspension coils removed, we were ready for a day of racing.



      P.S. See that awesome allen wrench?  That's all Aditya.

      Race Day #1

      The first of a planned two race days was going great. With organized pit stops and long, fuel-timed stints, we made good time. Despite a car that is severely lacking in outright power and/or speed, we were up to 22nd place in a field of almost 130. Yes that field was far too large, and resulted in a lot of laps under yellow, but still, its racing. Drew and Stewart turned in some quick laps as usual. We were all doing pretty well, though, and looking to finish out the day strong.

      I was at the wheel for my second stint of the day, heading into the evening and planning to finish out that day's racing. Without a lot of speculation or explanation, let's just say that an abrupt braking move by a car in front, combined with a car passing me at the same time in my blind spot, combined with going for a pocket that was probably too small rather than just braking and getting out of the way, resulted in a fairly extravagant crackup. By me, into a wall. I will simply say that, yes, while careening toward this concrete barrier, I didn't think it would end as well as it did. Actually, what was going through my head was something like "great, I'm going to run right into that, hard (and there aren't even any tires.)" Here's the in-car video. We also have a driver-facing GoPro shot, but its missing the critical last 10 seconds or so right befor ethe crash -- any video format recovery experts out there, I'm all ears as I'd love to have that.

      ::WARNING slightly scary car crash footage ahead.


      front quarter

      The car was totally destroyed, and had to be scrapped at the track (extremely nice salvage company employees, by the way, at Remac Metals -- who knew). I am bruised thoroughly but really only have two badly sprained ankles, feet, and a broken big toe/foot bone -- not bad considering.  To this I credit the inherent durability of the Volvo frame design, the expertly-constructed and seemed-overbuilt-until-now rollcage that Charlie and Drew put together, and properly adjusted racing safety equipment in the car.

      This shot of the motor is my favorite.



      The team is already in the midst of a new car purchase -- another Volvo, though a bigger-engined 960 this time. Should be a great car. After not killing me, we trust Volvos. Also, this time we'll probably have a Hans setup and a more hard-core seat.  Oh, and I'll be on the crew.

      Parting thoughts:

      • enjoy life -- don't not do somewhat dangerous things just because they are somewhat dangerous
      • don't skimp on safety gear, get the best
      • go for safe, durable, and reliable over fast and light

      See you at the track,


    • Big day for team AddThis

      I'm psyched about our AddThis release this morning -- the team has been rocking it. Here's what gets me going.

      New Tools

      We released new social plugins to help websites increase traffic and engagement. Here's the official summary post.

      • Welcome bar: The Welcome bar looks like a simple message bar to display at the top of your site, to welcome visitors based on who they are and where they come from. It is that, but its also an insanely cool API that we'll be exposing more of as we go. Want to welcome visitors from Twitter with a specific prompt to follow you? Sure. But you can also do cool things like greet users arriving from mobile devices at a specific time of day, or specifically greet people coming from a blog that gave you some coverage. This is the kind of powerful personalization that increases your conversions, whatever your goals.
      • Trending content box: The Trending content box promotes your content and increases recirculation within your site, leveraging the AddThis platform's knowledge of what content can work best. It does simple things like most-shared pages, but also more sophisticated trending, and it'll be getting more-so by the day. The UI is flexible so, unlike a lot of other tools, you can have it completely blend into your site and not try to take over your sidebar UX. Its also available as a direct feed, and the widget itself has a full API.

      New Analytics

      I won't go too much into it here as its covered pretty well in the blog post, but all of the new tools are backed by the typically-great AddThis analytics. But we're also now able to tell you about text that users are copying out of pages. Want to see the terms that are resonating with users, and might be good candidates for some intra-site links, or even be part of your SEO plans? We can do that. So on top of measuring ALL sharing on your site, we're measuring all sorts of additional user engagement as well.  And yes, you can do this even without using AddThis for your site's sharing.

      New Website

      The most obvious piece of the release is probably that addthis.com looks completely different. Its a wonderfully clean and sophisticated visual presentation, and I'm extremely proud of the design team for pulling this one together. We even have some real-time geo data on the home page, no fakery.  Some of the team that worked on this aspect of things will probably be talking a lot more about it on their blogs -- check in with Jim, Foo, and Jeff.

      New Numbers

      How big is AddThis, and how many customers do we actually have? We've put out some new public numbers:

      • AddThis code is seen by 1.3B unique users each month
      • 14M domains use AddThis plugins
      • AddThis code is loaded 90B views each month

      We were big data before it was cool.

      New Positioning

      We've been known for a long time as a sharing tool. We're the biggest and the best, so great. But we're a lot more than that, and this is the first time we've been really out there talking about the extent of our platform and its capabilities, under one unified AddThis name. Surf the site, see all the different things we can bring to the table.  Pretty proud of the portfolio: big data + social infrastructure.

      So we've got a lot going on here today. And this on the heels of another announcement I'm proud of. I'll update with the press coverage.

      Oh, and we're hiring.

    • Suzuki DR650 Build

      My (now sold) 09 Suzuki DR650, converted to a Supermoto setup.

      side quarter

      front quarter

      front quarter

      mirror and controls


      exhaust mounted


      The mod list:

      • Exhaust and air upgrades
        • GSX-R 1000 exhaust (bought like new) with Keintech midpipe and hanger bracket
        • Modded airbox: Top cut out per common practice, Twin Air filter
        • TM40 pumper carb with alternate throttle cables
        • Billet throttle tube
        • Keintech carb-mounted choke knob replacing cabled unit
      • 17" Supermoto wheelset
        • speedo drive blockoff
        • Sun rims (black)
        • Rad hubs (black)
        • Contiforce SM tires
        • 120/70-17" front tire and a 150/70-17"
        • stock gearing, discs
        • Custom-made Powell Peralta skate-wheel axle sliders
      • Upgraded instrument cluster
        • Vapor Stealth gauge replaces stock speedo: tach, speedo/odo, temp sensor (at the plugs)
        • Custom aluminum bracket for dash, includes Vapor and aux Powerlet port
      • Upgraded core electrical and lighting
        • Barrier strip for cleaner fused battery connections
        • Powerlet socket for charging/gear on right side near master cyclinder
        • Main headlight relay kit from Eastern Beaver
        • Aux light wiring in-place (currently capped off inside headlight shroud)
        • LED tail light bulb (superbrightleds.com 1157-r45-t)
        • LED turns front and rear, with customleds.com programmable variable-pattern flasher
        • Upgraded headlight bulb
        • Easy-access headlight adjustment screws
      • Plastics and bodywork
        • side covers, headlight shroud, and rear fender are OEM white
        • front fender is Acerbis supermoto
        • machined aluminum knurled side cover bolts
        • Rear-end cleaned up with DRZ 250 low-profile tail light and Procycle license plate bracket / fender eliminator
      • Upgraded handlebar setup
        • Contour Carmichael bend bars
        • Upgraded sticky grips
        • Upgraded light switchgear to allow for off/low/hi headlight control
        • Cycra Pro-Bend hand guards
        • Handlebar bracket Ram balls for mounting GPS, etc
        • Double Take mirrors (based on Ram ball mounts)
      • Larger tank
        • Clarke tank with OEM stock petcock
        • Tusk aluminum vented cap
      • Other stuff:
        • Fork boots removed, replaced with Moose Fork Skins
        • Man Racks tie-down anchor points on front triples
        • Short kickstand (for SM wheelset)
        • Low-Profile rear rack
        • Procycle rear master cylinder guard
        • Hardware replaced with stainless steel socket heads throughout

      More info:

      • I have lots more pics on my Flickr feed
      • blow-by-blow of the build-up on my ADVRiders build thread
      • pics and comments on a supermotojunkie pics thread
      • pics and comments on a drriders thread
      • pics and comments on a thumpertalk thread
      • my bike is in the customer pics gallery on Procycle (they built my wheelset)
    • TracBoard: Managing sprints in Trac

      One of the random internal projects I've worked on at Clearspring is the tool we use for managing development sprints. Its called TracBoard, and its an interface on top of the open-source Trac ticket management system.

      I didn't have any interest in maintaining and using separate systems for defects and detail work as well as for overall task management. So while there are a number of lightweight sprint planning tools out there, and a number of detailed issue-management systems, getting both integrated, with an experience we like, was not in the cards. So I built a relatively simple front-end for Trac data that gives a more whiteboard-style view.

      Its not the most robust thing in the world (I built it as a quick internal tool), but hey, it works for us and if there's interest in it, we'll put some more energy into taking it forward for more general use. You can check it out on GitHub.

    • Triumph Bonneville T100 Cafe Build

      My (now sold) '09 Triumph Bonneville T100

      What's old is new again. Basically the classic Bonneville style but given a healthy dose of modern reliability, electric start, hell it even has EFI.

      side rear

      right side


      The current mods list:

      • Dominator Touring exhaust
      • Ceramic coated header pipes
      • Painted side covers
      • Painted gauge cups
      • Switched Powerlet socket behind headlight (GPS, etc.)
      • Always-on Powerlet socket on right side of carb (battery tender, heated gear, etc)
      • Triumph Thruxton gel seat
      • Triumph sixty8 seat cowl
      • Ikon shocks (in the longer Thruxton length)
      • Norman Hyde Ace Bars
      • CRG Hindsight mirrors
      • Joker Machine handlebar riser clamps
      • MAS engineering sprocket cover
      • MAS engineering chain guard
      • New Bonneville mirror hole plugs
      • Formotion clock and thermometer
      • New Bonneville seat bolts
      • New Bonneville idiot light LED bulb kit
      • Joker Machine steering stem nut drilled for RAM ball (for GPS, camera, etc)
      • Joker shock bolt machined cone washers
      • Joker ignition relocation bracket
      • LSL headlight brackets
      • D9 layflat sport instrument bracket
      • Joker gas cap
      • Passenger pegs removed, with New Bonneville passenger peg blockoffs
      • New Bonneville Bullet Marker Lights
      • New Bonneville Chrome Idle Adjust Cover
      • Joker Machine clutch cable dressup bracket
      • Full stainless engine cover bolts

      A few things I also have, but not currently on the bike:

      • Ikon progressive fork springs
      • MCE rear grab rail
      • MAS engineering fender
      • LED turn signals
      • New Bonneville oil temp gauge
      • Monza style gas cap
      • Norman Hyde steering damper
      • Norman Hyde rearset kit

      More pics are in my Flickr set, as well, here's a glimpse:

      Triumph Bonneville T100

      Happy modding (and rockering).

    • Yamaha Seca II Build

      My first bike, a (now sold) Seca

      This bike started as a 1992 Yamaha Seca II, a well-known 600cc all-arounder. I bought it for about $1100, in decent shape.

      Here's roughly the order of operations for the redo.  It took a couple of months of late evenings and early weekend mornings before the kids wake up:

      • Complete teardown, everything but pulling the motor apart; got rid of all plastics, fairing, clocks, signals, lights, everything
      • Trim a bunch of excess brackets and such off of the frame with a grinder, chop about 4 inches of useless metal off the tail
      • Sand, paint frame with Herculiner
      • Sand, prime, and paint swingarm with Duplicolor bedliner
      • Fabricate "body panels" out of Home Depot aluminum diamondplate (pretty thick, dunno exact); used a recip saw with a sheet metal blades, a bench grinder for some edges, a vice to do the bends, and a drill of course; primed and painted with Krylon; panels are mounted to the frame with U bolts and pipe clamps
      • Rear fender plastic trimmed up, license plate mounted to underside
      • Tank sanded down completely, primed and painted with Duplicolor; valve reseated; filler cap cleaned up
      • Cleaned up all motor surfaces, replaced all hoses
      • Complete carb clean (not very well probably)
      • Re-wrapped and cleaned up all wiring harnesses; re-routed all wiring near the motor
      • Mounted Aztc8 dual 7 inch lights with provided brackets but using generic clamps on fork tubes (better than the plastic ones provided with the lights)
      • Wired in new headlights, signals, including adjustable LED flasher relay that does fancy blink patterns, and tail (from a trailer)
      • Rebuilt switchgear, lubed up, painted plastic housings
      • CRG hindsight barend mirrors
      • New grips
      • New bar (Yamaha style)
      • Painted all triple clamp pieces, bar mounts, lever bosses, anything not black, with black caliper paint
      • Wired in GPS mount (easy, just a +12 and GND) and Acewell gauge cluster (not hard, just a lot more wiring)
      • Reupholstered seat at a local shop
      • Powdercoated fork lowers, rearsets, and wheels at local shop
      • Rebuilt forks with new oil and bushings, springs were ok
      • Remounted tires and replaced all bearings (incl in hub)
      • Put it all back together, more or less as it was supposed to go

      Here's what it looks like now:

      Yamaha Seca II


      • Exhaust (probably going to chop the cans in half and then repaint, to give it a bit more noise and a different look (less respectable))
      • Few motor fixups, including gasket replacement and hopefully an end to a few small but persistent oil leaks
      • Probably need to replace the steering head bearings, not the smoothest
      • Still need to do a brake refurb
    • Summary of OExchange blog coverage from the week

      OExchange (an open spec project I'm helping to drive) got a good bit of coverage in the tech blogosphere this week, starting with its formal announcement on Wednesday.  Here's a rundown so far.  Congrats to all involved!

      “As from a large heap of flowers many garlands and wreaths are made, so by a mortal in this life there is much good work to be done.”

      Open URL Sharing Protocol OExchange Gets Support From Google, Microsoft Et Al.

      digiday:DAILY - OExchange Protocol Standardizes Web Sharing Tools

      New Protocol Attempts to Standardize Sharing

      What the OExchange Protocol Means for Site Owners | WebProNews

      Google, Microsoft Back OExchange Social Sharing -- InformationWeek

      Social Web Blog: Introducing OExchange: An open protocol to simplify sharing

      OExchange: un protocolo para compartir enlaces, pensado para editores
      y servicios web – Internet – Noticias, última hora, vídeos y fotos de
      Internet en lainformacion.com

      Google, Microsoft & LinkedIn Unite for Open Web Sharing Protocol – OExchange

      A Short Tech Introduction to OExchange - things

      OpenWeb-Notizen: XAuth, OExchange, Firefox Sync, RDFa - notizBlog

      OExchange: Open URL sharing protocol endorsed by Google, Microsoft and more

      OExchange Tries to Make It Easier to Share on Web, Becomes Option to
      Facebook and Twitter

      What is OExchange? | Scott Scanlon Website

      OExchange Wants to Standardize Shared URLs - Technorati IT

      Can OExchange Become The Standard For Sharing?

      AddThis Blog » Blog Archive » The Future of Open Sharing: We Call It “The Web”

      OExchange creates an open sharing services protocol

    • The Future of Open Sharing: We Call it the Web

      I put up a post over on the AddThis blog laying out a view of the "open sharing" landscape.  Comments welcome.  

    • A Short Tech Introduction to OExchange

      OExchange is an open spec that I've been involved with for a while -- it provides a protocol framework for sharing URL-based content across the web.  You can get more general background on the site, but here's a quick rundown of its actual technical details.  You can also just jump right to the Quick Start Guide if you want to start supporting it. 

      OExchange deals with Sources, sites that have content to share, Targets, services that can accept this content (like social networks, translation services, whatever), and Users, people that use these things.  There are three general pieces to the protocol:

      1. Content exchange. How does the content actually get from the source to the target?

      In what is known as the Offer transaction, sources send targets content by directing the user to a browser-based endpoint that takes the URL as an argument.  For example:


      The target site ingests that content in some appropriate way, and messages the user when finished.  The source will have sent the browser there in its own tab.  This simple case is (intentionally) compatible with a huge majority of services deployed live on the web today, and is the minimum compliant OExchange transaction.  There are additional content parameters that the source may pass, and the target may accept, all on an optional basis.  These include things like Flash objects and image URLs.  The key concept is that there is ALWAYS a URL being shared as the primary entity, and that URL may also self-describe in a variety of extensible ways.  Take a look at the Offer specification for all the details on the call. 

      2. Service discovery. How do you figure out how a target works, or even that one exists?  How do you integrate with targets you don't know about beforehand?

      A target should specify its details, including the location of its Offer URL endpoint, in an XRD document that resides somewhere on the host.  This is just an XML document that uses a set of specific tags, and looks like this:

      <?xml version='1.0' encoding='UTF-8'?>
      <XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
    • rel="source-code": A Link Relation for Source Code Location

      How do you indicate, in a page, where the location of the sourcecode for the software in question is located?  How about something like this?

      <link rel="source-code" href="http://www.example.com/git/whatever" />

      How to Use It

      The relation, simply put, allows you to link to a resource that contains the source code related to the current resource.  The relation takes on two primary uses:

      • Included in a resource that is part of an application.  In this case, the link references the source code for that application.  For example, the link could be included in the header of every page of a web app, pointing to a public source repository for the project.  
      • Included in a resource that describes or is otherwise related to an application, but is not the application itself.  For example, a page on a project website may refer to the public source repository for the project.


      This came up as a side thread in a discussion recently between a few folks at IIW about WebFinger and general Link relation lookup.  All we wanted was an easy way to locate the source code for a demo.

      What do you think -- sensible?  Does anything close to this exist already?  It seems there is a wide variety of ways to get a relation into common use, ranging from formal RFCs to a shared wiki to just throwing it into the blogosphere.  But hey, I just wanted to float the idea.


    • s3sync and s3cmd

      I forgot how much I love these tools for S3. s3sync and s3cmd.
    • Mazdaspeed 3 Project

      [Part of my Mazdaspeed 3 project series -- see cars]

      A video of this car from AFKfest 2009 in Baltimore.

      And a bit of background in the NY Times.



      I have a 2008.5 Mazda MAZDASPEED 3 (affordable and speedy) with a growing list of modifications. A full custom Car PC/carputer setup, audio system, a bunch of appearance mods inside and out, and some engine mods next on the list.


      This is a summary of what I've done to the thing in general, check sub-pages for details on the electronics and software stuff.

      External Appearance Mods

      • Mazda RX-8 rims, black-painted, custom plexiglass center caps
      • Smoked side markers (custom)
      • Smoked headlight reflectors (custom, required baking open the lights)
      • Chrome-dipped front and rear signals
      • Parking light delete (yellow lights are off unless signaling)
      • 35% tint sides and back (including front sides)
      • Debadged, remaining Ms black-painted
      • Side molding delete
      • AutoExe stubby antenna
      • White license plate and side marker LEDs
      • JDM rain guards
      • Bosch frameless wipers
      • Rear wiper removed and plugged
      • SilverStar Ultra bulbs, low and high
      • 4000K yellow fogs
      • Black-painted calipers
      • Partplaza eyelids
      • Hella Supertone horns

      Some pics:

      Mazdaspeed 3

      Interior Mods

      • TWM short shifter
      • TWM aluminum shifter bushings
      • TWM aluminum shift knob (matte black)
      • Full interior white LEDs
      • Red Line Goods custom e-brake boot
      • Red Line Goods custom shift boot
      • Red Line Goods custom armrest cover
      • Lots of cutting and fabrication for the CarPC and audio setup
      • Mazda all-weather floor mats

      Here's a shot of most of the interior:

      Performance Mods

      Waiting for the warranty to lapse first, here's what's planned:

      • Cobb short-ram intake
      • Cobb turbo inlet
      • Cobb AccessPort ECU flasher
      • Some kind of coilover setup, not sure yet
      • A full catback exhaust replacement

      Computer and Audio System

      There's a lot of stuff going on here, including an audio and carputer setup.

      Take a look at my ELECTRONICS PAGE.


      Interior, exterior, PC, and install pictures are all in MY FLICKR STREAM.


      This kind of thing is easy once you find people to talk to about it with you. Specifically, many thanks to all of the good people over at:

      Also, though it can get a bit spammy, its nice to be able to find other installs on CarDomain.

    • Mazdaspeed 3 Project - Graphic and Audio Assets

      [Part of my Mazdaspeed 3 project series]

      The Basics

      In the course of working on my MAZDASPEED Car PC I came up with a few graphic and other assets that helped in all kinds of different skinning and customization tasks. Most of these are edited or chopped up from original open source stuff found online, some with pretty substantial edits, and some are original. Either way, if you're working on a Mazda setup, or any other setup with red/amber interior lighting, feel free to grab anything here. You can also check other pages for stuff specific to DashCommand, Centrafuse, or backgrounds for Alpine head units.

      Audio Clips

      A few silly audio clips that I use as system start/shutdown sounds, made by recording a text-to-speech voice. You know, for kids. "Save as" to grab the clips.

      Desktop Wallpapers

      Looking for something red/amber and abstract looking for the background on your car pc desktop? Here are a couple I use (if you can figure out who made these originally, let me know, as I can't find the right attribution other than to know that they were free)... Click for the full-res version and save-as to download.

      Mazda and MAZDASPEED Logo Assets

      It took me a while to find logo type images I liked, for Mazda as well as MAZDASPEED. I then spent a while tweaking them for different sizes, color schemes, and formats. I use these, for example, in my Centrafuse skin and on my Alpine head unit skin. Here are a few representative examples:

      You can download a bunch of different versions of these, in different colors and sizes:


      And because no system is complete without the uber-retro Monaco font:

    • Mazdaspeed 3 Project - Centrafuse

      [Part of my Mazdaspeed 3 project series]

      What is Centrafuse?

      Centrafuse is a so-called "front-end" application for Windows-based Car PC setups. Front-ends are designed to be the primary thing running on a system. Their interfaces are optimized for touchscreen use, and serve as the user interaction point for everything else you do with your PC while driving. Though you can certainly just launch (and switch between) applications as you normally would on a Windows system, using a front-end really does improve the look-and-feel as well as the experience, and makes the Car PC feel more like an OEM system.

      Some points about Centrafuse, specifically:

      • It presents a simple, highly-skinnable touch-screen-aware UI, with pages of buttons for various activities; its sort of like a universal remote in that sense
      • Media playback is at the core of the app, and worked into the UI at every turn (e.g. there are play/pause controls and track info on almost every screen)
      • It has a bunch of built-in modules of functionality on top of the media playback, most notably Navigation, but also web browsing, OBDII diagnostics, and more
      • It supports useful things like system startup and shutdown management, running as the Windows Shell, simple connect/disconnect functionality for networks
      • There are many plugins available, to extend functionality in arious ways (there's even a plugin-browser plugin)
      • Any windows application can be embedded into the Centrafuse UI, which gives a pretty nice-looking and seamless way to support basically whatever apps you want

      There are several other front-ends available, including the popular Road Runner (now RideRunner) and StreetDeck, as well as a host of lesser-known ones. While in my opinion they all have the same general capabilities, I prefer Centrafuse overall (even though its commercial and closed-source). It has the right balance in terms of functionality, customization capability, and design -- it doesn't do everything, but it does what I need it to well enough without a ton of setup work, has good-looking skins, and is pretty stable. I have plenty of feature requests but no huge gripes (well, beyond there being no built-in or plugin RSS reader).

      Skinning for my MAZDASPEED

      In my MAZDASPEED 3 I use the Aura BW Red skin (a very simply modified version of the default Aura) for daytime use, and the Gizmo Red skin for evening use, with Centrafuse set up to switch between them automatically. Gizmo Red I especially like, it looks great at night. I made a few simple tweaks, including changing the logos, to make both of them fit with my car, but nothing major (I used some Mazda-specific graphic assets for the logos and startup screen and such). The skin ends up looking like this (clickthrough for more):

      main 1

      I did have to make one small tweak to Gizmo Red's config file so that the media controls would NOT be visible when in fullscreen mode (which was messing with my embedded apps), but alas, not a big deal. Also, note that the colors in the image above are not perfect given some weird screenshotting issue; the color is in reality much more reddish.


      Though it probably isn't the best idea in terms of paying attention to the road, one of my favorite things about having a Car PC is the audio visualizations. Centrafuse actually uses Sonique's visualization system, so you can install other visualizations than what Centrafuse comes with. Some of them do take more CPU, but IMHO they are worth it if you like visualizations. There are a bunch here on XMPlay, and I've copied some locally since I'm not sure of the status of that site.

      Personal recommendations:

      • Rabbit Hole (highly recommended)
      • Phase (highly recommended)
      • Vorbix
      • Fractree
      • SpectraList

      Functional Setup: How I Use It

      Generally I use the Navigation, embedded DashCommand, and the media playback the most in regular use, with the occasional net-enabled activity (like a twitter client) just for fun or to demo to somebody. I've also found that there are a ton of plugins available that, frankly, just aren't that interesting at the end of the day. I'd rather keep things focused and pull out functionality that I don't actually use all the time or that doesn't make a cool demo. Some highlights of my setup:

      • Pulled out all plugins and skins not in use to speed load times
      • Set up the one-click connect/disconnect via WAN by using Windows to manage my WAN connection as a dialup connection rather than whatever crappy software came with the card
      • Using and happy with the built in Navigation app, though some have gone the iGuidance route I know
      • Disabled OBDII connectivity and instead embed DashCommand (see this page for more info)
      • I've embedded the Spaz Twitter client, FeedDemon RSS reader, Pidgin IM client, and Skype client, though frankly they work but are not really ideal
      • Using the CAM module for access to my webcam
      • Not running Centrafuse as Windows Shell -- I start it manually and then since my Car PC hibernates when powered off, all works great when coming back up
      • I did have problems with GPS connectivity from Centrafuse after hibernates until I started using XPort to manage my device connection
      • Skins and visualizations set up as described above

      Open Items

      I am still looking for a better way to get Twitter, general RSS feeds, IM and Skype integrated. Any ideas on a smoother integration, let me know. Haven't had a ton of luck with the CFSkype plugin, for example. I'm also keeping an eye open for the soon-to-arrive major upgrade to Centrafuse, though as I've said before there really isn't a ton of stuff I need it to do that its not already doing. I you give it a try, good luck! Note also that Centrafuse has a forum on their own site, as well as a section on MP3Car.com, so there's plenty of help available from other folks.

    • Mazdaspeed 3 Project - Custom Screens for Alpine Head Units

      [Part of my Mazdaspeed 3 project series]

      Custom Backgrounds for Alpine Head Units

      One cool thing about the Alpine head units, like the IDA-X100 I have, is that you can load custom backgrounds onto their full-color LCD displays. Its a small screen, but when its one of the few things in the dash its nice to have it match the color/logo scheme, especially when there's a Car PC involved.

      Alpine has a pretty mediocre web tool, i-Personalize, where you can download new backgrounds for your head unit. Once you've got an APN file (some kind of non-standard image and metadata encoding), you put it on the root of a USB mass storage device, plug it into the head unit, then select the custom background option via the head unit's interface. What's not immediately clear, though, is how to create your own APN files based on your own images. I came across this great tool, which does the basic conversion from image files of various formats to the APN container format, and then lets you download it (nice work, Josh). It works for at least this family of head unit, not sure about others.

      So again, the process goes like this:

      1. Make a PNG or JPG image in whatever image editor you want (the images get sized to 320 x 200 eventually)
      2. Use Riot's tool to create the proprietary APN file format out of your image
      3. Put the resulting APN file on the root of a USB drive
      4. Plug the USB drive into the head unit
      5. Start a custom background download from the head unit's setup screens (interface options)

      Mazda Interior-Specific Backgrounds

      I made a few backgrounds for Alpine units that loosely match the amber Mazda interior, based off of some of the logo and background assets I've used for general skinning and customization of my own car pc setup. Feel free to grab the images, or the APN files themselves.

      Black on red

      Black on red, glow
        PNG source image
        APN background file (save link as...)
        PNG source image
        APN background file (save link as...)

      Have Fun

      Hopefully this helps, good luck with your customization efforts. Let me know how it goes or if you discover anything else useful.

    • Mazdaspeed 3 Project - Electronics

      [Part of my Mazdaspeed 3 project series]

      I have a large and growing set of electronics -- audio and computer/carputer/Car PC gear -- in my car. Here's some information about it (its a Mazda MAZDASPEED3).

      Car PC/Carputer Overview

      dashcommand fighter main 1
      vis 2 center console / gauges
      trunk deconstructed
      trunk deconstructed
      deconstructed trunk

      The highlights:

      • A fully custom setup, with most components in the hatch/trunk area and a touchscreen and control panel custom fabricated into the dash
      • Based on Windows XP (for the sheer availability of software), augmented with custom code, skins, and configurations for the various apps I'm running), running on an Atom-based micro-ATX motherboard
      • Tons of input capability; audio in, mics, webcam, OBDII hookup to the car, GPS, Space Navigator, arcade buttons, lots of free USB ports in convenient areas
      • WiFi and 3G WAN connectivity for web browsing, Twitter clients, IM clients, VoIP, video chat, whatever
      • maps and turn-by-turn navigation
      • virtual gauges hooked directly to the car's ECU and OBDII bus
      • all the media stuff -- video, audio, tons of file formats, visualizations, etc.
      • A bash shell!
      • voice recognition/command
      • Direct-connected iPod/iPhone to both the head unit and the PC
      • games, with a controller
      • glovebox-stored wireless keyboard with built-in trackpad, as well as hard buttons in the center console, makes input easier when the touchscreen doesn't cut it
      • system hibernates when car is turned off, comes up when its turned on, etc.
      • can also be used for whatever other thing you want to use Windows for

      About the install

      Here's how everything is laid out:

      • Main PC is mounted on a false floor in the trunk, along with the stereo amp, all the wiring, and the subwoofer box. I did it this way so I would have easy access and more room for stuff in the trunk, without having to take apart the dashboard every time I want to do something to the PC.
      • There is a USB hub inside the dash, which supports the GPS receiver, the OBDII unit, a USB sound card, a webcam, and some external input ports; generally all the USB stuff needed toward the front of the car is buried in the dashboard. This is all wired back to the trunk area with a single 10' USB cable.
      • There's also a USB hub in the hatch area, for the rest of the peripherals (including network adapters), as well as one in the center console
      • The touchscreen is custom-mounted inside a double-din dash replacement piece that is available for the JDM version of the car (not in the US). The VGA and USB lines run along the center hump.
      • A custom control panel is mounted in the center console, replacing a pair of cup holders, with a number of different input controls and an auxiliary LCD output
      • The DC-DC power supplies (one in the trunk, one in the center console) power not only the PC but also the USB hubs, touchscreen, and LCD via 5 and 12V outputs; tons of wiring for this
      • Steering wheel controls for the audio, controlling the Alpine head unit
      • Lots of external inputs, USB, audio line, and iPhone jacks in the center storage console, expansion points in the trunk
      • I use the AUX on my head unit for the PC audio, so I still have the standard FM capability/ease-of-use of a regular in-car OEM system (see the audio system

      Computer Equipment

      • Liliput 629GL-70NP 7" touchscreen
      • Intel D945GCLF2 Atom micro-atx low-power motherboard
      • M2-ATX DC-DC power supply
      • Seagate 320GB 5400 RPM SATA 3.0 laptop drive
      • 2G DDR2 SDRAM
      • BU-353 GPS receiver
      • Several small d-link 7-port USB hubs
      • A shitload of 16 gauge wire, red and black
      • LinkSys USB Wireless N adapter
      • Adesso SlimTouch Wireless keyboard with integrated touchpad
      • Logitech game controller
      • Elmscan 5 USB OBDII transceiver
      • Verizon 3G USB modem
      • SWI-JACK steering wheel control module
      • Space Navigator input device
      • Arcade buttons with a MINI-PAC key encoder
      • SparkFun 16x2 LCD
      • Plus all the stuff in the audio system

      Audio System

      As far as audio-only goes, I have a pretty-good aftermarket audio system, sounds great but didn't cost a ton:

      • JL 10w3v3 subwoofer
      • JL G4500 500W 4-ch amplifier
      • CDT CL-61A 6.5" component speaker sand tweeters for the front
      • Alpine IDA-X100 head unit (MP3/USB/iPod/AUX-only)
      • KnuKonceptz power cabling (4 and 8 ga)and battery fuse block
      • Rockford Fosgate power distribution in trunk
      • StreetWires Zero Noise RCA interconnects, 1 4 channel cable and 1 2 channel cable
      • Alpine IDA-X100 digital media head unit

      The system gives me plenty of input options, except for a CD, by design, and I use it primarily with my Car PC on the AUX line (hard-wired from a USB sound card in the dash). The amp and power distribution is in the hatch, more details as part of my install overview.

      Fabricated Stuff

      In the top part of the dash, I took out the factory head unit and replaced it with a double-din-capable dash piece I got from a guy in Japan. I took apart the Liliput touchscreen and built it into the back of the double-din piece, which meant I was able to use the bezel that came with the screen, once cut up a little bit. It ended up coming out fairly well, as you can see in the pics.

      I put the new Alpine head-unit in an area in the center console previously housing a lighter, coin tray, and other useless stuff, which required fabrication of a mount for the unit, and a plexiglass trim piece to frame it in. I also put a few turn-on switches here (one for the head unit and one for the PC). All of this involved some serious cutting up of the center console. I used plexiglass specifically to give it the gloss black look to match my piano black factory trim.

      I made a panel to fit the opening in which a pair of cup holders sat originally, and replaced it with the Space Navigator, a pair of arcade buttons wired to a Mini-PAC key encoder, and an LCD screen. This bolts into the plastic and ends up sitting nicely in the center console down where it is easily accessible, just to the rear of the shift knob.

      In the hatch area, I took out the floor and the spare tire and built a custom sub box and a false floor. The top of the sub box sits higher than the false floor, such that with the equipment mounted on the floor, the trim panel that forms a false floor on top of that (with 3-4 inches between) sits flush with the top of the sub. This gives an overall flat floor in the hatch, with a recessed sub cone and a recessed tray of sorts for all of the equipment. This gives me an area in which to mount the current as well as any future electronics in the trunk, in a nice and stable place with plenty of room for reconfiguration, new equipment, whatever. I intentionally set it up this way rather than cutting trim panels to fit specific equipment, as I am sure things will change with the install over time.

      trunk, open

      To connect all of this, I had the car completely apart and installed all of the wiring that way. And, through it all, I only ended up scuffing a few spots, nothing noticeable compared to the damage its possible to do when taking your car apart over and over again.



      This thing is Windows XP. I debated this for a long time, having wanted to use MacOS or some kind of Linux flavor. In the end, though, there just isn't as much software available for the other platforms. Its nice to be able to write code and all, but unless you want to write a ton of stuff and make the coding a majority-time hobby as well, go with Windows (I already have enough coding side projects). The front-ends for Windows are definitely nicer.

      The main software in my system is:

      • Windows XP, the OS
      • A custom app I call car-d (open-sourced on github)
      • Centrafuse, the front-end to just about everything. More on my Centrafuse setup and customizations is on this page.
      • DashCommand, for virtual gauges via OBDII connectivity to the car. More on my DashCommand setup and customizations is on this page.
      • XPort, for managing virtual COM port connectivity across system hibernations
      • SyncToy (sort of like rsync for Windows), for getting media moved around between the house and the car

      Software Configuration & Setup

      Getting the PC running the way I wanted it took more time than I thought it would, and I didn't even do a whole heck of a lot. Notable things:

      • lots of time spent customizing basic windows setup to deal with having multiple network interfaces, doing auto-login (via TweakXP) so I can support Remote Desktop Connection, disabling as many Services as possible, and generally making sure things were clean and simple
      • built two completely custom dashboards for DashCommand, to give me the custom gauges you see in various pictures and screenshots (read more/download)
      • I tweaked a bunch of image files to give me good logo assets I could use in different places -- MAZDASPEED as well as standard Mazda "Flying M" logo. (read more/download)
      • some various other graphics, sounds, fonts, what have you, to give it a little more of an OEM look (also here)
      • Centrafuse on its own required a pretty decent amount of setup, both skin edits as well as the application config (read more/download)
      • Using XPort for GPS serial port management was key to avoiding hibernation problems with my USB/serial devices
      • I also by the way skinned my Alpine head unit, which was fun (read more/download)

      The main things I may still do are modify the boot/hibernate/etc screens via some customization tool, and modify the BIOS logo. I haven't done this so far because I still have back-burner plans ot power the LCD on via a relay that would be triggered by FusionBrain on Windows startup, so you'd never see anything prior to the shell regardless.

      So again, feel free to download any of the stuff mentioned here and on other pages

      Lessons Learned

      Main things I learned and need to remember, if they're helpful:

      • I was nervous about my strategy of putting USB hubs in different areas (a star wiring thing), and even though it did result in a lot of cabling, I definitely don't have any problems at all now in terms of extensibility options -- I pretty much have a spare port of various kinds in whatever part of the car I could possibly want.
      • I would definitely recommend taking th einterior out of the car, even the floor. It makes all the wiring so much easier and really only takes a few hours to get the car apart.
      • Don't both with dynamat craziness; I have some placed on flexible spots, and the doors are important, but I think the folks that coat the entire frame are wasting time and money.
      • Though they came in and out pretty easy, all the plastic pieces inside the car take up a lot of room once they are out of the car; be careful not to scratch or otherwise mess them up when they are floating around your garage.
      • Breaking shit gets expensive (I broke a touchscreen trying to get its custom mount set up, by applying too much force on it). Be really careful doing fab when there are expensive electronics involved; even when its late and you are putzing around the garage when you really should be in bed but you just want to get that one last thing done...
      • Label all wires, and use barrier strips and plugs that can disconnect and connect easily; it takes up some room but it makes everything much easier and more organized
      • There is a decent amount of debate on this, but I do think having a headunit separate from the PC is the right way to go. You're not always in the mood to have the PC boot up when you are going to the store for less than a minute. The getinandgo you get with a standard head unit is hard to beat

      Next Steps

      As soon as things started looking normal again, I started realizing how much else I wanted to do. Things on the plate:

      • remote starter to get the PC powered
      • PC wired into the ignition (via fusionbrain or make controller) so I can start the car from it (note that with the above that means I can remote start the PC and then IM the car to start it ;-))
      • some refinishing work on the trunk
      • Maybe I'll try and do something about bluetooth phone audio at some point

      Work-in-progress stuff is in my mp3car.com work-thread.


      There are a bunch more pics of the exterior, interior, mid-install, and screenshots of the PC in MY FLICKR STREAM.

    • Mazdaspeed 3 Project - DashCommand

      [Part of my Mazdaspeed 3 project series]

      What is DashCommand?

      DashCommand is a commercial, real-time OBDII application for Windows. Its designed for virtual instruments on touchscreens and in full-screen mode; basically for in-car gauge applications. I use it as part of my Car PC for my digital gauges (with my PC hooked into the car via a USB OBDII reader).

      dashcommand fighter dashcommand factory

      DashCommand, itself a cheap app, is part of a product suite that also includes some higher-end packages for in-shop and tuning use. I picked it, and still use it, because:

      • it is designed explicitly for fullscreen/touchscreen use, so does handy things like launch right into fullscreen/menuless mode on startup
      • its connectivity is pretty good (it always manages to find the OBDII device properly)
      • the actual dashboard display is totally customizable with a custom drawing/layout app (the DashXL Editor)
      • despite the slightly un-sexy dashboards you usually see on Palmer's site and in their examples, you can make the dashboards look really really good with a bit of work

      There are frankly also some less awesome things about it:

      • the editor is fairly clunky; you can do awesome things with it, but the toolset isn't really up to par with what you might be used to from mainstream layout apps like Omnigraffle or Visio (e.g., moving groups of objects, lining things up, etc., is almost all done manually, and gets very tedious)
      • the support isn't consistent (and there's been a new version "real soon now" for ages)
      • I've had, and still have, a few latency problems with a large number of measurements, and the tool doesn't offer a way to tweak priorities/frequency
      • there are features of DashXL that are only available in the more expensive scanning products from Palmer, not in DashCommand (to the point above)
      • if DashXL was an actual published and supported text-based file format, some of the limitations of the visual editor wouldn't be such a big deal

      All of that said, I still think its pretty much the best option for building highly custom virtual dashboards for in-car Windows Car PC systems. I had toyed with the idea of building a daemon (likely in Java) to read OBDII parameters and present them on the network, then building a Flash or Flex front-end to display those (since there are a lot of nice Flash gauges out on the web). In the end, though, I wanted something that wouldn't require so much time and energy to get working. So with that, I'd recommend DashCommand to others with the same constraints.

      My Customizations

      My MAZDASPEED 3 has all-amber interior/dash lighting, so my whole Car PC setup matches that. That involved skinning DashCommand along with everything else. I made both a DashCommand "skin", which controls the main buttons and options in the non-dashboard part of the interface, as well as two different "dashboards" (the things with the actual gauges). Both are pretty simple once you get the hang of them, though the customization can be overly tedious with the provided editor, as noted above.

      The skin asset is just a ZIP archive of individual DashXL files (.dxl), one for each of the main UI elements. I just pulled apart the example skins to see how that worked. Drop the ZIP in your skins directory and then load it up through the app's settings interface.

      For the Dashboards, here's my "Mazda Factory" dashboard, which I made to look mostly harmonious with the actual factory gauges in my car:

      dashcommand factory

      And the DashXL file...

      And lastly, this is what I actually drive around with most of the time -- its not the most readable but I like it aesthetically. I was going for a simple aircraft-style style display, with the linear-scrolling speedometer on the left:

      dashcommand fighter

      And the DashXL file...note that you should have the Monaco font on your system for this to look like the screenshot above:

      Feel free to download and customize, any feedback's welcome of course. I am still debugging these a bit, so there may certainly be issues here and there. Let me know in the comments if you do try to use these and how it goes.

      Embedding in Centrafuse

      Since I use Centrafuse for my front-end, getting my virtual gauges integrated was a simple manner of adding DashCommand as an external application, launching in fullscreen mode, and setting the app itself to launch in fullscreen, hidden-mouse mode (DashCommand has command-line flags available for this). The only moderately non-trivial aspect of the whole thing was designing my dashboards to have an aspect ratio that maps to the dimensions of my screen with Centrafuse title bars and nav controls. In other words, though DashCommand can scale the UI to the appropriate rectangle when its loaded, I set my dashboards to have fixed aspect ratios to ensure that my gauge display always looks optimal when running inside Centrafuse's frame.

    • On Facebook, Widgets, Apps, and APIs

      There's been no shortage of discussion on Facebook of late -- Facebook as the new Google, Facebook vs MySpace, etc. etc. -- and their overall strategy deserves some discussion, to be sure. But you've read all of that by now. As with any great period of hype and furious activity, there are also by now some misconceptions about what you can actually do with Facebook from a practical perspective. I obviously have no idea what I am talking about, but here are some observations after writing some Facebook code (for Cruxy) for a little while now, and why I think all those Facebook apps in your sidebar aren't what is going to matter.

      • Embedded Facebook applications still run externally. This seems to get missed quite a bit by folks that have not actually looked at the FB technology offering. Whether in an iframe or via FBML, Facebook "applications" are still essentially executing in an external website -- when you are interacting with a 3rd-party application via your Facebook account, you're interacting with an external site (integrated at the presentation layer). This is a very efficient way for Facebook to balance the extensibility they want to get for their platform, with a relatively (actually, very) simple technical solution. Of course, it does mean the user experience of Facebook is beholden to some extent to the external application developer -- if your app goes down, then the user's Facebook account is impacted. This is the right gamble to make, kudos to them for doing it -- the carriers could learn a thing or two about balancing control and openness from this.
      • The Canvas concept is cool, and FBML is not "their own language". I would attribute that quote except for the fact that I have seen it so many times I wouldn't know where to start. The concept of the Canvas is essentially that Facebook can render your own application pages within the context of the rest of their UI, by virtue of the Facebook platform sucking in your presentation markup, combining it with the rest of the Facebook presentation, then sending it down to the browser. They do the iframe thing too, but the canvas goes a step beyond in that you can use additional markup tags, referred to as Facebook Markup Language, to make your application share more of the look-and-feel of the rest of Facebook. It's obvious why they did this -- to allow application developers to build a look and feel that closely resembles the rest of the Facebook experience. Custom tags are nothing new on any large web project, it's amazing that this has gotten so much negative attention for standards non-compliance. Aside from the presentation-vs-data argument, which you could make to a degree, reverse engineering some CSS to get your app to look like something else is a tried-and-true tactic, and what Facebook has done here is offer something much more compelling and convenient for the developers. Custom tags are a form of modular ui development, and they work, and if they hadn't done this we'd all be hacking up our styles to try to match the Facebook controls anyway.
      • The Facebok Profile elements are not truly dynamic. When you have your application add something to a user's Facebook profile, you're basically just injecting a piece of static markup into their profile. This makes a ton of sense for performance reasons (you'd hate to see the core "view some user's profile" operation get bogged down with external server access). It does, however, get interesting when you're trying to put some dynamic content in there. No timers, etc., the only way I've found to really do this is to have your own server responsible for initiating the periodic updates on its own, which means your own server has to deal with persistent user authentication sessions and such. Look at all the Facebook apps for example that don't update your status until you actually go and interact with the app, and give it a chance to run something to update your profile markup, or the abundance of "refresh now" buttons on third-party profile elements. Anyway, I point this out to draw the distinction that Facebook profile elements are not really dynamic application components a-la some other widget/nugget/snippet systems, and this is very much intentional.
      • Development lifecycle management services are weak. Down the road, it'll be nice to see the way you manage applications, associate them with developers, etc., improve. This is the one area where I think the model really falls down right now. You need to be able to easily share API access keys and application ownership (from the developer standpoint) between users, make the app available to multiple users for testing without opening it publicly, put it through test/release cycles, and all the rest. This will get better, it's one of 80/20 things right now.
      • The Facebook API, separate from the embedded "Facebook Application" experience, is powerful. A set of web services (REST) offering the ability to manage friend data, interrogate it, etc. , whether or not you're actually building an application design to be experienced through the context of your Facebook account. And this leads us to our conclusion.

      In general, the power of the Facebook platform is NOT in the Facebook-resident applications, but in the non-Facebook applications that use Facebook services. There has been some discussion on whether Facebook apps are widgets, whether they offer better extensibility than MySpace (here, here, and here are some good examples), and related. There are some good thoughts here. Personally, though, I think the compelling point isn't that Facebook is a new platform into which you can inject dynamic application content (widgets or otherwise). It is that Facebook offers a platform API that you can use to build social networking functions into your own, separate, application. This is clear, but this is not what everyone is talking about. Even though Facebook is the cat's pajamas right now, and yes it's a cool destination that a lot of people go to, over-time it'd be hard to imagine a single destination where everyone in the known universe would go to use all kinds of disparate applications integrated only though their set of "friends". Social networks, over time, are inherently too interested-oriented for this to be a viable model. The brilliance in this overall move by Facebook is not as a super-extensible, friend-to-all-developers application container, it is in its ability to, through the APIs and not just through hosted canvasses, offer a core social-networking library to web developers. How relationships are managed, navigated, etc., is value Facebook can add. Being a one-stop shop for all of your application needs is interesting at the moment, but not going to be the long-term success of Facebook.

    • Last.fm and the Big Boxification of the Web

      For anyone that doesn't agree with my general premise that big media and big tech will turn web 2.0 into American Idol style boredom, CBS acquiring last.fm is arguably a good example. I am a long-time user of last.fm, and a huge fan of the AudioScrobbler stuff underneath it. It was great before it was a social network. I was a user when the blogosphere was down on them. The CBS news is great for the last.fm team (congrats), but as a general sign of the consolidation trend...hmm. There's nothing inherently wrong with CBS buying them, but for anyone that believes in the culture of innovation, startups, and the true long tail, this situation in which increasingly the only exit for web startups is acquisition by one of 15 or 20 big players is nothing to be happy about. I loved FeedBurner, I loved Keyhole, I loved last.fm. It's the "big-boxification" of the web, my friends.

    • American Idol, the Enterprise, and Web 3.0

      Warning: This (long) post contains rampant speculation, unfounded arguments, and poorly structured reasoning.

      Web 3.0 seems to have entered the lexicon of the blogosphere, though it remains undefined. Well, a lot of folks define it as the semantic web. This is cool from a CS perspective, but the 2.0 nomenclature wasn't fundamentally a technology designation, so it doesn't really seem right that 3.0 should be. The semantic web should really be web 2.0 in that sense, but anyway. I'm a little more interested in the web's evolution through usage and business models. So in that sense, what's 3.0? I play the part of a psyched-about-the-future geek all day, so I'll make the devil's advocate argument for the sake of contributing to the discussion -- whether I believe it or not is sort of a separate question (I don't). It's good to argue against yourself once in a while, right?

      The premise is what I'll call the American Idolization of the web: The next phase of the web experience will look more traditional , with a standard blend of "mainstream" and "alternative" content powered by a federation of a small number of large players, than any of us geeks want to admit.

      The Groundwork

      Taking an industry/social-trend view, rather than a technology-centric view (semantically-aware, user-mashupable, etc), of the web's next phase, we're closer than we might think to the point of being able to use Tim O'Reilly's "this is qualitatively different; let's call it web 3.0" rule. Whatever we call it, the point at which the current 2.0 version of web hits critical mass with the mainstream is a big enough deal that we should call it out, it's already happening, and it may not be as cool as we all thought.

      So where have we been?

      • Web 1.0 was about connectivity, access, publication, and commerce. People got connected, content and commerce showed up, and while there were some mistakes, we saw some value in it.
      • Web 2.0 is about technical, societal, and commercial experimentation -- community networking and user-generated content as business opportunities, widespread technical shifts to service-orientation, decoupling, and the web as a rich platform for applications and services.
      • Web 3.0 will not be about user-driven aggregation of services, social networking platforms, or end users remixing application services -- it will be about the transparent consumption of these services as provided by more traditional-looking aggregators, and will follow a long tail model.

      We'll focus on these as (one guy's version of) practical reality in terms of how the industry and the technology have developed -- we could talk all day about the original intent of TBL and others, whether "web 2.0" was a useful name, whether what we call web 2.0 now was simply what was really intended from the start, and whether there were social networks 15 years ago. Here is a good jumping off point to a relevant set of discussions with O'Reilly and Tim Berners Lee, two smart guys.

      Back to the premise. We all love to talk about AJAX, tagging and folksonomies, microformats, user-generated content, personalization, widgets, social networks (or social networking platforms), and the rest. I love Clay Shirky and David Weinberger and their views on structuring information, and the debate over the semantic web, strongly vs loosely defined taxonomies, RDF, etc. I love Marc Canter's Digital Lifestyle Aggregator concept, which presents a view of the class of services that will tie all our crap together and help us make sense of it. I love the distributed computing paradigm that simple widgets and start pages will evolve to. I love this stuff because I'm a geek. But I love to talk about it in the same way that those crazy Spanish cooks love to talk about foams and airs and their influence on world gastronomy. We're the Dean (or Obama?) supporters, and its great to be there, and great stuff happens, but Bush still won. It's easy to forget about the poor old mass-market user, and what's reasonable or unreasonable to expect that they will do (and pay for), in the midst of this debate.

      I'll use my lovely wife as a use-case. She has a highly-successful corporate career, a huge professional as well as social network (offline), and couldn't give a damn about del.icio.us or the Facebook platform. She's an email/calendaring user, an e-commerce shopper, an online bill-payer, even watches stuff on YouTube -- she's like a lot of "regular people" in her use of the web. She likes geni.com not because it's a social network play for the family or because it has a cool Ajax UI, but because it's an easy way to create a family tree. What does she really care about "web 2.0"? She doesn't, and neither do most people. And by most people I mean most people in a certain set of socio-economic bands, which still represent a minority of the population -- we're not even talking about the rest of the world.

      Web 1.0 (and prior) kicked off a massive cultural shift -- it really was, and is, something revolutionary. All of a sudden people began to communicate with one another in totally new ways, began to take advantage of daily-life convenience services never before thought possible (my parents tell me that balancing a checkbook on Sunday evening used to be a major event), gained access to new amounts of information about themselves, their health, their communities, and their governments. Parts of the world began to open up with new definitions of access, and average folks got their feet wet with the concepts and some of the basic tools (e.g. an email client, a browser).

      This has been a continuing journey over the last several years -- more and more applications, better and better interfaces, delivered via greater and greater penetration of broadband and PC access. Personalization in e-commerce is just one of many great incremental technical achievements we've seen large groups of "regular" users benefit from. Developers and technologists have been feeling their ways around the workings of these things -- learning how to take a service-oriented view of the world, how to build richer user interfaces in a browser, the virtues of content syndication, and how to collaborate with one another more and more effectively. Similarly, users have been experimenting. It will be clear in the final analysis, if its not already, that the emergence of the blogosphere, of big-S-big-N Social Networks, and of user-generated content in general over the last few years were seminal events, but they were just very introductory baby steps. Web 2.0 is really about slight technical paradigm shifts and and online social experimentation, and makes sense in the long run only as a necessary interim step to what comes next. Again, not in terms of what the formal definitions may be, but in terms of mass-market adoption, end user behaviors, and business applications (valley VCs don't count as representatives of modern global business).

      The Next Wave

      What's next, then, what we might call web 3.0, is when the participants collectively hit their stride with what are now more accurately seen as anomalous events, and when the real money starts coming in. Take a look at the distribution of information across the web today, how even though there are millions and millions of nodes on the web, it's a small number that get most of the traffic, hold most of the data, and provide most of the widely used applications. Though there are millions of blogs you can read to get news and opinion, users don't read millions of blogs, they read a few (not including mine) or, more likely, they read a summary view that is aggregated by someone else, and someone that looks a lot more like mainstream media (my hero Dave Winer has some other thoughts on MSM in web 3.0 here). They listen to NPR, maybe watch FOX. They don't surf all the Technorati results, they go to a few aggregate locations. They don't use feed readers or start pages to assemble their own custom dashboard of applications and content from across the web. They watch video online, but they still sit down to watch American Idol as-its-broadcast and spend more time with a set-top box than with a PC hooked up to the TV. Again, keep in mind we're speaking about general population here, not us technophiles.

      Web 3.0 is where we'll see the convergence of MSM outlets, main-stream portal providers, and big enterprises sucking in all the cool stuff that came on in the scene in web 2.0 -- that's where the vast majority of users will experience media, get and share opinion, accomplish the tasks of life and work, and be entertained. There will always be a huge current of leading-edge users that embrace the full spectrum of services available to them, in real-time, and remix them to their needs, but in the grand scheme of things this is a tiny minority of users. It isn't until the user numbers on these things increase that these concepts get really interesting. People consume Digg stories indirectly because the interns at CNN read Digg and then feed them up for the main coverage, people participate on message boards of major TV networks to talk about their favorite character's hairstyle, and enterprise users start to see more Wikis and blogs deployed internally.

      And with respect to social networks, we are talking about big numbers already. But we're also talking about hugely transient models. We've seen a few networks now come and go. We've seen that there is a high degree of tolerance for, and interest in, people having individual presences on the web, that they can interact with and connect to others and to their interests. We've also seen that while that's interesting, there's not a whole lot that's new in the grand scheme of things -- it's just a tech-powered societal update to hanging out at the mall, going to a tupperware party, whatever. It's not the same level of transformation that took place when the web first began to see widespread use in the 90s. The real transformation there will be about the long-tail networks. Some of the longest-lived communities on the web today still exist as collections of people that email one another, or maybe even hang out on some crappy old bulletin board implementation.

      So wrapping up this devil's advocate view of what mass-media Web 3.0 will be, some trends we'll see:

      • Consolidation in the software space will continue, with the big players getting bigger and even more boring.
      • Mass-market media outlets will dominate in the entertainment segments -- not exclusively as content providers, though mainstream content production will continue to dominate over Mentos & Diet Coke from a revenue perspective, but also as centers of influence for the communities of independent content. That is, the user-generated-content sphere will be a huge influencer of mainstream media, but mainstream media will still be the gateway, and the filter, for most of the distribution.
      • Advertising will naturally continue to become more ubiquitous, and following the transition to product-placement in the mainstream content segment, in-place advertising will become increasingly the only way for innovative software solutions to see wide adoption. Sponsored content integrated into RIAs, not just sidebars and on search results.
      • Enterprises will start to turn their substantial infrastructure dollars to next-generation "collaboration" tools in the web 2.0 style, resulting in enterprise web applications becoming more and more usable, and enterprises will incorporate external web services more and more into their architectures. However, they won't do this without the usual gang of integrators in tow, which may undermine the move to open source in the enterprise. In other words, if enterprises think they already have what software and systems they need, and can focus on decreasing cost and improving maintainability and performance of such systems, they look to open source alternatives to their current solutions. However, as they think they identify new software needs, they will resort to their SOP and start paying integrators for "web 2.0 stuff". This is analogous to what is already happening in the enterprise in regard to SOA investments. Just when it seems the enterprise has what it needs and can start incrementally improving their effectiveness, they identify something new to spend money on.
      • Users won't be remixing the web Pipes-style, they will be using applications provided for them by a common cadre of "trusted" sources. The technorati fringe will continue to steam ahead, and we'll continue to see incredible innovation, but again, it will increasingly be delivered to the mass market by aggregators rather than directly to end users. It is within these aggregator applications and services where the remixing will occur, and it will be upstream of the average end user. This will be a new era for the portal -- the solution will look far different from an old-style portal in capability, in terms of personalization, end-user configurability, and startpage-like behavior. But it will be largely familiar as it relates to how power is centralized in the industry with a few key, large-scale players that mediate the majority of the experience.   Providers of great DLA-type solutions will be the new portals, and widgets will evolve into solutions for content delivery into these one-stop DLA solutions.  
      • Lastly, crops of new innovators will turn their attention to green and other new opportunity spaces, as the pure web per-se becomes commoditized by the dominance of big players, traditional media, and the entrance of the enterprise.  There will continue to be a strong push on the web itself, but we will see other industry segments taking back some of the enthusiasm, and capital, that has recently been poured into web 2.0.

      So What Now?

      Nothing -- remember we're just playing devil's advocate here, and I'll probably post the opposite side of these arguments at some point soon ;-). If you read all this you get a gold star.

      There's plenty on the web about web 3.0, the semantic web, and other people's opinions on where it's all going. Here are a few posts I personally find interesting:

    • Real Platforms come to Web 2.0

      There's lots of interesting activity in the platform-play world these days, and all the recent Facebook stuff is a good excuse to talk about it.  Platform strategies have been written about extensively over the years, but it seems like a new gen of web 2.0-style players have gotten the platform bug.  While most web 2.0 strategies include an API component, by platform we mean the extension of a core API/dev offering to include the larger ecosystem of applications, tools, developers, and partners around it.  Here are a few interesting examples (my opinion) of some of the recent platform strategies coming out of what we might loosely call Web 2.0:

      • Social networking platforms (Facebook).  This is all over the blogosphere, so let's just say it's interesting that they are taking this kind of aggressive position to grow their business as, arguably, a hedge against the obselescence that eventually plagues most pure social network plays.  Acknowledging that a one-stop social network is not a long-term strategy, better to be a provider of social network infrastructure that the more niche networks can leverage as the usage model moves past the "hang with your friends" paradigm and heads down the long tail of community interests.  This is a bold, and impressive, move for Facebook.
      • API management & mediation platforms (Mashery).  The offering here is really interesting -- as a developer who's always focused on APIs, the concept is compelling. I'd argue however that the most effective positioning for this kind of an offering at this stage of the industry is in regards to the enterprise.  Enterprises spend a lot of money on software, use big integrators, and deploy lots of fat enterprise packages -- huge (usually bloated) J2EE infrastructures, for example.  Though there's a separate argument around all of that, there is a gap in the market represented by an enterprise's need to efficiently leverage existing web services from the public web, but not being able to stomach the SLAs that are typically associated with them.  Enterprises can't afford critical business processes to go down when a web 2.0 API they are using goes down, no matter how cool it is.  If an enterprise had a way to leverage the functionality of all of the great API services that are out there, but could could get enterprise-class SLAs (security and data protection, uptime, supportability, version management, etc.) around them, they would pay for it.  No amount of internal ESB infrastructure, and no amount of external mashup tools like Pipes or CSF-powered NetworkedMashups, will do this on their own.  This is somewhat analogous to the enterprise open source movement -- how companies like Cygnus have moved through the world and exemplified, for a different class of services anyway, by things like IBM's Enterprise Linux strategies.  Take the best stuff from the community and repurpose (wrap) it for the enterprise, and get paid handsomly for that added value. Many others have argued for this as well, and I wonder how this does or doesn't factor into Mashery's (and others) view of the world.
      • Web application infrastructure services (Amazon).  Not much new to say here, other than that personally I'm an admirer of the fact that they made a risky and forward-looking move in this regard -- always exciting to see entrenched players placing bets.  Are the services perfect?  No, but lots of folks are being productive with them.  It will be interesting to see how Amazon's earnings in this space unfold and how the strategy evolves -- lots of folks are looking to them to prove out whether this kind of a model can be profitable in the long-term, even when it's based on pre-existing core assets. 
      • Widget syndication platforms (Clearspring).  Clearspring is still under the radar a bit with their upcoming community offering, so the full strategy is not totally revealed, but there is a tremendous opportunity in managing the deployment and traceability (which seems to be a primary focus of Clearspring's) of dynamic, micro-application content as delivered into all kinds of container environments.  Widgets is almost a limiting word -- the general opportunity space isn't just web-based widgets but includes dynamic content modules within virtual environments (SL, WoW, etc.), on in-dash automotive systems, on mobile device homescreens, and many more outlets.  While there are players at some level in each of these domains, their unification for the purposes of multi-channel micro-application/content distribution and multi-pronged online campaigns will be the killer.  There is a lot to be gained by whomever can figure this out and come to the table with the compelling toolset and support ecosystem as we move beyond MP3 players and photo viewers, and this seems to be at least some of what Clearspring is up to. 
      • Carriers as mobile internet application platforms.  I've written about some of this before.  I'm a big believer in the potential for carriers to move in a platform direction, rather than remaining so focused on controlling the handset UE and the associated revenue streams.  There are compelling services carriers can offer to the next generation of mobile web applications (and we're not just talking about better J2ME APIs and HTTP headers), if they would just get off the pot and start doing some of this stuff.  Parlay/X, SDP, IMS and the rest have got them churning on their own weight rather than focusing on the principles of real platform ecosystems.  There are platform services that developers will pay to access, and we could figure out exactly how much if someone would do some experimentation and give it a shot in an incremental way.  Full openness may not be the right strategy, but without market testing some initial examples the carriers have no choice but to keep doing what they're doing.  "More of the same" is never a good move for a pressured segment.  I've always thought that the MVNO space is where we might see more of this type of thing, and who knows, maybe this is what Google has in mind
      • The micro platform as Trojan Horse.  In addition to the big plays, there are any number of what I call micro-platforms -- extremely focused solutions to extremely focused, and sometimes transient, problems.  A favorite example is addthis.com.  While things like this may not be the drivers of the transformation of the industry, they add substantial value and, without a lot of overhead, build for these companies a real ecosystem.  The smart ones then leverage this ecosystem -- not only users and developers but press, investors, advertisers, etc -- for expanded solutions over time.  It's easy to forget, but search as trojan horse, whether it was intended that way at the time, was more or less how Google all got started.  Single-purpose internal platform, single-purpose external platform, multi-purpose external platform, FOG.

      Parting thoughts: two great "classic" pieces on platform strategy for your reading pleasure:

    • Where's the Telco in Web 2.0?

      DISCLAIMER: There has been quite a bit said already about the challenges that convergence (of voice/data, wireless/wired, vendors, user-experiences, device types, etc.) brings to the telco industry, and how various players are, or are not, adapting to these challenges. The smart folks at Unstrung, Gartner, GigaOm, Telco 2.0 and others have thought, and written, long and deeply about these issues. I speak with some purely personal observations.

      I'm an Interweb guy that worked for a big-4 US carrier for a few years, and lived to tell about it. I was one of the "Internet people" there, amongst a majority of "telco people". Back on the other side, and with a keen appreciation for how closely these two domains are tracking toward one another, I am struck again by the vastness of the schism between them. More significantly, though every carrier gives lip service to convergence, IMS, and the need for change, and everyone sees the writing on the wall, the opportunity for a name player in either space to take small but effective steps to rectify telco-land and Techcrunch-land remains on the table.

      • The industries speak past one another in a very fundamental way. Telcos are busy hemming and hawing about the future of telcos and professing change, Internet players are busy thinking they don't need telcos (or at least not any big ones), and meanwhile, the world moves on and consumers wait longer and longer for all those compelling mobile products and services (Twitter doesn't count). Lots of web 2.0 (etc.) people talk about the dumb pipe, and lots of telco people talk about how you can never do anything more than watch crappy FLV video without real QoS. The real kicker, though, is that with some notable individual exceptions, these people don't talk, really. The world of the TechCrunch-inspired web-tech blogosphere and the world of telco lunchroom conversation could not be more different. The situation is markedly more positive in Europe, with some carriers doing interesting things and a lot more dialog, but still a disconnect.
      • Carriers need to let their smart people go nuts. Contrary to what seems to be popular belief on the Interwebs, there are in fact lots of smart people at carriers. As a technical guy, some of the most amazing engineers I've met in my career are to this day sitting in the bowels of these huge behemoths. The problem is just that -- they are sitting in the bowels. This certainly isn't a challenge unique to telcos, but it is acute given the incredible pressure on the carriers to innovate or get left in the dust. Many of these companies, and their vendor ecosystem, need to take drastic steps internally to identify the hot talent and get it to the helm, at all layers. Nothing worse than smart people stuck maintaining legacy systems, spending months fretting over the same vendor architecture diagrams, or trying to make the case for change to deaf ears.
      • Incremental deployment models as risk-avoidance strategies. One of the greatest moments in my software career was when I personally realized the strength of really incremental development models (with the help of all the folks who figured it out in the first place). Without getting into specific processes, the fundamental shift from waterfall, big-bang approaches to more incremental agile methods drastically changed my outlook, my productivity, and my understanding of the market and customer landscape. I've never seen a carrier, or a vendor at the carrier's direction, do this. Certainly it's not appropriate or possible for some of what a carrier builds, but for the domains in which the carriers are competing with internet software companies, this is absolutely critical. Instead, the real-world tendency is to front-load a new product or service project with so much size and cost that the best possible outcome is a substantially de-featured final result. Why bother? This is precisely why carriers cannot take risks at the level that many Internet software companies can -- they wind the stack so far up that they lose the ability to adapt to change, customer feedback, testing results, and the rest. This, more than anything else, is death when it comes to adoptable user-level products and services.
      • There are legitimate, compelling services that carriers can provide to web-land. Quality of Service, location, presence, user profiling, billing mediation, and more. Data as well as communications services. These are the services the carriers talk up, but their arguments are valid. These are all services that will contribute to the viability of a whole class of new mobile applications. Look at the archetypal mashup, Google Maps and XXX -- where the heck is real-time location data in all of these? Why do all the major video distribution sites still show users lame "buffering...10%, 20%" status bars? However...
      • It will take carriers changing their perspective on developer platforms to really see these services adopted. I am a big fan of what Amazon has done with S3 and EC2 -- they've taken an aggressive (and arguably risky) stance to become a platform for a new wave of web (and more) applications. Carriers do have things to be concerned about -- the protection of the network from rogue applications, the need to maintain the integrity of emergency services and legendary (sort of) reliability standards. However, these needs don't preclude a new level of openness in these platforms -- smart engineers and architects are certainly capable of putting in place the necessary mechanisms to securely onboard developers and their applications, protect from attacks, shut off miscreant applications, etc. The root cause here isn't technical, it's a confused perception of the level of ownership required. You can make money offering infrastructure services to the application layer, and the potential increases with the value of the service.
      • Carriers should be trying to court and enable, not out-innovate, the Internet startups. A carrier-built social network? Some crappy home-built UI for a calendaring application? A beat-down version of a popular internet service finally "allowed" to get on the phone? Carriers should engage the ir communities through aggressive developer outreach and evangelism campaigns (like Amazon's, what Scoble used to do, or even some brightspots like Cingular's IMS dev contest), and you'll quickly see what creative people can do with a few feeds, a few web services, and an on-boarding and support mechanism to get to them easily. Want to use the Flickr API? You're up in 5. Ever tried getting hooked up to a carrier API?

      At the end of the day, if this is all going to get better, and if we're really going to see the next wave of mobile apps, we need to open the dialog. Why is there such a dearth of carrier discussion at all of the web 2.0 conferences (or, better, let's have some unconferences)? Why is it only a handful of bloggers that hit these topics regularly? (here's a great one) Why does the majority of the discussion on the future of mobile services from the blogosphere focus so much on the advertising model and on spectrum positions? There are any number of other topics we should be discussing at the community level, in the same way we discuss the virtues of this or that way to distribute music online, or who got how much VC money.

      Others have started the dialog, here's to keeping it rolling!

    • Taking Yer Ball and Going Home

      I've thinking a lot lately about this whole situation with the valley, the boom, TechCrunch, and my experience being in a startup somewhat outside of that insider world (though being quite fulfilled thank you). And, Lo, Mike Arrington finally breaks down and does it himself. This is really priceless. Ok, couple quick thoughts:

      • If you're not part of the solution, then you're part of the problem. No use boo-hooing. Rather than complain, let's try and take a position of influence and put it toward building a brighter version of what this period of activity could look like. Why not feature other regional communities with interesting things going on (I recently had a great experience at Tech Cocktail, for example)? Why not stop leading with venture news?
      • Chickens come home to roost. It is satisfying on some level, I admit, to see this coming from one of the chief architects (willingly or not) of this whole environment of late.
      • This is not a new idea. Kudos to the folks who have been forever and consistently trying to keep everyone honest. The perennially observant and erudite Dave Winer, who I'd put in that camp, has something to say as well.

      This one bit of insider drama is much welcomed by those of us outside the fishbowl. Good show to Mike for at least saying how he feels, now let's see what he can do by channeling it in a positive direction -- he has the power, for now anyway.

    subscribe via RSS