<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Akshay Luther</title>
    <link>https://akshayluther.com/</link>
    <description>Notes on product, data, and design</description>
    <language>en</language>
    <atom:link href="https://akshayluther.com/feed.xml" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Sun, 23 Apr 2017 00:00:00 GMT</lastBuildDate>
    <item>
      <title>The MIT Big Data Challenge: Visualizing Four Million Taxi Rides</title>
      <link>https://akshayluther.com/2017/04/23/the-mit-big-data-challenge-visualizing-four-million-taxi-rides/</link>
      <guid isPermaLink="true">https://akshayluther.com/2017/04/23/the-mit-big-data-challenge-visualizing-four-million-taxi-rides/</guid>
      <pubDate>Sun, 23 Apr 2017 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;The other day, I was showing a colleague how to use Python and &lt;a href=&quot;http://jupyter.org/&quot;&gt;Jupyter notebooks&lt;/a&gt; for some quick-and-dirty data visualization. It reminded me of some work I’d done while competing in the &lt;a href=&quot;https://web.archive.org/web/20170521215524/http://bigdata.csail.mit.edu:80/challenge&quot;&gt;MIT Big Data Challenge&lt;/a&gt;. I meant to blog about it at the time, but never got down to it. However, it’s never too late, so I’m starting with this post.&lt;/p&gt;
&lt;h2&gt;The Visualization&lt;/h2&gt;
&lt;p&gt;The main point of this post is the following animated visualization which overlays a heatmap of the pickup locations of around 4.2 million taxi rides over a period of about five months in 2012 on top of a map of downtown Boston. The interesting thing about the heatmap of pickup spots is that it reveals the streets Boston, and highlights popular hotspots. Overlaying it on the actual satellite map of Boston shows this more clearly:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/the-mit-big-data-challenge-visualizing-four-million-taxi-rides/taxirides_animation.gif&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/the-mit-big-data-challenge-visualizing-four-million-taxi-rides/taxirides_animation.gif&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Those familiar with Boston will see that main streets like Massachusetts Ave, Boylston St and Broadway are starkly delineated. Hotspots like Fenway Park, Prudential Center, the Waterfront and Mass General Hospital show up quite clearly. The three most popular hotspots appear to be Logan Airport, South Station, and Back Bay Station, which is very much to be expected. I remember several occasions where I’ve taken a cab from these places after a night out or returning home after a flight or Amtrak, particularly on a freezing winter day!&lt;/p&gt;
&lt;h2&gt;The Challenge&lt;/h2&gt;
&lt;p&gt;Even though the challenge is a few years old (winter of 2013-2014), the context is still very much relevant today, perhaps even more so. The main goal of the challenge was to predict taxi demand in downtown Boston. Specifically, contestants were required to build a model that predicted the number of pickups within a certain radius of a location given (i) the latitude and longitude of the location, (ii) a day, and (iii) a time period (typically spanning a few hours) in that day. In addition, information about weather and events around the city was also available. Such a model has obvious uses – drivers on the likes of services like Uber and Lyft could use it to tell where future demand is likely to be, and use that information to plan their driving and optimize their earnings. The services themselves could also use it to anticipate times and locations of high demand, and to dynamically meet that demand by appropriately incentivizing drivers well in advance through surge —err, I mean &lt;em&gt;dynamic&lt;/em&gt; pricing, so that there is enough time to get enough drivers at the location by the time the demand starts to pick up.&lt;/p&gt;
&lt;p&gt;I was thrilled when after a lot of perseverance, I finally managed to get on the leaderboard. My self-congratulations were brief though, as I was soon blown away. Which was not surprising in the least; this challenge was organized at MIT’s &lt;a href=&quot;https://www.csail.mit.edu/&quot;&gt;Computer Science and &lt;em&gt;Artificial Intelligence&lt;/em&gt; Lab&lt;/a&gt; after all. Enough said.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/the-mit-big-data-challenge-visualizing-four-million-taxi-rides/mit-big-data-challenge-leaderboard.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Getting on the leaderboard, albeit briefly, was fun. But winning was never the goal. Rather, my goals for competing in the challenge were three-fold. First, I wanted to getter a deeper understanding of data science workflows and processes through a relatively complex project. Second, I wanted to expand my machine learning skills. Finally, I wanted to try using Python (and in particular &lt;a href=&quot;http://scikit-learn.org/&quot;&gt;scikit-learn&lt;/a&gt;). So far I’d only used R for building predictive models (&lt;a href=&quot;https://akshayluther.com/2013/03/13/amateur-data-scientist-how-i-built-a-handwritten-digit-recognizer-with-95-accuracy/&quot;&gt;recognizing handwritten digits&lt;/a&gt; and &lt;a href=&quot;https://akshayluther.com/2013/09/08/predicting-the-number-of-useful-votes-a-yelp-review-will-receive/&quot;&gt;predicting the number of “useful” votes a Yelp review will receive&lt;/a&gt;). But I had recently learned Python and had used it extensively during my summer internship at Google building analytical models for &lt;a href=&quot;https://web.archive.org/web/20170423221739/https://www.google.com/express/&quot;&gt;Google Express&lt;/a&gt; and &lt;a href=&quot;https://www.google.com/intl/en/ads/hotels/#?modal_active=none&quot;&gt;Hotel Ads&lt;/a&gt;. One of the main drivers was that I was about to start an product management internship at a stealth-mode visual analytics startup called &lt;a href=&quot;http://datapad.io/&quot;&gt;DataPad&lt;/a&gt; founded by the Wes McKinney and Chang She, the creators of &lt;a href=&quot;http://pandas.pydata.org/&quot;&gt;Pandas&lt;/a&gt; (the super popular Python library that I had used extensively in my work at Google), and wanted to be prepared with some product ideas.&lt;/p&gt;
&lt;p&gt;In the end the process was extremely educational and led to many insights in several areas of data science and machine learning. I even distilled some of the work for a &lt;a href=&quot;https://github.com/MITSloanDataAnalytics/ipython-bootcamp&quot;&gt;Python for Data Science Bootcamp&lt;/a&gt; which I conducted for the &lt;a href=&quot;https://sloangroups.mit.edu/dataanalytics/about/&quot;&gt;MIT Sloan Data Analytics Club&lt;/a&gt; along with my co-founder and co-president. I’ll write about some of the learnings and insights in future posts, but for this one one I’d like to talk briefly about the heatmap visualization from the start of this post.&lt;/p&gt;
&lt;h2&gt;The Making Of&lt;/h2&gt;
&lt;p&gt;Inevitably the first thing one does when encountered with a new dataset, particularly for a predictive challenge such as this, is to understand the “shape” of the data. To help with this, it’s fairly typical to create visualizations using one or more variables from the data. So the first thing I did was to fire up &lt;a href=&quot;http://jupyter.org/&quot;&gt;IPython Notebook (now known as Jupyter)&lt;/a&gt;, and start to look at the &lt;em&gt;pickups&lt;/em&gt; dataset provided.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/the-mit-big-data-challenge-visualizing-four-million-taxi-rides/jupyter1.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;After staring at it for a while, the proverbial light bulb went off in my head. Even though longitude and latitude are measured in &lt;em&gt;degrees&lt;/em&gt; and are used to indicate a point on the surface of a the earth which is a &lt;em&gt;sphere&lt;/em&gt;, what if they could be used as &lt;em&gt;Cartesian coordinates&lt;/em&gt; for a scatter plot on a &lt;em&gt;plane&lt;/em&gt; with longitude on the y-axis and latitude on the x-axis? I tried precisely that (for just one day’s rides) and lo and behold the map of downtown Boston was revealed:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/the-mit-big-data-challenge-visualizing-four-million-taxi-rides/draggedimage.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;It became obvious that for a small area (relative to the size of the earth) like Boston, the curvature of the earth could be ignored. From here, creating a heatmap was fairly straightforward. I used matplotlib’s &lt;a href=&quot;http://matplotlib.org/devdocs/api/_as_gen/matplotlib.axes.Axes.hexbin.html&quot;&gt;hexagonal binning&lt;/a&gt; plot (essentially, a 2-d histogram) with a logarithmic scale for the color map. If you’d like to understand it from the ground up, I made a simple &lt;a href=&quot;https://github.com/MITSloanDataAnalytics/ipython-bootcamp/blob/master/taxirides.ipynb&quot;&gt;step-by-step introductory tutorial of data visualization in Jupyter&lt;/a&gt; that ends with the the generation of this heatmap for the MIT Sloan Analytics Club &lt;a href=&quot;https://github.com/MITSloanDataAnalytics/ipython-bootcamp&quot;&gt;“Python for Data Science”&lt;/a&gt; bootcamp.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/the-mit-big-data-challenge-visualizing-four-million-taxi-rides/draggedimage-1.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;To create the visualization for this post, I redid the heatmap using all the pickup data available (around 4.2 million pickups over 5 months) and used a different color palette to end up with this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/the-mit-big-data-challenge-visualizing-four-million-taxi-rides/overlay.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/akshayl/v11n/blob/master/boston_taxirides/taxirides.ipynb&quot;&gt;The code can be found here&lt;/a&gt;, but the full dataset itself is not included because it’s over 300MB in size and GitHub has a limit of 100MB.&lt;/p&gt;
&lt;p&gt;Then it was a matter of taking a satellite photo of Boston, and messing about with &lt;a href=&quot;https://www.gimp.org/&quot;&gt;GIMP&lt;/a&gt; to overlay the heatmap on top of it, create the animation by blending the two, and exporting it as an animated GIF. This was the first time I used GIMP in anger (I always thought it was for Linux and didn’t realize there was a Mac app available), and I have to say it’s pretty awesome as a free alternative to Photoshop. It doesn’t quite feel like a native Mac app — the behavior and look of the menus and navigation are a little funky— but it got the job done really well for what I needed to do.&lt;/p&gt;
&lt;h2&gt;Bonus Interactive Visualization&lt;/h2&gt;
&lt;p&gt;While trying to figure out the best way to present the heatmap overlayed on the Boston map (and eventually settling on the simplicity and versatility of an animated GIF), I came across the cool &lt;a href=&quot;https://help.github.com/articles/rendering-and-diffing-images/#onion-skin&quot;&gt;“onion skin”&lt;/a&gt; image comparison feature of GitHub. Click on “Onion Skin” in the &lt;a href=&quot;https://github.com/akshayl/v11n/commit/5b1d72e76feb4af152a75257fb281520d2a5597e#diff-e88ffdfbb91369ff5fe575f406abec96&quot;&gt;image comparison that shows up for this commit&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/the-mit-big-data-challenge-visualizing-four-million-taxi-rides/github11.png&quot; alt=&quot;github1&quot;&gt;&lt;/p&gt;
&lt;p&gt;You can use a slider to manually blend the two images and clearly see the how the taxirides heatmap maps onto (pun intended!) the streets of Boston.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/the-mit-big-data-challenge-visualizing-four-million-taxi-rides/github2.png&quot; alt=&quot;github2&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Improvements&lt;/h2&gt;
&lt;p&gt;Even though I was relatively familiar with Boston having lived there for two years, it was still not immediately obvious what some of the specific hotspots where. This could be addressed in a couple of ways:&lt;/p&gt;
&lt;h3&gt;Alternative “Static” Visualization&lt;/h3&gt;
&lt;p&gt;Create an similar animated GIF visualization but using a street map with labels.&lt;/p&gt;
&lt;h3&gt;Dynamic Overlay on “Live” Interactive Map&lt;/h3&gt;
&lt;p&gt;A better approach would be to create an app that uses something like the Google Maps API to show a ”live” interactive map view that allows the user to use all the features of Google Maps like zooming, switching between street and satellite views etc.. The app would let the user toggle visibility of the overlay heatmap overlay on top of the map. The user could choose from a set of colormaps for the overlay (some would be more suitable for street vs satellite views), and also use a slider to play with the overlay’s opacity (like with GitHub’s onion skin tool).&lt;/p&gt;
&lt;h3&gt;Dynamic Overlay on 3D Map&lt;/h3&gt;
&lt;p&gt;The next logical step would be to take the dynamic overlay concept and apply it to a live 3D map view. Here is a “concept” of that idea:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/the-mit-big-data-challenge-visualizing-four-million-taxi-rides/3d_overlay_concept.png&quot; alt=&quot;3doverlayconcept&quot;&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Where Do Sloanies Go After They Graduate?</title>
      <link>https://akshayluther.com/2015/06/21/where-do-sloanies-go-after-they-graduate/</link>
      <guid isPermaLink="true">https://akshayluther.com/2015/06/21/where-do-sloanies-go-after-they-graduate/</guid>
      <pubDate>Sun, 21 Jun 2015 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;It’s been a year since I graduated from the full-time MBA program at MIT Sloan and moved to the San Francisco Bay Area to work as a Product Manager. I thought it would be interesting to see where Sloanies go after they graduate and, using data from a survey sent out shortly before graduation, came up with an interactive visualization: &lt;a href=&quot;https://axai.io/projects/beautiful_classmates_2014/&quot;&gt;Sloanies Around the World&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://axai.io/projects/beautiful_classmates_2014/&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/where-do-sloanies-go-after-they-graduate/sloanies-around-the-world.png&quot; alt=&quot;Sloanies Around the World&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Clicking on “USA” from the menu presents a clearer picture of where Sloanies ended up in the States:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://axai.io/projects/beautiful_classmates_2014/&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/where-do-sloanies-go-after-they-graduate/sloanies-around-the-world-usa.png&quot; alt=&quot;Sloanies Around the World - USA&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The top 4 cities where my classmates ended up are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Boston&lt;/li&gt;
