Saturday, October 27, 2007

NCAA Football

Colorado has finally found the nadir of their despair and is now on the uptick. Top 10 by '09.

Wednesday, October 17, 2007

A blog only a software shop could love

Here's perhaps the most basic goal in designing software: nailing down ALL the requirements. If this is done right the first time, writing the SW is cake. In fact, it could probably be automated. That's the concept behind, for example UML.

Here's the rub: no person or organization ever thinks of (or has time to document) ALL the requirements. We're just not prescient and omniscient enough.

Here's one stab at a solution: creating long lists of "Use Cases" and then break these down into individual business requirements, then translate these into functional specifications, which are re-translated into technical specs, which are then coded.

Problem is, use cases are the business equivalent of a Roomba, wandering randomly around the room with no aim or accountability.

Wednesday, October 10, 2007

What Will Tomorrow Bring: Car In-dash Computers

I almost feel foolish making this prediction, since it seems so obvious. It has even been "prototyped" (read: proto-hyped) for years. Hell, they even put an iMac into a VeeDub on Pimp My Ride 2 years ago.

Nevertheless... by the time you sell your current car, you might find a REAL, fully-functioning PC instead of a CD player just above your A/C controls. There will be growing pains; mark my words some hapless car company will try to build something proprietary and locked-down. They will fail, and the industry will learn how it's gotta be. OR they can just read on .... It's gotta:

  • Be Open
  • Be price-competitive. They charge $1500 for a nav system; there's no reason they can't install a whole laptop for that price.
  • Be Powerful. Well, as powerful as your average laptop today. 1.xxGhz and 50GB should do.
  • Have a proven and extensible OS: either Linux, Windows, MacOS, or Symbian.
  • Be able to use multiple interface modalities, available transparently to all applications in all contexts. Users should be able to switch at will among the modalities:
    • Voice enabled
    • Voice-to-text interpreter
    • Text-to-voice reader
    • Touch screen
    • Joystick slash trackball slash navigation nob
    • Hide-away wireless keyboard
    • PC remote control (think firefly)
  • Have webcams built in (interior-facing for communications apps, exterior facing to record the driver's-eye-view, rear-facing for backing up)
  • Have (or connect to the vehicle's) front and rear bumper proximity sensors
  • Have GPS built-in
  • Have multiple connection modalities built-in. It should be able to switch among them automatically and transparently to the user:
    • Wi-Fi
    • Bluetooth
    • GRPS and EDGE, capable of using any of the major US providers
  • Also have the ability to act as a wireless access point for those in the car with their own laptops
  • Have USB connection points (used to connect iPods, cameras, etc ... and also to charge cellphones, etc)
  • Have a solid-state hard drive
  • Be aware of who is driving the car. Specifically. Some manufacturers do this via weight on the seat, others via a chip in the key (where everyone has their own key). An RF chip-embedded card in everyone's wallet would fit the bill, as would voice or fingerprint recognition. Alternatively, it could ID your cell phone using Bluetooth.
  • Be able to support multiple applications simultaneously on multiple screens, networked throughout the vehicle. If this causes difficulty, the alternative can be to run multiple, low-spec computers in the back seat, networked to a more powerful "server" up front.

Users would be able to install any of the standard applications available for the chosen OS. Minimally, they'd want:

  • Web Browser
  • Email (web mail, Notes, Outlook, etc)
  • Music Player (iTunes, internet radio, podcasts, satellite radio, etc)
  • Games
  • Video Player (DVD, mpeg, streaming internet video, Sirius satellite TV)

Above and beyond that, based on this platform, there will be a new market for apps. The obvious killers would be:

  • Google Navigation: [[ See earlier blog post ]]
  • CarLog: Accessing the vehicle's internal computer to present:
      • Stats (hours and miles driven, average mpg, average mph, location history, etc). These stats would be available for each driver as well as the car, the trip, past trips, etc. To allay Big Brother fears, each user should be able to reset, erase or disable the collection of his own data.
      • Performance mode: 0-60 timer, current hp output (all with history)
      • Maintenance Management: Alerting the user when scheduled maintenance is due. To the extent possible, this should be adjusted based on self-awareness sensors which would look at the current condition of the oil (using specific weight measurements or translucency), tires (using tread-depth sensors), air conditioning (using chemical composition measurement), battery (using resiliency and peak charge measurement), range (using gas levels), etc.
      • As an option, users could volunteer to put this data in a "black box" which would disable their ability to clear data and would regularly upload it (securely) to an independent, trusted site. They could then selectively choose to release the data (as people do with medical records). For example, an insurance company might offer lower rates based on your good driving record as recorded by the app (miles driven, frequency of tailgating (speed-calibrated), % of time speeding, % of time parking in a high risk area, % of time driving below 32 deg, % of time driving at night). One might even use this in a court case. Naturally, protection would have to be placed on the data to prevent hacking ... and also subpoena-ing. An arguement could be made that the 5th Ammendment might apply to disclosure of this info.
  • GreaseMonkey CarDoc: This would access the car's internal computer to read in any error codes and offer a "help" function which presents:
      • A full description of the error as well as common causes
      • A step-by-step diagnosis and resolution path. There should be pictures and animations.
      • Phone numbers presented for the manufacturer's care line (OnStar, etc) and the closest dealer (using the GPS, a specific POI db, as well as Bluetooth capabilities). Additionally, it could upload exact location and relevant error info to the dealer to expedite the call.
  • Interact!: A communication tool which gives a single user interface for the user's existing e-Mail, Fax, SMS, IM, and Voicemail. Based on the current context (user in car or away, car moving or not, interaction is urgent or low-pri, etc), the application would manage these "interactions" differently. For example, when an email comes in, the app would follow a decision tree to determine what to do:
        • Is the car moving?
        • What is the communication modality? Phone? Email? SMS?
        • Is it for the driver or someone else? If it's the driver, the notification needs to be audible ... and/or delayed
        • Is someone on the phone currently? If so, the notification might be a chime or just delayed
        • Is the email urgent or from a high-priority sender? If yes, perhaps the system asks if it should read the message aloud immediately rather than just playing a tone
        • etc.
      • This, of course, requires:
        • User-awareness (can select from a list of people in the car based on above-mentioned ID strategy)
        • DEEP Bluetooth integration
        • Blackberry integration
        • Corporate and POP3/IMAP email integration
        • Its own address book and calendar, but also integration with major existing applications (Outlook, etc)
      • The ability to access all functions and user data via the car's computer as well as any internet browser ... and perhaps even any Symbian or Blackberry device
      • Interaction Tracker: tracking and displaying statistics on interactions with each contact (date and time of each call, email, etc)
      • The ability for users to indicate how frequently they'd like to interact with any given contact. The system would have a countdown timer which would alert the user if they've neglected the person for too long. Every time an interaction takes place, the timer is reset.
      • TopicTagger: automatic tagging of each interaction with topical keywords. These would be derived, for example, from the subject line of emails, or from the most commonly used word in emails/text messages/phone calls (yes, it would be able to recognize spoken words). the user could, of course, add their own tags via any of the input modalities.
      • Calendar-based alerts. The lead time (time between alert and appointment/event) would be automatically determined based on the user's physical distance from the stated meeting site.
      • Public Safety Emergency Alerts (specific either to the current location or current people in the vehicle)
  • CrazyDriver: using the forward- and rearward-facing cams, would give the driver the ability to hit a button which saves the last minute of video in a package for either later viewing or transmission to law enforcement.. Ideally, it would have the ability to recognize license plate numbers automatically and tag videos
  • NewsReader: Either as a component of the media player, or separately, a tool which downloads news feeds (RSS, etc) and auto-selects those most likely to interest the driver and passengers. Then reads the article aloud, giving the driver the ability to vocally skip, tag for later revew, and rate the article
  • InstaFeedback: This app would use GPS to realize when users park the car near a store/restaurant/hotel/etc. When they return to the car (computer is turned back on), they are prompted with a short-list of nearby locations to rate. In as little as 2 "clicks", they pick the place, and enter a rating (0-5 stars). If the want, they can enter comments (voice or text) as well.
  • RadarNet: Controversial, but inevitable ... the ability to link to the car's radar/laser detector to identify speed traps. Then, the ability to network with other cars ahead and behind to propigate the news about where smokeys are.
  • Blog-on-the-go: Ability to post voice/text blogs. Ability to combine with the vehicle's cams and saved pix. Text, of course, should be create-able via keyboard or voice recognition.
  • Doberman: Uses cams to take a snapshot of whoever starts the car. These snapshots are stored for a few weeks and regularly uploaded to a web site. On one hand, this could be used to watch one's kids. On the other, it could be used to positively ID a thief or carjacker. Using the outward-pointed cams and a proximity or contact detector, vandals might also be spotted.

    In terms of marketing, it seems natural that there are two initial adopters: high-end luxury sedan segment (think Maybach and 7-series) and technophile twentysomething dorky trendy segment (V-dub, Prius, Scion, etc). From there, it should quickly propigate down the price point spectrum to fam-wagons (Suburbans, minivans). From there, market permeation can flow based on demand, freeing the developers create enhanced software (backed up by enhanced HW) for several niche markets, such as:

    • Long-Haul Trucking / Commercial Vehicles
      • Fleet Manager giving home office info about the fleet (location, rig stats, drive time, etc)
      • Enhacements to navigation looking for truck stops and also determining the best route based on tolls, road grade (to minimize fuel consumption), weather, and a list of pickups/drop offs
      • Clearinghouse of possible jobs
      • Enhancements to GreaseMonkey for big rigs
    • Bus/Van/Shuttle ... perhaps even Airlines
      • Fleet Manager
      • Bluetooth auto-pay functionality. Each passenger's fare would be computed once they exit the vehicle based on their wait (compared to average), the distance travelled, the popularity of their route (if they pick their suburban house as the drop-off, this would be more expensive than a local park-n-ride even if the distances were similar). This could be adjusted based on the number of passengers in the current vehicle who pick the same drop-off, encouraging people to group themselves prior to boarding based on destination area.
      • Interactive real-time info on waiting passengers' locations
      • Ability for passengers to input their desitnation once onboard via preset preferences, terminals, voice, or SMS. Based on this, and the locations of waiting passengers, traffic, etc, the correct route would be contstantly re-calculated and each person's wait time could be indicated. An enhancement to this would be to track each passenger's wait time (both before pickup and en-route) and constantly recompute route to minimize the average wait time for all passengers. The current (or recent average) wait times could be indicated online and at the bus stops so people could decide which mode of transport will be most efficient for them. They could choose to wait for the bus, pick a different bus company, take a taxi, walk to the subway, etc.
      • Feedback to dispatch, who would have heatmaps, stats, etc available. Possibility of automating dispatch entirely
      • Enhancements to entertainment systems to provide each passenger with the ability to access the internet, games, and entertainment. An enhancement would be to have automatica Bluetooth links between each passenger's cell phone and their computer terminal so they could access a public-transport-specific version of Interact!
    • Military
      • Much lower-cost Aegis connection (and higher functionality, with more feedback to central)
      • Real-time battle info
      • Contact lists / chain-of-command charts
      • Live translation
    • Car rental
      • Fleet Manager adjusted specifically for rental car needs
      • Sightseeing manager enhancements
      • Ability to create and publish vacation logs (voice, typing, video, pictures) on the go
      • Ability to adjust rental contract online (change dropoff, extend contract, change insurance, etc) without having to spend interminable minutes on the phone waiting for a customer service rep. If a small thermal printer were added to the car, it could actually produce its own receipts, saving rental companies from the need to have an employee check-in each car upon return.
    • Emergency Servies / Law Enforcement
      • Enhanced Emergency dispatch
      • Online medical info including individuals' medical records
      • Online criminal info for police
      • Online building plans for fire dept

    Monday, October 08, 2007

    C'mon Google - Navigate!

    I'm desperately hoping for Google to either come out with their own car navigation device or to simply supply the software for an existing gizmo.

    The GoogleNavigation I dream of would look like this:

    • Google Earth, integrated of course with GPS. Their existing real-time traffic, directions, satellite view, POI layering would be in full force.
    • The full system should be acessible via the contraption or a web browser, including all my routes, favorites, and user data
    • Traffic would be enhanced to be predictive (based, of course on a time-weighted historical profile)
    • Users would be able to access (via built-in broadband connection or Bluetooth link) additional POI databases from third-parties. Hopefully, the likes of Magellan would step up to leverage their existing data assets. I'd also want to see something from Menupages, Yelp, Michelin, and Fodors, presenting not just names and numbers, but pictures, menus, and rating/reviews.
    • The interface would have to be simplified and adapted to touch/voice/text input. Users should be able to toggle between them at will.
    • Also, the system would collect my feedback and use this in subsequent routes. For example, if there's a road I hate, I should be able, with two or three steps max, to tell the system to avoid it in the future.
    • Taking the feedback app further - if I search for Korean restaurants and eventually choose one for it to navigate me to, when I get back in the car, the screen should be preset with a feedback option. With one touch, I should be able to give the place a rating (1-10). With a second touch, I should be able to input verbal or text comments. Similarly, if I simply park near a store/restaurant/etc and then return to the car, the system should prompt me with a short-list of nearby places I might have visited. With one touch I should be able to select where I went. With a second touch, I would enter a rating ... If this data could be uploaded back to said third-party POI databases, think of the follow-on possibilities in terms of a new levels of accuracy in feedback and advertizing.
    • The system would have a Pricefinder function. I would indicate a specific good (gas, t-bone steak, North Face backpack, etc). It would find the lowest price for a the good within X
      miles of my current position. This might be weighted by availability and breadth of selection. Perhaps store rating as well. A variation on this would be a constantly-recomputing gas price calculator, which would always determine the best option for filling up after considering prices in the area, as well as gas consumption to get to each station. Sometimes it would make sense to stop at a nearby cheapie place, even if I still have half a tank.
    • The POI search function would be enhanced to include an "along my current route" option. The idea is that, if I'm headed from Manhattan to Boston and want a burger, I'd rather drive 15 miles down the road to a Drive-Thru just off the highway than drive 5 miles perpendicular to my main route on local roads to a small village's Main Street cafe. Ditto gas.
    • The routing option would be expanded to include "use scenic/historic routes"
    • The routing component would enable users to VERY quickly create multiple-waypoint trips. In fact, it would facilitate the planning of trips by considering routing, waypoints, traffic, etc to suggest the best route, as well as "must see" waypoints nearby.
      • Scenario: I'm at home in, say, Berkley, CA. I have a 10:00 meeting in the financial district of SF, a customer to see in Burlingame, a store to visit in Nob Hill, a friend to hang with in Santa Cruz, a fiance to pick up in Oakland, and then a golf weekend in Carmel.
      • Behavior: I input these waypoints and constraints. The system analyzes various routing options for timing and efficiency. It considers wait time as well as traffic levels. It also looks at miles travelled, comparing with existing gas, to determine where I'll be when I need gas (and automatically building those stops into the route). It further looks at restaurants along the route (my favorites first, then the highly rated ones). If it finds that I'll be passing by one around mealtime, it would suggest a stop and recompute the route. It might even suggest a re-organization of my itenerary to take advantage of a particularly great place. The system presents routing options ranked in descending order of recommendation.

    Monday, October 01, 2007

    Quotes: Pseudo-Battles

    "If people could only agree to skip the real battles and move straight on to the reenactments, all our troubles as a species would be over. Just imagine: Hamas and Fatah meeting annually in Gaza to fire blanks at each other. Sunni and Shiite Iraqis gathering in Baghdad to blow up pedal cars.",0,4734855.column

    China. Sheesh. UN. Double sheesh.

    Let's see by a show of hands how many people are surprised that the UN was unable to do anything effective in response to the unabashedly criminal behavior or Burma/Myanmar's rulers last week.

    Don't all jump up at once ....

    Hmm ... well, how about this: by a show of hands, how many people are surprised that China blocked the security council vote to tighten sanctions on said junta?

    (sound of crickets)

    If Japan and China want to be world-class countries, with world-class power, they need to start stepping up and taking their share of responsibility for international issues. And they should not use this as an excuse to form satellites and spheres of influence. That's yesterday's tactic.