Home | Random | Downloads | About | Hikes | WebCam | Search | Sitemap | Email | Feed

Corporate Goddesses

Corporate Goddesses

Share:

Sierra Nevada

Sierra Nevada

Share:

Risky

Risky

The World Economic Forum has published a risk/reward matrix for 12 key "emerging" technologies. You'd think this would be pretty good, because:

"The report’s conclusions on risk are heavily based on its Global Risks Perception Survey, which gathers the opinions of the World Economic Forum’s multi-stakeholder communities of leaders from business, government, academia and nongovernmental and international organizations. Members of the Institute of Risk Management are also consulted."

For some reason IoT devices are the second highest risk. Ahead of biotechnology (we're all dead from an engineered virus), nanomaterials (we're all dead because we're now gray goo) and space technologies (we're all dead because we provoked a violent alien civilization).

The least benefit comes from Geoengineering. Because with Trump in power I'm sure we're going to solve Global Warming via emission cuts. There is apparently more benefit in Virtual Reality and even more in 3D Printing.

(Image from World Economic Forum)

Share:

Happy Storm

Happy Storm

Is it just me or is the weather radar smiling at San Francisco right now?

Share:

3D DIY

3D DIY

This stupidly placed light switch has been niggling around near the bottom of my list for nearly three years. It's probably sat there with its wires exposed for closer to thirteen, since the kitchen was remodeled by the previous owners.

I could have hunted down a plate and tried to saw a bit off I guess but we got a 3D printer for Christmas and I finally fixed it:

3D DIY

This was easier than I thought once I discovered that this sort of switch is a Decora Duplex. I grabbed this model from user KHF on 3D Warehouse (thanks!), chopped the edge off in FlashPrint, two failed prints (glue, then hairspray, then figuring out the temperature was wrong) and only slightly sliced open my thumb removing the supports. Welcome to the future!

Share:

Train of Lights

Train of Lights

Train of Lights on the Niles Canyon Railway.

Share:

Tam Pan

Tam Pan

Time-lapse panning over the San Francisco bay area from the Gardner Lookout at the east peak of Mount Tamalpais.

Share:

Rio Vista Bridge

Rio Vista Bridge

Share:

Pitcher Plant

Pitcher Plant

Share:

Unidentified Butterfly

Unidentified Butterfly

Could be anything...

Share:

ASCII Sunset

ASCII Sunset

A sunset timelapse rendered as ASCII art. Music from JukeDeck.

Share:

Expert

Expert

I haven't checked Klout for a long time - while I was away they've decided I'm a expert in Indian politics. Explains a lot...

Share:

El Capitan

El Capitan

El Capitan recently.

Share:

Banana Slug

Banana Slug

Share:

Sunrise

Sunrise

Share:

Trees at Lands End

Trees at Lands End

Rain falling through trees at Lands End, San Francisco.

Share:

Multi-plane Camera

Share:

News: We Need to Raise Taxes for Shareholders and Cut Them for Companies

Share:

West Portal Halloween

West Portal Halloween

Share:

News: New York Times responds to Donald Trump's lawsuit threat: bring it on

Share:

AMP!

One advantage of a home grown blogging platform - up and running with AMP in a couple of hours!

Share:

Sealion

Sealion!

Share:

Butterfly at California Academy of Sciences

Butterfly at California Academy of Sciences

Share:

Bay Bridge Timelapse

Bay Bridge Timelapse

4K time lapse of the San Francisco side of the Bay Bridge. Shot on a gloomy Friday morning with an Alpine Radian and Sony RX100 IV. Processed with Adobe Lightroom and LR Timelapse.

