Anders Brownworth

Technology and Disruption

Design Redux

I've updated the design of Anders.com once again - this time stripping out a good deal of the little links to this and that. The thought here is to focus on the content primarily. The really important things are really big and I've axed a whole pile of stuff that was doing more harm than good to the focus of the site.

http://Anders.com/ is here for things that are a bit too long to tweet or are things I want to have stick around longer than a blip on someone's timeline. http://AndersBrownworth.com/ remains a link page - something similar to an About.me profile. LinkedIn remains my professional resume and @Anders94 my primary "short thoughts" medium. For all else, there is http://Anders.com/.

FreeSWITCH: mod_sms Patch for Simple Logging Capability

Here's a patch for FreeSWITCH to add a simple logging capability to mod_sms. Basic usage is:

<action application="log" data="${_body}"/>

which will log the body of the SMS message. Don't forget that this should be part of the chatplan:

<section name="chatplan" description="Regex/XML Chatplan">
<context name="default">
<extension name="public_dids">
<condition field="to" expression="^(.*)$">
<action application="log" data="SMS Body:[${_body}]"/>
</condition>
</extension>
</context>
</section>

http://anders.com/1offs/freeswitch-mod_sms-logging.diff

Thoughts on Entrepreneurialism

I'm not passionate about building a great company, I'm passionate about creating a great product. Great companies come from great products.

Almost anything you build has been tried before. It may have been only the timing that was bad.

Meander some in your work. The best ideas come out of left field.

Creativity is both an intensely independent and massively collaborative process. Forgetting one or the other leaves you at a disadvantage.

New Anders.com Design

I've just replaced the look and feel of Anders.com with a minimal mobile-focused design. For some time I've been considering mobile over desktop for the sites I build so I figure it was high time to make Anders.com reflect that shift. If you are on a desktop browser, try resizing this page and see how the design conforms to even the tiniest of screen sizes.

I've also gotten rid of my Google advertising. The hit of having advertising that gets in the way of the reading experience didn't seem worth it to me. The theory is if you want people to read what you write, don't punish them for it!

Most of my short thoughts end up on twittier these days so I tend to update this blog less and less. I also talk a bit on 350 Third, my podcast with Scott Barstow, so the things I end up writing here will be here because they are best expressed (and searched) via text.

I hope you enjoy the less intrusive direction. Hit me up at @anders94 if you have comments.

EyeZo.com - Get Short URLs for any Location on Earth

http://eyezo.com is a new website that creates short URLs for locations. Instead of giving people addresses which can vary widely in accuracy, give them a URL that shows them unambiguously where something is.

Ever tried to find someone in a crowd? EyeZo.com can use the location services on your mobile phone to automatically figure out where you are so your friends can find you easily. You could tweet a spot to meet for lunch or find that out-of-the-way place everyone is talking about.

EyeZo.com is an HTML5 app so it works on your iPhone, iPad, Android device and even your desktop browser. You can add it to your home screen and make it run just like any other fullscreen app.

Run a food truck business? You can update the locations behind URLs you create so your customers can find you no matter where your mobile business goes. We?re working on adding support for custom URLs too!

EyeZo URLs are permanent and extremely accurate. They are so accurate, in fact, that you could differentiate between two grains of sand sitting side by side!

Get started by tapping "Share Location" on the http://EyeZo.com/ homepage. If you drop a pin on the map, you can move it to update it?s location. If you are using geo-location, just walk around to update your location.
Tweet about us and let others know about #EyeZo. Here are a few Twitter suggestions:

-------------
Get a short URL for any location on Earth http://eyezo.com/

Show people where you are with http://eyezo.com/

Found an http://eyezo.com/ bug? Menu -> Feedback

http://eyezo.com/ is an #HTML5 app

Try http://eyezo.com/ on your iPhone or Android device - uses the geolocation API
-------------

Run into any problems? Use Menu -> Feedback to let us know. EyeZo.com is an active work in progress. Thanks for using EyeZo!

jQuery: Change or Reload an iframe for Twitter Buttons

The standard javascript Twitter buttons execute their script on page load and then never again. You are out of luck if you want to programmatically change parameters later. (such as setting the "URL to tweet") The work-around is to instead use the iframe version of Twitter buttons and use query parameters to set options.

<iframe id="twitFrame" allowtransparency="true" frameborder="0" scrolling="no" src="//platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fanders.com%2F&count=none" style="width:130px; height:20px;"></iframe>

Then change the iframe's src programmatically later to set options on the fly via jQuery. Here I change the URL to http://example.com/.

$( '#twitFrame' ).attr( 'src', '//platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fexample.com%2F&count=none' );

Getting the Linux Kernel Config from a Running System

If you need to get the configuration of a running Linux kernel, have a look at:

/proc/config.gz

You might use that like this:

zcat /proc/config.gz > /usr/src/linux/.config

If /proc/config.gz isn't there (ie the kernel was compiled without CONFIG_IKCONFIG_PROC) have a look at:

/usr/src/linux/scripts/extract-ikconfig

