<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Floating Sun &#187; Software</title>
	<atom:link href="http://floatingsun.net/category/technology/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://floatingsun.net</link>
	<description></description>
	<lastBuildDate>Wed, 25 Jan 2012 07:47:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Bitcasa: First Impressions</title>
		<link>http://floatingsun.net/2012/01/24/bitcasa-first-impressions/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=bitcasa-first-impressions</link>
		<comments>http://floatingsun.net/2012/01/24/bitcasa-first-impressions/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 07:47:49 +0000</pubDate>
		<dc:creator>Diwaker Gupta</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Bitcasa]]></category>
		<category><![CDATA[Dropbox]]></category>
		<category><![CDATA[Qt]]></category>

		<guid isPermaLink="false">http://floatingsun.net/?p=1863</guid>
		<description><![CDATA[I got my invite for the Bitcasa beta last week but only got around to installing it yesterday. I&#8217;ve only used it sparingly thus far. If you are in a hurry, here&#8217;s the TL;DR version: Users might find the &#8220;cloudify&#8221; &#8230; <a href="http://floatingsun.net/2012/01/24/bitcasa-first-impressions/">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://floatingsun.net/2007/02/07/whats-with-__macosx-in-zip-files/' rel='bookmark' title='Whats with __MACOSX in Zip files?'>Whats with __MACOSX in Zip files?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img title="Bitcasa" src="http://tctechcrunch2011.files.wordpress.com/2011/09/bitcasa-logo.png?w=250" alt="Bitcasa" width="250" height="113" /></p>
<p>I got my invite for the Bitcasa beta last week but only got around to installing it yesterday. I&#8217;ve only used it sparingly thus far. If you are in a hurry, here&#8217;s the TL;DR version:</p>
<ul>
<li>Users might find the &#8220;cloudify&#8221; model <strong>confusing</strong></li>
<li>Built using <a href="http://osxfuse.github.com/">osxfuse</a> (not to be confused with <a href="http://code.google.com/p/macfuse/">MacFUSE</a>) and <a href="http://qt.nokia.com/">Qt</a></li>
<li>Infinite storage sounds too good to be true. <strong>What&#8217;s the catch?</strong></li>
<li>Building <strong>trust</strong> with users will take time</li>
</ul>
<h2>Cloudification and Confusion</h2>
<p>Here&#8217;s <a href="http://www.bitcasa.com/faq#q3">Bitcasa on what cloudify does:</a></p>
<blockquote><p>When a folder is Cloudified, a corresponding virtual folder is created on the Bitcasa server and the contents of your local folder are copied up to the server. When Connected to the Bitcasa server, any changes or additions to the folder will live on the server. When not Connected to the Bitcasa server, any changes or addition to the folder will live locally.</p></blockquote>
<p>Just think about that for a second. The &#8220;cloudify&#8221; model sounds great in principle, but it does add a lot of complexity in terms of how users interact with the system. For instance, when I&#8217;m offline and make changes to one of my cloudified folders, that change happens presumably locally. I would assume that when I come back online, these changes are synced back to Bitcasa ala <a class="zem_slink" title="Dropbox" href="http://www.dropbox.com" rel="homepage">Dropbox</a>. But what if I accidentally <a href="http://www.bitcasa.com/faq#q10">disconnect</a> a folder, make some changes and then <a href="http://www.bitcasa.com/faq#q11">reconnect</a> &#8212; per the FAQ, the changes made locally won&#8217;t be synced.</p>
<p>The consumer cloud storage is fairly mature right now and one can learn a lot by looking at how people respond to other systems. <a href="http://www.quora.com/Dropbox/Why-is-Dropbox-more-popular-than-other-programs-with-similar-functionality">This thread on Quora</a> is particularly insightful: again and again, <strong>simplicity </strong>comes up as one of the key reasons behind Dropbox&#8217;s success.</p>
<p>My prediction is that Bitcasa&#8217;s cloudify feature will be leveraged primarily by power users and the rest would end up using the default Bitcasa folder, Dropbox style.</p>
<h2>Nuts and Bolts</h2>
<p>Bitcasa seems to be built primarily using Qt. This isn&#8217;t a surprise: Qt is a mature, open source and cross-platform library.</p>
<pre>$ otool -L Bitcasa
Bitcasa:
 /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
 /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
 /usr/lib/libcrypto.0.9.8.dylib (compatibility version 0.9.8, current version 44.0.0)
 <strong>@executable_path/../Frameworks/libmacfuse_i64.2.dylib (compatibility version 10.0.0, current version 2.0.0)</strong>
 /usr/lib/libssl.0.9.8.dylib (compatibility version 0.9.8, current version 44.0.0)
 /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 53.0.0)
 <strong>@executable_path/../Frameworks/QtWebKit.framework/Versions/4/QtWebKit (compatibility version 4.7.0, current version 4.7.4)</strong>
<strong> @executable_path/../Frameworks/QtXml.framework/Versions/4/QtXml (compatibility version 4.7.0, current version 4.7.4)</strong>
<strong> @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui (compatibility version 4.7.0, current version 4.7.4)</strong>
<strong> @executable_path/../Frameworks/QtNetwork.framework/Versions/4/QtNetwork (compatibility version 4.7.0, current version 4.7.4)</strong>
<strong> @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore (compatibility version 4.7.0, current version 4.7.4)</strong>
 /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
 /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1105.0.0)