(It's the first project I've completed after upgrading my upgrade-proof laptop with a 1TB SDD, some cat fur and about a half pint of blood. I'm amazed it even boots. There is a tenth circle of hell for laptop designers who decide to hide the hard drive module under two tiny ribbon cables secured with ribbon cable eating tape. And thanks for the fake screws.)

Music from Jukedeck.

Share:

Golden Gate Bridge from Marshall's Beach

Share:

News: Brexit: British clubs could suffer in transfer window, warns sports expert

Brexit: British clubs could suffer in transfer window, warns sports expert

If only this had been made clear before the vote. FFS.

Share:

West Portal Timelapse of Timelapses

West Portal Timelapse of Timelapses

This is the third and strangest video in my series of timelapses from West Portal, San Francisco.

Each frame is a single-frame timelapse where each vertical line is from a different time of day. 4,320 photos go into each frame over 24 hours. The video covers 366 days (from June 21, 2015 to June 20, 2016 - summer solstice to summer solstice) so 1,581,120 photos total. For the video I also generated a ten frame fade between each SFTL shot to try and make the whole thing a little more comprehensible.

Photos were captured using a Google Apps Script that I wrote to pull frames from a Nest Cam / DropCam to Google Drive and then downloaded and processed around once a week for the past year.

Music is Erratic Revenge by JukeDeck.

I have one more coming...

(Previously, Previously)

Share:

Pipevine Swallowtail Caterpillar

Pipevine Swallowtail Caterpillar

Share:

Cranes

Cranes

Share:

Clouds

Clouds

10 minute single-frame timelapse.

Share:

Bees

Bees

Share:

Humpback Whales in Golden Gate

Humpback Whales in Golden Gate

Humpback Whales in Golden Gate

Pair of humpback whales just off the Golden Gate Bridge.

(Previously)

Share:

San Bruno Mountain 360 4K

San Bruno Mountain 360 4K

360 degree 4K timelapse of San Bruno Mountain in San Mateo County, California.

(Previously, Previously)

Share:

Great Blue Heron at Crissy Field

Great Blue Heron at Crissy Field

Share:

Prior Artist

Alexander Reben is automatically generating all possible prior art. Which will probably take a while.

Instead, why not stop examining patents altogether?

(via Boing Boing)

Share:

Golden Gate Park from Grand View Park

Golden Gate Park from Grand View Park

Share:

Clouds Over The Farallones

Share:

West Portal Mosaic Timelapse

West Portal Mosaic Timelapse

A mosaic timelapse looking over the Pacific from West Portal, San Francisco (a simultaneous timelapse of 225 days from mid 2015 to early 2016).

This is the second in a series of videos made from frames I captured from a Nest cam using  Google Apps Script. Music from JukeDeck.

(Previously)

Share:

Google Cloud Vision Sightings

Google Cloud Vision Sightings

I've been feeding webcam images into the Google Cloud Vision API for a few weeks now so I thought I'd take a look at what it thinks it can see. The image above shows every label returned from the API with my confidence going from the bottom to the top and Google's confidence going from left to right (so the top right hand corner contains labels that we both agree on).

Google is super-confident that it has seen a location. Can't really argue with it there.

It's more confident that it has seen an ice hotel than a sunrise (and it has seen a lot of sunrises at this point). Maybe I need to explore the Outer Sunset more.

Google is 60.96% confident that it has seen a ballistic missile submarine. I suppose that's plausible, I do have an ocean view but it's rather far away and unless there was an emergency blow that didn't make the news I'm going to have to call bullshit on that one. It's 72.66% confident that an Aston Martin DB9 went past which is pretty specific. Possibly a helicopter slung delivery?

Maybe I'm sending basically the same image in too many times and the poor system is going quietly mad and throwing out increasingly desperate guesses. Probably I've just learned that I should use 80%+ as my confidence threshold before triggering an email...

(Previously)

Share:

News: California may end tyrannical daylight savings

California may end tyrannical daylight savings

Yes, I'd vote for this. Please do it.

Share:

Get an email when your security camera sees something new (Apps Script + Cloud Vision)

Get an email when your security camera sees something new (Apps Script + Cloud Vision)

Nest (previously DropCam) can email you when it detects activity but that gets boring quickly. How about an email only when it sees something totally new?

The script below downloads a frame from a web cam and then calls the Google Cloud Vision API to label features. It keeps a record of everything that has previously been seen and only sends an email when a new feature is detected. You could easily tweak this to email on a specific feature (i.e. every time your dog is spotted), or to count the number of times a feature appears. I'm using a Nest cam but any security camera that has a publicly visible image download URL will work.

var OAuthCreds = {
  "type""service_account",
  //...
};

var SendEmailTo = '';
var MonitorImageUrl = '';



function main() {
  var timestamp = Date.now().toString();
  var scriptProperties = PropertiesService.getScriptProperties();
  var currentProps = scriptProperties.getProperties();
  
  Logger.log('Grabbing a frame');
  var url = MonitorImageUrl + '&cb=' + timestamp;
  var response = UrlFetchApp.fetch(url);
  var image = response.getBlob();
  image.setName('image.jpg');
  var bytes = image.getBytes();
  var encodedImage = Utilities.base64EncodeWebSafe(bytes);
  
  Logger.log('Calling cloud vision');
  var service = getService();
  if (service.hasAccess()) {
    
    var request = {
      "requests":[
        {
          "image":{
            "content": encodedImage
          },
          "features":[
            {
              "type""LABEL_DETECTION",
              "maxResults":50
            }
          ]
        }
      ]
    }
    
    var annotateUrl = 'https://vision.googleapis.com/v1/images:annotate';
    var annotateResponse = UrlFetchApp.fetch(annotateUrl, {
      "headers": {
        Authorization: 'Bearer ' + service.getAccessToken()
      },
      "method" : "post",
      "contentType" : "application/json",
      "payload" : JSON.stringify(request, null, 2)
    });
    var json = JSON.parse(annotateResponse.getContentText());
    
    var anythingNew = false;
    var newText = '';
    
    for (var l = 0; l < json.responses[0].labelAnnotations.length; l++) {
      var description = json.responses[0].labelAnnotations[l].description;
      var score = json.responses[0].labelAnnotations[l].score;
      
      if (!(description in currentProps)) {
        Logger.log('Found new feature: ' + description);
        scriptProperties.setProperty(description, score);
        anythingNew = true;
        newText += 'Found: ' + description + ' (score: ' + score + ')\r\n';
      }
    }
    
    if (anythingNew) {
      MailApp.sendEmail(SendEmailTo, 'Found something new on the webcam ' + new Date(), newText, { 
        attachments: [image] 
      });
    }
    
  } else {
    Logger.log(service.getLastError());
  }
}

// modified from https://github.com/googlesamples/apps-script-oauth2/blob/master/samples/GoogleServiceAccount.gs#L50 below...
function getService() {
  return OAuth2.createService('CloudVision')
      // Set the endpoint URL.
      .setTokenUrl(OAuthCreds.token_uri)

      // Set the private key and issuer.
      .setPrivateKey(OAuthCreds.private_key)
      .setIssuer(OAuthCreds.client_email)

      // Set the name of the user to impersonate. This will only work for
      // Google Apps for Work/EDU accounts whose admin has setup domain-wide
      // delegation:
      // https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority
     // .setSubject(USER_EMAIL)

      // Set the property store where authorized tokens should be persisted.
      .setPropertyStore(PropertiesService.getScriptProperties())

      // Set the scope. This must match one of the scopes configured during the
      // setup of domain-wide delegation.
      .setScope('https://www.googleapis.com/auth/cloud-platform');
}

function reset() {
  var service = getService();
  service.reset();
}

There is a bit of setup to get this working. Create a new Apps Script project in Google Drive and paste the code above in. You'll need to provide you own values for the three variables at the top.

OAuthCreds is the contents of the JSON format private key file for a Google Developer Console project. Go to the console, create a new project and enable the Cloud Vision API. You'll also need to enable billing (more on this below) - a trial account will work fine for this. Once the API is enabled create a service account under Credentials and download the JSON file. Just paste the contents of this into the script.

That's the hard part over. Now enter the URL of the image to monitor (see this post for instructions on finding this for a Nest / DropCam device) as MonitorImageUrl and your email address for SendEmailTo.

One last thing - follow the instructions here to reference the OAuth2 for Apps Script library.

Once this is all done run the script (the main() function) and authorize it. You should get an email with a picture attached and a list of the labels detected together with a confidence score from 0 to 1. If this doesn't happen check the logs (under the View menu).

You can now schedule the script to run repeatedly (Resources -> Current project's triggers). You get up to 1,000 units a month for free so once an hour should be safe. If you need more frequent updates check the Cloud Vision pricing guide for details.

After a few runs you should only get an email when something new is detected. If you're seeing too many wild guesses then add a filter on the score to exclude low confidence features.

Enjoy, and leave a comment if you have problems (or modify this in interesting ways).

(Previously)

Share:

Mandelbrot Spin Zoom

Mandelbrot Spin Zoom

Zooming into the Mandelbrot Set is always fun but I feel it's often a bit static and would be enlivened by a good spin so you can corkscrew your way down. Enjoy:

This was cloud rendered over two weeks using a Google Compute Engine high CPU instance (on a free trial, thanks Google).

I used the coordinates from a video posted by metafis on YouTube and a palette approach posted by Alex Russell on Stack Overflow.

The music is Flaming Memories generated by JukeDeck.

Share:

West of West Portal

West of West Portal

This timelapse contains edited highlights from January 2015 to January 2016. I have a Nest Cam (previously DropCam) pointed at the Pacific from the back of my house. To create the footage I grab a frame every 20 seconds and save it to Google Drive using Google Apps Script. I fire up a program about once a week that creates a daily timelapse movie from the frames.

The music on the video is from the excellent JukeDeck. This particular track was randomly but happily called California Battle.

As well as the conventional timelapses I'm creating a couple of different videos from all of the footage. More over the next few months.

(Previously)

Share:

Bayview Rise

Bayview Rise

Share:

News: Wisdom teeth removal is rarely necessary

Wisdom teeth removal is rarely necessary

Glad to hear it because my dentist is always wanting to rip out my wisdom teeth and I've always refused...

Share:

News: Case made for 'ninth planet'

Case made for 'ninth planet'

Can we call it Pluto?

Share:

Mount Davidson 360 4K

Mount Davidson 360 4K

360 degree 4K timelapse from Mount Davidson, the highest peak in San Francisco. Shot in five segments.

(Previously)

Share:

San Francisco from Mount Davidson

Share:

Google Inbox Account Switching

Google Inbox Account Switching

Google is generally pretty good about managing multiple accounts but sometimes you get completely stuck. One example is Google Inbox where your primary account is Google Apps for Work without Inbox enabled. You just get a screen saying that Inbox needs to be activated and no option to switch to another account.

There is a fix, and this sometimes works for other products as well. In the URL (https://inbox.google.com/u/0/) there is a user number. Change the 0 to 1 (or maybe 2, 3, etc depending on the number of accounts) and you can get Inbox up and running again.

One case I haven't found a clean workaround for is importing a segment or custom report in Google Analytics. You just get the default profile and if it's not what you're after then there is no way to switch. What does work here is launching an incognito window, signing in to the relevant account and then using the import link. A bit painful but gets the job done.

Share:

Twin Peaks 360 4K

Twin Peaks 360 4K

360 degree timelapse from the top of Twin Peaks in San Francisco.

Share:

Gray Whales at Waddell Beach

Gray Whales at Waddell Beach

Gray Whales at Waddell Beach

Gray Whales at Waddell Beach

Gray Whales at Waddell Beach

Share:

The color of yesterday

The color of yesterday

A timelapse where each photo has been reduced to just its average color. Extreme pixelation if you will. The image above is the average of the averages. I imagine this is how a bristlecone pine experiences a day. Need to try this again in the summer I think when it might be a slightly less depressing hue.

Share:

Presidio Plaques

Old Stone Powder Magazine

Updated 2015-11-21 13:26:

To the memory of Colonel Charles B Stone

Updated 2015-11-23 15:50:

John J Pershing

Share:

Corona Heights

Corona Heights

Share:

Street View

Chestnut and Richardson San Francisco August 2015 Self Stalking

Behind 38 Keyes Avenue San Francisco August 2015 Self Stalking

My new hobby: finding photos of myself on Google Street View.

Updated 2016-08-04 17:57:

Street View

Share:

Spire

Spire

Share:

25th Centuary

25th Centuary

Share:

Sunset sunset 4k

Sunset sunset 4k

An update to my previous sunset sunset timelapse, this time with better colors and in 4K. It's sunset over the Sunset District in San Francisco.

(previously)

Share:

Path

Path

Share:

West Portal 360

West Portal 360

A 360 degree (skipping night) 24 hour time lapse from the roof of my house in West Portal, San Francisco.​

Share:

New Normal

New Normal

Share:

Doyle Drive: Before and After

Doyle Drive: Before and After

Doyle Drive: Before and After

Share:

News: Spacecraft data boosts Pluto's size

Spacecraft data boosts Pluto's size

I think that makes it a planet again...

Share:

News: Google, Microsoft, Mozilla And Others Team Up To Launch WebAssembly, A New Binary Format For The Web

Share:

The Lawrence 37-Inch Cyclotron

The Lawrence 37-Inch Cyclotron

Share:

Zeno's Watermelon

Zeno's Watermelon

Share:

Wall of Skulls

Wall of Skulls

Share:

Western Garter Snake

Western Garter Snake

Slithering around Glen Canyon Park, San Francisco.

Share:

Total Lunar Eclipse

Total Lunar Eclipse

Total lunar eclipse (blood moon) from April 4, 2015. Timelapse created from Dropcam footage from the ITHCWY webcam which just happened to be pointed in the right direction.

Share:

News: Frozen sequel announced by Disney

Share:

Not to be anal but (any number of dogs...)

Not to be anal but (any number of dogs...)

Google is going to start ranking pages based on facts. I'm game. This MUNI sign has always bothered me.

The highest capacity vehicle in the MUNI fleet has to be a two-car light rail vehicle. Capacity 436 people. The average weight of a person is 185 pounds. So we're looking at 80,660 pounds per rush hour train.

The lightest dog is a 1.4 pound Chihuahua named Ducky.

So at the absolute outside with no other passengers the limit is 57,614 dogs. I'm going to have to make some stickers...

Share:

ITHCWY WebCam

ITHCWY WebCam

I Thought He Came With You now has a WebCam looking out towards the Pacific Ocean from West Portal, San Francisco.

Share:

Capture DropCam (Nest Cam) frames to Google Drive

Capture DropCam frames to Google Drive

Here's an easy way to capture frames from a DropCam to Google Drive. This only works if you have a public feed for your DropCam.

Go to the public page for your DropCam (Settings -> Public -> Short URL Link) and then view source for that page. Near the top you can find the still image URL for your DropCam:

<meta property="og:image" content="https://nexusapi.dropcam.com/get_image?uuid=12345&height=200" />

In Google Drive create a new Apps Script (If you don't already have Apps Script you can find it via Connect more apps...). Paste in the following code:

function downloadFrame() {
  var timestamp = Date.now().toString();
  
  var url = 'https://nexusapi.dropcam.com/get_image?uuid=12345&height=1280&cb=' + timestamp;
  var response = UrlFetchApp.fetch(url);
  var blob = response.getBlob();
  blob.setName(timestamp + '.jpg');
  
  var folders = DriveApp.getFoldersByName('DCFrames');
  while (folders.hasNext()) {
    var folder = folders.next();
    folder.createFile(blob);
    break;
  }
}

Replace the uuid parameter in the URL with the uuid from the still image URL for your DropCam. Note that the height parameter in the script has been changed to 1280 to get the largest possible image. A timestamp is being used to add a random cache busting parameter to the still image URL and is also used as the filename for the image.

The script will save the images to a folder called DCFrames - either create this folder in your drive or change this parameter to the desired folder.

Run the script and check that it's working. If everything looks good go to Resources -> Current project's triggers in the Apps Script editor. You can now set up a timer to save a frame as frequently as every minute (which I'm using to collect frames to make a daily time lapse movie). You can also ask Apps Script to send you an email when the script fails.

Updated 2015-07-01: DropCam is now Nest Cam - assuming that Nest keep the API going everything should keep working as above for both types of camera.

Share:

News: AI will not kill us, says Microsoft

AI will not kill us, says Microsoft

Almost certainly true of Microsoft AI.

Share:

Baby tech should let everyone sleep

Baby tech should let everyone sleep

The range of baby technology now available is astonishing. You can load up with a smart sock, smart diapers, smart pacifier, phone connected scales (doppler, ultrasound...), Nespresso for formula, a cry translator and of course a wide range of ultra-sensitive, night-vision stalking, shrieking / vibrating baby monitoring systems.

But all this innovation is mostly being wasted on paranoid first time parents who need to obsessively check that everything is OK every five seconds (not judging, have been there).

What I need is a baby monitor that does one thing: wait a minute per month of age and see if there is still a problem. Stay silent until this threshold is passed.

As usual, billionaire investor readers please call me.

Share:

Every House I've Ever Lived In

Every House I've Ever Lived In

Here's a list of every house I've ever lived in. It's 32 across four continents - a different one every 15 months or so which is impressive as I lived in one of them for ten years.

Share:

News: No need to breed like rabbits - Pope

No need to breed like rabbits - Pope

Breeding like Popes also not a great idea - Rabbits.

Share:

GDP, The Music Video

GDP, The Music Video

The time on screen for each country is proportional to its Gross Domestic Product.

GDP figures are from the United Nations for 2013 from Wikipedia. Flag images are also from Wikipedia via the handy Google region-flags project. Music is "Money to Burn" by Alex (cc).

Share:

ISS

ISS

ISS

Share:

News: The War Nerd: More proof the US defense industry has nothing to do with defending America

Share:

News: Prototype Companion Cube, 1980

Prototype Companion Cube, 1980

And I ordered my 80s outfit right before reading this... (posting mainly to test my spanking new Feedly integration)

Share:

Night sky from Marin Headlands

Night sky from Marin Headlands

15 second exposure from a NatureBridge night hike last night. Then s'mores!

Share:

Fermi Suicide

Fermi Suicide

One family of solutions to the Fermi Paradox is that civilizations die out before they communicate - natural disaster, nuclear war, etc. This sort of calamity seems plausible some of the time but it would need to happen all of the time. What if any sufficiently advanced society inevitably discovers irrefutable proof that free will is an illusion and just gives up?

Depressing. I prefer this.

Share:

Spoiler Alert

R2D2 at The Presidio

Looks like Episode 7 is going to be weird...

Share:

Farallones

Farallones

Sunset behind the Farallon Islands, off the coast of San Francisco.

(previously)

Share:

Google PageSpeed Insights hates Google Analytics

Google PageSpeed Insights hates Google Analytics

I so want to get to 100% on Google PageSpeed Insights but I'm getting dinged for loading Google Analytics!

Share:

Sunset sunset

Sunset sunset

Sunset over the Sunset district in San Francisco. There is also the start of moonset at the start of the video and then clouds roll in and, unusually, out before the sun goes down.

Share:

Cable Car Museum

Share:

San Francisco from Hill 88

San Francisco from Hill 88

Share:

Tedious Feed Update

Tedious Feed Update

If you subscribe to I Thought He Came With You via RSS please switch to this new feed and delete the old one.

Longer version... this blog has used FeedBurner for ever but I managed to get locked out a couple of years ago. I upgraded to Google Apps for Domains and part of the process was transitioning various services over to a temporary account and then back to the new one. Most of them made it over but FeedBurner got orphaned somehow.

I've emailed, left forum posts etc but no luck. Google doesn't really do customer service so despite actually paying them I seem to be out of luck. Also, Google hates RSS so FeedBurner probably isn't the right long term tool even if I could get back into my account.

I've been meaning to do something about this for a while but as it was working it wasn't a top priority. This changed when my blog got hacked a couple of times in a row - I'm not sure if it was the software (I'd been using BlogEngine.net) or my hosting provider but it's painful to fix and I decided I needed a change. I Thought I Came From You is now running on a home grown platform. It should be more stable, faster (some quick benchmarking suggests twice as fast so far) and not get hacked quite so often.

So switch to http://ithoughthecamewithyou.com/syndication.axd for updates (I can't recommend Feedly highly enough) and delete the old feed. If you have any problems leave a comment below or send me an email.

Share:

Bay Bridge, Old And New

Bay Bridge, Old And New

Share:

From Alta Plaza Park

From Alta Plaza Park

Share:

Coyote

Coyote

Coyote on Lovers' Lane in The Presidio.

Updated 2014-10-21 22:53:

Presidio Coyote San Francisco

Another Presidio Coyote, this time on the main post.

Share:

Sun

Sun

Share:

Elsie Street, west slope of Bernal Heights

Elsie Street, west slope of Bernal Heights

If you only buy one house in Bernal Heights this month it should be 94 Elsie Street on the west slope of the hill (I'm not biased, just happened to have lived there for nearly ten years!)

Share:

Commute failing to suck this morning...

Commute failing to suck this morning...

Share:

Presidio Theatre

Presidio Theatre

Share:

Personal Finger Daemon for Windows

Did you know that Windows still has a vestigial finger command with just about nothing left to talk to? One of my New Year's resolutions is to bring finger back and unlike the stalled webfinger project I need to make some progress. Here's some C# to run your own personal finger daemon... you just need to create a .plan file in your home directory (haven't done that for a while):

using System;
using System.Diagnostics;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

namespace fingerd
{
    static class Program
    {
        private const int FingerPort = 79;
        private const int MaxFingerCommand = 256;
        private const string PlanFile = ".plan";

        private static readonly TcpListener _tcpListener = new TcpListener(
             IPAddress.Any, FingerPort);

        static void Main()
        {
            _tcpListener.Start();

            while (true)
            {
                TcpClient tcpClient = _tcpListener.AcceptTcpClient();
                Thread clientThread = new Thread(ClientThread);
                clientThread.Start(tcpClient);
            }
        }

        static void ClientThread(object client)
        {
            NetworkStream clientStream = null;
            TcpClient tcpClient = client as TcpClient;
            if (tcpClient == null) { return; }

            try
            {
                byte[] command = new byte[MaxFingerCommand];
                clientStream = tcpClient.GetStream();

                int read = clientStream.Read(command, 0, command.Length);
                if (read == 0) { return; }

                ASCIIEncoding asciiEncoding = new ASCIIEncoding();
                string commandText = asciiEncoding.GetString(command);

                int endOfCommand = commandText.IndexOf("\r\n"
                    StringComparison.InvariantCultureIgnoreCase);
                if (endOfCommand <= 0) { return; }

                string user = commandText.Substring(0, endOfCommand);
                if (string.Compare(user, Environment.UserName, 
                    StringComparison.InvariantCultureIgnoreCase) != 0) { return; }

                string planPath = Path.Combine(Environment.GetFolderPath(
                    Environment.SpecialFolder.UserProfile),
                    PlanFile);
                if (!File.Exists(planPath)) { return; }

                string plan = File.ReadAllText(planPath) + "\r\n";
                byte[] planBytes = asciiEncoding.GetBytes(plan);
                clientStream.Write(planBytes, 0, planBytes.Length);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
            finally
            {
                if (clientStream != null)
                {
                    clientStream.Close();
                }
                tcpClient.Close();
            }
        }
    }
}
Share:

Pier 14

Pier 14

Share:

Fog over Twin Peaks

Fog over Twin Peaks

Fog sweeps in over Twin Peaks in San Francisco.

Share:

Fitbit on a bike

Fitbit on a bike

My company bought everyone a Fitbit for Christmas and now we're in a Battle Royale to get the most steps. I'm at a disadvantage as I often cycle to work and Fitbit does not track this accurately.

A couple of people suggested that clipping the Fitbit to your shoe would help. So over the last week I conducted an experiment. My ride from home to the office is 6.5 miles. With the Fitbit clipped into my hip pocket it registers 2,362 steps. Perched precariously on my shoe I get 2,389 steps. You can't cheat Fitbit this way.

How far off is 2,300 steps? If I was walking the same distance I'd get 13,000 steps. But I  wouldn't be coasting down any hills so that isn't right either.

For my weight relaxed walking should be around 155 calories a mile, cycling at around 10 miles per hour is 78 calories a mile. This is about a 2:1 exchange rate so those 2,300 steps should be 4,600 or so.

Fitbit does have some options to manually add activities that it doesn't register correctly. This sounds too much like hard work though, it's difficult enough to remember not to put the poor device in the washing machine. I'm also 234,037 steps behind the current leader for January so I'd need to cycle home for lunch as well to stand any chance of catching up...

Share:

Tree

Tree

Share:

Watercress Line

Share:

CI Dream

CI Dream

I have an old Ambient Orb hooked up to our build server at work. It glows green when everything is working and red when a build fails. It's nice but not visible enough. My dream is to fit every developer box with a second generation blink (small USB LED indicator) or two so if things go pear shaped the whole office lights up red.

Share:

Venus Sets

Venus Sets

Share:

Moth

Moth

Share:

USS Hornet

Share:

San Francisco from Alameda

San Francisco from Alameda

Share:

Number Line

Share:

Lightfield Tree

Lightfield Tree

Playing with Lytro.

Share:

Moon, Sutro Tower (from Bernal Heights)

Moon, Sutro Tower (from Bernal Heights)

Share:

Staying Chrome?

Staying Chrome?

I've been using my Samsung Chromebook at work for around ten months now. It's not my main computer but it's a meeting survival powerhouse for email, instant messaging and note taking. The battery lasts approximately forever, it boots immediately and the decent keyboard and trackpad are just miles ahead of fumbling around on a tablet.

There are two problems for me with the Chrome universe. One will probably get fixed, one could be a deal breaker.

The first issue is VPN support. Apparently we use some sort of old, fiddly Cisco VPN that ChromeOS simply won't talk to. I filed Issue 261241 in the Chromium bug tracker and hopefully it will get fixed soon. If you're struggling with the same thing please star the bug report.

I can work around the VPN problem by using LogMeIn or Chrome Remote Desktop. But I can't live long without Skype. Actually I'd be perfectly happy to never use Skype again but my company runs on about fifty thousand Skype chats. I used Imo.IM for a while but they were forced to drop Skype support. Right now I'm using IM+ which as far as I'm aware is the only working Skype option for a Chromebook (please tell me if I'm wrong) but it's buggy and can't restore a connection between sessions. I either need to find a way to kill Skype at work or wait for (or write) a better web-only client.

Probably worth sticking it out, Gartner reports a 8.6% fall in PC sales but predicts Chromebooks growing to over 12 million units by 2016.

(Read the full Chromebook adventure: Part 1: Going Chrome, Part 2: Staying Chrome? and Part 3: Leaving Chrome)

(Image by he4rtofcourage, CC).

Share:

Memo to future: How to reassemble Kate’s cot

cot-step1

The long bolts with plastic washers attach to the head and foot of the cot (1). These are easier to screw in using a drill with a hex bit. Put the four smallest bolts through the holes (2) before attaching the sides or you’ll be taking the sides off again. These will be used to attach the mattress spring.

cot-step2

Cams go in the head and foot (1), smallest bolts as described above (2).

cot-step3

Now just attach the sides with the medium bolts and then the mattress spring using the wing nuts.

cot-step4

Missing one of the medium bolts? It’s in this bag somewhere. When asking Kate to help by putting bolts in a bag remember to be very, very specific about which bag next time. The rest of the hardware is in a Ziploc in a side pocket.

Share:

Immature Gmail Exploit

Immature Gmail Exploit

The Gmail Android client helpfully puts the first letter of the name of the person who emailed you in a big block at the left of the mail list (I guess if you have Google Plus friends you probably get a photo instead). But it's pretty easy to change the from name in your email client and trivial to do this programmatically.

Tips... spell your message backwards and use a different subject line for each email so they don't get grouped together.

Share:

Golden Gate

Golden Gate

Share:

Cloud

Cloud

Share:

Google Spreadsheets API and Column Names

Google Spreadsheets API and Column Names

I had a play with the Google Spreadsheets API recently to feed in some data from a C# application. The getting started guide is great and I was authenticated and adding dummy data in no time. But as soon as I started to work with real data I got:

"The remote server returned an error: (400) Bad Request."

And digging deeper into the response:

"We're sorry, a server error occurred. Please wait a bit and try reloading your spreadsheet."

The original sample code still worked so it didn't seem like any sort of temporary glitch as the message suggests. After much hair torn it turns out I was getting this error because I had used the literal column names from my spreadsheet. The API expects them to be lower case with spaces removed. If not columns match you get the unhelpful error above, if at least one column matches you get a successful insert with some missing data.

Error messages are one of the hardest parts of an API to get right. If you're not very detailed then what seems obvious to you can leave your developers stumped.

Hope this helps someone else...

Share:

Dolphins at Fort Funston

Dolphins at Fort Funston

Share:

I don't always find droids...

I don't always find droids...

Share:

Scary Bunny

Scary Bunny

Share:

Cheek Cells, Methylene Blue Stain

Cheek Cells, Methylene Blue Stain

Share:

Diary of a Living Room

Diary of a Living Room

1,920 frames taken every 45 seconds and stitched together into a single photo. It's a single frame time lapse of 24 hours.

Share:

Never Ending Fog

Share:

Leafhopper Nymph

Leafhopper Nymph

I spotted this odd looking bug in my porch a few weeks ago. It looks like a wingless fly with a hairy tail that wouldn't look out of place on a fly sized horse.

My Google-fu failed me so I turned to Pearl.com. Random insect identification isn't your typical veterinary question but Rebeccavet came through for me via a taxonomist in Kenya and told me it's a Leafhopper (Cicadellidae) nymph. Given this information Google Images confirmed that this seems like the most likely possibility.

(Full disclosure - I work at Pearl.com.)

Share:

Pride

Pride

Updated 2013-06-30 19:51:

Pride

Updated 2013-06-30 20:37:

Pride

Updated 2013-07-01 00:31:

Pride

Updated 2013-07-01 08:37:

Pride

Share:

Commute

Commute

Updated 2016-04-26 21:42:

Commute

Share:

Free

Free

Share:

Signs

Signs

Updated 2013-06-30 20:01:

Signs

Updated 2013-07-06 19:00:

Be the person your dog thinks you are

Updated 2013-11-05 14:38:

remember remember

Updated 2013-11-06 12:56:

Mission Love

[more]

Updated 2015-05-01 18:38:

Open Hole

Share:

Butterfly

Butterfly

Share:

Crissy Field Lunch

Crissy Field Lunch

Share:

Gray Whales at Fort Funston

Gray Whale Spout at Fort Funston

Share:

Bernal in Bloom

Bernal in Bloom

Share:

Sealions

Sealions

Share:

Comments Restored

I've restored all the comments that vanished after I removed Disqus last weekend. This is after a considerable effort to get everything out of BlogML and into WXR a couple of years ago. At some point I'll just have to give up and decide it's faster to write my own blogging and commenting system but for now Facebook Comments are enabled for all posts.

Share:

bye, bye, Miss Deprecated API

bye, bye, Miss Deprecated API

After my horrible experience with Cleat last year I'm finally pulling the plug on my remaining Twitter API projects. Twitter is switching off their v1 API soon and I'm still so sick of it that I'm not even going to upgrade existing products. If you used Follower then I'm sorry. If you liked my Twitter public timeline screensaver then you're odd, but I'm still sorry. I'll still tweet, I'm just staying clear of the API.

(Image is Fail Whale Pale Ale by Brian Cook.)

Share:

Great Billboard Hack

Great Billboard Hack

Share:

Bernal Bug

Bernal Bug

Share:

Chinese New Year

Chinese New Year

Share:

Going Chrome

Going Chrome

I came to Chrome OS by a circuitous route. Initially I though a browser in a box was a silly, under-powered toy. But then I needed a meeting machine for work.

To start with I decided to use an old Macbook. It was running OSX 10.5 (Leopard) which is a bit out of date so I thought I'd update it to the latest 10.8 (Mountain Lion) goodness. But this turned out to be impossible to do from my desk. Before I could go to 10.8 I'd have to get physical media for 10.6 (Snow Leopard) and patch it up to the point where it would accept an upgrade. This meant shipping a disc or visiting an Apple Store and getting smarmed at. Unacceptable.

So I decided to ditch OSX and install Windows 8. This was a cheap online purchase and a painless install... but Windows 8 is a disaster on a non-touch device. Everything takes an extra few clicks or a half-mile scroll to the right. 

Live tiles seem like a good idea until you realize that you're not looking at the start screen often enough for them to be of any value. If Microsoft had introduced a permanent ticker at the bottom of the screen or a secondary tile screen on all Windows 8 certified devices life could have been more interesting. 

Removing the start button so you have to go into touch and swipe mode to do anything is a pain. A boot to desktop mode would be great for older devices.

The deal breaker though is the increasingly assertive Windows Update. Twice in meetings it decided to reboot the computer. It used to be you could delay updates for hours but Windows 8 just knows that the latest patch is more important that whatever you happen to be working on and cheerfully pulls the plug. 

Admittedly you can figure out how to find the vestigial, non-Windows 8 config for Windows 8 and go to manual mode. And then figure out how to turn off the nagging for not having the recommended Windows Update setting. But but by this point you realize that you've got a operating system that is about updates first and getting work done second. And Windows 8 Windows Update doesn't even update Windows Store apps so you've got a live tile nagging for updates every five seconds as well. 

On top on the Windows 8 horror the Macbook was old, heavy and had a puny battery. Also, after installing Windows 8 the only software I needed to install was Chrome and the office VPN client. Once this sunk in I ordered the new Samsung Chromebook.  

Setup on the Chromebook is: 1. Login to your Google Account (with support for two-factor authentication), 2. Choose a wallpaper (optional). 

I'm not likely to use a Chromebook as my primary machine any time soon. It is however a meeting powerhouse for email, IMs, calendar and note taking. I replaced Skype with imo.im (which I've used on Android for a while). Full Outlook web access took a bit of head scratching - see this post for details. Google Apps and Hangouts work seamlessly as you'd expect. It's light and the battery lasts all day.

The only niggle so far is that Chrome OS doesn't support the flavor of VPN that my company uses. It would be nice to get to the wiki, but it's not a deal breaker (If you have a Cisco VPN that insists on a group name go vote for this bug). 

Microsoft and Apple should be really rather worried.

Updated 2013-07-17 13:54:

Two quick updates.

Providing a group name to use with Cisco VPN devices was added in Chrome 28. Unfortunately it still doesn't work for me. I've filed issue 261241 on the chromium bug tracker for this - you can star this issue if you have the same problem.

Skype has managed to block Imo.im so that no longer works for Skype on a Chromebook. I'm using IM+ for now, but it's not nearly as good - it doesn't remember passwords and it keeps silently losing connectivity so it's easy to miss chats.

(Read the full Chromebook adventure: Part 1: Going Chrome, Part 2: Staying Chrome? and Part 3: Leaving Chrome)

Share:

Full Outlook Web Access on Chromebook

Outlook Web Access

When trying to load the Outlook Web App on a Chromebook you'll find that you can only access the 'light' version. It's pretty easy to fix, you just need to spoof the user agent. 

On a regular desktop computer launch Chrome and type chrome://version in the address bar. Find and copy the user agent string. 

On your Chromebook install the User-Agent Switcher extension. After this installs click the icon and choose Settings. Enter a new customer user agent - name something like 'Chrome Desktop', the user agent string is the one you copied from a desktop PC above, group is Chrome, type is replace and enter a character or two for the indicator flag.

Next click the Permanent Spoof list tab (still in User-Agent Switcher) and enter the domain of your outlook site (i.e. outlook.mycorp.com) and choose the user agent we just created from the drop down list (i.e. 'Chrome Desktop').

Finally log out of Outlook Web Access. You should now be able to uncheck the 'light' experience and get the full version of the Outlook Web App.

(Read the full Chromebook adventure: Part 1: Going Chrome, Part 2: Staying Chrome? and Part 3: Leaving Chrome)

 

Share:

Last Light

Last Light

Last light of 2012 (up Bernal Hill). Happy New Year!

Share:

Clutch, you have no friends...

Clutch, you have no friends...

How I have to start my car.

Share:

Procyon lotor

Procyon lotor

Share:

GGB

GGB

Share:

Magic Mountain

Magic Mountain

Share:

Bernal Chair

Bernal Chair

Share:

Ordoñez Gun

Ordoñez Gun

Share:

Bernal from Davidson

Bernal from Davidson

Share:

Crow Gyre

Crow Gyre

Share:

#OV105

#OV105

Updated September 22, 2012 to add a few more photos:

 

Endeavor (OV105) flying over San Francisco with her escort:

Shuttle Endeavor Closeup

 

Endeavor over Alcatraz:

Shuttle Endeavor over Alcatraz

 

Endeavor making the second of two passes over the Golden Gate Bridge:

Shuttle Endeavor over the Golden Gate Bridge

 

Crowd watching Endeavor at Crissy Field:

Shuttle Endeavor over Crissy Field

Share:

Worst special TiVo offer ever

Worst special TiVo offer ever

Share:

Guess?

Guess?

Share:

Fight Facebook with Email

I was a little saddened to read today that Diaspora is transitioning over to some form of community manged slow death. I joined a pod a while back and was pretty impressed with the design. It was very similar to Google+: clean, nice features, nobody home. 

I've also joined app.net. The concept here is a social network that you pay for, so the owners are aligned with the interests of the users and developers rather than advertisers and lame brands. I wish app.net well, but it's not the future. Best case (and it's not a bad one) it could be the new WELL - a community that people care enough about to pay for (I was on the WELL in the early 90's, splitting the tab with a friend so our handle was abft, account built for two). If that is the direction it goes in then simply having a slightly longer post limit than Twitter isn't really going to cut it. And cool as it might be most people aren't going to pay for a social network. 

Any attempt to displace Facebook has to solve the problem that anyone interested in sharing anything with anyone else is already using Facebook. The only platform that is in any sense comparable is email. So someone needs to make email into a social network.

This could be an interesting startup. Create some account - [email protected] - anything you send directly to that address is a post. Anyone you copy is a mention. Reply to a thread with this email address included and you're replying on the social network as well. Anyone copied on such an email gets invited to the network if they're not already.

You've got a killer viral component and an instant social network that is supported on every platform with no investment needed. Everyone has email, and everyone is a member as soon as they claim their email address or get included in a post. 

Maybe someone has tried this already and I just haven't seen it. I'm half tempted to have a crack at it myself. 

What would be more interesting would be layering a social protocol over email, and implementing that protocol by proxy on top of email providers that don't or won't support it. This creates a core social service practically out of thin air. Facebook and Twitter are the new AOL and CompuServe. There has to be a way to leverage email into a free and open alternative.

Share:

City by the Bay

City by the Bay

View from Bernal Hill this afternoon.

Share:

Not a Private Key

When jarsigner says "Key Associated with [alias] not a private key" it almost certainly meant to say that you got your password wrong.

Share:

Thank you for choosing HSA Bank!

Thank you for choosing HSA Bank!

No, thank you HSA Bank for not giving me a choice and then cheekily pinching $2 on every debit swipe.

Share:

Reviews and Links for July 2012

The Sense of an Ending by Julian Barnes

The Sense of an Ending by Julian Barnes

4/5

A personal anti-adventure, gripping and poignant and pedestrian.

 

The Children of the Sky (Zones of Thought, #3) by Vernor Vinge

The Children of the Sky (Zones of Thought, #3) by Vernor Vinge

0/5

Solid, unexpected third installment. Don't read if you haven't read the first two.

 

Links

'robot revolution would end quickly, because the robots would all break down or get stuck against walls' - http://t.co/X4AFepMI

RT @GeoCollective: Daniel @RavenEllison speaking at National Geographic on the importance of #geography and #guerrillageography http://t ...

Aspam, Aomori, Japan - looks like Blade Runner. http://t.co/UePboKyJ

Cloud Atlas trailer http://t.co/etJealdX (on the plus side, lots of reasons for this to be great, on the minus side... Tom Hanks :( ) #fb

[text: “what the fuck, it worked the first time”,... http://t.co/chCeMv8M

Chow Down (at Chick-fil-A): http://t.co/cOuZViuC via @youtube

4 of 5 stars to The Sense of an Ending by Julian Barnes http://t.co/lV8ZrNHL

I side 90% with Jill Stein... http://t.co/zCNzugqD

Naples, Florida, USA snapshot from Catfood WebCams on Android. http://t.co/HACOmEhr

Testing a webcam share from Android... http://t.co/Ha94fZoW

Photo http://t.co/GnDGvPPZ

Rolling up social APIs: https://t.co/qrXnqX7T #todo @myEN

Thanks for the Cash Mr. Bubble Man: http://t.co/ZonD58yD

With More Original Programming On The Way, Netflix TV Viewing Is On The Rise http://t.co/Q8oCNZUv -- missing the point, lack of content

Hubble discovers new Pluto moon http://t.co/kRB95fLu -- Promote Pluto back to a planet immediately!

Amanda Palmer's awesome stop-motion music video [NSFW]: http://t.co/XfGBC9NY

ITHCWY: Hummingbird http://t.co/CHtA5fV3

Clegg: House of Lords is 'flawed' http://t.co/qp6MuKPO -- yes, do this: http://t.co/QNPyzu8X

ITHCWY: Twitter's API has got too painful for me: I've developed a bunch of stupid, niche and vaguely promising… http://t.co/J6Y0EZ62

IT class warfare — It’s not just IBM http://t.co/bK0Nr2lG

Naming Pets http://t.co/syC0kgWa

BBC News - Brian Cox: bank bailout costlier than UK science 'since Jesus' http://t.co/1RSN5g5Z -- amaaaaazzzziiiinnnnngg

"A conversation with my 12 year old self" (video) http://t.co/zYOEKDnN -- freaky

ITHCWY: Shrubbery: A missed opportunity to demand that violators shall provide... another shrubbery! (At the Old… http://t.co/lBSQaDmI

Probably the Higgs: http://t.co/yspWoQlv

Spring cleaning in summer http://t.co/269vRG1O - Google kills iGoogle. It was naff, but it drove a lot of @CatfoodSoftware business. Sad.

Cisco's cloud vision: Mandatory, monetized, and killed at their discretion http://t.co/OkBkKAsA via @extremetech @CiscoSystems

A better idea for House of Lords reform: http://t.co/WXhNgHF4 Agree? vote for http://t.co/svIg4nuG #lordsreform

ITHCWY: House of Lords - time for Legislative Service?: I've mulled the idea of having an upper chamber randomly… http://t.co/6C5cQjz2

You Might Be A Smanker If… http://t.co/L91rDvqV

Cisco locks customers out of their own routers, only lets them back in if they agree to being spied upon and monetized http://t.co/2QIdw42P

Bouncy, bouncy druids, not available outside the UK: http://t.co/mw7XcKth

Division http://t.co/2tIh8IXM via @RavenEllison

Patent troll http://t.co/AY3FIg8W

Operated by the knights who say NI! http://t.co/TkMndo7c

Share:

Hummingbird

Hummingbird

Share:

Shrubbery

Shrubbery

A missed opportunity to demand that violators shall provide... another shrubbery!

(At the Old Faithful Geyser.)

Share:

SETIcon 2

SETIcon 2

I'm at SETIcon 2 this weekend. It's a mix of science, sci-fi, religion and general speculation.

What really strikes me is that a couple of years ago at the first conference a handful of exoplanets had been found but the Kepler scientists were grinning away, not allowed to say much.

This time round it's hard to find a star without a planetary system. The (silly) Drake equation is falling term by term.

Next SETIcon it has to be some evidence of life...

Share:

Petrol & Marks & Spencer

I recently got back from a trip back to the UK. Every time I go back these days something about the country has fundamentally changed. This time it's that every petrol station and motorway services has a Marks & Spencer or Waitrose supermarket embedded in it. On the motorway there are generally several large branches, and then a smaller branch in the toilet hand-washing area, and finally a tiny shop selling sandwiches and a small selection of ready-made curries in each cubicle.

At first pass this seems very convenient, but you can't fill up the tank in the smallest BP (paying at the pump being virtually unheard of in the UK) without getting stuck behind someone doing their weekly shop. 

Share:

Playmobil

Playmobil

Share:

Annular Eclipse at SFO

Annular Eclipse at SFO

The only solar observatory outside the international terminal at SFO (some binoculars and a complicated harness of cardboard cup wrappers). Gathered quite a crowd!

Share:

Gopher Snake

Gopher Snake

Bernal Heights Park

Share:

Snake rests on Toad

Share:

Bottled Water

Bottled Water

A company called Evive launched this week to battle the evil of bottled water with reusable RFID equipped bottles that need a special filling station that plays advertising to you while you refill. Sort of like a water fountain but worse in every way possible. 

Concord Massachusetts just started to ban the sale of bottled water, joining several other towns and cities around the world. They've actually just banned small bottles, you can still buy a large one. 

Wouldn't it be better to leave the water on the shelf and ban Coke? 

Photo credit: Joost J. Bakker IJmuiden cc

Share:

Pelicans

Pelicans

Share:

Go-arounds: LEGO and Legislative Service

Go-arounds: LEGO and Legislative Service

LEGO: I wrote in January about LEGO's[1] misogynistic latest LEGO for Girls campaign. Earlier this month I was excited to read Mary Elizabeth Williams reporting that 'Lego tires to get less sexist' on Salon but it turned out that rather than reversing course LEGO had just agreed to meet with SPARK. SPARK reports back on the meeting today with the news that LEGO has been conducting 'an internal audit of their minifigure count' and will generally be looking at their gender based marketing. Looking forward to seeing some actual results.

Legislative Service: I've been bothering people at parties about legislative service for around 20 years. Most people nod politely and back away. So I was pretty excited to read 'Fewer Voters, Better Elections' by Joshua Davis in the May 2012 issue of Wired. The thrust of the article is very similar to legislative service and highlight research from James Fishkin at Stanford (Deliberative Democracy, it looks like he's been bothering people at cocktail parties for longer than me) and David Chaum (Random-Sample Elections). Something like this has to be the solution to getting past the two-body problem of our current democracy.

Colophon: I pinched the title from the excellent Patrick Smith, although my aviation blogging is limited to bitching about British Airways. The picture comes from the Wikipedia article on go-arounds because it's hilarious in a Douglas Adamsian way - like you just couldn't understand the concept of not landing a plane without the illustration.

[1] Why do Americans go for LEGOS and math while the British use LEGO and maths?

Share:

Kindle: Figure out sorting!

I love my Kindle. Loved it since seeing the screen for the first time after bothering a Judge I shouldn't have at an arbitration hearing. These days I mostly read using the Kindle app on my phone. And there's one thing that drives me nuts.

You can sort by author and you can sort by title but you can't sort by the date you purchased a book. When I finish a book and can't quite remember what's next in the queue this makes it impossible to search for it and curse Bezos for being off hunting rocket engines while he could be knocking heads together to fix this.

I'm sure there is a brain dead reason for this. Maybe it's not exposed with the book data and fixing this is festering on someone's backlog. Maybe the fact that some items may not have a purchase date is too hard a problem to deal with (hints: put these at the top, or the bottom, or make the feature only list purchased items). Come on Amazon, I'm sure you can figure this out.

What I really want is a queue. The same way I used to stack books to read on my bedside table I want to manage my to-read list at Amazon.com and then just have a button to load the next book. But I'd settle for sorting that works.

Share:

Prophylactic

Prophylactic

Absolutely no chance of scurvy tonight.

Share:

California Slender Salamander

California Slender Salamander

Share:

Baby Yellow Spiders

Baby Yellow Spiders

A chair in our garden has produced a bumper crop of baby Cross Orbweaver spiders. Very cute.

Share:

Sod Searle And Sod His Sodding Room

Not Searle's Room

Marcus du Sautoy, writing on BBC News, brings up Searle's Chinese Room in Can computers have true artificial intelligence?

Searle's argument is that someone who speaks no Chinese exchanges notes with a native speaker through a system that informs him which note to respond with. The Chinese speaker think's he's having a conversation but the subject of the experiment doesn't understand a word of it. It's a variant of the Turing Test and while the 'room' passes the test the lack of understanding on the part of the subject means that Artificial Intelligence is impossible. The BBC even put together a three part illustration to help you understand. 

I learned about the room at university and I didn't fall for it then. Du Sautoy, to be fair, expresses some skepticism but it makes up about a third of an article on AI, which is unforgivable. 

In determining if Searle's room is intelligent or not you must consider the entire system, including the note passing mechanism. The person operating the room might not understand Chinese but the room as a whole does. The Chinese room is like saying a person isn't intelligent if their elbow fails to get a joke. It's the AI equivalent of Maxwell's demon, a 19th century attempt to circumvent the second law of thermodynamics. 

Every time you get a Deep Thought or a Watson the debate about the possibility of strong AI (as in just I) resurfaces. It's not a technical question, it's a religious one. If you believe we're intelligent for supernatural reasons then it's valid to wonder if AI is possible (and you might want to stop reading now). If not then the fact that we exist means that AI might be difficult, but it's not impossible and almost certainly inevitable. 

The problem is that teams at IBM and Google cook up very clever solutions in a limited domain and them people get excited that a chess computer or a trivia computer can eventually 'beat' a human at one tiny thing.

Human intelligence wasn't carefully designed, it's the slow accretion of many tiny hacks, lucky accidents that made us slowly smarter over time. If we want this type of intelligence it's highly likely that we're going to have to grow it rather than invent it. And when true AI finally arrives I'll bet that we won't understand it any better than the organic kind.  

Previously: At the CHM...

Photo Credit: Stuck in Customs cc

Share:

Agua

Agua

Little known fact, geologists would tell you that Bernal Hill is made of chert, actually it's mostly dog crap. And if keeps raining like this the hill will be gone tomorrow.

Share:

Mangler

Mangler

I don't know what the machine attached to our office does but it's giving me nightmares.

Share:

It was where he left it

It was where he left it

Not to bang on about the BBC and their horrible headlines but 'lost' is a bit different from 'I was in a panic for 20 minutes' but actually it was exactly where I left it. How quickly can you go from 'Nation shall speak peace unto nation' to SEO whore...

Share:

Sand Ladder at Fort Funston

Sand Ladder at Fort Funston

Share:

SFO

SFO

Share:

Robot Ahead

Robot Ahead

Share:

Three reasons the dream of a robot companion isn't over

Three reasons the dream of a robot companion isn't over

David Lee reports from the Innorobo 2012 conference and comes up with 'Is the dream of having a robot companion over?'Apparently it is, because:

1) A five year old girl is mildly frightened by a robot and so this is one of the industries biggest hurdles: 'What will it take for Kibo to be Emi's friend, rather than the subject of her nightmares?'

Sure, it's initially frightening, but leave the robot with her for an hour and you won't get the thing back without an epic meltdown. This is a fundamental misunderstanding of children rather than industry threatening hurdle.

2) '...the industry should perhaps look to recreate simpler, smaller tasks.'

Says the guy that makes the Roomba, a vacuum cleaner. No self interest involved there.

3) 'That kind of notion for a service robot we think is completely wrong.'

Says the guy that makes the RoboThespian, a next generation Teddy Ruxpin. No self interest involved there. 

So general purpose robots are not happening, because a girl was initially nervous and two companies focused on special purpose robotics would rather talk about their niches. Thanks for wasting my time on this BBC.

I'm wasting more time writing about it for two reasons.

The Internet is killing headlines (something I agree with Paul Carr on). BBC news is egregiously awful, both for overwrought link bait and for using warn too much. The dream of a robot companion will never be over.

More importantly, think about every news story that either covered an event or an industry you're deeply familiar with and you'll realize that it's wrong, usually seriously so. What are the chances that it's only those stories that flawed in this way?  

Photo Credit: AV8PIX Christopher Ebdon

Share:

Fixing dropped wireless connection for Linksys E4200

Fixing dropped wireless connection for Linksys E4200

I've been going quietly mad trying to fix a constant dropped connection issue with our Linksys E4200 router. There's lots of advice around tweaking  the MTUs, upgrading firmware and disabling UPnP (a good idea anyway) but none of this helped at all. The connection just continually dropped, eventually came back, dropped again, ad nauseam.

The fix was to change the 5GHz and 2.4GHz networks to use different network names (SSIDs).  I then connected to the 2.4GHz flavor and the connection is now solid.

I guess the problem was that by sharing the SSID devices would keep switching between the networks whenever they got the chance to connect to the juicy 5GHz flavor. The 5GHz network is flakier (higher frequencies having less range) and so the constant dropouts.

Share:

Badge Driven Development

Badge Driven Development

Microsoft has released Visual Studio Achievements, an extension that brings gamification to Visual Studio in the form of badges. The achievements are a mix that include feature discovery, best/worst practices, printing source code and swearing. 

Initially I wrote this off as a silly little feature. But it could be the start of a whole new development methodology religion that I'm going to call Badge Driven Development (BDD). 

It's related to Test Driven Development, but instead of writing unit tests first you start with creating a set of achievements. These should be a measurable mix of business goals, personal development, coding standards and random mayhem. Once you have measurable badges you can start writing code and build a leaderboard for teams and individuals. 

BDD has all the ascetic one-upmanship of TDD, and owes something to EDD as well. It's the Parkour of Agile. I should start a training business where you can become a certified Badge Driven Scrum Master.

Share:

But does it get you in the HOV lane?

But does it get you in the HOV lane?

Interesting but highly disturbing alternative fuel source...

Share:

Mission:Explore Food - Crowd Fund It!

My brother is part of the Geography Collective, the team that make the Mission:Explore site and books. The first book won the Hay Festival and National Trust Outdoor Book of the Year in 2011. 

The latest in the series, Mission:Explore Food, is being crowd funded at PleaseFund.us. There are a variety of levels to choose from, most of which will get you a copy of the book and your name in print. You can also get yourself included as an illustration (or surprise a friend). This is going to be a great book for kids and the young at heart. Check out the sample pages (PDF) and sign up as a backer today.

Share:

Better Paperless

I've just spent several hours scanning and then shredding tedious statements, medical documents and other nasty paperwork. This is even after I've gone paperless with as many companies as possible. Very tedious, not to mention a monumental waste of time and money.

The companies that are paperless vary in what gets stored, for how long and in what format. And if I ever need some statement from years ago I may not even still have an account. I seem to change medical insurance at least twice a year at the moment. 

How about a common standard for pushing paperless whatevers out to a third party storage service? These could go directly to Evernote, SugarSync, etc and bypass the post-scan-shred cycle of doom. Just send a PDF, a date, a summary and maybe a service type. Make it easy (or mandatory) to opt in when signing up to each new bank account, health insurer, wireless carrier, etc. Make the world a slightly greener and slightly less boring place. 

Share:

Farallon Islands

Farallon Islands

A rare clear day where you can see the Farallon Islands from Fort Funston.

Share:

Moon on a Wire

Moon on a Wire

Testing posting by email with a picture of the moon from last night...

I've extended BlogEngine.NET to post by email. Not horrible for the very specific case of this blog and a short list of email clients. I shudder to think of extending it to the general emails and different templates.

Share:

Occupy Intellectual Ventures

Send them a troll. Now.

Share:

Section 8.2.3.2

The installation of a kitchen in premises where the number of staff exceeds twenty requires that proper hearing arrangements for those who like pies of high quality are made.

Share:

Grape Plasma

Gill found these instructions for making plasma in a microwave by carefully cutting up a grape and then nuking it. I finally got around to trying it yesterday, and it’s awesome. Even better than microwaving a light bulb in a glass of water. Check it out:

Making plasma in a microwave!
Share:

Cycling again…

From Bernal Hill to The Presidio and back

…after a five year break and while it’s true that you don’t forget how, your knees can stop being quite so flexible. I’m eyeing up the dog’s glucosamine laced treats quite enviously.

Share:

Cam of Fortune!

We are working on a concept for a new game show. The working title is

Many thanks for sending us your outline for 'CAM OF FORTUNE'. Please bear with us while we consider your proposal, we will get back to you just as soon as we can...

Thank you for sending in your programme proposal

My first and last foray into being a TV production company. Tragic that this never got made…

Share:

World Time Lapse

I've just made a new time lapse video using web cams from the Catfood WebCamSaver directory:

If you haven't seem the time zone version it's a completely different take.

Share:

Toys

Kate has a VTech Move & Crawl ball. From the name you can guess it’s supposed to help encourage crawling. Actually she was terrified of it for a couple of days, and now she likes to pick it up and interrogate it.

vtech-move-crawl-ball

I can’t wait for her to get bored and move on to a BigTrak. The ball is going to get some spray paint and be reincarnated as Sargent Major Zero:

sargent-major-zerojpg

Share:

Circles

 A Circle

I just got on Google+, and the Circles concept definitely moves the ball forward, but my heart sinks a little at having yet another disconnected social identity. It’s been said before, but it’s worth saying again – social networking needs to be an open, core internet standard like email. You can live on Facebook, Google, Twitter, wherever but your social graph should be independent of any specific service.

I don’t mean this in any (well, OK, a little) granola crunching open source way. Companies should compete to the death on their social graph implementation and added value. But the actual data on who your friends are should belong to you and should be both portable and interoperable. I should be able to friend someone on Google from within Facebook and share core items in both directions. If I get fed up of Facebook I should be able to move my graph and central identity elsewhere.

We’ve got OpenSocial, strangely not mentioned in the same breath as Google+, and Open Graph which is open for things but not people. Also FOAF, XUP, and other possible foundational standards. Of course the barriers here aren’t technical.

Altly wants to be Pepsi to Facebook’s Coke. I’m waiting to see what it tastes like, but it doesn’t sound like they’re itching to change the game.

Diaspora is an interesting project, but running instances (pods) of a social network is the wrong level of abstraction.

Of course ‘owning’ the graph is tremendously valuable and it’s hard to see Facebook giving this up anytime soon. If Google really don’t want to be evil they should use Google+ to liberate us from the tyranny of walled social gardens. Unless it turns out to be another Buzz or Wave in which case it’s down to us.

Share:

High-Frequency Trading

Fibre optic cable

Algorithmic trading is getting a little out of hand:

“For high-frequency trading firms that use powerful computers to pop in and out of positions in milliseconds, so-called collocation, or "colo," is a pricey necessity. That's because trade times are approaching the speed of light, and the only way to make light reach its destination quicker is to shorten the trip.” smartmoney.com

This kind of trading accounts for an estimated 70% of US market volume. It’s completely disconnected from any kind of intrinsic value and only creates a benefit for the HFT firms and the exchanges that pocket the fees and exorbitant server hosting fees.

It’s like installing an ATM skimmer on the capital markets.

I think we need some way to enforce a hold period to discourage this business model. It could be an actual window that forces you to hold stock for a few days before selling (actually a few minutes might help), more likely a tax or fee that is prohibitively high at the millisecond turnover rate but ramps down to nothing after a week. 

Share:

International Date Line Longitude, Latitude Coordinates

International Date Line

I’ve been working on an update to Catfood Earth. Several people have asked me to draw the International Date Line on the time zones layer but I’ve struggled to find a decent source for the coordinates of the line segments. I finally ended up manually digitizing the version of the line that appears on Wikipedia. The original is licensed as Creative Commons Attribution-Share Alike 3.0 Unported so I’m making the coordinates below available under the same license:

Longitude Latitude
180.0000 90.0000
180.0000 75.0000
-169.2500 67.7356
-169.2500 65.0189
170.0500 52.6863
180.0000 47.8353
180.0000 -0.9000
-159.6500 -0.9000
-159.6500 2.9000
-161.8500 2.9000
-161.8500 5.0000
-155.9500 5.0000
-150.6500 -7.8000
-150.6500 -10.0000
-156.0500 -10.0000
-156.0500 -7.8000
-178.0500 -7.80000
-172.7500 -15.0000
-172.7500 -45.0000
180.0000 -51.1815
180.0000 -90.0000

This looks great for Catfood Earth. Please take the coordinates with a pinch of salt if you’re designing a cruise missile guidance system or something.

Share:

Apparently you can’t build an alternative to Facebook without Facebook integration…

Altly - We are working on an Alternative to Facebook

Share:

Dog First Aid

After decades of ethnographic and quantitative research into the medical skills of Canis lupis familiaris I can finally publish a detailed guide to canine medical lore:

  1. Lick it.
  2. If, for any reason, step 1 fails to work eat grass until you throw up.

Universities wishing to bestow an honorary DVM should contact me at @abfo.

Share:

Extreme Environmentalism

Speaking of Gaia, I read Michael Lind’s Why we should embrace the end of human spaceflight on Salon yesterday with horror. He marshals a bunch of straw man arguments against humans in space, the worst of which is dismissing the threat of a planetary catastrophe:

“A sufficiently large asteroid or comet impact like the one that caused the extinction of the dinosaurs could do the job. But if a massive bolide threatened the Earth, we would send unmanned spacecraft, not Robert Duvall or Bruce Willis, to steer it away or destroy it.”

That’s a little complacent. Even if we ever get perfect asteroid defenses cracked you’ve still got to worry about cosmic strings, strangelets, radiation storms, Von Neumann probes, DNA hackers, the Yellowstone super volcano and anything shown on a Saturday afternoon on SyFi. All of our eggs are very much in one planetary basket.

Take the Gaia hypothesis to its ultimate conclusion: if the planet is a super-organism then humanity is the reproductive system. We’re the best bet to spread life beyond Earth and ensure its continued survival. The asteroid scenario may trigger panspermia but that would be for a lucky few bacteria, not Homo sapiens sapiens.

Colonizing space is difficult, expensive and for most people unappealing. But stop thinking about the planet you’re leaving to your children and start thinking about the universe you’re leaving to whatever our DNA based planetary ecosystem may evolve into.

A real environmentalist would focus on making this planet uninhabitable so we escape before it’s too late.

;)

Share:

Radio 4: Can I buy you a new hard drive?

I love that Radio 4 is available outside the UK on iPlayer. It’s an essential link to home. But why, oh why, oh why is each program episode only available for a few days? It’s so frustrating to find an interesting looking series and then discover that it’s halfway through and you can’t listen to the first episodes.

BBC, I’d be happy to send you a new hard drive if that would help. It really can’t require that much space to keep the content around for more than a week.

While you’re at it: per-program RSS feeds and more podcasts please.

Share:

Siriusly?

You've Unsubscribed from SIRIUS Program Updates - Please allow 4 business days to process your request.

Are you running your website on a VIC-20?

Share:

Response to GGNRA Draft Dog Management Plan

On Friday the National Park Service published their GGNRA Draft Dog Management Plan which is now open for public comment until April 14, 2011. The Golden Gate National Recreation Area encompasses over eighty thousand acres of Marin, San Francisco and San Mateo counties. In San Francisco GGNRA managed lands include Baker Beach, Crissy Field, Fort Funston and Ocean Beach. If you care one way or the other about dog access to the GGNRA please take the time to review the plan and send in your feedback. I’ve reproduced my comments in full below.

My family lives in San Francisco and owns a dog. Many of the places we regularly go for walks are in the GGNRA. I fully accept that dogs can cause trouble and even danger and that there should be areas in the park that are free of dogs. Dog owners are a large user group though and I’m concerned that the NPS is going too far. If you walk your dog in the GGNRA here’s why you should be concerned:

The plan significantly curtails off-leash dog walking. For example, Fort Funston could go from this (red shaded area is off-leash, click for larger version):

Fort Funstong - Current Dog Access

To this (yellow shaded area is off-leash):

Fort Funston - NPS Proposed Dog Access

Worse than any of the proposed immediate changes is that the new off-leash is different from the old off-leash. The plan creates ‘Regulated Off-Leash Areas’ or ROLAs. A key part of the ROLA definition (PDF) is:

“ROLA areas are subject to adaptive management as identified in each alternative. Subject to monitoring, an area can be changed from ROLA to on-leash or no dogs if compliance is not achieved.”

In other words, despite the two thousand plus page dog management plan we’re being asked to accept that the NPS can revoke access in the future without further consultation. The ‘adaptive management’ described in the plan would use NPS maintained statistics to downgrade off-leash to on-leash to no dogs at all and explicitly rules out ever moving any area in the opposite direction.

Here are the comments I’ve submitted to the NPS (comment ID: 457979-38106/85):

General Comments

My family owns a dog and lives in San Francisco. We visit the GGNRA at least once a week. The Draft Dog Management Plan would reduce our enjoyment and use of the park considerably.

In the plan the enabling legislation for the GGNRA is quoted: “In order to preserve for public use and enjoyment certain areas of Marin and San Francisco counties, California, possessing outstanding natural, historic, scenic and recreational values and in order to provide for the maintenance of needed recreational open space necessary to urban environment and planning, the Golden Gate National Recreation Area is hereby established”. The plan also discusses the long history of off-leash dog access before and after the creation of the park.

Because open space is so limited in San Francisco, and because the GGNRA controls the entire coastline I strongly support continued access to provide reasonable exercise and recreation for dogs and their owners.

I’m very concerned about the tone of the plan and some of the specific provisions.

The objectives listed in the executive summary all relate to controlling, reducing and restricting dog access. Given the park’s charter to provide ‘public use and enjoyment’ and ‘needed recreation open space’ an important objective should be to preserve sufficient space for off-leash dog access.

The plan exhaustively lists real and theoretical issues related to dog access however there is no comparable section discussing issues with prohibiting or restricting dog access. These include wasting limited park resources on restricting responsible dog owners rather than cautioning the irresponsible, forcing dog owners to travel further to take their dogs for a reasonable walk and increasing the likelihood of aggression by concentrating dogs in increasingly small designated areas.     

The plan also continually discusses dog access in the context of park-wide regulations preventing any off-leash dog walking. San Francisco donated properties to the GGNRA on the proviso that traditional recreation would be maintained. The tone suggests that leash-free access was a mistake, and that the park service is begrudgingly fulfilling the park’s mission only when forced to do so. I’d have much more confidence in the process if the plan started from the position of accepting a variety of recreational activities, including off-leash dog walking, and then attempted to balance the varied needs of visitors, culture and wildlife from there.

Given this I find the adaptive management provision of the regulated off-leash areas (ROLAs) to be unacceptable. This provides the NPS with a mechanism to further erode dog access to on-leash only and even to prohibit dogs entirely without further consultation. The plan further states that under no circumstances will the reverse be true – once dogs are banned the park will never consider opening up access again. This is a far greater threat to preserving the park for future generations than any amount of dog access.

Rather than penalizing the vast majority of responsible dog owners the Dog Management Plan should focus on enforcing existing rules and regulations.

Below I discuss the proposed plan for the sites we visit regularly:

Fort Funston

The preferred alternative is far too restrictive. When the closed section of trail to the north of Fort Funston is open again there should be off-leash access for the full length of the beach and alongside trails so that a loop can be made down the sand ladder and then returning via the central or northern access trails. Of all the GGNRA sites Funston would seem to be the best candidate for Alternative A – maintaining current access – especially if the preferred alternative is selected for restricting most of Ocean Beach. We visit Fort Funston weekly, rain or shine, and given how heavily the area is used I’m surprised at how rare it is to encounter any problems.

Crissy Field

The preferred alternative is a good balance. When the east beach is busy there can be far too many dogs and people competing for space. For this reason we usually visit Crissy field when the weather is too severe to walk on an ocean facing beach and so it tends to be just dog walkers anyway.

Ocean Beach

The preferred alternative is reasonable, provided that Fort Funston is not overly restricted (see above).

Marin Headlands / Rodeo Beach

The preferred alternative massively reduces the trail available for hikers with a dog. We often complete the loop up the coastal trail to Hill 88 and then down Wolf Ridge / Miwok to return to Rodeo Beach. The trails are rarely crowded and a well behaved dog has no more impact than a person. The Hill 88 loop should be kept open to off-leash dogs. The preferred alternative for Rodeo Beach is acceptable.

--

Update January 17, 2011: KQED has a Forum segment on the dog management plan at 9am PST today. Join the discussion or access the audio archive here.

Update February 2, 2011: Sign up for this Facebook page: Save Off-Leash Dog Walking Areas in the SF Bay Area.

Share:

Boob Bombs

The current pushback on the nasty choice between nude backscatter photos vs. ‘enhanced’ TSA groping got me thinking.

If I really wanted to blow up a plane (which I don’t) I wouldn’t mess around with printer cartridges or shoe bombs. I’d combine some explosive containing breast implants with a trigger disguised as a pacemaker. Some terrorist cell somewhere must be working on this or something like it.

How would the TSA respond? Would we need an MRI before boarding?

I think the radiation scare is overblown – far lower than the risk from hanging around at 30,000 feet. But it’s not ridiculous to refuse and getting to third base with the TSA doesn’t seem like it’s making us much safer.

Share:

Zombie Robs

I use Facebook for people I know well, LinkedIn for weaker ties and Twitter mostly for people I don’t know at all.

Over time though I’ve created identities on pretty much every network. With the increased interconnectedness of such sites when I stop using them I don’t stop posting…

I just discovered (in a spam filter) that someone was having a one sided conversation with me on Plaxo Pulse. I’m also actively posting (but not paying attention) on Buzz and goodness know how many other networks. I’m sure this inflates their active user count admirably but I’m now worried that undead me is being rude.

The social graph needs to work better in the other direction. Everything I post and comment on syndicates out like crazy but keeping track of responses just isn’t working.

Share:

Time Zone Time Lapse

The video below shows twenty-four hours from noon UTC to noon UTC on June 7, 2010 using webcams from the Catfood WebCamSaver database. It proves that I really will do anything to avoid finishing off the new Catfood web site.

You can probably figure out that the three blocks of cams are the US, Europe and Japan. The position doesn't reflect the latitude in this version, it's just a random selection of cams for the timezones represented in the database. As it's July and most of the cams are in the northern hemisphere you'll see long days and short nights. I'll try to remember to create an updated version around the autumnal equinox.

The program that generated the frames ended up being simpler than i thought. Because it's fetching images from a lot of different sources I had a timer creating and then saving a frame once a minute and lots of worker threads fetching the images. Each worker thread is assigned a frame number and once it's got the image it locks the main frame and tries to paints it's own area. If the frame number has moved on the image is abandoned. You can see some of the cams flickering on and off in the video — these went down while the frames were rendering or just took longer than a minute to respond.

Share:

I Thought He Came With You

Robert Ellison's Blog

7,250,102,861 people still need to read this blog.

Scott Adams

Scott Adams