Sloppy Reporting

This past week, details of our republic wireless skunkworks project at Bandwidth.com were splashed somewhat prematurely across the tech press starting with an article on TechCrunch. That was quickly followed up by GigaOm adding some detail including our $19 price point. Since then, most stories have fallen into one of two buckets. The first bucket is some blend of the above sources and the second presumably was started by this Forbes story. Notably, the Forbes writer mentions a $20 price point and claims that the parent company is Broadband.com. Thankfully, Bandwidth.com owns the domain Broadband.com but this is just sloppy reporting. I would assume people hearing $19 might think that means $19.99 and shorten it to $20 but that just isn't the case here either. The errors in this story, however, make it easier to see where various publications get their information and it is very interesting to track the proliferation.

Accurate:

TechCrunch
GigaOm
PC World

Not so accurate:

Forbes
TMC.net
VoIP Catalog

nginx and Intermediate SSL Certificates

Unlike Apache which takes intermediate SSL certificates using a specific config file directive:

SSLCertificateChainFile /sites/api.anders.com/conf/PositiveSSL.ca-bundle

nginx vends out intermediate certificates by concatenating them together between the server certificate and the root certificate in a single file. You can very simply do this with cat:

cat site.crt intermediate.crt root.crt > chain.pem

Don't forget, order matters here!

How Location Services Work on Mobile Devices

Mobile devices are location aware to one degree or another. Unfortunately the term GPS seems to be used more than it should so I thought it might make sense to define the technologies in a bit of detail in an effort to dispel confusion.

One of the quickest yet least accurate methods of determining location is to use cell towers because their location is fixed and known. By looking at the relative strength of a device's signal, you can work out roughly how far a device is from a particular cell tower. You can conclude a device is within some radius of a cell tower.



If a second cell tower also hears that same device (they have unique IDs) you can conclude that a device is within one or two locations - where the two circles intersect.



If a third cell tower can hear the device, you can narrow down to just one point in every case.



In this example, we know where the device is down to an accuracy of about a few hundred meters. The upside here is the speed at which we can get a "fix" - typically within a second or two. You'll probably recognize this level of accuracy by the pinging "blue circle of ambiguity" made popular by Google Maps on the iPhone.

The other way to get a fix is using WiFi. Similar to the way cell tower triangulation works, WiFi based location service listens for all the WiFi networks in an area and posts that list with accompanying signal strength to a database on the Internet. In Apple's case, they use Boston based Skyhook to translate that list of WiFi access points into a location.



How do they know where all the WiFi access points are, you ask? Well they drove around with a WiFi listener and a GPS unit and figured that out. You may remember Google getting in trouble for doing this as well when they were taking their Street View pictures. Google stopped using Skyhook in favor of it's own database when they had a good enough dataset.

Of course finding your position using WiFi generally requires an Internet connection to reach that database unless you have a complete copy locally or you use the cellular method. This is because the phone company figures out where you are on their side and delivers that information to your device through the cellular network itself. In effect, your location data is delivered as a network service from your carrier. So yes, they can and do track you even when you aren't "on the phone" - but I digress.

WiFi lookup accuracy is typically in the tens of meters so it is better than cell tower based triangulation if you have an Internet connection. You usually do have an Internet connection when you can sense WiFi networks so this method tends to work fairly well.

So how does GPS work? Well, it is similar to the other two methods where you are reading signals from locations of known radio transmitters but it adds the all important timing hint. Radio waves, although quick, take time to get to you. So the GPS system comprises 24 active (and a few backup) satellites containing synchronized atomic clocks all broadcasting the current time. These clocks are accurate enough so that you can calculate how far away a given satellite is by comparing the time you receive signals from them. Accuracy can be down to the tens of centimeters but it can take time to figure out where you are in the world just by hearing a bunch of satellites telling you what time they think it is. Hints, such as the cellular network location certainly help here, but it typically takes 10 to 15 seconds to get a fix in best possible cases.

However once you get a fix, you typically get position updates every second and at a resolution far surpassing WiFi or cell based technologies. This is clearly the preferred solution for continuously updated navigation on a map.

Each of these technologies have their own strengths and weaknesses. Critically they touch on privacy concerns. The first two, which are much quicker but less accurate, rely on some external component to respond with where you actually are. GPS, which is much slower initially but more accurate, is a "receive only" service where the system never even knows if you are there, much less your location or associate a unique identity with you.

It is important to remember that any radio transmission can be passively located. This includes the cell phone in your pocket even when you aren't on a call. Cell phones periodically notify local cell towers of their presence so phone calls can be routed to them when they have a call. They use randomly generated IDs to communicate so looking at these IDs adds uniqueness to the radio transmissions enabling them to be passively tracked even as they move around. It is easy enough to dial a number and record what random ID responds to the call adding real identity to the passive map. So with a number of radio "listeners" and an outgoing phone call, you can generally determine where a phone actually is and passively track it.

GPS is only one part of location services. It might be tempting to call other technologies that deliver location "GPS" as well, but the methods and their tradeoffs are very different.