$ mount
Sample Videos on /Users/diwaker/Bitcasa/Sample Videos (osxfusefs, nodev, nosuid, synchronous, mounted by diwaker)
TryBitcasa on /Users/diwaker/TryBitcasa (osxfusefs, nodev, nosuid, synchronous, mounted by diwaker)
TryBitcasaDedup on /Users/diwaker/TryBitcasaDedup (osxfusefs, nodev, nosuid, synchronous, mounted by diwaker)</pre>
<p>Note further that Bitcasa represents &#8220;connected&#8221; folders as mount points over the existing folders. This is why when you disconnect a folder and make changes, they won&#8217;t propagate to Bitcasa&#8217;s copy of that folder. They are using osxfuse which implies that Bitcasa is intercepting file system calls; this is in contrast to Dropbox-like systems that detect changes to the local filesystem asynchronously. I haven&#8217;t compared fine-grained read/write performance just yet.</p>
<p>Here&#8217;s a snapshot of the Bitcasa Folders UI:</p>
<p><a href="http://floatingsun.net/wordpress/wp-content/uploads/2012/01/Bitcasa-Folders.jpg"><img title="Bitcasa Folders" src="http://floatingsun.net/wordpress/wp-content/uploads/2012/01/Bitcasa-Folders-300x194.jpg" alt="" width="300" height="194" /></a></p>
<p>Bitcasa also does some <strong>deduplication. </strong>Uploading 100MB of mostly random data took around 4 minutes on a pretty fat pipe which isnt&#8217; bad at all. Copying that data back out took just as long, if not longer. A copy of the same folder took less than 10 seconds to cloudify!</p>
<h2>Security</h2>
<p>Much has been said about Bitcasa&#8217;s security. However, most of the articles are concerned with a specific dimension of security: encryption.</p>
<p>A detailed discussion of Bitcasa&#8217;s security in general and encryption, in particular, deserves a post of its own. For now, suffice to say that even after several years of user experience, Dropbox still hit some <a href="http://blog.dropbox.com/?p=821">pretty nasty</a> <a href="http://www.economist.com/blogs/babbage/2011/05/internet_security">security snafus</a> in 2011. Like a lot of you, I&#8217;m very concerned about security, especially with a service that is offering me infinite storage for free! It takes time to build trust with your users &#8212; there&#8217;s no short cut.</p>
<p>Overall, Bitcasa is definitely interesting. Dropbox was almost beginning to monopolize the consumer cloud storage market, so some good competition will hopefully benefit the end users in the long run.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/pixy.gif?x-id=99c9b344-fdcd-4993-80cd-40d9210d335e" alt="" /></div>
<p>Related posts:<ol>
<li><a href='http://floatingsun.net/2007/02/07/whats-with-__macosx-in-zip-files/' rel='bookmark' title='Whats with __MACOSX in Zip files?'>Whats with __MACOSX in Zip files?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://floatingsun.net/2012/01/24/bitcasa-first-impressions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac Tip: Get wifi password from another (connected) Mac</title>
		<link>http://floatingsun.net/2011/09/10/mac-tip-get-wifi-password-from-another-connected-mac/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mac-tip-get-wifi-password-from-another-connected-mac</link>
		<comments>http://floatingsun.net/2011/09/10/mac-tip-get-wifi-password-from-another-connected-mac/#comments</comments>
		<pubDate>Sun, 11 Sep 2011 01:36:39 +0000</pubDate>
		<dc:creator>Diwaker Gupta</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Tips and Tricks]]></category>

		<guid isPermaLink="false">http://floatingsun.net/?p=1835</guid>
		<description><![CDATA[Here&#8217;s the situation: say you are at a friend&#8217;s place and as all responsible hosts, they have a password protected wifi network. Your friend is busy (or unavailable) so you can&#8217;t ask her for the password. Of course, you are known &#8230; <a href="http://floatingsun.net/2011/09/10/mac-tip-get-wifi-password-from-another-connected-mac/">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://floatingsun.net/2006/02/27/web-based-password-manager/' rel='bookmark' title='Web based password manager'>Web based password manager</a></li>
<li><a href='http://floatingsun.net/2010/02/03/web-based-password-managers-3-years-later/' rel='bookmark' title='Web based password managers: 3 years later'>Web based password managers: 3 years later</a></li>
<li><a href='http://floatingsun.net/2007/12/02/screens-around-the-web-password-restrictions/' rel='bookmark' title='Screens around the web: password restrictions'>Screens around the web: password restrictions</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s the situation: say you are at a friend&#8217;s place and as all responsible hosts, they have a password protected wifi network. Your friend is busy (or unavailable) so you can&#8217;t ask her for the password. Of course, you are known to not give up easily. You look around and realize: aha! someone else over there on the couch is busy with their laptop, so they must know the password. Unfortunately, they don&#8217;t. But the password must be somewhere on their laptop, since they are connected after all. So how do you find it?</p>
<p>OK, that probably sounds contrived. But the truth is that I did have the need to extract the wifi password from my wife&#8217;s laptop earlier today and thought I&#8217;d share the (pretty simple) process.</p>
<p><strong>Step one:</strong> open keychain access</p>
<p><a style="text-decoration: underline;" href="http://floatingsun.net/wordpress/wp-content/uploads/2011/09/keychain.jpg"><img class="alignnone size-full wp-image-1837" style="border-style: initial; border-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #eeeeee;" title="keychain" src="http://floatingsun.net/wordpress/wp-content/uploads/2011/09/keychain.jpg" alt="" width="513" height="148" /></a></p>
<p><strong>Step two:</strong> search for the network name (SSID)</p>
<p><a href="http://floatingsun.net/wordpress/wp-content/uploads/2011/09/Keychain-Access.jpg"><img class="alignnone size-full wp-image-1836" title="Keychain Access" src="http://floatingsun.net/wordpress/wp-content/uploads/2011/09/Keychain-Access.jpg" alt="" width="704" height="241" /></a></p>
<p><strong>Step three:</strong> check &#8216;Show password&#8217; (you may need to enter your password first since this required Administrator privileges).</p>
<p><a href="http://floatingsun.net/wordpress/wp-content/uploads/2011/09/The-Lab.jpg"><img class="alignnone size-full wp-image-1838" title="The Lab" src="http://floatingsun.net/wordpress/wp-content/uploads/2011/09/The-Lab.jpg" alt="" width="342" height="291" /></a></p>
<p>Voila!</p>
<p>Related posts:<ol>
<li><a href='http://floatingsun.net/2006/02/27/web-based-password-manager/' rel='bookmark' title='Web based password manager'>Web based password manager</a></li>
<li><a href='http://floatingsun.net/2010/02/03/web-based-password-managers-3-years-later/' rel='bookmark' title='Web based password managers: 3 years later'>Web based password managers: 3 years later</a></li>
<li><a href='http://floatingsun.net/2007/12/02/screens-around-the-web-password-restrictions/' rel='bookmark' title='Screens around the web: password restrictions'>Screens around the web: password restrictions</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://floatingsun.net/2011/09/10/mac-tip-get-wifi-password-from-another-connected-mac/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The silent victories of open source</title>
		<link>http://floatingsun.net/2011/03/27/the-silent-victories-of-open-source/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-silent-victories-of-open-source</link>
		<comments>http://floatingsun.net/2011/03/27/the-silent-victories-of-open-source/#comments</comments>
		<pubDate>Mon, 28 Mar 2011 06:38:57 +0000</pubDate>
		<dc:creator>Diwaker Gupta</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Open source]]></category>

		<guid isPermaLink="false">http://floatingsun.net/?p=1747</guid>
		<description><![CDATA[For years, free/libre/open source software (henceforth referred to as FLOSS) have proclaimed, year after year, how that year is the year of Linux, or the year that open source will become mainstream, or the year that open source will finally take off &#8230; <a href="http://floatingsun.net/2011/03/27/the-silent-victories-of-open-source/">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://floatingsun.net/2006/08/03/linux-and-closed-source-software/' rel='bookmark' title='Linux and Closed Source Software'>Linux and Closed Source Software</a></li>
<li><a href='http://floatingsun.net/2006/05/20/microsoft-open-source-not-reliable-or-dependable-cnet-newscom/' rel='bookmark' title='Microsoft: Open source &#8216;not reliable or dependable&#8217; | CNET News.com'>Microsoft: Open source &#8216;not reliable or dependable&#8217; | CNET News.com</a></li>
<li><a href='http://floatingsun.net/2008/03/18/enough-with-linux-as-a-second-class-citizen/' rel='bookmark' title='Enough with Linux as a second class citizen!'>Enough with Linux as a second class citizen!</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="zemanta-img" style="margin: 1em; display: block;">
<div class="wp-caption alignnone" style="width: 190px"><a href="http://commons.wikipedia.org/wiki/File:Tux.svg"><img title="Tux, the Linux penguin" src="http://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Tux.svg/300px-Tux.svg.png" alt="Tux, the Linux penguin" width="180" height="212" /></a><p class="wp-caption-text">Image via Wikipedia</p></div>
</div>
<p>For years, free/libre/open source software (henceforth referred to as <a title="Free and open source software" rel="wikipedia" href="http://en.wikipedia.org/wiki/Free_and_open_source_software">FLOSS</a>) have proclaimed, year after year, how that year is the <a href="http://www.google.com/search?aq=f&amp;sourceid=chrome&amp;ie=UTF-8&amp;q=the+year+of+linux">year of Linux</a>, or the year that open source will become mainstream, or the year that open source will finally take off etc. But it never has, at least traditionally speaking. Linux based desktops haven&#8217;t penetrated either the enterprise or consumer markets; with a few notable exceptions (<a title="Apache HTTP Server" rel="homepage" href="http://httpd.apache.org/">Apache httpd</a>, for instance), most FLOSS products &#8212; be it office software like <a title="OpenOffice.org" rel="homepage" href="http://www.openoffice.org/">OpenOffice</a>, multimedia software such as Gimp or <a class="zem_slink freebase/en/inkscape" title="Inkscape" rel="homepage" href="http://www.inkscape.org/">Inkscape</a> &#8212; remain popular with economically insignificant niches. And yet, this year, more than ever before, open source forges ahead with its silent victories.</p>
<p>Consider the following shifts:</p>
<ul>
<li>all the top brands of the day &#8212; Apple, Google, Facebook, Twitter, Amazon &#8212; they <a href="http://twitter.com/about/opensource">ALL</a><a href="http://developers.facebook.com/opensource/">stand tall</a> on the <a href="http://code.google.com/opensource/">shoulders</a> of FLOSS giants.</li>
<li>Contributing software back to the open source community is becoming increasingly common, even expected. Take a look at the <a class="zem_slink" title="GitHub" rel="homepage" href="http://github.com">GitHub</a> repositories of <a href="https://github.com/twitter">Twitter</a> and <a href="https://github.com/facebook">Facebook</a>, or the various <a href="http://floatingsun.net/2009/12/24/goolego-googles-software-building-blocks/">Google projects</a>. In fact, when screening engineering candidates, I often look for and encourage people to talk about their open source contributions.</li>
<li>Most of the activity around &#8220;big data&#8221; and &#8220;cloud computing&#8221; is being driven in large part by FLOSS, whether it is the Hadoop-powered ecosystem or the Xen/Linux powered <a class="zem_slink" title="Amazon Web Services" rel="homepage" href="http://aws.amazon.com/">Amazon Web Services</a>.</li>
<li>Given the current smartphone landscape, it is highly likely that <a href="http://code.google.com/android/">Android</a> will become ubiquitous on tablet devices and a variety of consumer smart phones. Already, Android has <a href="http://www.google.com/trends?q=linux%2C+android">more search mindshare</a> than Linux, despite the fact that Linux is part of the Android stack.</li>
<li>If you start a software company today, I would bet that you will find yourself bootstrapping almost entirely using open source software. The entire development process &#8212; from the <a class="zem_slink freebase/en/gnu_compiler_collection" title="GNU Compiler Collection" rel="homepage" href="http://gcc.gnu.org">GCC compiler</a> toolchain, to the build systems, to the scripting languages, to the version control systems, to the code review systems, to the continuous integration systems &#8212; everything is dominated by FLOSS products. Good bug trackers and enterprise Wikis are the last bastions but it is just a matter of time.</li>
</ul>
<p>I&#8217;ve had a chance to see the enterprise software market up close and increasingly find more and more open source everywhere I look. FLOSS has not arrived, it has taken over.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/pixy.gif?x-id=bd83f1de-5188-4b7d-903b-3cc87caf11b6" alt="" /><span class="zem-script more-info"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
<p>Related posts:<ol>
<li><a href='http://floatingsun.net/2006/08/03/linux-and-closed-source-software/' rel='bookmark' title='Linux and Closed Source Software'>Linux and Closed Source Software</a></li>
<li><a href='http://floatingsun.net/2006/05/20/microsoft-open-source-not-reliable-or-dependable-cnet-newscom/' rel='bookmark' title='Microsoft: Open source &#8216;not reliable or dependable&#8217; | CNET News.com'>Microsoft: Open source &#8216;not reliable or dependable&#8217; | CNET News.com</a></li>
<li><a href='http://floatingsun.net/2008/03/18/enough-with-linux-as-a-second-class-citizen/' rel='bookmark' title='Enough with Linux as a second class citizen!'>Enough with Linux as a second class citizen!</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://floatingsun.net/2011/03/27/the-silent-victories-of-open-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Startup Infrastructure: Where Linux Fails</title>
		<link>http://floatingsun.net/2011/01/09/startup-infrastructure-where-linux-fails/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=startup-infrastructure-where-linux-fails</link>
		<comments>http://floatingsun.net/2011/01/09/startup-infrastructure-where-linux-fails/#comments</comments>
		<pubDate>Sun, 09 Jan 2011 20:31:46 +0000</pubDate>
		<dc:creator>Diwaker Gupta</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[IPsec]]></category>
		<category><![CDATA[LDAP]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[OpenLDAP]]></category>
		<category><![CDATA[Strongswan]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[Virtual private network]]></category>

		<guid isPermaLink="false">http://floatingsun.net/?p=1699</guid>
		<description><![CDATA[It is no secret that I&#8217;m an open source evangelist and so when it was time to set up internal infrastructure at work, naturally the first order of business was to evaluate the various OSS projects out there &#8212; everything &#8230; <a href="http://floatingsun.net/2011/01/09/startup-infrastructure-where-linux-fails/">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://floatingsun.net/2007/11/08/skype-adds-video-for-linux/' rel='bookmark' title='Skype adds video for Linux'>Skype adds video for Linux</a></li>
<li><a href='http://floatingsun.net/2006/08/03/linux-and-closed-source-software/' rel='bookmark' title='Linux and Closed Source Software'>Linux and Closed Source Software</a></li>
<li><a href='http://floatingsun.net/2005/01/16/year-of-the-linux-desktop/' rel='bookmark' title='Year of the Linux Desktop'>Year of the Linux Desktop</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="zemanta-img" style="margin: 1em; display: block;">
<div class="wp-caption alignright" style="width: 190px"><a href="http://commons.wikipedia.org/wiki/File:Crypto_key.svg"><img title="Category:WikiProject Cryptography participants" src="http://upload.wikimedia.org/wikipedia/commons/thumb/6/65/Crypto_key.svg/300px-Crypto_key.svg.png" alt="Category:WikiProject Cryptography participants" width="180" height="94" /></a><p class="wp-caption-text">Image via Wikipedia</p></div>
</div>
<p>It is no secret that I&#8217;m an open source evangelist and so when it was time to set up internal infrastructure at <a href="http://www.maginatics.com">work</a>, naturally the first order of business was to evaluate the various OSS projects out there &#8212; everything from wikis, bug trackers, source control, code review and project management. Running <a class="zem_slink freebase/en/ubuntu" title="Ubuntu (operating system)" rel="homepage" href="http://www.ubuntu.com/">Ubuntu</a> LTS (10.04) on all of our servers was a no-brainer and there were plenty of excellent options for most everything else as well (a follow-up post on our final choices later). The <a class="zem_slink freebase/en/gnu_linux" title="Linux" rel="homepage" href="http://www.kernel.org/">Linux</a> ecosystem is fabulous for most of the infrastructure needs of a startup, but I learnt the hard way that there are still some areas where Linux needs a lot of work before it can become competitive with proprietary, non-Linux solutions.</p>
<h2></h2>
<h2>Authentication</h2>
<p>Centralized account management (users and groups) and authentication is critical component in any IT deployment, no matter the size. Even for a small startup, creating users/groups repeatedly for each new server, separate authentication mechanisms for each new service is simply not scalable. That is precisely why <a class="zem_slink freebase/en/active_directory" title="Active Directory" rel="wikipedia" href="http://en.wikipedia.org/wiki/Active_Directory">Active Directory</a> is so ubiquitous at enterprises.</p>
<p><a class="zem_slink freebase/en/lightweight_directory_access_protocol" title="LDAP" rel="wikipedia" href="http://en.wikipedia.org/wiki/LDAP">LDAP</a> was the obvious solution in Linux-land and I figured it would be trivial to setup an <a class="zem_slink freebase/en/openldap" title="OpenLDAP" rel="homepage" href="http://www.openldap.org/">OpenLDAP</a> server that can manage user/group information for us. It would also be the single authentication source for all servers and services. I was so wrong.</p>
<p>After struggling with OpenLDAP for several painful hours, I gave up &#8212; the documentation is fragmented, Google doesn&#8217;t help much and personally I think the LDAP creators had never heard of &#8220;usability&#8221; when designing it. The seemingly simple task of creating some new users and groups involved several black-magic incantations of the LDAP command line tools. Getting servers to authenticate against the resulting directory was even harder.</p>
<p>Just as I was about to throw in the towel and setup an AD instance in-house, I stumbled upon the <a href="http://directory.fedoraproject.org/">389 Directory Server</a> (now known as the <a class="zem_slink freebase/en/fedora_directory_server" title="389 Directory Server" rel="homepage" href="http://port389.org/">Fedora Directory Server</a>). With a new found hope, I set about installing it on Ubuntu and hit another roadblock &#8212; there are no up-to-date packages of FDS for Ubuntu. Reluctantly, I setup a Fedora instance (the only one so far) and installed FDS. Thankfully, Red Hat has put together <a href="http://docs.redhat.com/docs/en-US/Red_Hat_Directory_Server/8.2/index.html">really comprehensive documentation and guides</a> for the Directory Server, which was invaluable.</p>
<p>From there on, it was mostly downhill (only a few minor hiccups). Finally we have a nice GUI to manage users and groups, and all servers/services authenticate against a single Directory Server. But the journey was unnecessarily painful. Here&#8217;s what I&#8217;d like to see:</p>
<ul>
<li>Up-to-date packages of FDS for Ubuntu. Sane defaults and functionality out-of-the-box</li>
<li>Ready to consume documentation on how to integrate LDAP with various web applications, Linux distros etc (I&#8217;ll put together some of this soon)</li>
<li>More awareness &#8212; I should have found FDS a lot sooner than I did, but it is certainly not very well marketed</li>
<li>Single sign on: This is a whole different beast</li>
</ul>
<h2>Remote Access</h2>
<p>At my previous company, we had a Cisco <a class="zem_slink freebase/en/virtual_private_network" title="Virtual private network" rel="wikipedia" href="http://en.wikipedia.org/wiki/Virtual_private_network">VPN</a> solution. There were plenty of Cisco compatible VPN clients on Windows and Mac. In fairness, it was relatively easy to get vpnc working on Ubuntu as well. In fact, with Network Manager, you can manage your VPN connections using a simple and intuitive UI. But the setup was not very reliable and my connections would get dropped relatively frequently. It was impossible to have a long-running VPN session without disruption. I&#8217;m not sure if the problem was with the Cisco hardware or the Ubuntu vpnc client; I did see similar issues with the built-in VPN client on Mac OS X.</p>
<p>But at least VPN on Linux works. I can&#8217;t say the same about other remote access mechanisms, in particular <a class="zem_slink freebase/en/ipsec" title="IPsec" rel="wikipedia" href="http://en.wikipedia.org/wiki/IPsec">IPSec</a> and L2TP over IPSec. It took me some time to figure out which package to use (<a class="zem_slink freebase/en/strongswan" title="StrongSwan" rel="homepage" href="http://www.strongswan.org/">Strongswan</a>, Openswan, iked etc etc); another couple of hours to get the Openswan configuration just right; several hours of struggling to automatically setup DNS lookups when using the IPSec connection (gave up and ended up using entries in /etc/hosts!). There is no UI in Network Manager to manage IPSec connections either. Strongswan does have a NM plugin, but that only works for IKEv2 (certificate based authentication), while I had to use IKEv1 (shared key based authentication).</p>
<p>At the end of the day, I do have a working IPSec tunnel and it is definitely more reliable than the Cisco VPN (been up for more than 2 days without disruption). But all this can and should become a lot more seamless.</p>
<p>These are a few areas where Linux failed me in setting up the infrastructure for a startup; it shines most everywhere else. Hopefully these last few kinks will get ironed out soon.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/pixy.gif?x-id=27890070-2824-4f15-a95f-71c5feaa3f23" alt="" /><span class="zem-script more-info"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
<p>Related posts:<ol>
<li><a href='http://floatingsun.net/2007/11/08/skype-adds-video-for-linux/' rel='bookmark' title='Skype adds video for Linux'>Skype adds video for Linux</a></li>
<li><a href='http://floatingsun.net/2006/08/03/linux-and-closed-source-software/' rel='bookmark' title='Linux and Closed Source Software'>Linux and Closed Source Software</a></li>
<li><a href='http://floatingsun.net/2005/01/16/year-of-the-linux-desktop/' rel='bookmark' title='Year of the Linux Desktop'>Year of the Linux Desktop</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://floatingsun.net/2011/01/09/startup-infrastructure-where-linux-fails/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Reclaim the TV</title>
		<link>http://floatingsun.net/2010/09/17/reclaim-the-tv/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=reclaim-the-tv</link>
		<comments>http://floatingsun.net/2010/09/17/reclaim-the-tv/#comments</comments>
		<pubDate>Sat, 18 Sep 2010 00:07:18 +0000</pubDate>
		<dc:creator>Diwaker Gupta</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Boxee]]></category>
		<category><![CDATA[Google TV]]></category>
		<category><![CDATA[television]]></category>

		<guid isPermaLink="false">http://floatingsun.net/?p=1680</guid>
		<description><![CDATA[I built my own media center PC. It runs Ubuntu; it hosts all my media in a single location; it serves as media server and storage server; and it serves as a compute server when I have to transcode media. You can find all the gory details in this guide: HOWTO Build an Ubuntu based media center. <a href="http://floatingsun.net/2010/09/17/reclaim-the-tv/">Continue reading <span class="meta-nav">&#8594;</span></a>
No related posts.]]></description>
			<content:encoded><![CDATA[<p>Do you:</p>
<ul>
<li>wonder who watches all of the 700+ channels that you get from your cable provider?</li>
<li>wonder why you are paying more than $50/month for all those channels, when you only watch a handful?</li>
<li>find yourself channel surfing, just because you can, not because you know what you want to watch?</li>
<li>feel like you are not getting the most out of your TV?</li>
<li>feel like you can&#8217;t wait for <a class="zem_slink" title="Google TV" rel="homepage" href="http://www.google.com/tv">Google TV</a> or the <a class="zem_slink" title="Boxee" rel="homepage" href="http://www.boxee.tv">Boxee</a> box to improve your television experience?</li>
</ul>
<p>If you answered yes to any of the above questions, I have a few tips for you. There have been times when I spent an hour flipping through channels, not really watching anything in particular, and later feeling like an idiot for having wasted my time. All this while I just accepted that cable TV as a given, an inevitable companion of our <a class="zem_slink freebase/en/internet_service_provider" title="Internet service provider" rel="wikipedia" href="http://en.wikipedia.org/wiki/Internet_service_provider">internet service provider</a>&#8230; until I met a few friends who were perfectly happy without any cable service.</p>
<p>With that inspiration, I started looking around for a better TV experience. There is so much content available online (and good content!) that I wasn&#8217;t really worried about lack of material to watch. Both Google TV and the Boxee box seemed very promising (not to mention, the new <a class="zem_slink" title="Apple TV" rel="homepage" href="http://www.apple.com/appletv">Apple TV</a>). There were two little problems:</p>
<ol>
<li>Neither Boxee box nor Google TV are here yet, and</li>
<li>All of these devices have very very limited functionality. They address the problem of Internet TV, but I don&#8217;t want to use my TV to just watch TV. I want it to become a hub for all my media. I want to access my local music, photos, videos and more.</li>
</ol>
<p>So I did what any self-respecting geek would do &#8212; I built my own media center PC. It runs Ubuntu; it hosts all my media in a single location; it serves as media server and storage server; and it serves as a compute server when I have to transcode media. You can find all the gory details in this guide: <a href="http://floatingsun.net/articles/howto-ubuntu-based-media-center/">HOWTO Build an Ubuntu based media center</a>.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/pixy.gif?x-id=ea75e14a-3723-489f-a9c0-8ad2725f73ac" alt="" /><span class="zem-script more-info"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://floatingsun.net/2010/09/17/reclaim-the-tv/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>And just like that, I&#8217;m a GNOME user</title>
		<link>http://floatingsun.net/2010/09/09/and-just-like-that-im-a-gnome-user/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=and-just-like-that-im-a-gnome-user</link>
		<comments>http://floatingsun.net/2010/09/09/and-just-like-that-im-a-gnome-user/#comments</comments>
		<pubDate>Fri, 10 Sep 2010 06:21:59 +0000</pubDate>
		<dc:creator>Diwaker Gupta</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Canonical]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[Kubuntu]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://floatingsun.net/?p=1614</guid>
		<description><![CDATA[When I first started using Linux (more than a decade ago), I did my share of playing around with various desktop environments: the classic FVWM, GNOME, KDE, Enlightenment etc. I settled down with KDE. Over the years, I kept coming &#8230; <a href="http://floatingsun.net/2010/09/09/and-just-like-that-im-a-gnome-user/">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://floatingsun.net/2007/11/01/inconsistent-font-rendering-in-gnome-and-kde/' rel='bookmark' title='Inconsistent font rendering in GNOME and KDE'>Inconsistent font rendering in GNOME and KDE</a></li>
<li><a href='http://floatingsun.net/2005/12/30/priceless-quote-from-linus/' rel='bookmark' title='Priceless quote from Linus'>Priceless quote from Linus</a></li>
<li><a href='http://floatingsun.net/2004/08/11/why-kde/' rel='bookmark' title='Why KDE?'>Why KDE?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>When I first started using Linux (more than a decade ago), I did my share of playing around with various <a class="zem_slink freebase/en/desktop_environment" title="Desktop environment" rel="wikipedia" href="http://en.wikipedia.org/wiki/Desktop_environment">desktop environments</a>: the classic FVWM, <a class="zem_slink freebase/en/gnome" title="GNOME" rel="homepage" href="http://www.gnome.org/">GNOME</a>, <a class="zem_slink freebase/en/kde" title="KDE" rel="homepage" href="http://www.kde.org/">KDE</a>, Enlightenment etc. I settled down with KDE. Over the years, I kept coming back to GNOME to check it out but somehow KDE always felt home to me.</p>
<p>Well guess what, not any more. As of a few days ago, I&#8217;m (mostly) a GNOME user.</p>
<p>I still love KDE (the desktop) and KDE based applications (<a class="zem_slink freebase/en/kontact" title="Kontact" rel="homepage" href="http://userbase.kde.org/KMail">KMail</a>, <a class="zem_slink freebase/en/amarok" title="Amarok (software)" rel="homepage" href="http://amarok.kde.org/en">Amarok</a> etc). It is still infinitely more configurable than anything comparable in GNOME (Evolution and Thunderbird are still fairly limited in comparison) and over the years I&#8217;ve tweaked it to just the way I like it. But GNOME has something the KDE project does not: <strong>Canonical.</strong></p>
<p>Thats right, I switched to GNOME because of <a href="http://canonical.com">Canonical</a>, the company that drives <a class="zem_slink freebase/en/ubuntu" title="Ubuntu (operating system)" rel="homepage" href="http://www.ubuntu.com/">Ubuntu</a> development. Sure, there is a lot of effort behind the various Ubuntu variants such as <a class="zem_slink freebase/en/kubuntu" title="Kubuntu" rel="homepage" href="http://www.kubuntu.org">Kubuntu</a>, <a class="zem_slink freebase/en/xubuntu" title="Xubuntu" rel="homepage" href="http://www.xubuntu.org/">Xubuntu</a> etc. But make no mistake, none of these variants are first-class citizens in the Ubuntu ecosystem.</p>
<p>The switch was a result of my recent experience setting up Ubuntu on my <a href="http://floatingsun.net/articles/howto-ubuntu-based-media-center/">home theater PC</a>. The effort Canonical has put into making the Ubuntu experience more seamless and pleasant is clearly visible. Pretty much everything works out of the box: folders that I share show up on other computers in my home network, bluetooth/webcam etc all work just fine, setting up remote desktop is a breeze and so on, Avahi/bonjour works like a charm; I can setup a DAAP server to share my music and it shows up on iTunes just like that.</p>
<p>Note that all of these things are obviously not limited to Ubuntu in any way. But the user experience in Ubuntu is unparalleled in comparison with Kubuntu etc. Subtle niceties like the notifications (the <a href="https://launchpad.net/ayatana">Ayatana</a> project), the <a href="https://launchpad.net/indicator-me">Me menu</a>,  the messaging menu, the &#8220;light&#8221; themes etc. come together in a very cohesive way to deliver an experience that rivals that of <a class="zem_slink freebase/en/mac_os" title="Mac OS" rel="homepage" href="http://www.apple.com/macosx/">Mac OS</a>. But beyond the subtleties, Canonical is shaping the future of Linux on the desktop, laptop and mobile devices: the <a href="http://www.markshuttleworth.com/archives/383">Unity interface</a>, <a href="http://blog.canonical.com/?p=414">multi-touch support </a>for mobile devices and more. Bottomline: having a company put its weight behind a desktop has ramifications.</p>
<p>So as much as I love thy, KDE, for now we shall part ways. I&#8217;m still using some KDE apps (like digiKam), but until Canonical decides to officially adopt Kubuntu, GNOME it is.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/pixy.gif?x-id=c85fd3a4-4819-46a2-849a-f0bcdb558733" alt="" /><span class="zem-script more-info"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
<p>Related posts:<ol>
<li><a href='http://floatingsun.net/2007/11/01/inconsistent-font-rendering-in-gnome-and-kde/' rel='bookmark' title='Inconsistent font rendering in GNOME and KDE'>Inconsistent font rendering in GNOME and KDE</a></li>
<li><a href='http://floatingsun.net/2005/12/30/priceless-quote-from-linus/' rel='bookmark' title='Priceless quote from Linus'>Priceless quote from Linus</a></li>
<li><a href='http://floatingsun.net/2004/08/11/why-kde/' rel='bookmark' title='Why KDE?'>Why KDE?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://floatingsun.net/2010/09/09/and-just-like-that-im-a-gnome-user/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Toying with node.js</title>
		<link>http://floatingsun.net/2010/08/04/toying-with-node-js/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=toying-with-node-js</link>
		<comments>http://floatingsun.net/2010/08/04/toying-with-node-js/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 17:58:34 +0000</pubDate>
		<dc:creator>Diwaker Gupta</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://floatingsun.net/?p=1512</guid>
		<description><![CDATA[A commenter rightly complained that despite my claims of &#8220;playing around&#8221; with node.js, all I could come up was with the example in the man page. I replied saying that I did intend to post something that I wrote from &#8230; <a href="http://floatingsun.net/2010/08/04/toying-with-node-js/">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://floatingsun.net/2010/07/21/what-is-node-js/' rel='bookmark' title='What is node.js?'>What is node.js?</a></li>
<li><a href='http://floatingsun.net/2005/07/30/whats-up-with-pagerank/' rel='bookmark' title='Whats up with PageRank?'>Whats up with PageRank?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://floatingsun.net/2010/07/21/what-is-node-js/#comment-203696">commenter rightly complained</a> that despite my claims of &#8220;playing around&#8221; with <a class="zem_slink" title="node.js" rel="homepage" href="http://nodejs.org/">node.js</a>, all I could come up was with the example in the man page. I replied saying that I did intend to post something that I wrote from scratch, and as promised, here is my first toy node.js program:</p>
<pre class="brush: jscript; title: ; notranslate">
var sys = require('sys');
var http = require('http');
var url = require('url');
var path = require('path');

function search() {
  stdin = process.openStdin();
  stdin.setEncoding('utf8');
  stdin.on('data', function(term) {
    term = term.substring(0, term.length - 1);
    var google = http.createClient(80, 'ajax.googleapis.com');
    var search_url = &quot;/ajax/services/search/web?v=1.0&amp;q=&quot; + term;
    var request = google.request('GET', search_url, {
      'host': 'ajax.googleapis.com',
      'Referer': 'http://floatingsun.net',
      'User-Agent': 'NodeJS HTTP client',
      'Accept': '*/*'});
    request.on('response', function(response) {
      response.setEncoding('utf8');
      var body = &quot;&quot;
      response.on('data', function(chunk) {
        body += chunk;
      });
      response.on('end', function() {
        var searchResults = JSON.parse(body);
        var results = searchResults[&quot;responseData&quot;][&quot;results&quot;];
        for (var i = 0; i &lt; results.length; i++) {
          console.log(results[i][&quot;url&quot;]);
        }
      });
    });
    request.end();
  });
}

search();
</pre>
<p>This program (also available <a href="http://gist.github.com/508462">as a gist</a>) reads in search terms on standard input, and does a Google search on those terms, printing the URLs of the search results.</p>
<p>I was quite surprised (and a bit embarrassed) at how long it took me to get this simple program working. For instance, it took me the better part of an hour to realize that when I read something from stdin, it includes the trailing newline (as the user hits &#8216;Enter&#8217;). Earlier, I was using the input as-is for the search term, and that was leading to a 404 error, because the resulting URL was malformed.</p>
<p>Debugging was also harder, as expected. Syntax errors are easily caught by V8, but everything else is still obscure. I&#8217;m sure some of the difficulty is because of my lack of expertise with Javascript. But at one point, I got this error:</p>
<pre>events:12
        throw arguments[1];
                       ^
Error: Parse Error
    at Client.ondata (http:881:22)
    at IOWatcher.callback (net:517:29)
    at node.js:270:9</pre>
<p>I still haven&#8217;t figured out exactly where that error was coming from. Nonetheless, it was an interesting exercise. I&#8217;m looking forward to writing some non-trivial code with node.js now.</p>
<p>Related posts:<ol>
<li><a href='http://floatingsun.net/2010/07/21/what-is-node-js/' rel='bookmark' title='What is node.js?'>What is node.js?</a></li>
<li><a href='http://floatingsun.net/2005/07/30/whats-up-with-pagerank/' rel='bookmark' title='Whats up with PageRank?'>Whats up with PageRank?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://floatingsun.net/2010/08/04/toying-with-node-js/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Some thoughts on dbShards</title>
		<link>http://floatingsun.net/2010/08/03/some-thoughts-on-dbshards/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=some-thoughts-on-dbshards</link>
		<comments>http://floatingsun.net/2010/08/03/some-thoughts-on-dbshards/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 06:20:52 +0000</pubDate>
		<dc:creator>Diwaker Gupta</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[Scalability]]></category>

		<guid isPermaLink="false">http://floatingsun.net/?p=1408</guid>
		<description><![CDATA[﻿﻿﻿I heard about dbShards via two recent blog posts &#8212; one by Curt Monash and the other by Todd Hoff. It seemed like an interesting product, so I spent some time digging around on their website. As the name suggests, dbShards &#8230; <a href="http://floatingsun.net/2010/08/03/some-thoughts-on-dbshards/">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://floatingsun.net/2011/06/09/some-thoughts-on-icloud/' rel='bookmark' title='Some thoughts on iCloud'>Some thoughts on iCloud</a></li>
<li><a href='http://floatingsun.net/2010/05/19/thoughts-on-the-rupee-symbol/' rel='bookmark' title='Thoughts on the Rupee symbol'>Thoughts on the Rupee symbol</a></li>
<li><a href='http://floatingsun.net/2008/07/14/experiences-with-google-app-engine/' rel='bookmark' title='Experiences with Google App Engine'>Experiences with Google App Engine</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>﻿﻿﻿I heard about <a href="http://www.codefutures.com/dbshards/">dbShards</a> via two recent blog posts &#8212; <a href="http://www.dbms2.com/2010/07/28/dbshards/">one by Curt Monash</a> and the <a href="http://highscalability.com/blog/2010/6/23/product-dbshards-share-nothing-shard-everything.html">other by Todd Hoff</a>. It seemed like an interesting product, so I spent some time digging around on their website.</p>
<div class="wp-caption alignnone" style="width: 260px"><a href="http://www.codefutures.com/dbshards/"><img title="dbShards" src="http://www.codefutures.com/img/dbshards-shardit.gif" alt="dbShards" width="250" height="231" /></a><p class="wp-caption-text">dbShards</p></div>
<p>As the name suggests, dbShards is all about <strong><a class="zem_slink freebase/guid/9202a8c04000641f8000000009434762" title="Shard (database architecture)" rel="wikipedia" href="http://en.wikipedia.org/wiki/Shard_%28database_architecture%29">sharding</a></strong>. Sharding, also known as <strong>partitioning</strong>, is the process of distributing a given dataset into smaller chunks based some policy. AFAIK, the term &#8220;shard&#8221; was popularized recently by Google even though the concept of partitioning is at least a few decades old. Most distributed data management systems implement some form of sharding by necessity, since the entire data set will not fit in memory on a single node (if it would, you should not be using a distributed system). And therein lies the USP of dbShards &#8212; <em>it brings sharding (and with it, performance and scalability) to commodity, single-node databases such as <a class="zem_slink freebase/en/mysql" title="MySQL" rel="homepage" href="http://www.mysql.com">MySQL</a> and <a class="zem_slink freebase/en/postgresql" title="PostgreSQL" rel="homepage" href="http://www.postgresql.org/">Postgres</a>.</em></p>
<p>So how does it work? Well, dbShards acts as a <strong>transparent layer</strong> sitting in front of multiple nodes running MySQL, lets say. Transparent, because they want to work with legacy code, meaning no or minimal client side modifications. Inserting new data is pretty simple: dbShards using a &#8220;sharding key&#8221; to route an incoming tuple to the appropriate destination. Queries are a bit more complex, and here the website is skimpy on details. Monash&#8217;s post mentions that join performance is good when sharding keys are the same &#8212; this is not a surprise. I&#8217;m not interested in what other kinds of query optimizations are in place. When data is partitioned, you really need a sophisticated query planner and optimizer that can minimize data movement and aggregation, and push down as much computation as possible to individual nodes.</p>
<p>I found the page on <a href="http://www.codefutures.com/dbshards-replicate/">replication</a> intriguing. I&#8217;m guessing when they say &#8220;reliable replication&#8221;, they mean &#8220;consistent replication&#8221; in more common parlance (alternative, that dbShards supports strong consistency, as opposed to eventual or lazy consistency). This particular bit in the first paragraph caught my eye: <em>&#8220;deliver high performance yet reliable multi-threaded replication for High Availability (HA)&#8221;. </em>I&#8217;m not sure how to read this. Are they implying that multi-threaded replication is typically not performant? And usually you do NOT want threading for high availability, because a single thread can still take the entire process down. The actual mechanism for replication seems like a straightforward application of the <strong>replicated state machine </strong>approach.</p>
<p>But making a replicated state machine based system scale requires very careful engineering, otherwise it is easy to hit performance bottlenecks. I&#8217;d be very interested in knowing a bit more about the transaction model in dbShards and how it performs on larger systems (tens to hundreds of nodes).</p>
<p>The pricing model is also quite interesting. I think it is the first vendor I know of that is pricing on CPU and not storage (their pricing is $5,000 per year per server). I think this is indicative of the target customer segment as well &#8212; I would imagine dbShards works well with a few TBs of data on machines with a lot of CPU and memory.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/pixy.gif?x-id=c1e361c2-753e-4b30-be5f-0b54c66f003e" alt="" /><span class="zem-script more-info"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
<p>Related posts:<ol>
<li><a href='http://floatingsun.net/2011/06/09/some-thoughts-on-icloud/' rel='bookmark' title='Some thoughts on iCloud'>Some thoughts on iCloud</a></li>
<li><a href='http://floatingsun.net/2010/05/19/thoughts-on-the-rupee-symbol/' rel='bookmark' title='Thoughts on the Rupee symbol'>Thoughts on the Rupee symbol</a></li>
<li><a href='http://floatingsun.net/2008/07/14/experiences-with-google-app-engine/' rel='bookmark' title='Experiences with Google App Engine'>Experiences with Google App Engine</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://floatingsun.net/2010/08/03/some-thoughts-on-dbshards/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>What is node.js?</title>
		<link>http://floatingsun.net/2010/07/21/what-is-node-js/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=what-is-node-js</link>
		<comments>http://floatingsun.net/2010/07/21/what-is-node-js/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 19:39:07 +0000</pubDate>
		<dc:creator>Diwaker Gupta</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://floatingsun.net/?p=1394</guid>
		<description><![CDATA[Image via Wikipedia If you follow the world of Javascript and/or high-performance networking, you have probably heard of node.js. If you already grok Node, then this post is not for you; move along. If, however, you are a bit confused &#8230; <a href="http://floatingsun.net/2010/07/21/what-is-node-js/">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://floatingsun.net/2010/08/04/toying-with-node-js/' rel='bookmark' title='Toying with node.js'>Toying with node.js</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="zemanta-img" style="margin: 1em; display: block;">
<div>
<dl class="wp-caption alignright" style="width: 310px;">
<dt class="wp-caption-dt"><a href="http://commons.wikipedia.org/wiki/File:NodeJS.png"><img title="The logo of the Node.js Project from the offic..." src="http://upload.wikimedia.org/wikipedia/commons/thumb/6/67/NodeJS.png/300px-NodeJS.png" alt="The logo of the Node.js Project from the offic..." width="300" height="79" /></a></dt>
<dd class="wp-caption-dd zemanta-img-attribution" style="font-size: 0.8em;">Image via <a href="http://commons.wikipedia.org/wiki/File:NodeJS.png">Wikipedia</a></dd>
</dl>
</div>
</div>
<p>If you follow the world of Javascript and/or high-performance networking, you have probably heard of <a href="http://nodejs.org"><span style="color: #000000;">node.js</span></a>. If you already grok Node, then this post is not for you; move along. If, however, you are a bit confused as to exactly what Node.js is and how it works, then you should read on.</p>
<p>The node.js website doesn&#8217;t mince words in describing the software: &#8220;Evented I/O for <a href="http://code.google.com/p/v8/">V8 JavaScript</a>.&#8221; While that statement is precise and captures the essence of node.js succinctly, at first glance it did not tell me much about node.js. I did what anyone interested in node.js should do: downloaded the source and started playing around with it.</p>
<p>So what exactly is node.js? Well, first and foremost it is a <strong>Javascript runtime</strong>. Think of your web browser; how does it run Javascript? It implements a Javascript runtime and supports APIs that make sense in the browser such as DOM manipulation etc. Javascript as a language itself is fairly browser agnostic. So node.js is yet another runtime for Javascript, implemented primarily in C++.</p>
<p>Because node.js focuses on networking, it does not support the standard APIs available in a browser. Instead, it provides a different set of APIs (with <a href="http://nodejs.org/api.html"><span style="color: #000000;">fantastic documentation</span></a>). Thus, for instance, HTTP support is built into node.js &#8212; it is not an external library.</p>
<p>The other salient feature of node.js is that it is <strong>event driven</strong>. If you are familiar with <a class="zem_slink" title="Event-driven programming" rel="wikipedia" href="http://en.wikipedia.org/wiki/Event-driven_programming">event driven programming</a> (ala <a class="zem_slink" title="Twisted (software)" rel="homepage" href="http://twistedmatrix.com/">Python Twisted</a>, Ruby&#8217;s Event Machine, the event loop in Qt etc), you know what I&#8217;m talking about. The key difference though is that unlike all these systems, you never explicitly invoke a blocking call to start the event loop &#8212; node.js automatically enters the event loop as soon as it has finished loaded the program. A corollary is that you can only write event driven programs in node.js, no other programming models are supported. Another consequence of this design choice is that node.js is single-threaded. To exploit CPU parallelism, you need to run multiple node.js instances. Of course, there are several node.js modules and projects already available to address this very issue.</p>
<p>To implement a runtime for Javascript, node.js first needs to parse the input Javascript. node.js <strong>leverages Google&#8217;s V8 Javascript engine</strong> to do this. V8 takes care of interpreting the Javascript so node.js need not worry about syntactical issues; it only need to implement the appropriate hooks and callbacks for V8.</p>
<p>node.js claims to be extremely memory efficient and scalable. This is possible because node.js <strong>does not expose any blocking APIs</strong>. As a result, the program is completely callback driven. Of course, any kind of I/O (disk or network) will eventually block. node.js <strong>does all blocking I/O in an internal thread pool</strong> &#8212; thus even though the application executes in a single thread, internally there are multiple threads that node.js manages.</p>
<p>Overall, node.js is very refreshing. The community seems great and there is a lot of buzz around the project right now, with some big companies like Yahoo starting to use experiment with node.js. node.js is also driving the &#8220;server side Javascript&#8221; movement. For instance, <a href="http://joyent.com">Joyent&#8217;s</a> <a href="http://smart.joyent.com/docs/">Smart</a> platform allows you to write your server code in Javascript, which they can then execute on their hosted platforms.</p>
<p>Finally, no blog post about node.js is complete without an example of node.js code. Here is a simple web server:</p>
<div><script src="http://gist.github.com/485001.js"></script></div>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/pixy.gif?x-id=73a2a9a5-fb46-4a7c-83d4-406ce74fd7f3" alt="" /><span class="zem-script more-info"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
<p>Related posts:<ol>
<li><a href='http://floatingsun.net/2010/08/04/toying-with-node-js/' rel='bookmark' title='Toying with node.js'>Toying with node.js</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://floatingsun.net/2010/07/21/what-is-node-js/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>How the mouse moves</title>
		<link>http://floatingsun.net/2010/05/12/how-the-mouse-moves/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-the-mouse-moves</link>
		<comments>http://floatingsun.net/2010/05/12/how-the-mouse-moves/#comments</comments>
		<pubDate>Thu, 13 May 2010 06:20:14 +0000</pubDate>
		<dc:creator>Diwaker Gupta</dc:creator>
				<category><![CDATA[Art]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://floatingsun.net/?p=1270</guid>
		<description><![CDATA[Random interesting find of the day: IOGraphica. Here&#8217;s mine for about 7 hours at work: Such a simple app, but such a fascinating output. An easy way to create computer generated art! Couple of observations: I have a dual-monitor setup &#8230; <a href="http://floatingsun.net/2010/05/12/how-the-mouse-moves/">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://floatingsun.net/2006/08/07/andrew-morton-moves-to-google/' rel='bookmark' title='Andrew Morton moves to Google'>Andrew Morton moves to Google</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Random interesting find of the day: <a href="http://iographica.com">IOGraphica</a>. Here&#8217;s mine for about 7 hours at work:</p>
<p><a href="http://floatingsun.net/wordpress/wp-content/uploads/2010/05/IOGraphica-7.3-hours-from-10-50-to-18-11.png"><img class="alignnone size-large wp-image-1271" title="IOGraphica - 7.3 hours (from 10-50 to 18-11)" src="http://floatingsun.net/wordpress/wp-content/uploads/2010/05/IOGraphica-7.3-hours-from-10-50-to-18-11-1024x320.png" alt="" width="819" height="256" /></a></p>
<p>Such a simple app, but such a fascinating output. An easy way to create <a class="zem_slink freebase/en/digital_art" title="Digital art" rel="wikipedia" href="http://en.wikipedia.org/wiki/Digital_art">computer generated art</a>! Couple of observations:</p>
<ul>
<li>I have a dual-monitor setup at work. I use the left monitor for email for browsing and the right monitor for code. The mouse patterns clearly reflect this usage pattern. I tend to rest the mouse roughly equally on the both the monitors.</li>
<li>I was very intrigued by the fact that most of the mouse motions are very smooth. Most curves almost look parabolic. There are very few jerks and jittery lines. Once again, nature seems poetic even in the most chaotic and random actions.</li>
</ul>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/pixy.gif?x-id=a4a4358f-ea3e-45c6-86d7-67930cf2467d" alt="" /><span class="zem-script more-info"> </span></div>
<p>Related posts:<ol>
<li><a href='http://floatingsun.net/2006/08/07/andrew-morton-moves-to-google/' rel='bookmark' title='Andrew Morton moves to Google'>Andrew Morton moves to Google</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://floatingsun.net/2010/05/12/how-the-mouse-moves/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