&lt;li&gt;San Francisco Bay Area&lt;/li&gt;
&lt;li&gt;New York&lt;/li&gt;
&lt;li&gt;Seattle&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It is interesting to see how post-MBA career choice determines location. I wanted to remain in software, and chose MIT because of its reputation in technology and entrepreneurship. In fact, &lt;em&gt;technology is the second most popular career choice&lt;/em&gt; (after consulting) for Sloanies. Indeed, out of all the M7 business schools, &lt;em&gt;Sloan had the highest proportion of graduates choosing technology (26%)&lt;/em&gt;. (Source: &lt;a href=&quot;http://poetsandquants.com/2015/01/05/the-m7-the-super-elite-business-schools-by-the-numbers/4/&quot;&gt;The M7: The Super Elite Business Schools By The Numbers&lt;/a&gt;) For me, the Bay Area was the obvious choice even though it’s on the opposite coast. Many of my classmates echoed this sentiment, which explains San Francisco and Seattle being top post-MBA destinations.&lt;/p&gt;
&lt;p&gt;While I’d expect this year’s graduating class to have a similar map, what would be most interesting is visualizations from other schools. I would expect to see maps for schools with a strong finance reputations like Harvard, Booth, Wharton and Columbia be much more heavily skewed towards financial centers like New York.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>The Experience of Listening to Music is Broken</title>
      <link>https://akshayluther.com/2014/06/02/the-experience-of-listening-to-music-is-broken/</link>
      <guid isPermaLink="true">https://akshayluther.com/2014/06/02/the-experience-of-listening-to-music-is-broken/</guid>
      <pubDate>Mon, 02 Jun 2014 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;The realization that music ownership as we knew it was soon to become redundant in favor of streaming services came to me when I signed up for Spotify in early 2009, when they opened up public registration to their free service. At the time it was only available in the UK, and I was fortunate to be living in London. Although I had my entire music collection on my iPod Classic at work, I found myself primarily listening to music on Spotify. Despite the conspicuous absence of some favorite bands like Metallica, AC/DC and Led Zeppelin, Spotify offered a vast selection of old and new music, all for free! It was a revelation.&lt;/p&gt;
&lt;p&gt;Five years on, music streaming has matured and Spotify has many competitors. There is no lack of all-you-can-eat subscription services for around $10 a month with features mobile apps and offline listening. Some of the more popular ones are Google Play Music, Rdio, Sony Music Unlimited, Xbox Music and the one that has been in the press a lot lately after its acquisition by Apple, Beats Music. Additionally, there are services like SoundCloud that allow emerging and unsigned artists to upload their music for free consumption.&lt;/p&gt;
&lt;p&gt;The economics of streaming services from the perspective of the consumer are incredible. We not only have access to a virtually unlimited selection of music but at a fraction of our “willingness to pay”. Thanks to long tail economics at work, we have already become accustomed to having access to a large selection of music when purchasing over the internet, whether buying physical CDs from Amazon or downloading music from iTunes. But $10 only gets you 10 songs on iTunes or half a CD on Amazon. For the same price, a subscription gives you virtually &lt;strong&gt;all&lt;/strong&gt; the latest music. For example, Spotify adds 20,000 tracks per day (though not all of them are new). As a comparison, the majority of the music that I own is a collection of around 200 CDs bought over a period of nine years. At $20 per CD that equates to an expenditure on music of approximately $40 per month, for a grand total of around 3,000 tracks, most of which are album fillers.&lt;/p&gt;
&lt;p&gt;However, despite all the goodness, the experience of playing music suffers from some major problems.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Problem #1: Music silos&lt;/strong&gt;
It is safe to say that the majority of users listen to music from multiple sources. For example, I have playlists on Spotify and SoundCloud as well as music that I own (lossless versions of which are sitting on a NAS drive, and compressed versions uploaded to Google Play Music); that’s four different places. But there is no way to seamlessly mix and match music from multiple sources in a single playlist. Ok, that’s not quite true; there is one service that does allow this, but in a limited manner. More on that later. The ability to buy individual tracks on iTunes meant that playlists replaced albums as the de facto collection of songs that get played in one go. Music was freed from albums. Now it needs to be freed from music services!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Problem #2: Lossy compression&lt;/strong&gt;
With very few exceptions, all music available for download and streaming on the internet — the de facto mode of listening to music today — is compressed and is significantly inferior to the original recording. This is a real disservice to the music. Lossy codecs like MP3 trade storage and transmission efficiency for audio quality, which is fine for listening to an iPod with crappy Apple earbuds, but doesn’t cut it for proper music listening on decent equipment. Storage and bandwidth are so cheap today that the we don’t really need to make this compromise any more. In fact there has been the recent emergence of “high resolution audio” which offers significantly better quality than CDs.&lt;/p&gt;
&lt;p&gt;So here then are my requirements for playing music:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Have a similar experience whether I am playing music at home (audio system), at work (laptop) or on the go (smartphone)&lt;/li&gt;
&lt;li&gt;Search, play and create playlists across streaming services and music that I own using one interface&lt;/li&gt;
&lt;li&gt;CD quality or better&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I haven’t been able to come up with a compelling solution that I am completely satisfied with (hence this blog post), but the situation isn’t completely hopeless either.&lt;/p&gt;
&lt;p&gt;The solution that comes the closest to satisfying these requirements is Sonos. The Sonos Connect (and Sonos speakers) can play music from most major music subscriptions services (most notably Spotify and Google Play Music) and lossless music from my NAS. Using the latest version of their Controller app, I can create playlists that span multiple sources. Kudos to Sonos for this innovation! I must say they are doing a tremendous job of creating a highly compelling experience for listening to music at home. Trouble is that even though Sonos has smartphone, tablet and desktop apps, these apps are only controllers that control Sonos devices. I can’t play my Sonos playlists on the go (on my smartphone) or at work (on my laptop). &lt;strong&gt;My appeal to Sonos is: Please enable playback on your Controller app and cement Sonos the one-stop experience for music not only in the home but also outside it.&lt;/strong&gt; Yes I can’t expect to have files on my NAS drive be playable everywhere, but I would happily stream those files using Google Music (discussed next). &lt;strong&gt;It would be possible to build a player if the likes of Spotify and Google created APIs like SoundCloud and Rdio have done.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Google Play Music lets you upload up to 20,000 of your own songs for free, which is a compelling reason to switch from Spotify since I could then create playlists by mixing and matching tracks from their subscription service and my own uploaded music and listen to them anywhere. However, lossless files are transcoded to MP3 so the downside of this would be that I would have to live with lossy compression. &lt;strong&gt;My appeal to Google is: Please allow lossless uploading of music and charge for it if you must.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Qobuz is a CD-quality streaming service based in France. It is supported by Sonos. It’s only available in certain countries in Europe currently, but hopefully it will be available in the US soon. Looks like a European startup is once again leading the charge in music innovation.&lt;/p&gt;
&lt;p&gt;Finally, there are several services that let you buy lossless music, most notably &lt;a href=&quot;https://web.archive.org/web/20140527115346/https://www.hdtracks.com/&quot;&gt;HDtracks&lt;/a&gt; and &lt;a href=&quot;https://www.murfie.com/&quot;&gt;Murfie&lt;/a&gt;. Murfie also has an interesting service whereby you send them your CDs and/or vinyl they rip them into lossless files which you can stream or download. They don’t yet offer a lossless locker service for music that you have ripped already.&lt;/p&gt;
&lt;p&gt;I still haven’t quite figured out what the best compromise is going to be but I am leaning towards moving from Spotify to Google. &lt;strong&gt;Spotify, if you’re listening, please offer a locker service for owned music with lossless streaming.&lt;/strong&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Home Baked NAS Using a Raspberry Pi and a Portable Hard Drive</title>
      <link>https://akshayluther.com/2014/05/28/home-baked-nas-using-a-raspberry-pi-and-a-portable-hard-drive/</link>
      <guid isPermaLink="true">https://akshayluther.com/2014/05/28/home-baked-nas-using-a-raspberry-pi-and-a-portable-hard-drive/</guid>
      <pubDate>Wed, 28 May 2014 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;I am in the early stages of putting together a hi-fi setup for my future living room. The primary source is going to be a Sonos Connect which will allow me to stream music from cloud services like Spotify and also play my CD collection (from when CDs used to be a thing) which I have ripped to lossless files. However, my lossless files have been sitting on my laptop and needed to be liberated onto a NAS. Rather than spend $300 or more for a decent NAS, I decided to build one from a Raspberry Pi that needed to be put to good use and an old portable hard drive I had lying around.&lt;/p&gt;
&lt;p&gt;Here is the result:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/home-baked-nas-using-a-raspberry-pi-and-a-portable-hard-drive/1_dsc096061.jpg&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/home-baked-nas-using-a-raspberry-pi-and-a-portable-hard-drive/1_dsc096061.jpg&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/home-baked-nas-using-a-raspberry-pi-and-a-portable-hard-drive/2_dsc096011.jpg&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/home-baked-nas-using-a-raspberry-pi-and-a-portable-hard-drive/2_dsc096011.jpg&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/home-baked-nas-using-a-raspberry-pi-and-a-portable-hard-drive/3_dsc096081.jpg&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/home-baked-nas-using-a-raspberry-pi-and-a-portable-hard-drive/3_dsc096081.jpg&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Raspberry Pi Model B is attached to a Transcend StoreJet 320GB using a &lt;a href=&quot;https://web.archive.org/web/20140621053131/https://www.quirky.com/shop/105&quot;&gt;Quirky Bandit&lt;/a&gt;. Powering the Pi and the hard drive (the drive comes with a Y-cable whose extra plug is solely for additional power) is a &lt;a href=&quot;http://www.amazon.com/gp/product/B005P2BY5I/ref=oh_details_o01_s00_i00?ie=UTF8&amp;amp;psc=1&quot;&gt;small, powered USB hub&lt;/a&gt;, which is attached to the Pi using another Bandit. The two wires external to the unit are the ethernet cable and the power cable for the USB hub.&lt;/p&gt;
&lt;p&gt;Software-wise it’s fairly simple – just Samba running on Raspbian. This is perfectly adequate for my current needs, since the Sonos Connect just needs a Samba share to play local music, but the great thing about using the Pi as a NAS controller is its extensibility – I could quite easily install MiniDLNA for uPnP support. The setup was fairly straightforward despite by less-than-elite Linux skills, although the Samba configuration took a little bit of fiddling to get right. I also found the &lt;a href=&quot;http://www.amazon.com/Logitech-Wireless-Keyboard-Built-In-Multi-Touch/dp/B005DKZTMG&quot;&gt;Logitech K400 Wireless Keyboard with Built-In Touchpad&lt;/a&gt; super useful in working with the Pi initially, prior to running it headless.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Predicting the Number of “Useful” Votes a Yelp Review Will Receive</title>
      <link>https://akshayluther.com/2013/09/08/predicting-the-number-of-useful-votes-a-yelp-review-will-receive/</link>
      <guid isPermaLink="true">https://akshayluther.com/2013/09/08/predicting-the-number-of-useful-votes-a-yelp-review-will-receive/</guid>
      <pubDate>Sun, 08 Sep 2013 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;A few months ago I wrote about &lt;a href=&quot;https://akshayluther.com/2013/03/13/amateur-data-scientist-how-i-built-a-handwritten-digit-recognizer-with-95-accuracy/&quot;&gt;creating a submission for the Digit Recognizer&lt;/a&gt; tutorial “competition” on Kaggle that could correctly recognize 95% of handwritten digits.&lt;/p&gt;
&lt;p&gt;Enthused by this, I decided to participate in a real competition on Kaggle, and picked the &lt;a href=&quot;http://www.kaggle.com/c/yelp-recruiting&quot;&gt;Yelp Recruiting Competition&lt;/a&gt; which challenges data scientists to predict the number of “useful” votes a review on Yelp will receive. Good reviews on Yelp accumulate lots of Useful, Funny and Cool votes over time. “What if we didn’t have to wait for the community to vote on the best reviews to know which ones are high quality?”, was the question posed by Yelp as the motivation for the challenge.&lt;/p&gt;
&lt;p&gt;I am pleased to report that I ended the competition in the &lt;strong&gt;top one-third of the leaderboard&lt;/strong&gt; (110 out of 352). Although the final result was decent, there were many stumbling blocks along the way.&lt;/p&gt;
&lt;h3&gt;Data&lt;/h3&gt;
&lt;p&gt;The training data consisted of ~230,000 reviews along with data on users, businesses and checkins. The data was in JSON format, so the first step was to convert it to tab-delimited format, using a simply Python script, so that it could be easily loaded into R.&lt;/p&gt;
&lt;h3&gt;Visualization&lt;/h3&gt;
&lt;p&gt;Next, I tried to understand the data by visualizing it. Here is a distribution of the number of useful votes:&lt;img src=&quot;https://akshayluther.com/media/predicting-the-number-of-useful-votes-a-yelp-review-will-receive/newimage.png&quot; alt=&quot;NewImage&quot; title=&quot;NewImage.png&quot;&gt;&lt;/p&gt;
&lt;h3&gt;Evaluation&lt;/h3&gt;
&lt;p&gt;Because Kaggle only allows two submissions every day, I created a function to evaluate the results of the prediction before submission, by replicating the algorithm used by Kaggle to evaluate the results i.e. the Root Mean Squared Logarithmic Error (“RMSLE”):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/predicting-the-number-of-useful-votes-a-yelp-review-will-receive/evaluation-yelp-recruiting-competition-kaggle.png&quot; alt=&quot;Evaluation Yelp Recruiting Competition  Kaggle&quot; title=&quot;Evaluation - Yelp Recruiting Competition | Kaggle.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;where:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ϵ is the RMSLE value (score)&lt;/li&gt;
&lt;li&gt;n is the total number of reviews in the data set&lt;/li&gt;
&lt;li&gt;pi is the predicted number of useful votes for review i&lt;/li&gt;
&lt;li&gt;ai is the actual number of useful votes for review i&lt;/li&gt;
&lt;li&gt;log(x) is the natural logarithm of x&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Refining the Model&lt;/h3&gt;
&lt;p&gt;Next, I split the data into training and validation sets in a 70:30 ratio and created a linear regression using just two independent variables: ‘star rating’ and ‘length of review’. This model resulted in an error of &lt;strong&gt;~0.67&lt;/strong&gt; on the test data i.e. after submission.&lt;/p&gt;
&lt;p&gt;Next, I hypothesized that the good reviews were written by good &lt;strong&gt;reviewers&lt;/strong&gt; and for each review, calculated the average number of useful votes that the user writing the review received for all the other reviews that he/she wrote. Including this variable reduced the error dramatically to &lt;strong&gt;~0.55&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Next, I incorporated more user data i.e. the number of reviews written by the user, the number of funny/useful/cool votes given and the the average star rating. None of these variables proved to be predictive of the number of useful votes with linear regression so I tried random forests, but to no avail.&lt;/p&gt;
&lt;p&gt;Next, I incorporated business data to see if the type of business, the star rating or number of reviews received would increase the predictive power of the model. But again, these failed to reduce the error.&lt;/p&gt;
&lt;p&gt;Next, I incorporated checkin data to see if the number of checkins would improve the model. Again, this failed to reduce the error.&lt;/p&gt;
&lt;p&gt;Having exhausted all the easy options, I turned to text mining to analyze the actual content of the review. I split the reviews into two categories – ham (good reviews with more than five useful votes) and spam (bad reviews with five useful votes or less). For each category, I created a “term document matrix” i.e. a matrix with terms as columns, documents (review text) as rows and cells as the frequency of the term in the document. I then created a list of the most frequent terms in each category that were distinct i.e. that were only in one category or the other. To the model I added variables from the frequencies of each of these words and in addition added the frequencies of the exclamation mark (!) and comma (,). The final list of words for which I created frequency variables was:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;, (comma)&lt;/li&gt;
&lt;li&gt;!&lt;/li&gt;
&lt;li&gt;nice&lt;/li&gt;
&lt;li&gt;little&lt;/li&gt;
&lt;li&gt;time&lt;/li&gt;
&lt;li&gt;chicken&lt;/li&gt;
&lt;li&gt;good&lt;/li&gt;
&lt;li&gt;people&lt;/li&gt;
&lt;li&gt;pretty&lt;/li&gt;
&lt;li&gt;you&lt;/li&gt;
&lt;li&gt;service&lt;/li&gt;
&lt;li&gt;wait&lt;/li&gt;
&lt;li&gt;cheese&lt;/li&gt;
&lt;li&gt;day&lt;/li&gt;
&lt;li&gt;hot&lt;/li&gt;
&lt;li&gt;night&lt;/li&gt;
&lt;li&gt;salad&lt;/li&gt;
&lt;li&gt;sauce&lt;/li&gt;
&lt;li&gt;table&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The frequency variables improved the predictive power of the model significantly and resulted in an error of &lt;strong&gt;~0.52&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;Visualization of Final Model&lt;/h3&gt;
&lt;p&gt;Here is a heatmap of predicted (x-axis) vs actual (y-axis) useful votes:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/predicting-the-number-of-useful-votes-a-yelp-review-will-receive/newimage3.png&quot; alt=&quot;NewImage&quot; title=&quot;NewImage.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;For lower numbers of useful votes (i.e. up to ~8) there is a relatively straight diagonal line indicating that by-and-large the prediction and actual values coincide. Beyond this, the model starts to falter and there is a fair amount of scattering.&lt;/p&gt;
&lt;h3&gt;Improvements&lt;/h3&gt;
&lt;p&gt;I couldn’t find time to improve the model even further, but I am fairly confident that additional text mining approaches such as stemming and natural language processing would do so.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Big Data(bases): Making Sense of OldSQL vs NoSQL vs NewSQL</title>
      <link>https://akshayluther.com/2013/05/25/big-databases-making-sense-of-oldsql-vs-nosql-vs-newsql/</link>
      <guid isPermaLink="true">https://akshayluther.com/2013/05/25/big-databases-making-sense-of-oldsql-vs-nosql-vs-newsql/</guid>
      <pubDate>Sat, 25 May 2013 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;A few months ago, I had the great pleasure of meeting and discussing big data with Michael Stonebraker, a legendary computer scientist at MIT who specializes in database systems and is considered to be the &lt;a href=&quot;http://www.bizjournals.com/boston/blog/startups/2013/04/michael-stonebraker-big-data.html?page=all&quot;&gt;forefather of big data&lt;/a&gt;. Stonebraker developed INGRES, which helped pioneer the use of relational databases, and has formed nine companies related to database technologies.&lt;/p&gt;
&lt;p&gt;Until recently, the choice of a database architecture was largely a non-issue. Relational databases were the de-facto standard and the main choices were Oracle, SQL Server or an open source database like MySQL. But with the advent of big data, scalability and performance issues with relational databases became commonplace. For online processing, NoSQL databases have emerged as a solution to these problems. NoSQL is a catch-all for different kinds of database architectures — key-value stores, document databases, column family databases and graph databases. Each has it’s own relative advantages and disadvantages. However, in order to get scalability and performance, NoSQL databases give up “queryability” (i.e. not being able to use SQL) and ACID transactions.&lt;/p&gt;
&lt;p&gt;More recently a new type of database has emerged that offers high performance and scalability without giving up SQL and ACID transactions. This class of database is called NewSQL, a term coined by Stonebraker. He provides an excellent overview of OldSQL vs NoSQL vs NewSQL in &lt;a href=&quot;https://web.archive.org/web/20130521104934/http://www.slideshare.net/Dataversity/newsql-vs-nosql-for-new-oltp-michael-stonebraker-voltdb&quot;&gt;this video&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Some key points from the video:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQL is good.&lt;/li&gt;
&lt;li&gt;Traditional databases are slow not because SQL is slow. It’s because of their architecture and the fact that they are running code that is 30 years old.&lt;/li&gt;
&lt;li&gt;NewSQL provides performance and scalability while preserving SQL and ACID transactions by using a new architecture that drastically reduces overhead.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the video, Stonebraker talks about &lt;a href=&quot;http://voltdb.com/&quot;&gt;VoltDB&lt;/a&gt;, an open source NewSQL database that comes from a company of the same name founded by him. Some of the performance figures of VoltDB are pretty amazing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;3 million transactions per second on a “couple hundred cores”&lt;/li&gt;
&lt;li&gt;45x the performance of “a SQL vendor who’s name has more than three letters and less than nine”&lt;/li&gt;
&lt;li&gt;5-6 times faster than Cassandra and same speed as Memcached on key-value operations&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;VoltDB sounds like an extremely compelling alternative to NoSQL databases, and certainly warrants a look if you want to move from a traditional “OldSQL” database to one that is highly scalable and performant without losing SQL and ACID.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Amateur Data Scientist?: How I Built a Handwritten Digit Recognizer with 95% Accuracy</title>
      <link>https://akshayluther.com/2013/03/13/amateur-data-scientist-how-i-built-a-handwritten-digit-recognizer-with-95-accuracy/</link>
      <guid isPermaLink="true">https://akshayluther.com/2013/03/13/amateur-data-scientist-how-i-built-a-handwritten-digit-recognizer-with-95-accuracy/</guid>
      <pubDate>Wed, 13 Mar 2013 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Almost two years ago, I wrote a post entitled &lt;a href=&quot;https://akshayluther.com/2011/05/25/stats-are-sexy/&quot;&gt;Stats are Sexy&lt;/a&gt;, in which I mentioned the emerging discipline of data science. Soon after, I discovered the amazing platform &lt;a href=&quot;http://www.kaggle.com/&quot;&gt;Kaggle&lt;/a&gt;, which lets companies host Netflix Prize -style competitions where data scientists from all over the world compete to come up with the best predictive models. Fascinated, I really wanted to learn machine learning by competing in the “easy” &lt;a href=&quot;http://www.kaggle.com/c/digit-recognizer&quot;&gt;Digit Recognizer&lt;/a&gt; competition which requires taking an image of a handwritten digit, and determining what that digit is, but struggled to gather the know-how in the limited free time that I had. Instead, I quenched my desire to do innovative work with data by building data visualization showcases as a Technical Evangelist for Infragistics, my employer at the time: &lt;a href=&quot;http://labs.infragistics.com/silverlightdv/showcases/populationexplosion/&quot;&gt;Population Explosion&lt;/a&gt; and &lt;a href=&quot;http://labs.infragistics.com/silverlightdv/Showcases/flightwatcher/&quot;&gt;Flight Watcher&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now, as an MBA student at the Massachusetts Institute of Technology, I am taking a class called &lt;a href=&quot;https://web.archive.org/web/20130107100722/http://entrepreneurship.mit.edu:80/course/15071-analytics-edge-spring&quot;&gt;The Analytics Edge&lt;/a&gt;, which I am convinced is one of the most important classes I will take during my time at business school. More on that later. Part of my excitement for taking the class was to learn R, the most widely-used tool (by a long margin) among data scientists competing on Kaggle.&lt;/p&gt;
&lt;p&gt;After several lectures, I had some basic knowledge of how to identify and solve the three broad types of data mining problems – regression, classification and clustering. So, I decided to see if I could apply what I had learnt so far by revisiting the Digit Recognizer competition on Kaggle, and signed up as a competitor.&lt;/p&gt;
&lt;p&gt;I recognized this as a classification problem – given input data (an image), the problem is to determine which class (a number from 0 to 9) it belongs to. I decided to try CART (Classification and Regression Trees). I used 70% of the data (which contains 42,000 handwritten digits along with labels that identify what numbers the digits actually are) to build a predictive model, and 30% to test it’s accuracy. The CART model was only about 62% accurate in recognizing digits, so I tried Random Forests, which to my surprise turned out to be ~90% accurate! I downloaded the “real” test set which contains 28,000 handwritten digits, ran it through the model and created a file that predicted what each of the digits actually was.&lt;/p&gt;
&lt;p&gt;I uploaded my prediction file and to my surprise it turned out that the accuracy was 93%. I increased the number of tree in the random forests to see if I could do better, and it indeed worked, bumping up the accuracy to 95% and moving me up 43 positions in the leaderboard:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/amateur-data-scientist-how-i-built-a-handwritten-digit-recognizer-with-95-accuracy/digit-submission.png&quot; alt=&quot;Digit submission&quot; title=&quot;digit submission.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;Here is the code in it’s entirety: &lt;a href=&quot;https://dl.dropbox.com/u/15104486/DigitRecognizer.R&quot;&gt;DigitRecognizer.r&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I was amazed that I was able to build something like this in a couple of hours in under 30 lines of code (including sanity checks). (Of course, I didn’t have to clean and normalize the data, which can be painful and time-consuming.) Next up: a somewhat ambitious project to recognize gestures made by moving smartphones around in the air. Updates to follow in a future post.&lt;/p&gt;
&lt;p&gt;What’s really exciting from a business standpoint is that predictive analytics can be applied in a large number of business scenarios to gain actionable insights or to create economic value. Have a look at the competitions on Kaggle to get an idea.&lt;/p&gt;
&lt;p&gt;It has been clear for some time that companies can obtain a significant competitive advantage through data analytics, but this is not limited to specific industries. A few experts from the MIT Sloan Management Review &lt;a href=&quot;https://web.archive.org/web/20130312043900/http://sloanreview.mit.edu:80/reports/analytics-innovation/introduction/&quot;&gt;2013 Data &amp;amp; Analytics Global Executive Study and Research Project&lt;/a&gt; published only a few days ago hint at the scale of “The Analytics Revolution”:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;How organizations capture, create and use data is changing the way we work and live. This big idea, which is gaining currency among executives, academics and business analysts, reflects a growing belief that we are on the cusp of an analytics revolution that may well transform how organizations are managed, and also transform the economies and societies in which they operate.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Fully 67% of survey respondents report that their companies are gaining a competitive edge from their use of analytics. Among this group, we identified a set of companies that are relying on analytics both to gain a competitive advantage and to innovate. These Analytical Innovators constitute leaders of the analytics revolution. They exist across industries, vary in size and employ a variety of business models.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If I was enthused about the power of analytics before, I am even more convinced now. Which is why I consider classes like the Analytics Edge that teach hard analytics skills to be extremely valuable for managers in the current global business environment.&lt;/p&gt;
&lt;p&gt;Will you be an Analytics Innovator?&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Map-Based Visualization Revisited</title>
      <link>https://akshayluther.com/2012/10/16/map-based-visualization-revisited/</link>
      <guid isPermaLink="true">https://akshayluther.com/2012/10/16/map-based-visualization-revisited/</guid>
      <pubDate>Tue, 16 Oct 2012 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;In &lt;a href=&quot;https://akshayluther.com/2012/01/31/visualizing-jet-airways-india-domestic-flight-schedules/&quot;&gt;January&lt;/a&gt;, I created an animated visualization showing the &lt;a href=&quot;https://web.archive.org/web/20130724032047/http://flightwatcher.apphb.com/&quot;&gt;movement of domestic flights of Indian carrier Jet Airways over the course of a day&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/map-based-visualization-revisited/al-flights.png&quot; alt=&quot;Al flights&quot; title=&quot;al flights.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;The time of day is depicted using a slider that moves across horizontally over time:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/map-based-visualization-revisited/al-time.png&quot; alt=&quot;Al time&quot; title=&quot;al time.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;The motivation behind this visualization, besides trying to build something cool, was to showcase the capabilities of my former employer’s Geographic Map API and encourage developers to build map-based visualizations.&lt;/p&gt;
&lt;p&gt;I am thrilled to see that a similar approach is taken by Google’s visualization of &lt;a href=&quot;http://www.morethanamap.com/demos/visualization/flights&quot;&gt;flights to and from London&lt;/a&gt;, which was released earlier this month:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/map-based-visualization-revisited/google-flights.png&quot; alt=&quot;Google flights&quot; title=&quot;google flights.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;The time of day in this case is depicted using a simple clock:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/map-based-visualization-revisited/google-time.png&quot; alt=&quot;Google time&quot; title=&quot;google time.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;This visualization is part of the &lt;a href=&quot;http://www.morethanamap.com/&quot;&gt;More Than a Map&lt;/a&gt; website showcasing the capabilities of the Google Maps API – do check it out.&lt;/p&gt;
&lt;p&gt;I’ve always been a big fan of Google Maps. I remember looking at the newly released Street View feature in 2007 and shaking my head in awe. And &lt;a href=&quot;http://support.google.com/maps/bin/answer.py?hl=en&amp;amp;answer=1630790&quot;&gt;MapsGL&lt;/a&gt; released earlier this year produced a similar reaction.&lt;/p&gt;
&lt;p&gt;What’s great for developers is that they can leverage all of the goodness of Google Maps via the API for free! What will you build?&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Critical Features for Multi-Device Applications</title>
      <link>https://akshayluther.com/2012/08/21/critical-features-for-multi-device-applications-2/</link>
      <guid isPermaLink="true">https://akshayluther.com/2012/08/21/critical-features-for-multi-device-applications-2/</guid>
      <pubDate>Tue, 21 Aug 2012 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;I wrote a feature article for &lt;a href=&quot;https://web.archive.org/web/2012/http://miter.mit.edu/&quot;&gt;MIT Entrepreneurship Review&lt;/a&gt;, entitled &lt;a href=&quot;https://web.archive.org/web/20121020114748/http://miter.mit.edu/article/critical-features-multi-device-applications&quot;&gt;Critical Features for Multi-Device Applications&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Whether or not &lt;a href=&quot;https://akshayluther.com/2012/07/10/the-morphing-device/&quot;&gt;morphing devices&lt;/a&gt; will become the norm, an increasing number of mainstream consumers are interacting daily with devices that have different-sized displays: PCs, smartphones, tablets, TVs, cars, smart watches, smart glasses etc. To be successful, software developers must build “morphing” applications that elegantly adapt to these different form factors. Further, morphing applications need to cater to the different contexts in which they are used. For example, email on a smart watch needs to be vastly different from email on a TV screen.&lt;/p&gt;
&lt;p&gt;It is not just developers of consumer applications who need to build morphing applications. With the consumerization of IT and increasing numbers of employees telecommuting and working on-the-go, more and more business users are using tablets and phones in addition to PCs to get work done. Accordingly, business applications increasingly need to run on multiple devices in different usage scenarios. Consider for example, Microsoft’s popular intranet content management and document management software &lt;a href=&quot;http://sharepoint.microsoft.com/en-us/Pages/default.aspx&quot;&gt;SharePoint&lt;/a&gt;, which is designed to be accessed via a PC browser. When the iPad was released, Uruguayan startup SouthLabs recognized the subpar experience of SharePoint on the iPad and built &lt;a href=&quot;https://web.archive.org/web/20120819053851/http://www.southlabs.com:80/products.aspx&quot;&gt;SharePlus&lt;/a&gt;, a native iPad client for SharePoint. Since its release, SharePlus has been downloaded more than half a million times and versions for the iPhone, Mac OS, Android and Blackberry Playbook have been added.&lt;/p&gt;
&lt;p&gt;With the proliferation of device ownership, it is becoming normal to begin an activity on one device and continue it on another. For example, one could start working on a presentation on the PC at work but finish it on a tablet on the train home. Similarly, one could “experience” a book by reading it on an e-reader most of the time, but having it read out as an audiobook while in the car. The device becomes incidental to the activity and simply represents the best usage scenario at the time. Applications must recognize this and provide a frictionless experience across devices.&lt;/p&gt;
&lt;p&gt;So how does one go about building such an application? Here are my guidelines on building morphing applications for post-PC era devices.&lt;/p&gt;
&lt;h2&gt;1. Have a solid cross-platform strategy&lt;/h2&gt;
&lt;p&gt;Lest it not be obvious, you must think carefully about which platforms your application will support and use this strategy as a critical input for creating the underlying application architecture. At the minimum, you should consider the web, Windows, OS X, iPhone, iPad, Windows Phone, Android (phone and tablet), Windows 8 tablet and Blackberry. Applications must look and feel like they were designed for the device. Some applications that provide a great cross-platform experience are Gmail, DropBox, Evernote, Remember The Milk, Netflix, Spotify, Skype and Pocket. Common strategies include responsive web design, native applications for each platform and near-native applications generated by a tool such as Adobe PhoneGap or Appcelerator Titanium from a common core developed using web technologies (Javascript, HTML and CSS.)&lt;/p&gt;
&lt;h2&gt;2. Synchronize application state across devices&lt;/h2&gt;
&lt;p&gt;The ability of an application on any particular device to pick up from where the user left off on a different device is critical in ensuring a seamless user experience. A good example of this is Netflix, which presents a list of videos under a “Continue Watching” header, allowing one to, for example, start watching a movie on the big screen TV in the living room and easily continue watching it on the tablet in the bedroom.&lt;/p&gt;
&lt;h2&gt;3. Synchronize application configuration across devices&lt;/h2&gt;
&lt;p&gt;Many applications are highly personalized via user settings. Copying these settings across to a fresh installation of an application on a new device makes the user immediately comfortable in a new environment. Once the application is running on multiple devices, synchronizing changes in any one device provides consistency in the user experience. Google Chrome does this really well. If you sign in to Google Chrome, your bookmarks, extensions, apps, theme and any other browser preferences are saved and synced to your Google Account. These are then loaded when you sign in to Google Chrome on another device.&lt;/p&gt;
&lt;h2&gt;4. Store permanent data in the cloud&lt;/h2&gt;
&lt;p&gt;Manually managing data across devices is painful and gets exponentially more difficult as more devices are involved. Consider photos for example. A typical user might have a laptop, a tablet, a smartphone, a point-and-shoot camera and a DSLR. Each of these has at least one camera and most have at least basic editing capabilities. One might want to sort and edit photos taken using the DSLR on the tablet first, and then do more advanced editing on the laptop. Such scenarios are only practical if permanent storage is centralized in the cloud. Therefore, the device itself should not be relied upon for permanent storage. Instead, it should be used for temporary storage in an on-demand fashion, like buffering media for responsive playback, editing or for specific offline scenarios use such as travel where connectivity is slow, expensive or unavailable.&lt;/p&gt;
&lt;p&gt;A cloud-first strategy doesn’t just allow convenience and flexibility. It is more cost-effective for the consumer since minimizing the amount of offline storage required makes devices more affordable. Further, it makes data social by enabling sharing and collaboration. Additionally, it makes data more secure. If important data are stored in the cloud, the repercussions of losing one’s laptop or tablet are limited to the cost of replacing it. All of these benefits can be realized by enterprises through private clouds if they are concerned about giving up control of their data to a third-party.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.spotify.com/us/desktop-splash/?utm_source=spotify&amp;amp;utm_medium=web&amp;amp;utm_campaign=start&quot;&gt;Spotify&lt;/a&gt; is an excellent example of cloud-first storage. It provides unlimited streaming of music for a monthly fee, obviating the need for music ownership. It allows downloading of tracks to local storage for listening offline.&lt;/p&gt;
&lt;h2&gt;5. Get user experience professionals to design the user interface&lt;/h2&gt;
&lt;p&gt;Let’s be honest. Most software is difficult to use. I say this not as an aloof armchair critic but as a technologist who has made a living from designing and writing software for more than a decade. The reason for this is that software is by-and-large designed by engineers. Software is like an &lt;a href=&quot;http://www.joelonsoftware.com/articles/fog0000000356.html&quot;&gt;iceberg&lt;/a&gt;. What the user sees, what the user cares about, and what the user interacts with is only 10%. The remaining 90%, the inner workings, the nuts and bolts and gears, the part that gets the “real” work done, is hidden. That’s what the bulk of the engineering effort goes into--and it’s difficult to get right. More often that not, the user interface is slapped on without much thought to making it easy to use. Its main purpose is to expose the inner workings so that the user can use it. Ironically, the user interface, the 10% that is neglected, is at least as important as the inner workings. But engineers are notorious for not appreciating that users are not as technically savvy nor familiar with the software.&lt;/p&gt;
&lt;p&gt;Add multiple devices to the mix and the task of designing a great user experience becomes far more challenging. An appreciation of the subtleties of each device that the application is to run on is required. This is why graphics designers and interaction designers must design the user interface, while working closely with the engineering team.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>The Morphing Device</title>
      <link>https://akshayluther.com/2012/07/10/the-morphing-device/</link>
      <guid isPermaLink="true">https://akshayluther.com/2012/07/10/the-morphing-device/</guid>
      <pubDate>Tue, 10 Jul 2012 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;I wrote a feature article for &lt;a href=&quot;https://web.archive.org/web/2012/http://miter.mit.edu/&quot;&gt;MIT Entrepreneurship Review&lt;/a&gt;, entitled &lt;a href=&quot;https://web.archive.org/web/20121020112758/http://miter.mit.edu/article/morphing-device&quot;&gt;The Morphing Device&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After the PC reigning supreme as the primary computing device for three decades, the post-PC era is now indisputably upon us. The trend of computing devices becoming faster, smaller and cheaper coupled with the growing ubiquity of fast wireless Internet connectivity culminated in the smartphone entering the mainstream. Last year, smartphone shipments surpassed PC shipments for the first time. More recent developments such as tablets and e-readers have also rapidly entered the mainstream. These affordable, specialized devices connected through cloud services are challenging the way we lead our lives in both the developed and developing worlds. Further, a slew of technologies in various stages of maturity (e.g. smart watches, smart cars and smart glasses) promise to further redefine the way we live and think in the near future. But essentially, post-PC era devices are simply connected computers with different sized displays. Correspondingly, a “morphing device,” a powerful and portable device that elegantly transforms to power different-sized displays and seamlessly adapts to different contexts, is patently desirable. Such a device with the smartphone at its core is not just feasible but also inevitable.&lt;/p&gt;
&lt;h2&gt;The death of the desktop and the rise of the morphing laptop&lt;/h2&gt;
&lt;p&gt;One type of morphing device is commonplace today: the laptop that morphs into a desktop. Although PCs are becoming less relevant in the grand scheme of things, within the PC class of devices, desktops have been becoming less relevant in relation to laptops for quite some time. There was a time when PC hardware was improving so rapidly that your PC felt obsolete soon after you bought it. You had to replace your PC at least every couple of years. Doesn’t that sound like smartphone technology today? But PC technology has matured and ownership lifecycles are much longer now. Over time, as laptops continued to become smaller, cheaper and more powerful, the power versus size equation of laptops became more and more appealing. In the last quarter of 2008, laptop sales overtook desktop sales for the first time. Today, desktops are used only for very computationally intensive niche enthusiast or professional applications like software development, high-end gaming, video editing and 3D graphics work. Meanwhile, laptops have reached the point where they have lots of latent computing power, more power than is really required for regular use. Accordingly, today’s laptops rarely run at full performance. Instead, they throttle back processor performance depending on what applications are running to conserve battery life. Although desktops are all but dead for everyday consumers, the appeal of a large desktop-sized display still remains, either on its own or as a primary display with the laptop as a secondary display. Thanks to its latent computing power, any mid-range laptop today will happily power a large high resolution display in addition to it’s own. Plug in a mouse and an external full-sized keyboard and the transformation from a laptop to a desktop is complete. In the context of the morphing laptop, I refer to the desktop monitor as a “morph-capable display” or “child device.”&lt;/p&gt;
&lt;h2&gt;The smartphone as the center of the personal computing universe&lt;/h2&gt;
&lt;p&gt;Similarly smartphone technology is maturing rapidly. On average, phone screens have been steadily growing in size. However, unless our fingers and pockets miraculously grow overnight, phones cannot practically have screens larger than around 5 inches. Today’s most advanced phones like the Samsung Galaxy S III and the HTC One X with 4.8/4.7 inch displays have all but reached this limit. These are bright, high-contrast displays sporting pixel densities of more than 300 pixels per inch, which according to Apple, is the maximum number of pixels that the human retina can distinguish at 10 - 12 inches, the normal viewing distance for a phone. Both these phones are wafer thin with a sub-9mm thickness. Do we really need phones slimmer than that? They also have quad core processors. Do eight cores really make sense? While there is room for improvement in areas such as battery life, most hardware specifications are clearly plateauing.&lt;/p&gt;
&lt;p&gt;So what’s next then? Simply, that the hardware technology available in the top-of-the-line phones of today will rapidly become much cheaper and therefore much more accessible by the mainstream consumer. Further, manufacturers will be able to pack in more and more processing power into these phones while keeping costs down, resulting in lots of latent computing power. So much in fact that the smartphone will be able to drive all of our personal computing displays from watches to desktops to cars.&lt;/p&gt;
&lt;p&gt;Let us look at how the smartphone might power the devices we’re most familiar with. If we can currently morph a laptop into a desktop by adding a large display and a keyboard and mouse, then it’s not hard to imagine a powerful phone that morphs into a tablet. And that tablet into a laptop and that laptop into a desktop! In fact, this kind of technology is already starting to appear. The innovative upcoming &lt;a href=&quot;http://www.asus.com/Mobile/PadFone/&quot;&gt;Asus PadFone&lt;/a&gt; is a smartphone that slots in to the “PadFone station” (essentially just a dumb tablet-sized display) to convert it into a tablet. A keyboard dock converts it into a laptop-like device. It even has a stylus that doubles as a Bluetooth headset for using the phone while in its tablet incarnation. I don’t believe it can power a desktop-sized display…yet. It certainly could though; &lt;a href=&quot;https://web.archive.org/web/20120712000930/http://www.ubuntu.com:80/devices/android?&quot;&gt;Ubuntu for Android&lt;/a&gt; should leave you in no doubt that high-end phones are powerful enough for traditional PC-style computing. Even though it has several drawbacks, the PadFone is the currently the best embodiment of the concept of the morphing device and a glimpse of what the future holds.&lt;/p&gt;
&lt;p&gt;Wireless technologies will play a key role in absorbing the morphing device into the mainstream while augmenting its capabilities. Currently, to morph a laptop into a desktop we can connect a Bluetooth keyboard and mouse wirelessly, but still have to physically plug the desktop monitor into the display port of the laptop. This is set to change as technologies like WiDi and WirelessHD, which can transmit an HD video signal wirelessly to a larger display, become de rigueur. Wireless display technology, coupled with NFC (near field communication) that allows devices in close proximity to communicate with each other, can make device morphing natural and spontaneous. Imagine setting your NFC-equipped laptop on your desk. As you do that, the NFC sensors in the two 22” displays on your desktop bring them to life. Yes, you will still have to plug the power adapter into your laptop to charge it, but there’s an upcoming cure for that too—inductive charging! Similarly, imagine a smartphone equipped with wireless display. Touch it to your “dumb tablet display” and it awakens. Since it is not physically docked to the tablet, you can continue using your phone as before—it simply powers the tablet in addition. Set both on your desk and you can now run large screen applications on your desktop monitor in addition to the tablet.&lt;/p&gt;
&lt;p&gt;The morphing smartphone will obviate the need for internal electronics (processor, memory, graphics, storage, network/cellular connectivity, audio etc.) in the child devices that it morphs into, leaving essentially dumb displays behind. Since these internal electronics make up the bulk of the cost, morph-capable displays will be extremely thin, light and affordable. My current laptop, the 256GB 13” MacBook Air, is what I consider to be the optimum balance between portability and power. It has a thickness that varies between 0.11 and 0.68 inches, weighs 2.96 pounds and retails for $1,499. With most internal electronics gone, the morph-capable equivalent – essentially just a screen, keyboard and trackpad – would be as thin as the current one at its thinnest point and weigh a fraction as much: a mere sliver at .11 inches (3mm) and ~10 ounces (300g)! Instead of replicating electronics as they do currently, morph-capable devices could supplement the smartphone’s electronics with specialized capabilities. For example, the PadFone station has a large battery in it that can charge the phone. Similarly, a keyboard dock could have 3D acceleration hardware to drive high-end graphics applications such as games on a large display. A desktop monitor could have additional storage or connectivity via USB ports. Additionally, when you upgrade the phone, all of the devices that it morphs into get upgraded simultaneously. Further, you can upgrade the child devices independently while retaining their smarts in the morphing phone. One might argue that the morphing device creates too much dependency on the phone, but all data will be stored / backed up on the cloud, so if your phone gets lost or stolen or goes belly up, you simply need to get a new one and restore settings and data from the cloud.&lt;/p&gt;
&lt;p&gt;The morphing smartphone will vastly improve the affordability of post-PC era technologies that are set to permeate every aspect of our daily lives. In the car of the near future, ageing audio system panels with analog buttons will be replaced by a main touchscreen for applications like navigation and audio. A customizable display for the driver will replace traditional analogue gauges. Anti-socially, but inevitably, we will also see touchscreens for rear passengers for entertainment applications - music, videos and games. Ford’s &lt;a href=&quot;https://web.archive.org/web/20120727064445/http://www.ford.com:80/technology/sync/features/&quot;&gt;SYNC&lt;/a&gt; hints at the future of personal automotive computing. Wearable computing is also entering the mainstream. A smart watch runs simple apps via an interface on your wrist, for hands-free activities like sporting and fitness. The iPod Nano with a &lt;a href=&quot;http://www.iwatchz.com/&quot;&gt;watch strap&lt;/a&gt; , the &lt;a href=&quot;http://www.sonymobile.com/us/products/accessories/smartwatch/&quot;&gt;Sony SmartWatch&lt;/a&gt; and the &lt;a href=&quot;http://getpebble.com/&quot;&gt;Pebble&lt;/a&gt; are some early examples of this technology. In the same vein, Google’s &lt;a href=&quot;https://plus.google.com/111626127367496192147/posts&quot;&gt;Project Glass&lt;/a&gt; will offer a hands-free computing environment via a heads-up display and natural language voice commands. These types of devices fit in perfectly into the model of the morphing smartphone. To supplement the phone’s core capabilities, a car could have a more accurate GPS and specialized electronics for diagnostics. A smart watch could have a heart rate monitor and a pedometer. For adventure sports such as hang-gliding it could have an altimeter and a barometer. With each additional device, the benefits of being able the upgrade the phone and the child device independently are cumulative. Just got a new car? No problem—just dock your phone into the main console and your personalized display will come up just as before, maybe on a bigger, brighter and sharper display. Perhaps the kids can now play games against each other via the new morph-capable displays in the back seats.&lt;/p&gt;
&lt;h2&gt;The morphing OS is key in the battle for post-PC era supremacy&lt;/h2&gt;
&lt;p&gt;The success of the morphing phone hinges on a crucial factor: the morphing operating system, a full-fledged desktop OS at its core with functionality and features borrowed from a phone OS. With the ability to support numerous devices, the morphing operating system needs to combine the usability of a phone OS with the power of a desktop OS. The desktop-style features would largely be hidden until the phone is morphed into a device with a larger display such as a tablet or a desktop monitor. Conversely, it would present more minimally on the likes of automotive displays, smart watches and smart glasses.&lt;/p&gt;
&lt;p&gt;The incumbent heavyweights with desktop and mobile OS’s—Google, Apple and Microsoft—are in the best position to push such a hybrid OS. And their respective operating systems are beginning to converge. While Google initially released different versions of its mobile operating system for tablets and phones, they were merged in version 4.0 (Ice Cream Sandwich). Further, Android already powers numerous devices such as smart watches, headphones, refrigerators, smart TVs, home automation systems and fitness equipment. Sergey Brin has publicly stated that Android and Chrome OS (the company’s desktop OS) are likely to converge over time. Similarly, Apple’s mobile OS iOS powers both the iPhone and the iPad. OS X Lion, the current version of its desktop OS borrows features such as multitouch gestures, App Store and Launcher from iOS. Mountain Lion, the next version, borrows numerous more such as Messages, Notes, Reminders and Notification Center.&lt;/p&gt;
&lt;p&gt;Interestingly, Microsoft, the underdog in this space has a powerful edge over Google and Apple. The dominant tablet operating systems iOS and Android are hopelessly inadequate for anything that resembles “work.” However, Microsoft’s recently announced Surface tablet runs Windows 8, a full-fledged desktop operating system. Even more significantly, the next version of its phone OS is built around the core of Windows.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Chroma Chrono: Using Color to Visualize Time</title>
      <link>https://akshayluther.com/2012/07/08/chroma-chrono-using-color-to-visualize-time/</link>
      <guid isPermaLink="true">https://akshayluther.com/2012/07/08/chroma-chrono-using-color-to-visualize-time/</guid>
      <pubDate>Sun, 08 Jul 2012 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;The other day, it occurred to me that one of the oldest and simplest visualizations is the analog clock–it is a visualization of time using angles on a circular scale.&lt;/p&gt;
&lt;p&gt;So, I decided to experiment with using color to visualize time and the result is Chromo Chrono:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://dl.dropbox.com/u/15104486/ChromaChrono/pulse.html&quot;&gt;&lt;strong&gt;Chroma Chrono: Using Color to Visualize Time&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It comes in two flavors. This is Pulse:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/chroma-chrono-using-color-to-visualize-time/1.png&quot; alt=&quot;1&quot; title=&quot;1.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;A series of concentric circles, going outwards from the centre, represent the hour, minute, second and millisecond. Each circle is colored on a scale that ranges from orange to black.&lt;/p&gt;
&lt;p&gt;Depending on whether it is AM or PM, the innermost (hour) circle, gets brighter or darker. It is orange at noon and as the day progresses, it gets darker until it is black at midnight. From midnight to noon, it get progressively brighter until it is orange at noon and the cycle starts again.&lt;/p&gt;
&lt;p&gt;Similarly, the minute and second circles go from orange to black once every hour and minute respectively in the AM and in the reverse direction in the PM. The millisecond circle pulses from orange to black or vice versa once every second.&lt;/p&gt;
&lt;p&gt;This mechanism is inspired by nature–the overall brightness of the clock is an approximation of the overall brightness of the sky.&lt;/p&gt;
&lt;p&gt;The Kinetic works on the same principle, except it has rings instead of circles and doesn’t show milliseconds:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/chroma-chrono-using-color-to-visualize-time/2-anno.png&quot; alt=&quot;2 anno&quot; title=&quot;2 anno.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;The main difference, however is a guide inside of each ring that makes it easier to tell the time. In each ring, the point where the color of the ring matches the color of the guide represents the time in exactly the same way as on a traditional analog clock. These points are highlighted using green arrows. If you look at the second ring closely, you will notice that it appears to be somehow moving. This an optical illusion caused by the fact that the &lt;em&gt;point at which the ring and guides match&lt;/em&gt; is moving around the circumference of the clock.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Welcome to the Post PC Era</title>
      <link>https://akshayluther.com/2012/04/21/welcome-to-the-post-pc-era/</link>
      <guid isPermaLink="true">https://akshayluther.com/2012/04/21/welcome-to-the-post-pc-era/</guid>
      <pubDate>Sat, 21 Apr 2012 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Something strange and wonderful is happening. The world undergoing a radical change driven by technology at a phenomenal and unprecedented pace. Technology has of course been changing our lives for the better since the invention of the wheel. Modern society has transformed rapidly since the Industrial Revolution, following which we have had the Atomic, Jet and Space Ages. We are now in the Digital Age, marked by two key inventions: the computer and the internet. These two inventions have made our lives unrecognizable in under a generation, but now we are at the brink of a major revolution within the Digital Age itself – the Post PC Era.&lt;/p&gt;
&lt;p&gt;I started using computers in the late 80s, playing games like Space Invaders on my father’s &lt;a href=&quot;http://www.flickr.com/photos/oschene/4761399562/&quot;&gt;Sharp “laptop”&lt;/a&gt; with a 7 MHz 8088 processor, two 720K 3.5″ floppy drives (no hard drive), 640KB or RAM and MS-DOS 4.1. A couple of years later I got my very own machine, a Packard Bell desktop with a 386 processor, 2MB RAM, 20MB hard drive, 3.5″ and a 5.25″ floppy drives, a 14″ VGA monitor and an external NEC single speed CD-ROM drive, and taught myself programming on it. It was primarily a DOS machine, and Windows 3.1 crawled on it. Ah, nostalgia! Those specs are laughable by today’s standards, but the basic design of laptops and desktops has essentially remained the same. What’s changed drastically over time however, is PC penetration. Back then, PCs were the largely the purview of the technologically privileged few. Microsoft was on the ascendancy, and Bill Gates the pioneer was my hero. Nearly two decades hence, the PC has reached ubiquity. Gates’ dream of a computer on every desktop, at least in the developed world, has been achieved. The following chart (from &lt;a href=&quot;http://www.asymco.com/2012/01/17/the-rise-and-fall-of-personal-computing/&quot;&gt;asymco&lt;/a&gt;) tells the story:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/welcome-to-the-post-pc-era/asymco1-scaled1000.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/welcome-to-the-post-pc-era/asymco1-scaled1000.png&quot; alt=&quot;Asymco1&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For three decades, the PC has been the primary computing device, but now all that is changing with the explosive growth of smartphones, tablets and other cheap computing devices. Another chart (from &lt;a href=&quot;http://www.asymco.com/2012/01/17/the-rise-and-fall-of-personal-computing/&quot;&gt;asymco&lt;/a&gt;) should leave you in no doubt as to the declining role of of PCs:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/welcome-to-the-post-pc-era/asymco2-scaled1000.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/welcome-to-the-post-pc-era/asymco2-scaled1000.png&quot; alt=&quot;Asymco2&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So, why is this happening? There are two fundamental reasons. The first is that the trend of computers becoming faster, smaller and cheaper has reached the stage where an incredible amount of computing power is available in an affordable device that fits in your pocket. The PC is a general purpose computing device, and was the de-facto choice for both creation and consumption activities. Now however, more specialised devices can be used, especially for consuming content. A computer to listen to music? The iPod. A computer to read books? The Kindle. You get the picture. The second is the ubiquity of fast, wireless internet connectivity – WiFi and mobile broadband. This means that you don’t need a PC to access the internet anymore. It’s far more convenient to whip out your smartphone to access your email or look up the meaning of &lt;a href=&quot;http://en.wikipedia.org/wiki/Synecdoche&quot;&gt;synecdoche&lt;/a&gt;. The Post PC Era is all about affordable, connected, specialised devices.&lt;/p&gt;
&lt;p&gt;As we break free from the confines of the PC, amazing new possibilities emerge. Possibilities that challenge the way we lead our lives. As an avid technologist, I have experienced the start of this change first-hand, and it has been striking. For thirty years there hasn’t been much change in the way we have used PCs apart from a general shift towards laptops versus desktops. All this changed virtually overnight with the advent of the smartphone to rule them all, the iPhone. I distinctly remember the aha moment when I realised the power of having “the internet in your pocket”. I had moved to London in late 2008 from Australia (where the iPhone wasn’t available when I left), so I was looking forward getting the iPhone once I settled in. The US Open started a few days after I arrived in London and one day, during lunch with some friends, someone asked what the current match score was. My first thought was to go to the nearest TV, but someone whipped out their shiny iPhone and looked up the score in a matter of seconds. I sat there smiling and shaking my head. I got my iPhone 3G soon after that, and it changed my life. The internet became an extension of my brain. Since then, smartphones have become almost ubiquitous in the developed world. I now have an iPad in addition to my smartphone and laptop, and I am finding myself using my laptop less and less when it comes to consuming content. Since London, I’ve been living in India where my favourite magazine Wired isn’t easily available and is expensive when it is. My tablet aha moment came when I discovered I could finally read Wired regularly by subscribing to the iPad edition which apart from being much more affordable is a better experience than the paper version since it is interactive. The time will soon come when high-quality tablets are as ubiquitous as smartphones and PCs. But we have only scratched the surface of what is possible in the Post PC Era. In future posts, I will discuss what to expect in areas such as business, entertainment, healthcare, finance, education, manufacturing, transport and software development.&lt;/p&gt;
&lt;p&gt;So far I have only talked about the developed world, but the fact is that more than 85% of the world’s population lives in developing countries, a figure that is growing. From a global perspective, the most promising aspect of the Post PC Era is the impact it will have in the developing world. Two years ago I tweeted about a &lt;a href=&quot;http://www.telegraph.co.uk/news/worldnews/asia/india/7593567/India-has-more-mobile-phones-than-toilets-UN-report.html&quot;&gt;UN study&lt;/a&gt; which revealed that far more people in India had access to cellphones than toilets. With prices of low-end smartphones falling sharply, a future where virtually everyone in the developing world has a smartphone is just around the corner. For the majority of people in the world, smartphones will be the first internet access device. If basic text-based services such as &lt;a href=&quot;http://www.bbc.co.uk/news/business-11793290&quot;&gt;M-PESA&lt;/a&gt; can have such a profound impact on millions of people, imagine the possibilities of a full-blown smartphone and other Post PC Era devices! Efforts such as Intuit’s &lt;a href=&quot;https://web.archive.org/web/20120629235916/http://www.txtweb.com:80/&quot;&gt;txtWeb&lt;/a&gt; are commendable, but organisations looking to innovate and have an impact in this space must, like Jeff Bezos, take a long-term view.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Visualizing Jet Airways India Domestic Flight Schedules</title>
      <link>https://akshayluther.com/2012/01/31/visualizing-jet-airways-india-domestic-flight-schedules/</link>
      <guid isPermaLink="true">https://akshayluther.com/2012/01/31/visualizing-jet-airways-india-domestic-flight-schedules/</guid>
      <pubDate>Tue, 31 Jan 2012 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Like most airlines, Jet Airways publishes flight schedules on their &lt;a href=&quot;https://web.archive.org/web/20111219143128/http://www.jetairways.com:80/EN/GL/PlanYourTravel/Schedules.aspx?&quot;&gt;website&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I thought it would be interesting to bring these these schedules to life by creating a visualization showing flights take-off and land as the day progresses.&lt;/p&gt;
&lt;p&gt;The result is the &lt;a href=&quot;https://web.archive.org/web/20130724032047/http://flightwatcher.apphb.com/&quot;&gt;&lt;strong&gt;Infragistics Flight Watcher&lt;/strong&gt;&lt;/a&gt; app, a showcase for visualizing flights schedules with the Infragistics Geographic Map 2011.2 CTP:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/visualizing-jet-airways-india-domestic-flight-schedules/image.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/visualizing-jet-airways-india-domestic-flight-schedules/image.png&quot; alt=&quot;Image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Searchable Menus: Using Text to Navigate Complexity</title>
      <link>https://akshayluther.com/2012/01/29/searchable-menus-using-text-to-navigate-complexity/</link>
      <guid isPermaLink="true">https://akshayluther.com/2012/01/29/searchable-menus-using-text-to-navigate-complexity/</guid>
      <pubDate>Sun, 29 Jan 2012 00:00:00 GMT</pubDate>
      <description>&lt;h3&gt;&lt;strong&gt;The Problem&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;One of my favourite features of &lt;a href=&quot;https://akshayluther.com/2011/10/28/samsung-galaxy-sii-the-best-smartphone-you-can-buy-today/&quot;&gt;my Samsung Galaxy SII&lt;/a&gt; is it’s ability to create a Wi-Fi hotspot. I find myself using it regularly to give my laptop internet access when I forget my 3G USB modem at home or when I travel to a city where the modem’s carrier doesn’t have 3G services.&lt;/p&gt;
&lt;p&gt;The hotspot works like a charm, but getting to the menu item to activate it however, is a pain as the following screenshots show:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/searchable-menus-using-text-to-navigate-complexity/2image-png-scaled-1000.jpg&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/searchable-menus-using-text-to-navigate-complexity/2image-png-scaled-1000.jpg&quot; alt=&quot;2image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Similarly, the other day I was editing a document in Word and wanted to edit the header. Call me stupid, but I couldn’t figure out how to do it! After a couple of minutes of trying to figure it out, I ended up having to Google “Word 2010 Header”.&lt;/p&gt;
&lt;p&gt;Both these scenarios highlight the huge and ever-growing problem of navigating complexity in software. But it’s not as if software developers are not trying to address this issue. Microsoft for example, has put in a massive amount of effort in making the Office menu usable as it grown more complex, and their latest solution is the Office Ribbon. You can read &lt;a href=&quot;http://blogs.msdn.com/b/jensenh/archive/2008/03/12/the-story-of-the-ribbon.aspx&quot;&gt;the story of the Office Ribbon&lt;/a&gt;, and take a trip down memory lane. I “borrow” a couple of slides from Jensen Harris’ deck to quantitatively illustrate how menu complexity has grown over the years:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/searchable-menus-using-text-to-navigate-complexity/image1.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/searchable-menus-using-text-to-navigate-complexity/image1.png&quot; alt=&quot;Image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/searchable-menus-using-text-to-navigate-complexity/menus2-scaled1000.jpg&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/searchable-menus-using-text-to-navigate-complexity/menus2-scaled1000.jpg&quot; alt=&quot;Menus2&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So how do we navigate this complexity and get to what we need quickly even if it is buried several levels deep? What we currently do is learn how to get to a particular menu item, then try to memorise it for the future. It may take us a few tries before it is committed to memory. Then, everything is OK until a new version of the software is released, we have to learn it all over again. The level of angst this causes has probably been unknown until social networks came along and allowed users to give instant feedback. It is clearly evident from the number of exclamation marks that accompany Facebook status updates every time the &lt;a href=&quot;http://mashable.com/2011/09/22/facebook-profile-evolution/#270572011--Timeline&quot;&gt;Facebook layout changes&lt;/a&gt;. Yes, we ultimately get used to it the new layout and the new way of managing privacy, but the amount of time wasted is phenomenal!&lt;/p&gt;
&lt;p&gt;This is certainly not the shortest distance between “our brain thinking we want to do something” and “actually performing the activity”. The ideal solution is of course, the device just reading our thoughts, and while there is some &lt;a href=&quot;http://www.ted.com/talks/tan_le_a_headset_that_reads_your_brainwaves.html&quot;&gt;amazing research going into making this a reality&lt;/a&gt;, we are still stuck with giving commands to our machines for now. Meanwhile, Apple is once again &lt;a href=&quot;https://web.archive.org/web/20120126160806/http://www.apple.com/iphone/features/siri.html&quot;&gt;pushing the boundaries of user experience&lt;/a&gt;, but voice commands have clear limitations and are not suitable for general purpose use. At least not yet.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;The Solution&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;I believe there is a simple, elegant solution to the problem that we can apply immediately. It is &lt;strong&gt;the idea of making menu items searchable using text, or simply “Searchable Menus”.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Specific implementations of this proposed &lt;strong&gt;“Searchable Menus”&lt;/strong&gt; pattern would of course vary according to device, platform and type of application.&lt;/p&gt;
&lt;p&gt;Consider the scenario of firing up the WiFi hotspot on my phone. If I search for “hotspot” this is what I get:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/searchable-menus-using-text-to-navigate-complexity/4image.png&quot; alt=&quot;4image&quot;&gt;&lt;/p&gt;
&lt;p&gt;The Google Search Android app already searches apps, text messages, and visited web pages, so why not menu items as in the following mockup?&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/searchable-menus-using-text-to-navigate-complexity/5image.png&quot; alt=&quot;5image&quot;&gt;&lt;/p&gt;
&lt;p&gt;Similarly, in Word, a “Command Search” pane or similar UI element could be used to enable searchable menus.&lt;/p&gt;
&lt;p&gt;Revisiting the header editing scenario, one would simply need to type in “header” and get a list of relevant menu items as follows:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/searchable-menus-using-text-to-navigate-complexity/3image.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/searchable-menus-using-text-to-navigate-complexity/3image.png&quot; alt=&quot;3image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Searchable menus can be context sensitive. For example, I would just select some text and type in “super” into the “Command Search” , which would list relevant commands:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/searchable-menus-using-text-to-navigate-complexity/1image.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/searchable-menus-using-text-to-navigate-complexity/1image.png&quot; alt=&quot;1image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This way, I get Word to do what I want in what soon after me thinking “I want to make this text superscript” and getting Word to do it for me.&lt;/p&gt;
&lt;p&gt;Searchable Menus also solves the problem of relearning software every time a significant change to the UI is made.&lt;/p&gt;
&lt;p&gt;Predictive analytics could be used to optimise the search results for the particular user. For example, often used commands could appear larger or nearer the top of the search results or use colour to stand out. It could also be used to suggest items that have the same meaning as what has been typed in, so we don’t have to remember exactly what the menu item is called. Relevant data could be stored in the cloud so that moving from one platform or device to another would be smooth and seamless.&lt;/p&gt;
&lt;p&gt;Ultimately, I believe Searchable Menus have huge potential to make users more productive in an increasingly complex world. Further, I think they have the possibility of changing our thinking away from a “one size fits all” solution (e.g. designing menus around the “the 80-20 rule”) to one that is more customised to the user.&lt;/p&gt;
&lt;p&gt;What do you think?&lt;/p&gt;
</description>
    </item>
    <item>
      <title>A New Year, A New Blog</title>
      <link>https://akshayluther.com/2012/01/18/a-new-year-a-new-blog/</link>
      <guid isPermaLink="true">https://akshayluther.com/2012/01/18/a-new-year-a-new-blog/</guid>
      <pubDate>Wed, 18 Jan 2012 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Over the past 18 months or so, I have been blogging here on Infragistics-related topics as well as more general topics.&lt;/p&gt;
&lt;p&gt;From now on you will find me posting on Infragistics-related stuff over at my company blog at &lt;a href=&quot;http://community.infragistics.com/blogs/akshay_luther/default.aspx&quot;&gt;http://community.infragistics.com/blogs/akshay_luther&lt;/a&gt;, but I will still continue to post here on other topics that interest me and in some cases, repost content from my company blog.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Exploding Bubbles: Visualising Multi-Dimensional Data Using Infragistics Silverlight Controls (Part 4)</title>
      <link>https://akshayluther.com/2011/12/14/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-4/</link>
      <guid isPermaLink="true">https://akshayluther.com/2011/12/14/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-4/</guid>
      <pubDate>Wed, 14 Dec 2011 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/2011/10/30/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-1/&quot;&gt;In Part 1, I introduced the Exploding Bubbles application.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/2011/11/01/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/&quot;&gt;In Part 2, I focused on the data aspects.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/2011/12/08/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-3/&quot;&gt;In Part 3, I talked about the visualisation aspects&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In this final port, I discuss docking, theming and cloud-deployment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Docking&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A powerful &lt;a href=&quot;http://www.infragistics.com/dotnet/netadvantage/silverlight/dock-manager.aspx#Overview&quot;&gt;Dock Manager&lt;/a&gt; (&lt;a href=&quot;http://samples.infragistics.com/sllob/ComponentOverview.aspx?cn=dock-manager&quot;&gt;samples&lt;/a&gt;) is included with the Infragistics Silverlight controls, which enables you to give your users the ability to reconfigure their workspace using panes, tabbed documents etc.&lt;/p&gt;
&lt;p&gt;In Exploding Bubbles, you will notice that the Pivot Grid and the Data Chart are in panes that can be hidden, moved around and docked etc.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-4/3image.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-4/3image.png&quot; alt=&quot;3image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is achieved by adding a XamDockManager in XAML and hosted the Pivot Grid and Data Chart in ContentPanes:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-4/image-png-scaled-1000.jpg&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-4/image-png-scaled-1000.jpg&quot; alt=&quot;Image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Note that the Data Chart and the Pivot Grid cannot be referred to directly in the code-behind if they are in content panes. Instead they need to be to referred to in the following way:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-4/4image1.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-4/4image1.png&quot; alt=&quot;4image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Styling&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Infragistics Silverlight controls ship with three styles: IG Theme, Default and Office 2010 Blue. These themes are applicable to all Infragistics Silverlight controls. &lt;a href=&quot;http://samples.infragistics.com/sllob/RunSamples.aspx?cn=dock-manager#/dock-manager/theming&quot;&gt;Click here to can see them in action with the Dock Manager&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Default:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-4/6image-png-scaled-500.jpg&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-4/6image-png-scaled-500.jpg&quot; alt=&quot;6image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Office 2010 Blue:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-4/0image1.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-4/0image1.png&quot; alt=&quot;0image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;IG Theme:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-4/7image.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-4/7image.png&quot; alt=&quot;7image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You don’t need to do anything to use the Default theme, but in Exploding Bubbles I have used the IG Theme.&lt;/p&gt;
&lt;p&gt;To use a non-default theme, locate the Themes folder in your Infragistics installation e.g. &lt;code&gt;C:&#92;Program Files (x86)&#92;Infragistics&#92;NetAdvantage 2011.1&#92;Silverlight DV&#92;Themes&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-4/1image.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-4/1image.png&quot; alt=&quot;1image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then create a Themes folder, with a subfolder for the theme and copy the relevant theme files over, making sure that the build action is set to Content.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-4/2image3.png&quot; alt=&quot;2image&quot;&gt;&lt;/p&gt;
&lt;p&gt;Finally, add them to the merged dictionaries in App.xaml&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-4/5image1.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-4/5image1.png&quot; alt=&quot;5image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I have deployed the application on the cloud using &lt;a href=&quot;https://web.archive.org/web/20120112145827/https://appharbor.com/&quot;&gt;AppHarbor&lt;/a&gt;, a neat new service for hosting applications in the cloud. The advantage of this is that you don’t need to worry about Azure, plus it’s free for one instance!&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Exploding Bubbles: Visualising Multi-Dimensional Data Using Infragistics Silverlight Controls (Part 3)</title>
      <link>https://akshayluther.com/2011/12/08/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-3/</link>
      <guid isPermaLink="true">https://akshayluther.com/2011/12/08/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-3/</guid>
      <pubDate>Thu, 08 Dec 2011 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/2011/10/30/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-1/&quot;&gt;In Part 1, I introduced the Exploding Bubbles application.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/2011/11/01/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/&quot;&gt;In Part 2, I focused on the data aspects.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In this post, I will focus on how the data is visualised using the &lt;a href=&quot;http://www.infragistics.com/dotnet/netadvantage/silverlight/data-visualization/xam-web-data-chart.aspx#Overview&quot;&gt;Infragistics Data Chart&lt;/a&gt;, touching on some of the chart’s features including the Motion Framework which is used to animate the bubbles when they explode/implode. As before, I would recommend that you &lt;a href=&quot;http://dl.dropbox.com/u/15104486/ExplodingBubbles.zip&quot;&gt;download the source code&lt;/a&gt; and refer to it as required.&lt;/p&gt;
&lt;p&gt;The Pivot Grid’s data is exposed as tuples (each tuple represents a level in the hierarchy – a country, a continent or the world). In order to render the data, each tuple is converted into a bubble, where a bubble is modeled as follows:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-3/5image.png&quot; alt=&quot;5image&quot;&gt;&lt;/p&gt;
&lt;p&gt;These bubbles are rendered according to the follow criteria:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The life expectancy is shown on the Y-axis&lt;/li&gt;
&lt;li&gt;The per capita GDP is shown on the X-axis (on a logarithmic scale)&lt;/li&gt;
&lt;li&gt;The population is represented by the size (area) of the bubble&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A bubble chart incorporating these criteria is added to the page as follows:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-3/2image.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-3/2image.png&quot; alt=&quot;2image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The basic setup of the chart is simple. There are two axes specified, a NumericXAxis and a NumericYAxis. A bubble series is added which is bound to a collection of Bubble objects and the X, Y and Radius are mapped to the corresponding property of the Bubble object. The bubble series is a type of scatter series which also includes scatter line and scatter spline, and which can be shown by replacing BubbleSeries above with the appropriate series name.&lt;/p&gt;
&lt;p&gt;In a similar way you can show over 50 different series types using the Data Chart:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://samples.infragistics.com/sldv/RunSamples.aspx?cn=data-chart#/data-chart/gallery-category-series&quot;&gt;Category series&lt;/a&gt; including bar, column, area, line, spline, spline area, step line, range column, range area and stacked and stacked 100 version of these&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://samples.infragistics.com/sldv/RunSamples.aspx?cn=data-chart#/data-chart/gallery-financial-series&quot;&gt;Financial series&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://samples.infragistics.com/sldv/RunSamples.aspx?cn=data-chart#/data-chart/gallery-polar-series&quot;&gt;Polar series&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://samples.infragistics.com/sldv/RunSamples.aspx?cn=data-chart#/data-chart/gallery-radial-series&quot;&gt;Radial series&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can even &lt;a href=&quot;http://samples.infragistics.com/sldv/RunSamples.aspx?cn=data-chart#/data-chart/multiple-series&quot;&gt;combine multiple series on the same chart&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;All aspects of the chart can also be set programmatically in in code-behind. For example, the chart bounds are not known at design time, since they are based on the minimum and maximum values of the actual data. They are therefore set in the code-behind when the data is loaded:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-3/6image.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-3/6image.png&quot; alt=&quot;6image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There is a 2-way synchronisation between the Pivot Grid and the Data Chart i.e. when the Pivot Grid’s data changes (by expanding a hierarchy for example), the chart is updated, and when the chart changes (a bubble on the chart is exploded for example) the Pivot Grid reflects the change. This is achieved by handling the appropriate events on the grid and the chart. The chart updates itself on the Pivot Grid’s DataSource_ResultChanged event, and triggers the Pivot Grid to expand/collapse a hierarchy when a bubble is left-clicked or right-clicked via the xamDataChart_SeriesMouseLeftButtonDown and xamDataChart_SeriesMouseRightButtonDown events.&lt;/p&gt;
&lt;p&gt;The style and colour of the bubble is set by creating a custom marker template:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-3/1image-png-scaled-1000.jpg&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-3/1image-png-scaled-1000.jpg&quot; alt=&quot;1image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are various options available to colour the bubbles. For example a colour scale can be specified (two or more colours) and the chart will &lt;a href=&quot;http://samples.infragistics.com/sldv/RunSamples.aspx?cn=data-chart#/data-chart/bubble-brush-scale&quot;&gt;automatically apply generated colours in between according to the radius, X value or Y value of the bubble&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In this sample, the colours are specified as discrete values based on the region represented by a bubble. The region brush value converter contains this logic:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-3/4image.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-3/4image.png&quot; alt=&quot;4image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You have complete flexibility over the tooltips. In this example, a custom tooltip is defined as follows:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-3/0image.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-3/0image.png&quot; alt=&quot;0image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Drag and zoom capability is added by simply setting the DefaultInteraction to “DragZoom” and setting HorizontableZoomable and VerticalZoomale to true. This allows the user to zoom in to the chart using the mouse scrollwheel or by drawing a box around the area to be zoomed in.&lt;/p&gt;
&lt;p&gt;Once zoomed in, the chart can be dragged around.&lt;/p&gt;
&lt;p&gt;Finally, I will discuss how the bubbles are animated when exploded/imploded. This uses a feature of the chart called Motion Framework. At the heart of this feature is the capability of the chart to smoothly animate values as they are updated. Please read my post, &lt;a href=&quot;http://blogs.infragistics.com/blogs/akshay_luther/archive/2011/12/02/motion-framework-101.aspx&quot;&gt;Infragistics Motion Framework 101&lt;/a&gt; to understand this.&lt;/p&gt;
&lt;p&gt;The explosion effect happens in two steps. First, when a bubble is clicked, it is replaced by it’s children at the exact same location:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-3/image.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-3/image.png&quot; alt=&quot;Image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Next, the location of each child bubble is set to it’s real location. The Motion Framework kicks in and animates each bubble from it’s starting position to it’s final ending position:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-3/3image1.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-3/3image1.png&quot; alt=&quot;3image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Collapsing bubbles happens in reverse. In the first step, bubbles are collapsed by setting their end location to the location of the parent bubble. Once the bubbles are centered, they are replaced by the parent bubble.&lt;/p&gt;
&lt;p&gt;This is just one of the many ways to use the Motion Framework. It’s versatility is limited only by your imagination.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/2011/12/14/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-4/&quot;&gt;In Part 4, I wrap up this series of posts, discussing styling, docking and cloud deployment.&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Exploding Bubbles: Visualising Multi-dimensional Data using Infragistics Silverlight Controls (Part 2)</title>
      <link>https://akshayluther.com/2011/11/01/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/</link>
      <guid isPermaLink="true">https://akshayluther.com/2011/11/01/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/</guid>
      <pubDate>Tue, 01 Nov 2011 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/2011/10/30/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-1/&quot;&gt;In Part 1, I introduced the Exploding Bubbles application.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In this post, I will focus on the data aspects. I would recommend that you &lt;a href=&quot;http://dl.dropbox.com/u/15104486/ExplodingBubbles.zip&quot;&gt;download the source code&lt;/a&gt; and refer to it as required.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Getting Data Into the Application&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The data source for the Exploding Bubbles application is &lt;em&gt;flat data.&lt;/em&gt; i.e. a collection of records under common headings without any structural relationships between them as in an Excel spreadsheet or a database table. In this case, it is an Excel spreadsheet compiled using &lt;a href=&quot;http://www.gapminder.org/data/&quot;&gt;data publicly available from Gapminder.org&lt;/a&gt;, and it looks like this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/excel1-scaled1000.jpg&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/excel1-scaled1000.jpg&quot; alt=&quot;Excel1&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Excel spreadsheet is embedded as a resource:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/embedded_resource-scaled5001.jpg&quot; alt=&quot;Embeddedresource&quot;&gt;&lt;/p&gt;
&lt;p&gt;A class is defined to represent each row of the spreadsheet:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/1image.png&quot; alt=&quot;1image&quot;&gt;&lt;/p&gt;
&lt;p&gt;The Infragistics Excel Library is used to read the data from the Excel spreadsheet into a collection:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/0image.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/0image.png&quot; alt=&quot;0image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The following XAML adds a flat data source:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/2image-png-scaled-10001.jpg&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/2image-png-scaled-10001.jpg&quot; alt=&quot;2image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The following XAML displays a Pivot Grid that binds to the above data source:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/5image1.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/5image1.png&quot; alt=&quot;5image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Understanding Multidimensional Data (or, What is an OLAP Cube Anyway?)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So how does the flat data get converted into the hierarchical structure that you see here?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/hierarchy-scaled10001.jpg&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/hierarchy-scaled10001.jpg&quot; alt=&quot;Hierarchy&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Infragistics Pivot Grid’s Flat Data Source &lt;em&gt;&lt;strong&gt;takes the flat data and creates multidimensional data from it i.e. an in-memory OLAP cube&lt;/strong&gt;&lt;/em&gt;. This is incredibly powerful because it lets the user analyse the data any way they like. To understand this better, consider a spreadsheet with sales data that looks like this (from &lt;a href=&quot;http://samples.infragistics.com/sldv/RunSamples.aspx?cn=pivot-grid#/pivot-grid/flatdatasource-excel-file&quot;&gt;this sample&lt;/a&gt; which is part of the Infragistics Silverlight Data Visualization samples browser):&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/excel2-scaled1000.jpg&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/excel2-scaled1000.jpg&quot; alt=&quot;Excel2&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When this is converted to multidimensional data, a ”dimension” is automatically created from each column and a “measure” is automatically created from each numeric column. These are displayed in the Pivot Grid’s Data Selector:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/measures_dimensions-scaled500.jpg&quot; alt=&quot;Measuresdimensions&quot;&gt;&lt;/p&gt;
&lt;p&gt;Now, suppose we want to look at units sold region-wise and item-wise, then we simply needs to drag the dimensions (i.e Region and Item) to the Rows or Columns area and the measure (i.e. Units) to the Measures area.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/region_item-scaled10001.jpg&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/region_item-scaled10001.jpg&quot; alt=&quot;Regionitem&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We can now see that there there were 2121 units sold. We can analyse this by drilling down into the Region dimension:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/region_drilldown-scaled500.jpg&quot; alt=&quot;Regiondrilldown&quot;&gt;&lt;/p&gt;
&lt;p&gt;… or the Item dimension:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/item_drilldown-scaled500.jpg&quot; alt=&quot;Itemdrilldown&quot;&gt;&lt;/p&gt;
&lt;p&gt;… or both:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/both_drilldown-scaled500.jpg&quot; alt=&quot;Bothdrilldown&quot;&gt;&lt;/p&gt;
&lt;p&gt;The Pivot Grid’s data source &lt;strong&gt;takes care of all the calculations!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The data can also be filtered by clicking on the filter icon next to a dimension, or by introducing another dimension by dragging it to the filters area.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Adding Hierarchy Descriptors and Custom Aggregators&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In the sample above, if the dimension is a date, then by default a hierarchy is automatically created:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/date_hierarchy-scaled10001.jpg&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/date_hierarchy-scaled10001.jpg&quot; alt=&quot;Datehierarchy&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is the concept used to convert the flat list of countries in the Expoding Bubbles application to a hierarchy organised by continent. The Pivot Grid’s Flat Data Source, gives you the ability to specify a custom hierarchy via “hierarchy descriptors”:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/3image1.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/3image1.png&quot; alt=&quot;3image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This code tells the Flat Data Source to group countries into Regions (continents) using the Region property and then group the Regions into The World.&lt;/p&gt;
&lt;p&gt;One final bit of customisation needs to be done to make the hierarchy work properly. By default, the Flat Data Source sums the child items when rolling-up a hierarchy. This is the default “aggregation” behaviour. This works fine for population because the population of a continent is the sum of it’s constituent countries (and the total population of the world is the sum of all it’s children i.e. continents), but this does not work for life expectancy because the sum of the life expectancies of each country within a continent will got give us the life expectancy of the continent as a whole. This is also the case with GDP per capita. Instead of a simple sum calculation, the weighed average needs to be calculated for the aggregate value to make sense. The custom calculation is specified via a custom aggregator.&lt;/p&gt;
&lt;p&gt;The LifeExpectancy aggregator performs the weighted average calculation:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/4image1.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/4image1.png&quot; alt=&quot;4image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The following code tells the Pivot Grid’s Flat Data Source to use a custom aggregator called LifeExpectancyAggregator:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/image-png-scaled-10001.jpg&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/image-png-scaled-10001.jpg&quot; alt=&quot;Image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/2011/12/08/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-3/&quot;&gt;In Part 3, I cover how the multidimensional data that is displayed in the Pivot Grid is visualised using the Infragistics Data Chart and how bubbles are exploded/imploded using the Motion Framework.&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Exploding Bubbles: Visualising Multi-dimensional Data using Infragistics Silverlight Controls (Part 1)</title>
      <link>https://akshayluther.com/2011/10/30/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-1/</link>
      <guid isPermaLink="true">https://akshayluther.com/2011/10/30/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-1/</guid>
      <pubDate>Sun, 30 Oct 2011 00:00:00 GMT</pubDate>
      <description>&lt;h3&gt;The Short Version&lt;/h3&gt;
&lt;p&gt;You can interact with the chart by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Left-clicking on bubbles to explode them&lt;/li&gt;
&lt;li&gt;Right-clicking on exploded bubbles to implode them&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[&lt;strong&gt;&lt;a href=&quot;http://explodingbubbles.apphb.com/default.html&quot;&gt;Run Exploding Bubbles&lt;/a&gt;&lt;/strong&gt;]&lt;/p&gt;
&lt;p&gt;UPDATE: Exploding Bubbles was made into a showcase application by Infragistics. It was restyled and renamed to Population Explosion. The restyled version can be found here:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://labs.infragistics.com/silverlightdv/showcases/populationexplosion/&quot;&gt;[Run Population Explosion]&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;The Long Version&lt;/h3&gt;
&lt;p&gt;In a fascinating video titled &lt;a href=&quot;http://mitsloan.mit.edu/buildingthefuture/colloquium-sessions?video=nanodata&quot;&gt;Nano-data and Now-Casting: The Analytics Revolution&lt;/a&gt;, MIT Sloan Professor Roberto Rigobon says,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“The world has a lot of data, now available [sic]. (But), the world has very little information.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In a previous post, I touched upon the need for innovative ways to make meaning from the large amount of data that we have access to today and the growing importance of analytics:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Massive amounts of data – either publicly available, or within enterprises – is a defining feature of computing today, and of growing importance for tomorrow. In fact it’s given rise to a new discipline: data science. As the amount of data grows, traditional methods and tools for making sense of all this data break down and new innovations are necessary.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;One of the ways to understand data is interactive data visualisations. Multidimensional data is especially tricky to visualise because of the complexities of each data point, but if done properly, can provide real insight from the macro- as well as micro-level. A great example of this is the “exploding bubbles” technique, presented by &lt;a href=&quot;http://www.ted.com/talks/hans_rosling_shows_the_best_stats_you_ve_ever_seen.html&quot;&gt;Hans Rosling in a TED Talk from 2006&lt;/a&gt;. Look for exploding bubbles starting from around 9m30s into the video.&lt;/p&gt;
&lt;p&gt;Inspired by this, I developed the &lt;a href=&quot;http://explodingbubbles.apphb.com/default.html&quot;&gt;Exploding Bubbles&lt;/a&gt; application using &lt;a href=&quot;http://www.infragistics.com/default.aspx&quot;&gt;Infragistics&lt;/a&gt; &lt;a href=&quot;http://www.infragistics.com/dotnet/netadvantage/silverlight/line-of-business.aspx#Overview&quot;&gt;Silverlight&lt;/a&gt; and &lt;a href=&quot;http://www.infragistics.com/dotnet/netadvantage/silverlight/data-visualization.aspx#Overview&quot;&gt;Silverlight Data Visualization&lt;/a&gt; controls.&lt;/p&gt;
&lt;p&gt;Here is a video of Exploding Bubbles in action:&lt;/p&gt;
&lt;iframe src=&quot;https://player.vimeo.com/video/33330960&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;This is what the application looks like when you first run it:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-1/image001-png-scaled-1000.jpg&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-1/image001-png-scaled-1000.jpg&quot; alt=&quot;Image001&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On the left you will notice a pivot grid showing multidimensional data. On the right is a bubble chart, a visualisation of that data.&lt;/p&gt;
&lt;p&gt;The pivot grid shows global “health and wealth” statistics. The data is plotted on the chart in the following way:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Population is depicted by bubble size&lt;/li&gt;
&lt;li&gt;GDP Per Capita is depicted on the X-axis on a logarithmic scale&lt;/li&gt;
&lt;li&gt;Life Expectancy is depicted on the Y-axis on a linear scale&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can interact with the chart by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Left-clicking on bubbles to explode them&lt;/li&gt;
&lt;li&gt;Right-clicking on exploded bubbles to implode them&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can also interact with pivot grid by expanding or collapsing rows – the bubble chart is synchronised with the pivot grid’s data.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-1/image002-png-scaled-1000.jpg&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-1/image002-png-scaled-1000.jpg&quot; alt=&quot;Image002&quot;&gt;&lt;/a&gt;
&lt;img src=&quot;https://akshayluther.com/media/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-1/image003-png-scaled-1000.jpg&quot; alt=&quot;Image003&quot;&gt;&lt;/p&gt;
&lt;p&gt;You can run the application from here: &lt;a href=&quot;http://explodingbubbles.apphb.com/default.html&quot;&gt;http://explodingbubbles.apphb.com/default.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can download the source code from here: &lt;a href=&quot;http://dl.dropbox.com/u/15104486/ExplodingBubbles.zip&quot;&gt;http://dl.dropbox.com/u/15104486/ExplodingBubbles.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Have fun!&lt;/p&gt;
&lt;p&gt;In following posts, I will talk about the implementation details and cover aspects of the following Infragistics controls/features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pivot Grid&lt;/li&gt;
&lt;li&gt;Data Chart&lt;/li&gt;
&lt;li&gt;Excel&lt;/li&gt;
&lt;li&gt;Dock Manager&lt;/li&gt;
&lt;li&gt;Motion Framework&lt;/li&gt;
&lt;li&gt;Theming&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the meantime, for more details of what you can achieve using these and other Silverlight controls from Infragistics, you can browse through the &lt;a href=&quot;http://samples.infragistics.com/&quot;&gt;samples&lt;/a&gt; and read the &lt;a href=&quot;http://www.infragistics.com/support/documentation.aspx#OnlineDocumentation&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Read the rest of the posts in the series:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/2011/11/01/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-2/&quot;&gt;Part 2: Data Aspects&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/2011/12/08/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-3/&quot;&gt;Part 3: Visualisation Aspects&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/2011/12/14/exploding-bubbles-visualising-multi-dimensional-data-using-infragistics-silverlight-controls-part-4/&quot;&gt;Part 4: Docking, Theming, Cloud Deployment&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Samsung Galaxy SII: The best smartphone you can buy today?</title>
      <link>https://akshayluther.com/2011/10/28/samsung-galaxy-sii-the-best-smartphone-you-can-buy-today/</link>
      <guid isPermaLink="true">https://akshayluther.com/2011/10/28/samsung-galaxy-sii-the-best-smartphone-you-can-buy-today/</guid>
      <pubDate>Fri, 28 Oct 2011 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;When the iPhone was introduced, it was a true game-changer, defining what it meant to be a smartphone. For a long time it has been the best phone available. &lt;em&gt;By far&lt;/em&gt;. It has been the phone that every other phone has tried to live up to.&lt;/p&gt;
&lt;p&gt;However, since Android phone sales overtook iPhone sales about a year ago, it’s been hard to miss the clamour surrounding Android.&lt;/p&gt;
&lt;p&gt;When my close-to-three-year old iPhone 3G died a few weeks ago, my interest in Android turned from academic to pragmatic. I have been unabashedly enthusiastic about Apple products, but wanted to see what the Android fuss was about, instead of just buying an iPhone 4 or waiting for the iPhone “5”.&lt;/p&gt;
&lt;p&gt;It became clear, at least to my mind, that Android is a better operating system than iOS, and that surprisingly, Apple is playing catch-up. For example, features such as unobtrusive notifications and cloud-syncing have been available in Android for a long time, but are only appearing in iOS 5 now. Android has support for Flash. It also has support for creating a WiFi hotspot that uses the phone’s connectivity!&lt;/p&gt;
&lt;p&gt;There’s more to like. The iPhone’s user experience is extremely polished all-round, but you’re pretty much stuck with what Apple gives you. On Android however, you can customise pretty much every aspect of the phone. For example, you can replace the default homesreen, lockscreen, keyboard, sms application or web browser. Android is a lot more open and flexible*.* For example, you can copy a directory of videos directly on to your phone without having to use iTunes as an intermediary. Or you can automatically change various settings via applications like &lt;a href=&quot;https://market.android.com/details?id=net.dinglisch.android.taskerm&amp;amp;hl=en&quot;&gt;Tasker&lt;/a&gt; and &lt;a href=&quot;https://web.archive.org/web/20111018051929/https://market.android.com/details?id=com.twofortyfouram.locale&amp;amp;hl=en&quot;&gt;Locale&lt;/a&gt;. This is extremely appealing to a “power user” like me. Also, I must say I was quite impressed with the user experience of HTC Sense (HTC’s UI on top of Android).&lt;/p&gt;
&lt;p&gt;There are of course far more apps in the Apple App Store versus the Google Android Market, but the Android market is growing fast and developers are increasingly choosing to move to Android’s far less restrictive policies. Apple should be worried.&lt;/p&gt;
&lt;p&gt;And then there’s the hardware. The likes of Samsung, HTC and LG are churning out phones at a frantic pace. That means the cutting edge is found there. So, despite HTC’s great user experience, I bought the Samsung Galaxy SII. And I couldn’t be happier with it.&lt;/p&gt;
&lt;p&gt;Here’s what I love about it:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Screen&lt;/strong&gt;: It has absolutely gorgeous 4.3 Super AMOLED Plus screen with very deep blacks and colours that pop-out. It’s hard to imagine using anything else after spending some time with it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Speed&lt;/strong&gt;: It has a 1.2 GHz dual core processor that just screams.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Build&lt;/strong&gt;: At 8.5mm, it’s the slimmest smartphone in the world. It’s also incredibly light. It has a lovely, sleek minimalistic all-black design with an unobtrusive gunmetal insert. Holding it in your hand, it’s hard to imagine there’s so much inside!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Storage&lt;/strong&gt;: 16GB built-in plus an SD card slot.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Camera&lt;/strong&gt;: Excellent 8MP camera plus a front-facing camera for video calls.&lt;/p&gt;
&lt;p&gt;The rest:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Battery life&lt;/strong&gt;: The battery life is a little disappointing, even though it’s supposed to be better than most other “superphones”. I often find myself needing to recharge it after half a day of moderate use. But fortunately, “there’s an app for that” 🙂 I haven’t tried it, but &lt;a href=&quot;https://market.android.com/details?id=com.latedroid.juicedefender&amp;amp;hl=en&quot;&gt;JuiceDefender&lt;/a&gt; looks &lt;a href=&quot;http://reviews.cnet.com/8301-19736_7-20044051-251.html?tag=mncol;txt&quot;&gt;promising&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;User Interface&lt;/strong&gt;: Samsung’s TouchWiz 4.0 UI is so-so. Again, this is easily fixed. I replaced the homescreen and keyboard with &lt;a href=&quot;https://market.android.com/developer?pub=GO+Dev+Team&quot;&gt;GO Dev Team’s&lt;/a&gt; awesome &lt;a href=&quot;https://market.android.com/details?id=com.gau.go.launcherex&amp;amp;feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5nYXUuZ28ubGF1bmNoZXJleCJd&quot;&gt;GO Launcher EX&lt;/a&gt; and &lt;a href=&quot;https://market.android.com/details?id=com.jb.gokeyboard&quot;&gt;GO Keyboard&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I’m convinced that not only is the Samsung Galaxy SII superior to the iPhone 4 and even the 4S on both fronts (hardware and software) but is the best phone you can buy today (at least in India).&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Pasting Text Without Formatting</title>
      <link>https://akshayluther.com/2011/10/07/pasting-text-without-formatting/</link>
      <guid isPermaLink="true">https://akshayluther.com/2011/10/07/pasting-text-without-formatting/</guid>
      <pubDate>Fri, 07 Oct 2011 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Today I discovered PureText+, a little gem of a tool.&lt;/p&gt;
&lt;p&gt;I copy+paste text from one program to another several times a day. By default, this preserves the formatting of the copied text, and I get around this copy+pasting into a plain-text editor (my editor of choice is &lt;a href=&quot;http://www.textpad.com/&quot;&gt;TextPad&lt;/a&gt;) as an intermediate step.&lt;/p&gt;
&lt;p&gt;PureText+ skips this intermediate step and pastes &amp;quot;pure&amp;quot; text without formatting. You simply have to use Windows+V to paste instead of Ctrl+V.&lt;/p&gt;
&lt;p&gt;Get it here: &lt;a href=&quot;http://code.google.com/p/puretext-plus/&quot;&gt;http://code.google.com/p/puretext-plus/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(It&#39;s open-source and written in C#)&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Better IntelliSense?</title>
      <link>https://akshayluther.com/2011/07/05/better-intellisense/</link>
      <guid isPermaLink="true">https://akshayluther.com/2011/07/05/better-intellisense/</guid>
      <pubDate>Tue, 05 Jul 2011 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Dear Microsoft,&lt;/p&gt;
&lt;p&gt;Instead of this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/better-intellisense/image001.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/better-intellisense/image001.png&quot; alt=&quot;Image001&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Can we please have this?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/better-intellisense/image002.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/better-intellisense/image002.png&quot; alt=&quot;Image002&quot;&gt;&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Stats are Sexy</title>
      <link>https://akshayluther.com/2011/05/25/stats-are-sexy/</link>
      <guid isPermaLink="true">https://akshayluther.com/2011/05/25/stats-are-sexy/</guid>
      <pubDate>Wed, 25 May 2011 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;If you want to know what the future holds, or find out about the most brilliant and innovative work being done in any field, there is no better freely available resource than &lt;a href=&quot;http://www.ted.com/&quot;&gt;TED videos&lt;/a&gt;. My inevitable reaction to a new TED video is shaking my head and thinking “brilliant, just brilliant”. Like this one from &lt;a href=&quot;http://www.ted.com/talks/aaron_koblin.html&quot;&gt;Aaron Koblin&lt;/a&gt;, in which he talks about his works spanning data visualization, crowdsourcing, digital art and social experimentation bordering on cheekiness.&lt;/p&gt;
&lt;p&gt;Massive amounts of data – either publicly available, or within enterprises – is a defining feature of computing today, and of growing importance for tomorrow. In fact it’s given rise to a new discipline: &lt;a href=&quot;http://radar.oreilly.com/2010/06/what-is-data-science.html&quot;&gt;data science&lt;/a&gt;. As the amount of data grows, traditional methods and tools for making sense of all this data break down and new innovations are necessary. A defining piece of work in data visualizations was Hans Rosling’s work on GapMinder which he presented a few years ago. The world got to know about it through TED:&lt;/p&gt;
&lt;p&gt;At Infragistics, our product range includes general-purpose high-performance data visualization controls, making it easy for you build rich, powerful data visualizations for &lt;a href=&quot;http://www.infragistics.com/dotnet/netadvantage/silverlight/data-visualization.aspx#Overview&quot;&gt;web&lt;/a&gt;, &lt;a href=&quot;http://www.infragistics.com/dotnet/netadvantage/wpf/data-visualization.aspx#Overview&quot;&gt;desktop&lt;/a&gt; and &lt;a href=&quot;http://www.infragistics.com/dotnet/netadvantage/windows-phone.aspx#Overview&quot;&gt;mobile&lt;/a&gt; applications. One of the innovative features is the &lt;a href=&quot;http://www.infragistics.com/innovations/motion-framework.aspx#MotionFramework&quot;&gt;Motion Framework&lt;/a&gt;, which allows you do visualize how data has changed over time, just like in the video above. The WorldStats sample shows the same Gapminder data as in Hans’ video: &lt;a href=&quot;http://labs.infragistics.com/motion-framework/world-stats/&quot;&gt;http://labs.infragistics.com/motion-framework/world-stats/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/stats-are-sexy/image001.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/stats-are-sexy/image001.png&quot; alt=&quot;Image001&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;WorldStats uses a bubble chart, but Motion Framework can be used to automatically animate any type of chart included in our Data Visualization framework including maps!&lt;/p&gt;
</description>
    </item>
    <item>
      <title>iOS Development with .NET</title>
      <link>https://akshayluther.com/2011/05/24/ios-development-with-net/</link>
      <guid isPermaLink="true">https://akshayluther.com/2011/05/24/ios-development-with-net/</guid>
      <pubDate>Tue, 24 May 2011 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Three years ago I blogged about the &lt;a href=&quot;https://akshayluther.com/2008/05/08/the-rich-web-development-landscape/&quot;&gt;“iPhone bringing the Internet to your pocket”&lt;/a&gt;. And now we have the iPad, the target device for most innovation in tablet apps.&lt;/p&gt;
&lt;p&gt;If, like me, you’re keen to build iOS apps but are primarily a Microsoft developer and are daunted by the learning curve of a whole new platform, then MonoTouch might be for you: &lt;a href=&quot;http://monotouch.net/&quot;&gt;http://monotouch.net/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;MonoTouch is a bridge between .NET and the native iOS API called CocoaTouch. It exposes the CocoaTouch as a .NET library so you can write code in C# instead of Objective-C. This gives you access to all the native CocoaTouch GUI widgets and a whole bunch of regular .NET libraries.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/ios-development-with-net/media_httpwwwmonoproj_kjezj-scaled500.png&quot; alt=&quot;Mediahttpwwwmonoprojkjezj&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/ios-development-with-net/media_httpwwwmonoproj_krhgf-scaled1000.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/ios-development-with-net/media_httpwwwmonoproj_krhgf-scaled1000.png&quot; alt=&quot;Mediahttpwwwmonoprojkrhgf&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/ios-development-with-net/image0012.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/ios-development-with-net/image0012.png&quot; alt=&quot;Image001&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is really neat! Have a look at the Hello World tutorial to get a better feel of MonoTouch: &lt;a href=&quot;http://monotouch.net/Tutorials/MonoDevelop_HelloWorld&quot;&gt;http://monotouch.net/Tutorials/MonoDevelop_HelloWorld&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Dealing with “Server Not Found” Errors and Flaky DNS Servers</title>
      <link>https://akshayluther.com/2011/05/12/dealing-with-server-not-found-errors-and-flaky-dns-servers/</link>
      <guid isPermaLink="true">https://akshayluther.com/2011/05/12/dealing-with-server-not-found-errors-and-flaky-dns-servers/</guid>
      <pubDate>Thu, 12 May 2011 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;I get a lot of random “Server Not Found” errors while browsing from my home connection:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/dealing-with-server-not-found-errors-and-flaky-dns-servers/image0011.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/dealing-with-server-not-found-errors-and-flaky-dns-servers/image0011.png&quot; alt=&quot;Image001&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In Chrome, the error is:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The server at &lt;strong&gt;&lt;a href=&quot;http://www.google.com&quot;&gt;http://www.google.com&lt;/a&gt;&lt;/strong&gt; can’t be found, because the DNS lookup failed. DNS is the network service that translates a website’s name to its Internet address. This error is most often caused by having no connection to the Internet or a misconfigured network. It can also be caused by an unresponsive DNS server or a firewall preventing Google Chrome from accessing the network.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;After a lot of frustration and some digging around I discovered that this was caused by my ISP’s flaky DNS servers.&lt;/p&gt;
&lt;p&gt;It turns out that our friend Google has a free service called &lt;a href=&quot;http://code.google.com/speed/public-dns/&quot;&gt;Google Public DNS&lt;/a&gt; that I can use in place of my ISP’s flaky servers:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/dealing-with-server-not-found-errors-and-flaky-dns-servers/image0021.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/dealing-with-server-not-found-errors-and-flaky-dns-servers/image0021.png&quot; alt=&quot;Image002&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are actually more legitimate uses for Google Public DNS:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/dealing-with-server-not-found-errors-and-flaky-dns-servers/image003.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/dealing-with-server-not-found-errors-and-flaky-dns-servers/image003.png&quot; alt=&quot;Image003&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now ever so often my ISP will terminate my session and I have to log in via a web interface, which doesn’t come up properly if I’m using Google’s public DNS servers. So then I have to switch my ISP’s DNS servers:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/dealing-with-server-not-found-errors-and-flaky-dns-servers/image0041.png&quot; alt=&quot;Image004&quot;&gt;&lt;/p&gt;
&lt;p&gt;All this switching can be quite a pain, but it can be automated. There is a command line tool called &lt;a href=&quot;http://technet.microsoft.com/en-us/library/cc732279%28WS.10%29.aspx&quot;&gt;netsh.exe that can be used to modify the network configuration&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So I created two batch files, one for switching to Google’s DNS servers…&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;netsh interface ip set dns &amp;quot;Wireless Network Connection 6&amp;quot; static 8.8.8.8 primary
netsh interface ip add dns &amp;quot;Wireless Network Connection 6&amp;quot; 8.8.4.4
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;…and one for switching back to my ISPs DNS servers…&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;netsh interface ip set dns &amp;quot;Wireless Network Connection 6&amp;quot; source=dhcp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note that you would need to change “Wireless Network Connection 6” in the commands above to whatever your connection is called.&lt;/p&gt;
&lt;p&gt;Hope you find this useful!&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Mobile Strategy: Why You Shouldn’t Ignore Windows Phone</title>
      <link>https://akshayluther.com/2011/05/05/mobile-strategy-why-you-shouldnt-ignore-windows-phone/</link>
      <guid isPermaLink="true">https://akshayluther.com/2011/05/05/mobile-strategy-why-you-shouldnt-ignore-windows-phone/</guid>
      <pubDate>Thu, 05 May 2011 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;In case you missed it, &lt;a href=&quot;https://web.archive.org/web/20110506190933/http://www.microsoft.com:80/Presspass/press/2011/feb11/02-11partnership.mspx?&quot;&gt;Microsoft&lt;/a&gt; and &lt;a href=&quot;https://web.archive.org/web/20110509081012/http://conversations.nokia.com/2011/02/11/open-letter-from-ceo-stephen-elop-nokia-and-ceo-steve-ballmer-microsoft/&quot;&gt;Nokia&lt;/a&gt; announced a strategic mobile partnership in February a few days after &lt;a href=&quot;http://www.engadget.com/2011/02/08/nokia-ceo-stephen-elop-rallies-troops-in-brutally-honest-burnin/&quot;&gt;Nokia CEO Elop’s scathing memo to employees&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Some key points to note:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nokia will adopt Windows Phone as its primary smartphone strategy, innovating on top of the platform in areas such as imaging, where Nokia is a market leader.&lt;/li&gt;
&lt;li&gt;Nokia will help drive and define the future of Windows Phone. Nokia will contribute its expertise on hardware design, language support, and help bring Windows Phone to a larger range of price points, market segments and geographies.&lt;/li&gt;
&lt;li&gt;Nokia’s extensive operator billing agreements will make it easier for consumers to purchase Nokia Windows Phone services in countries where credit-card use is low.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And even though Android phones topped the list of new devices sold in Q4 2011, Symbian is a close second:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/mobile-strategy-why-you-shouldnt-ignore-windows-phone/image00121.png&quot; alt=&quot;Image001&quot;&gt;&lt;/p&gt;
&lt;p&gt;(source: &lt;a href=&quot;http://en.wikipedia.org/wiki/Smartphone&quot;&gt;http://en.wikipedia.org/wiki/Smartphone&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;The fact is that the &lt;a href=&quot;http://www.google.co.in/search?hl=en&amp;amp;client=firefox-a&amp;amp;hs=g8w&amp;amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;amp;biw=1920&amp;amp;bih=834&amp;amp;site=search&amp;amp;tbm=isch&amp;amp;sa=1&amp;amp;q=windows+7+phone+user+interface&amp;amp;aq=f&amp;amp;aqi=&amp;amp;aql=&amp;amp;oq=&quot;&gt;Windows Phone Metro UI&lt;/a&gt; offers a very slick user experience. And in light of the Nokia/Microsoft partnership, &lt;strong&gt;I expect Windows Phone share to rise significantly as Symbian/Nokia users move to Windows Phone, especially in the mid-range and low-end markets.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Want to get a head start in developing applications for Windows Phone? My company Infragistics recently announced a Community Technology Preview of data visualization controls for Windows Phone. These let you create powerful mobile dashboards using maps, high performance charts, gauges, sliders and even barcodes, that integrate beautifully with the Windows Phone Metro UI design language.&lt;/p&gt;
&lt;p&gt;You can get the samples and download the CTP for free from here: &lt;a href=&quot;http://www.infragistics.com/innovations/windows-phone.aspx#WindowsPhone7&quot;&gt;http://www.infragistics.com/innovations/windows-phone.aspx#WindowsPhone7&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/mobile-strategy-why-you-shouldnt-ignore-windows-phone/image002.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/mobile-strategy-why-you-shouldnt-ignore-windows-phone/image002.png&quot; alt=&quot;Image002&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We will also be releasing mobile controls for iOS and Android soon so watch this space!&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Business Technology Trend: QR Codes for Simple and Effective Augmented Reality</title>
      <link>https://akshayluther.com/2011/05/03/business-technology-trend-qr-codes-for-simple-and-effective-augmented-reality/</link>
      <guid isPermaLink="true">https://akshayluther.com/2011/05/03/business-technology-trend-qr-codes-for-simple-and-effective-augmented-reality/</guid>
      <pubDate>Tue, 03 May 2011 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;QR codes are a simple but brilliant technology. They are a pictorial representation of data (like a traditional barcode) but can contain (or encode) a richer array of data – a URL, text, SMS, email address, phone number or even a business card. And they are popping up everywhere. For example…&lt;/p&gt;
&lt;p&gt;You can install Firefox for mobile by scanning a QR code on the page for Mozilla’s showcase application for Firefox mobile (&lt;a href=&quot;https://spark.mozilla.org/en-US/home&quot;&gt;Spark&lt;/a&gt;):&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/business-technology-trend-qr-codes-for-simple-and-effective-augmented-reality/image00111.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/business-technology-trend-qr-codes-for-simple-and-effective-augmented-reality/image00111.png&quot; alt=&quot;Image001&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You use a freely available QR code reader application that uses the phone’s camera to take a picture of the QR code and then take appropriate action, in this case install the Firefox app on your phone.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;http://groups.google.com/&quot;&gt;Google Groups&lt;/a&gt; on the web lets you go to the mobile Groups application by scanning a QR code:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/business-technology-trend-qr-codes-for-simple-and-effective-augmented-reality/image004.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/business-technology-trend-qr-codes-for-simple-and-effective-augmented-reality/image004.png&quot; alt=&quot;Image004&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you are a &lt;a href=&quot;http://in.blackberry.com/&quot;&gt;BlackBerry user&lt;/a&gt;, you can display your unique QR code on your phone that friends can scan to add you to their friends list:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/business-technology-trend-qr-codes-for-simple-and-effective-augmented-reality/image0031.png&quot; alt=&quot;Image003&quot;&gt;&lt;/p&gt;
&lt;p&gt;While in Bangalore recently, I noticed a McDonald’s billboard in Bangalore with a large mysterious QR code on it. This is something advertisers have been doing for a while:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/business-technology-trend-qr-codes-for-simple-and-effective-augmented-reality/image006.jpg&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/business-technology-trend-qr-codes-for-simple-and-effective-augmented-reality/image006.jpg&quot; alt=&quot;Image006&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(via &lt;a href=&quot;http://mashable.com/2010/07/13/calvin-klein-qr-code-billboard/&quot;&gt;Mashable&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Google trends confirms the growing popularity of QR codes:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/business-technology-trend-qr-codes-for-simple-and-effective-augmented-reality/image0022.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/business-technology-trend-qr-codes-for-simple-and-effective-augmented-reality/image0022.png&quot; alt=&quot;Image002&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So why are they becoming so popular as a tool to engage users in the digital economy? Because they simple, yet powerful. They have the following characteristics:&lt;/p&gt;
&lt;p&gt;· Pretty – they are a type of digital art&lt;/p&gt;
&lt;p&gt;· Mysterious – evoking curiosity and intrigue&lt;/p&gt;
&lt;p&gt;· Convenient – eliminate typing, clicking etc. and make like easy for the user&lt;/p&gt;
&lt;p&gt;· Provide Instant Gratification – there’s something really satisfying about taking a picture of something and having your phone automatically take some action&lt;/p&gt;
&lt;p&gt;· Versatile – have a large number of uses&lt;/p&gt;
&lt;p&gt;If you think about it, QR codes in the “real world” enhance the user’s experience of the real world by augmenting it with digital information. Ultimately then, &lt;strong&gt;QR codes are a simple and effective way to achieve augmented reality.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For example, if I come across an interesting web page, I bookmark it or save it for later reading using a tool like &lt;a href=&quot;https://web.archive.org/web/20110430035319/http://readitlaterlist.com:80/&quot;&gt;Read it Later&lt;/a&gt;. QR codes can be used in the same way, &lt;strong&gt;as bookmarks for the real world.&lt;/strong&gt; Imagine walking past a restaurant in your neighborhood. If it had a QR code displayed prominently, you could scan it for checking out later. What would be even nicer is if the QR code linked to a website (like &lt;a href=&quot;http://justeat.in/&quot;&gt;JustEat&lt;/a&gt;) that allowed you to order takeaway. Fascinated? Google &lt;a href=&quot;http://www.google.co.in/search?q=innovative+uses+of+qr+codes&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;aq=t&amp;amp;rls=org.mozilla:en-US:official&amp;amp;client=firefox-a&quot;&gt;“innovative uses of qr codes”&lt;/a&gt; to discover more.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;If you’re wondering how you can use QR codes into your own business, check out my company Infragistics’ QR code generator here: &lt;a href=&quot;http://labs.infragistics.com/silverlightdv/2010.3/#/Samples/Barcode/BarcodeQRCode&quot;&gt;http://labs.infragistics.com/silverlightdv/2010.3/#/Samples/Barcode/BarcodeQRCode&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>My Talk at India HCI 2011: “A Pragmatic View of UX Driven Development”</title>
      <link>https://akshayluther.com/2011/04/11/my-talk-at-india-hci-2011-a-pragmatic-view-of-ux-driven-development/</link>
      <guid isPermaLink="true">https://akshayluther.com/2011/04/11/my-talk-at-india-hci-2011-a-pragmatic-view-of-ux-driven-development/</guid>
      <pubDate>Mon, 11 Apr 2011 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Thanks to the &lt;a href=&quot;https://web.archive.org/web/20110623025134/http://www.indiahci2011.in/&quot;&gt;India HCI 2011&lt;/a&gt; organisers for inviting me to speak at this year’s conference in Bangalore.&lt;/p&gt;
&lt;p&gt;It was great to meet and listen to thought leaders from India and around the world in this space. Of particular interest were:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;research into AR (Augmented Reality) by HITLabNZ&lt;a href=&quot;https://web.archive.org/web/20110413053018/http://www.hitlabnz.org:80/Home&quot;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;eye-tracking technology from SMI and Tobii&lt;/li&gt;
&lt;li&gt;the work being done on bottom-of-pyramid empowerment through mobile by Microsoft Research&lt;/li&gt;
&lt;li&gt;design-thinking approach to building exchanges for virtual economies (MMORPG “money”, frequent flier miles, credit card reward points etc.) by Cognizant Technology&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I talked about how using UI toolkits that a) have broad and deep functionality exposed by a powerful design-time interface and b) that are “pattern aware” is a winning strategy for UX driven development since they:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;minimise the disconnect between the customer, UX practictioner and developer by enabling the easy creation of high-fidelity prototypes&lt;/li&gt;
&lt;li&gt;effectively address the challenges of time, budget, developer ability and the growing need to target multiple devices&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As promised here are the slides:&lt;/p&gt;
&lt;iframe src=&quot;https://www.slideshare.net/slideshow/embed_code/7583071&quot; allowfullscreen&gt;&lt;/iframe&gt;
</description>
    </item>
    <item>
      <title>Don’t Tell Me, Show Me!</title>
      <link>https://akshayluther.com/2011/03/04/dont-tell-me-show-me/</link>
      <guid isPermaLink="true">https://akshayluther.com/2011/03/04/dont-tell-me-show-me/</guid>
      <pubDate>Fri, 04 Mar 2011 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;It turns out that one of the key evolutionary adaptations that sets human being apart is the ability to simulate experiences. According to psychologist Dan Gilbert, in his &lt;a href=&quot;http://www.ted.com/talks/dan_gilbert_asks_why_are_we_happy.html&quot;&gt;fascinating talk on what makes us happy&lt;/a&gt;, ‘it’s right up there with standing upright, language and opposable thumbs as one of the things that got our species out of the trees and into the shopping mall.’ It’s because of this experience simulator that Ben &amp;amp; Jerry’s don’t have a “liver &amp;amp; onion” ice cream flavour. And it’s not because they made some up and tried it, it’s because &lt;strong&gt;we can simulate the experience in our heads while sitting in our armchairs&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;It also turns out that our experience simulator is flawed. It works well for some types of experiences and not so well for others. Software is notorious for being firmly in the “not so well” category as illustrated by this classic cartoon:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/dont-tell-me-show-me/tree_swing_70s.jpeg&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;I’m not a psychologist but I think it’s safe to say that &lt;strong&gt;software is simply too complex to be adequately simulated by the brain just by using words&lt;/strong&gt;. If you think about it a software requirements specification is just that – &lt;strong&gt;a simulation of the actual software to be built using words&lt;/strong&gt;. So if it’s so inadequate as a tool to simulate how a piece of software will function, then why has it been so popular as the primary means of documenting and communicating requirements?&lt;/p&gt;
&lt;p&gt;In my experience, one reason for the popularity of the SRS is to constrain scope or to put it more bluntly, to cover one’s behind. The team or organisation building the software has an interest in constraining scope because often attached to the scope are time and resource commitments. If at a later stage the customer wants changes, then the SRS is used as a tool to justify more resources. “Sorry, that wasn’t in the original spec, we’re going to have to charge you more /it’s going to take longer / we need more developers.”&lt;/p&gt;
&lt;p&gt;But I think the primary reason is that software emerged from electronics engineering and so naturally electronics engineers tried to apply the the engineering principles and methods that worked so well for them. As a case in point, consider the name of the industry standard for a software requirements specification document: &lt;a href=&quot;http://en.wikipedia.org/wiki/IEEE_830&quot;&gt;IEEE 830&lt;/a&gt;. IEEE stands for Instution of Electrical and Electronics Engineers. Wait a minute? What are electrical and electronics engineers doing defining how software should be specified? I think they should stick to defining things that are, well, about electrical and electronics engineering. Like WiFi: &lt;a href=&quot;http://en.wikipedia.org/wiki/IEEE_802.11&quot;&gt;IEEE 802.11&lt;/a&gt;. But the truth about the nature of software emerged over time. Software is as much art as it is engineering. It’s as much a creative endeavour as it is a scientific one. There are aesthetics and other human factors involved just as there are when building a house, another activity that combines art and engineering.&lt;/p&gt;
&lt;p&gt;Because software is a human invention, it isn’t bound by the laws of physics or chemistry. It is limited only by the bounds of human imagination. That makes it a field that evolves at a furious pace, constantly entering into unexplored territory and with limitless opportunities to innovate. All this makes it a very exciting area to work in but it also means that there are a lot of unknowns both in the problem and solution spaces. In other words, the customer rarely has a clear idea of what he wants (“I know what I want when I see it.”), and the business analyst or architect rarely has a clear solution.&lt;/p&gt;
&lt;p&gt;In a recent episode of the television show Mythbusters, President Obama asked the Mythbusters Adam Savage and Jamie Hyneman to &lt;a href=&quot;http://en.wikipedia.org/wiki/MythBusters_%282010_season%29#Episode_158_.E2.80.93_President.27s_Challenge&quot;&gt;revisit (spoiler alert!)&lt;/a&gt; the previously busted &lt;a href=&quot;http://en.wikipedia.org/wiki/MythBusters_%282006_season%29#Episode_46_.E2.80.93_.22Archimedes.27_Death_Ray.22&quot;&gt;“Archimedes’ Death Ray”&lt;/a&gt; myth that Archimedes constructed a death ray by reflecting sunlight onto, and thus igniting, Roman vessels. A key challenge in the revisit was to design an aiming mechanism that would allow 500 people to aim at a single point their individual rays reflected off mirrors. Adam and Jamie both tested ideas in small scale. While experimenting with his idea, Adam realised that the idea itself was not feasible. But in process of experimenting with it and &lt;strong&gt;“seeing it”&lt;/strong&gt;, he had a an “Eureka moment” which led to a much more superior design, one that was eventually used in the actual full-scale experiment. ‘Failure is always an option’ is one of Adam Savage’s favourite sayings and the process of designing the aiming mechanism illustrates why. At the end of the episode, Jamie Hyneman says, ‘&lt;strong&gt;When we experiment, when we try things, and we fail, we start to ask why… And that’s when we learn.&lt;/strong&gt;‘ This learning through experimenting and failing is typical in software development.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;So how can you efficiently deliver what the customer wants and at the same time facilitate experimentation and learning?&lt;/strong&gt; Through &lt;strong&gt;mockups, prototypes&lt;/strong&gt; and &lt;strong&gt;iterative development.&lt;/strong&gt; All these techniques cater for the inherent complexity of software, the power of visualisation and the usefulness of learning through experimenting.&lt;/p&gt;
&lt;p&gt;Here are the various techniques I’ve discussed so far on a heatmap showing fidelity vs. ease of creation.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/dont-tell-me-show-me/fidelity-vs-ease-of-creation.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/dont-tell-me-show-me/fidelity-vs-ease-of-creation.png&quot; alt=&quot;&quot; title=&quot;Fidelity vs Ease of Creation&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mockups&lt;/strong&gt; allow the customer to effectively simulate what the end software is going to be. Paper mockups are of course the simplest way to nut out a concept for a user interface. There are lots of software tools for creating “functioning” mockups that simulate the final work software. Some excellent ones are &lt;a href=&quot;http://www.irise.com/&quot;&gt;iRise&lt;/a&gt; and &lt;a href=&quot;http://www.microsoft.com/expression/products/Sketchflow_Overview.aspx&quot;&gt;StetchFlow&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Prototypes&lt;/strong&gt; take this one step further and actually include key working parts allowing the customer to play with the software and the development team to experiment with certain ideas, test them out and in the process refine the solution without a lot of investment. The key type of tool that enables prototype creation is &lt;strong&gt;user interface controls that provide a lot of rich functionality out of the box and are easy to use&lt;/strong&gt; (such as those made by my company &lt;a href=&quot;http://www.infragistics.com/&quot;&gt;Infragistics&lt;/a&gt;; the added benefit of using Infragistics controls is that you get a lot of UX (user experience) expertise, knowledge and investment baked into the controls, and so your prototypes automatically have rich UX that users/customers love.) &lt;strong&gt;Prototypes are the sweet-spot&lt;/strong&gt; of high fidelity and ease of creation. Using rich UI controls that will be used in actual development means that there is &lt;strong&gt;no disconnect&lt;/strong&gt; between what the user sees and what is finally delivered. The gap between the problem and solution spaces is minimised with minimum effort.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Iterative&lt;/strong&gt; development by incrementally adding functionality that is tested by the customer simultaneously conserves development efforts and satisfies customer requirements effectively. Agile project management, test-driven development and continuous integration are some aspects that in my experience are incredibly effective in facilitating this.&lt;/p&gt;
&lt;p&gt;I’d like to thank my favourite professor at university, &lt;a href=&quot;http://pjradcliffe.wordpress.com&quot;&gt;Pj Radcliffe&lt;/a&gt; for arming me with these thoughts and tools very early on in my career. Thanks Pj!&lt;/p&gt;
&lt;h3&gt;Archimedes constructed a death ray by reflecting sunlight onto, and thus igniting, Roman vessels.&lt;/h3&gt;
</description>
    </item>
    <item>
      <title>UX Lessons: Cleartrip</title>
      <link>https://akshayluther.com/2010/10/22/ux-lessons-cleartrip/</link>
      <guid isPermaLink="true">https://akshayluther.com/2010/10/22/ux-lessons-cleartrip/</guid>
      <pubDate>Fri, 22 Oct 2010 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;There is a plethora of flight booking websites in India: MakeMyTrip, Yatra, Ixigo, Ezeego etc. I have tended to mainly use MakeMyTrip. That is, until now.&lt;/p&gt;
&lt;p&gt;Enter &lt;a href=&quot;http://www.cleartrip.com/&quot;&gt;Cleartrip&lt;/a&gt; which delivers, simply put, a great user experience.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/ux-lessons-cleartrip/cleartrip.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/ux-lessons-cleartrip/cleartrip.png&quot; alt=&quot;&quot; title=&quot;Cleartrip&quot;&gt;&lt;/a&gt;Let me highlight some things I like.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Design, Layout &amp;amp; Navigation&lt;/strong&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The layout and navigation are simple, uncluttered and clear. Good use of whitespace. The visual design is obviously inspired by Google. Who better to ape?&lt;/li&gt;
&lt;li&gt;From and To cities are autocomplete textboxes so I can type the first few letters of the city name rather than having to select the city from a long list like with some other travel websites. The autocomplete is smart so I can type the airport code instead:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/ux-lessons-cleartrip/bom.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/ux-lessons-cleartrip/bom.png&quot; alt=&quot;&quot; title=&quot;bom&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UX Lesson: It’s easier to type when the user has to choose from lots of data.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Typing is easier than pointing and clicking. That’s why I think Spotlight is so awesome and Desktop Search is the killer feature in Windows 7.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/ux-lessons-cleartrip/Leopard_spotlight.png&quot; alt=&quot;&quot; title=&quot;Spotlight&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Performance&lt;/h2&gt;
&lt;p&gt;The site feels quite snappy (much faster than the other sites out there).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UX Lesson: Performance is a key part of the overall user experience.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;‘Memory’, Ease of Booking &amp;amp; Account Creation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I was searching for some flights but got interrupted and when I went back to the site it remembered the details of my last search. Note that I didn’t create an account – it just remembered.&lt;/li&gt;
&lt;li&gt;I didn’t have to create an account to book my flights. I just needed to provide the minimum information required to make a booking and pay for the flights and I received an email with my ticket details.&lt;/li&gt;
&lt;li&gt;What happened next is great. I received a separate email saying that an account had been created using the basic information I have provided at the time of booking. I had the option to activate the account by providing a password and some additional details. This is a great example of breaking down barriers to using your application.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/ux-lessons-cleartrip/cleatrip-set-password.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/ux-lessons-cleartrip/cleatrip-set-password.png&quot; alt=&quot;&quot; title=&quot;cleatrip set password&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UX Lesson:&lt;/strong&gt; &lt;strong&gt;Be smart about the information you collect and remember it so that the user doesn’t have to retype it.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;**UX Lesson: Don’t force the user to create an account unless absolutely necessary.
**&lt;/p&gt;
&lt;p&gt;Everyone hates creating accounts. Nobody wants to keep track of yet another username and password. So the best thing you can do is simply to let the user use an account he already has. OpenID seems to be the de-facto way to achieve this and &lt;a href=&quot;http://stackoverflow.com/&quot;&gt;StackOverflow&lt;/a&gt; does an excellent job. Kudos to &lt;a href=&quot;https://blog.codinghorror.com/&quot;&gt;Jeff Atwood&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;&lt;a href=&quot;https://akshayluther.com/media/ux-lessons-cleartrip/log-in-stack-overflow-mozilla-firefox_2010-10-21_17-20-32.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/ux-lessons-cleartrip/log-in-stack-overflow-mozilla-firefox_2010-10-21_17-20-32.png&quot; alt=&quot;&quot; title=&quot;Log In - Stack Overflow&quot;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h2&gt;Other Little Things That Make a Big Difference&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The subject of the confirmation email is clear and meaningful: &lt;em&gt;Ticket for Mumbai – New Delhi one-way flight — Trip ID XXXXXXXX&lt;/em&gt;. This is great if I’m searching my mail in a hurry to print out the ticket or check flights details. Much more useful than something like &lt;em&gt;MakeMyTrip E-Ticket for Booking ID FLT0000XXXXXX&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;If I log in, I can see a list of upcoming trips and cancel tickets. I can also apparently see the refund amount before I cancel but this didn’t work for me because of some fare code information not being updated or something. But at least Cleartrip was good enough to give me a plausible reason for this feature not working as advertised and provide customer service contact details.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;UX Lesson: UX is about paying attention to lots of little things that all combine together to make a big difference.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The user experience is my no means perfect. For example there are some interesting innovations like &lt;a href=&quot;https://web.archive.org/web/20101121161018/http://www.cleartrip.com:80/graphs/&quot;&gt;Graphs&lt;/a&gt; but they didn’t work. But the point is that the few things that stand out are enough for me to switch over to Cleartrip. They show that they have put real thought into making the booking experience simple and hassle-free. The cost for me to switch is minimal so I will. But if something better comes along I’ll switch again. So in order to be competitive and stay competitive it’s not enough just to design for UX upfront but instead to to view it a continuous process. &lt;strong&gt;I therefore think that organisations that integrate UX design into the development process will win.&lt;/strong&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>What is a Technical Evangelist?</title>
      <link>https://akshayluther.com/2010/10/19/what-is-a-technical-evangelist/</link>
      <guid isPermaLink="true">https://akshayluther.com/2010/10/19/what-is-a-technical-evangelist/</guid>
      <pubDate>Tue, 19 Oct 2010 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;It’s been a while since I’ve posted to this blog, so first things first, I’d like to bring you up to date. After moving from Melbourne to London and spending a year there consulting to &lt;a href=&quot;https://web.archive.org/web/20110129112658/http://www.earthport.com/&quot;&gt;Earthport&lt;/a&gt; and working with &lt;a href=&quot;https://web.archive.org/web/20101231051134/http://www.thomsons.com/&quot;&gt;Thomsons&lt;/a&gt; I have moved to India and joined &lt;a href=&quot;http://www.infragistics.com/&quot;&gt;Infragistics&lt;/a&gt; as a Technical Evangelist.&lt;/p&gt;
&lt;p&gt;As someone whose bread and butter has been very closely tied to the &lt;em&gt;delivery of production software&lt;/em&gt; for more than 10 years (as a developer, technical lead, architect, consultant and even an entrepreneur) this represents a shift in career path into to a professional function that is business focused. &lt;em&gt;What is a Technical Evangelist?&lt;/em&gt; is the inevitable question I am asked when I tell people what I do. Wikipedia, the first stop for all of life’s pressing questions says,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;A technical or technology evangelist is a person who attempts to build a critical mass of support for a given technology in order to establish it as a technical standard in a market that is subject to network effects.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Thanks to my colleague &lt;a href=&quot;http://blogs.infragistics.com/blogs/tony_lombardo/archive/2008/02/20/what-exactly-is-a-technical-evangelist.aspx&quot;&gt;Tony Lombardo’s excellent insights&lt;/a&gt;, and the benefit of having spent a few month on the job I think I have a fairly good understanding this dynamic and exciting role with elements of sales, marketing and business and technology innovation.&lt;/p&gt;
&lt;p&gt;As I see it, a Technical Evangelist’s role is to engage and inspire potential users of the technology.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is done through various forms of communication. In my case: presentations, demos, talks, proof-of-concepts, sample code, blogs, articles, phone calls, emails, social media and the occasional bit of technical support. Because Infragistics primarily sells development software, I communicate with developers, architects, project managers, product owners, business analysts and senior managers. I speak different languages to each user so in a day I could be talking to an architect about streaming realtime data to a browser-based application using push technologies and then to a manager about agile methodology and the value of UI prototyping. I strive to put myself in each user’s shoes and understand what is important to them so I have a context in which to communicate effectively. My background in software development, consulting and entrepreneurship helps me immensely in this. Being a Technical Evangelist is also a continuous learning process. Apart from keeping up to date with Infragistics products and trends in the .NET/Microsoft ecosystem, I make an effort to to aware of software, technology and business trends at large.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Because the ultimate goal is to sell, a Technical Evangelist could be viewed a salesperson, but as Tony points out, &lt;em&gt;selling is almost like a side effect&lt;/em&gt;. The reason for this is that an evangelist communicates not to sell, but to educate. Tony continues,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;I present demos to teach about the product, and why I think it’s great. I’m showing you how to accomplish a task using the product. When I build a sample, I’m not just building another test project. I’m demonstrating the capabilities of a product that have the potential to change your job, or at least make it easier.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A technical evangelist does what he does because he is passionate about technology and the impact that it can have in making life better. Evangelism is a natural byproduct of that. Personally, I am passionate about many things that help me in my job:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The importance of usability, user experience and user interface design (and visual and product design in general)&lt;/li&gt;
&lt;li&gt;KISS&lt;/li&gt;
&lt;li&gt;Efficiency and productivity: working smarter, not harder&lt;/li&gt;
&lt;li&gt;Agile methodology&lt;/li&gt;
&lt;li&gt;SaaS and web applications&lt;/li&gt;
&lt;li&gt;SOA&lt;/li&gt;
&lt;li&gt;Cloud computing&lt;/li&gt;
&lt;li&gt;RIA, AJAX and Silverlight&lt;/li&gt;
&lt;li&gt;Software development with .NET and the Microsoft ecosystem&lt;/li&gt;
&lt;li&gt;The Internet&lt;/li&gt;
&lt;li&gt;Innovation in technology and business&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One of my heroes, &lt;a href=&quot;http://blog.guykawasaki.com/&quot;&gt;Guy Kawasaki&lt;/a&gt; is a former Apple Technical Evangelist and is noted for having brought the concept of evangelism to the high-tech business. Here are some words of wisdom from the man himself: &lt;a href=&quot;https://web.archive.org/web/20101017105808/http://blog.guykawasaki.com:80/2006/01/the_art_of_evan.html&quot;&gt;The Art of Evangelism&lt;/a&gt;. Incidentally I also use Guy’s &lt;a href=&quot;https://web.archive.org/web/20101023115227/http://blog.guykawasaki.com:80/2005/12/the_102030_rule.html&quot;&gt;10/20/30&lt;/a&gt; rule for my presentations.&lt;/p&gt;
&lt;p&gt;I hope this gives you a better understanding of what a Technical Evangelist is.&lt;/p&gt;
&lt;p&gt;I look forward to sharing my thoughts on user experience, software development with Infragistics/.NET and business and technology in general.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Improving LINQ Except and Intersect by using a lambda expression for custom comparison</title>
      <link>https://akshayluther.com/2009/08/14/improving-linq-except-and-intersect/</link>
      <guid isPermaLink="true">https://akshayluther.com/2009/08/14/improving-linq-except-and-intersect/</guid>
      <pubDate>Fri, 14 Aug 2009 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;I was recently doing some work where I had to use Except and Insersect, but with some custom comparison logic. Let me illustrate by way of an example. If I had the following class&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;public class Widget
{
    public int ID { get; set; }
    public string Name { get; set; }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and created two lists like this&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;List&amp;lt;Widget&amp;gt; first = new List&amp;lt;Widget&amp;gt;()
{
    new Widget() { ID = 1, Name = &amp;quot;Alpha&amp;quot;},
    new Widget() { ID = 2, Name = &amp;quot;Beta&amp;quot;},
    new Widget() { ID = 3, Name = &amp;quot;Gamma&amp;quot;},
}; 

List&amp;lt;Widget&amp;gt; second = new List&amp;lt;Widget&amp;gt;()
{
    new Widget() { ID = 2, Name = &amp;quot;Foo&amp;quot;},
    new Widget() { ID = 3, Name = &amp;quot;Bar&amp;quot;},
    new Widget() { ID = 4, Name = &amp;quot;Baz&amp;quot;},
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and tried to use Except like this&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;first.Except(second).ToList().ForEach(x =&amp;gt; Console.WriteLine(&amp;quot;ID=&amp;quot; + x.ID + &amp;quot;, &amp;quot; + x.Name));
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I would get:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ID=1, Alpha
ID=2, Beta
ID=3, Gamma
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Since I wanted to do a comparison on the ID property, what I really want is just the first item the list i.e. [ID=1, Alpha]. One way of achieving this to override Equals() on the Widget class, but this may not always be practical or even possible. Another option is to supply a custom IEqualityComparer&amp;lt;T&amp;gt;. To do this I would need to a define a class that implements Equals() and GetHashCode(), the two methods on IEqualityComparer&amp;lt;T&amp;gt; and supply an instance of this class as an additional parameter to Equals() or Intersect(). Unfortunately, I found neither of these practical since I had a number of classes that that I wanted to use with Except() or Intersect() and wanted a more elegant solution.&lt;/p&gt;
&lt;p&gt;“Why not just use a lambda expression to express the comparison?”, I thought and came up with the following two extensions:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;public static class LinqExtensions
{
    public static IEnumerable&amp;lt;TSource&amp;gt; Except&amp;lt;TSource&amp;gt;(this IEnumerable&amp;lt;TSource&amp;gt; first, IEnumerable&amp;lt;TSource&amp;gt; second, Func&amp;lt;TSource, TSource, bool&amp;gt; comparer)
    {
        return first.Where(x =&amp;gt; second.Count(y =&amp;gt; comparer(x, y)) == 0);
    } 

    public static IEnumerable&amp;lt;TSource&amp;gt; Intersect&amp;lt;TSource&amp;gt;(this IEnumerable&amp;lt;TSource&amp;gt; first, IEnumerable&amp;lt;TSource&amp;gt; second, Func&amp;lt;TSource, TSource, bool&amp;gt; comparer)
    {
        return first.Where(x =&amp;gt; second.Count(y =&amp;gt; comparer(x, y)) == 1);
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now I can compare on the ID by supplying the comparison logic as a lambda expression:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Console.WriteLine(&amp;quot;Except&amp;quot;);
first.Except(second, (x, y) =&amp;gt; x.ID == y.ID).ToList().ForEach(x =&amp;gt; Console.WriteLine(&amp;quot;ID=&amp;quot; + x.ID + &amp;quot;, &amp;quot; + x.Name));

Console.WriteLine(&amp;quot;Intersect&amp;quot;);
first.Intersect(second, (x, y) =&amp;gt; x.ID == y.ID).ToList().ForEach(x =&amp;gt; Console.WriteLine(&amp;quot;ID=&amp;quot; + x.ID + &amp;quot;, &amp;quot; + x.Name));
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This gives me the results I want:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Except
ID=1, Alpha
Intersect
ID=2, Beta
ID=3, Gamma
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hope you find them useful!&lt;/p&gt;
</description>
    </item>
    <item>
      <title>The Rich Web Development Landscape</title>
      <link>https://akshayluther.com/2008/05/08/the-rich-web-development-landscape/</link>
      <guid isPermaLink="true">https://akshayluther.com/2008/05/08/the-rich-web-development-landscape/</guid>
      <pubDate>Thu, 08 May 2008 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;A few years ago if you wanted to develop a web application all you could do was build a classic synchronous web application using plain old ASP.NET, JSP or PHP depending on which camp you were in. Then along came Ajax and Web 2.0 and changed the landscape. In &lt;a href=&quot;https://akshayluther.com/2008/04/23/running-web-applications-in-their-own-windows/&quot;&gt;my last post&lt;/a&gt;, I touched on some of technologies that make today such an exciting time to be an Internet developer.&lt;/p&gt;
&lt;p&gt;On the software-side, AJAX has so far been the primary reason for this, but Silverlight and Adobe AIR are blurring the lines even further. On the infrastructure-side, broadband and faster hardware have been the main catalysts, but access to cheap and reliable server-side computing resources such as Amazon’s S3 and EC2 are giving application developers unprecedented ability to scale elegantly. Throw in to the mix innovative web services from the likes of Google and Flickr and we have a wondefully-rich array of tools and technologies to build web applications with.&lt;/p&gt;
&lt;p&gt;Now, I’d like to list some types of interesting options for types of applications and tools in this new landscape and point out some interesting developments and trends along the way. If you’re a developer or entrepreneur looking for ideas for your next project (like I am), perhaps this will give you some options you may not have considered.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Regular Ajax&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/the-rich-web-development-landscape/ajax_cleaning_liquid.jpg&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/the-rich-web-development-landscape/ajax_cleaning_liquid.jpg&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ajax is quite a mature technology now, tested and proven and with a wide range of tooling and support (listen up you conservative pointy-haired bosses!)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.asp.net/ajax/&quot;&gt;ASP.NET Ajax&lt;/a&gt; has a low learning-curve. Standard ASP.NET skills along with a grasp of Ajax concepts are all that are required for you to use it effectively since all the plumbing Javascript code is taken care of. It’s appropriate for basic applications (for example &lt;a href=&quot;http://www.quotiki.com/&quot;&gt;Quotiki&lt;/a&gt;) using mostly standard ASP.NET controls and requiring infrequent updates.&lt;/p&gt;
&lt;p&gt;But for highly-dynamic applications with lots of updates or a graphics-intensive user interface (think &lt;a href=&quot;http://maps.google.com/&quot;&gt;Google Maps&lt;/a&gt;), you’ll need to use a &lt;a href=&quot;http://en.wikipedia.org/wiki/List_of_Ajax_frameworks&quot;&gt;Javascript Ajax framework&lt;/a&gt;. Although I haven’t used it in anger, I’ve played with and heard good things about &lt;a href=&quot;http://extjs.com/&quot;&gt;Ext&lt;/a&gt; and I’m quite impressed with it. &lt;a href=&quot;http://code.google.com/webtoolkit/&quot;&gt;Google Web Toolkit&lt;/a&gt;is very compelling since it lets you write applications in Java (which it compiles it to Javascript) and boasts some other great features.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Rich Internet Applications&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://akshayluther.com/media/the-rich-web-development-landscape/silverlight1.gif&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/the-rich-web-development-landscape/silverlight1.gif&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Microsoft &lt;a href=&quot;https://web.archive.org/web/20080509083928/http://silverlight.net/&quot;&gt;Silverlight&lt;/a&gt;. Love it or hate it, it’s here to stay.&lt;/p&gt;
&lt;p&gt;Personally, I think its a brilliant piece of technology and am a big fan of its potential. It brings the advantages of desktop applications (responsive UI, easy to build, local storage, networking) to web applications.&lt;/p&gt;
&lt;p&gt;There’s also &lt;a href=&quot;http://www.adobe.com/products/air/&quot;&gt;Adobe Air&lt;/a&gt;to look at for building RIAs.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Mobile&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Until recently, applications on mobiles were disconnected. But, just as your computer seems pretty much useless without Internet access today, mobile phones too will seem pointless without some kind of access to the cloud. Mobile applications are going to be increasingly web-based. And it seems that Apple is who is going to make it happen.&lt;/p&gt;
&lt;p&gt;The iPhone has of course set the mobile market on fire sitting at 28% of the U.S. SmartPhone market share only eight months from release, second only to RIM (BlackBerry) at 41% (&lt;a href=&quot;http://arstechnica.com/journals/apple.ars/2008/02/05/iphone-owns-28-percent-of-us-smartphone-market&quot;&gt;ars technica&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;When it was first introduced, there was no SDK to build native iPhone applications – just web applications viewed through iPhone’s Safari browser. A couple of months ago, however, Apple unveiled their &lt;a href=&quot;https://web.archive.org/web/20080510001010/http://www.apple.com/quicktime/qtv/iphoneroadmap/&quot;&gt;iPhone Software Roadmap&lt;/a&gt; and released the &lt;a href=&quot;http://developer.apple.com/iphone/&quot;&gt;iPhone SDK&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In his iPhone software roadmap presentation, Jobs says, “The iPhone is really bringing the Internet to a mobile device for the first time. You really do have the Internet in your pocket.” And he appears to be right – a whopping 71% of U.S. mobile browser usage is on Safari, followed by Pocket IE at 12%. &lt;a href=&quot;https://akshayluther.com/media/the-rich-web-development-landscape/picture-31.png&quot;&gt;&lt;img src=&quot;https://akshayluther.com/media/the-rich-web-development-landscape/picture-31.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you’re thinking of learning Objective C, why not get stuck into it and develop an iPhone app?&lt;/p&gt;
&lt;p&gt;Another interesting development is Google’s mobile platform &lt;a href=&quot;http://code.google.com/android/&quot;&gt;Android&lt;/a&gt;. Definitely worth checking out.&lt;/p&gt;
&lt;p&gt;Microsoft’s development platform in this space is &lt;a href=&quot;http://www.asp.net/mobile/&quot;&gt;ASP.NET for Mobiles&lt;/a&gt;. I haven’t used it so not much more to say about it except, go check it out and/or post your thoughts in a comment.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Running Web Applications in Their Own Windows</title>
      <link>https://akshayluther.com/2008/04/23/running-web-applications-in-their-own-windows/</link>
      <guid isPermaLink="true">https://akshayluther.com/2008/04/23/running-web-applications-in-their-own-windows/</guid>
      <pubDate>Wed, 23 Apr 2008 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Ever since I switched to Gmail as my email application in late 2004, I’ve wanted the ability to run it in a separate window with its own icon, grouped differently to other browser windows on my desktop and without all the clutter of the browser buttons and menus.&lt;/p&gt;
&lt;p&gt;I’ve been meaning to write something like this for a while by embedding an IE control into a WinForms application. But, for better or worse, I discovered I don’t have to – there’s a couple of pretty cool tools for both Windows and OS X that do exactly this.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://fluidapp.com/&quot;&gt;Fluid&lt;/a&gt; for OS X (Leopard only)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.archive.org/web/20080425090621/http://labs.mozilla.com/2007/10/prism/&quot;&gt;Prism&lt;/a&gt; for Windows&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both work in a similar fashion. To create a “Site Specific Browser” in Fluid, you specify a URL, a name, an icon and where to create the application (typically in the “Applications” folder). In Prism, you specify a URL, a name, where to put shortcuts and which browser bits to show/enable (e.g. status bar).&lt;/p&gt;
&lt;p&gt;I’ve set up Gmail using both tools and its working great. Chris Ivarson has a &lt;a href=&quot;https://web.archive.org/web/20080418155626/http://csi.nfshost.com:80/blog/?q=goodies&quot;&gt;great Gmail icon for Fluid&lt;/a&gt; (scroll to the bottom of the page to get it):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/running-web-applications-in-their-own-windows/2116296365_53c43503c8.jpg&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;So Gmail is now finally a first-class citizen on my desktop, a richly deserved position.&lt;/p&gt;
&lt;p&gt;These types of tools fascinate me because they reflect the ever-growing use of web applications as opposed to desktop applications for everyday computing. On the software-side, &lt;a href=&quot;http://en.wikipedia.org/wiki/AJAX&quot;&gt;AJAX&lt;/a&gt; has so far been the primary reason for this, but &lt;a href=&quot;https://web.archive.org/web/20080502125827/http://silverlight.net/&quot;&gt;Silverlight&lt;/a&gt; and &lt;a href=&quot;http://www.adobe.com/products/air/&quot;&gt;Adobe AIR&lt;/a&gt; are blurring the lines even further. On the infrastructure-side, broadband and faster hardware have been the main catalysts, but access to cheap and reliable server-side computing resources such as Amazon’s &lt;a href=&quot;http://aws.amazon.com/s3&quot;&gt;S3&lt;/a&gt; and &lt;a href=&quot;http://aws.amazon.com/ec2&quot;&gt;EC2&lt;/a&gt; are giving application developers unprecedented ability to scale elegantly. Throw in to the mix innovative web services from the likes of &lt;a href=&quot;http://code.google.com/&quot;&gt;Google&lt;/a&gt; and &lt;a href=&quot;http://www.flickr.com/services/&quot;&gt;Flickr&lt;/a&gt; and we have a wondefully-rich array of tools and technologies to build web applications with.&lt;/p&gt;
&lt;p&gt;This is an exciting time indeed to be a web developer and to be a part of the future of computing!&lt;/p&gt;
</description>
    </item>
    <item>
      <title>I Finally Did It</title>
      <link>https://akshayluther.com/2008/04/19/i-finally-did-it/</link>
      <guid isPermaLink="true">https://akshayluther.com/2008/04/19/i-finally-did-it/</guid>
      <pubDate>Sat, 19 Apr 2008 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;So I finally bought a Mac (the new Black MacBook to be precise). Woohoo!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://akshayluther.com/media/i-finally-did-it/MacBook.jpg&quot; alt=&quot;MacBook&quot;&gt;&lt;/p&gt;
&lt;p&gt;I’ve been using it for a month now and I’m definitely sold.&lt;/p&gt;
</description>
    </item>
  </channel>
</rss>
