<?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; Tools</title>
	<atom:link href="http://floatingsun.net/category/tools/feed/" rel="self" type="application/rss+xml" />
	<link>http://floatingsun.net</link>
	<description></description>
	<lastBuildDate>Sat, 14 Apr 2012 01:50:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Waf: a pleasant build system</title>
		<link>http://floatingsun.net/2010/03/01/waf-a-pleasant-build-system/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=waf-a-pleasant-build-system</link>
		<comments>http://floatingsun.net/2010/03/01/waf-a-pleasant-build-system/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 07:36:32 +0000</pubDate>
		<dc:creator>Diwaker Gupta</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Make]]></category>
		<category><![CDATA[SCons]]></category>

		<guid isPermaLink="false">http://floatingsun.net/?p=1187</guid>
		<description><![CDATA[A good software project must have a good build system. Unless you have a small code base consisting entirely of dynamic, scripted languages, you probably need to &#8220;build&#8221; your code before you can use it. Until around an year ago, &#8230; <a href="http://floatingsun.net/2010/03/01/waf-a-pleasant-build-system/">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://floatingsun.net/2009/12/24/goolego-googles-software-building-blocks/' rel='bookmark' title='gooLego: Google&#8217;s software building blocks'>gooLego: Google&#8217;s software building blocks</a></li>
<li><a href='http://floatingsun.net/2006/06/12/google-earth-system-requirements/' rel='bookmark' title='Google Earth &#8211; System Requirements'>Google Earth &#8211; System Requirements</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>A good software project must have a good build system. Unless you have a small code base consisting entirely of dynamic, scripted languages, you probably need to &#8220;build&#8221; your code before you can use it. Until around an year ago, the only build tool that I used and was familiar with was <a href="http://www.gnu.org/software/make/">GNU Make</a>. Make and the autotools family of tools have served the developer community well the past few decades.</p>
<p>But the Make model is rife with problems. Here are a few of them:</p>
<ul>
<li>Make requires the use of its own <a class="zem_slink freebase/en/domain-specific_programming_language" title="Domain-specific language" rel="wikipedia" href="http://en.wikipedia.org/wiki/Domain-specific_language">domain specific language</a> &#8212; this is, in general, not a good idea. Have you looked at any sizable project&#8217;s <a class="zem_slink freebase/en/make" title="Make (software)" rel="wikipedia" href="http://en.wikipedia.org/wiki/Make_%28software%29">Makefile</a> lately? Its hard to understand, and harder to modify.</li>
<li>In the same vein, autoconf/automake are notoriously hard to use. Bear in mind that these tools are supposed to make your life easier.</li>
<li>Makefile are so hard to write and extend that several popular build systems today are essentially Makefile generators. A good example is <a class="zem_slink freebase/en/cmake" title="CMake" rel="homepage" href="http://www.cmake.org/">CMake</a>.</li>
<li>Make relies heavily on file timestamps to detect changes.</li>
<li>Make is slow.</li>
<li>Makefile are not modular. Recursive Make is especially evil.</li>
<li>&#8230;</li>
</ul>
<p>I recently began work on a new pet project. As is usually the case, I spent a lot more time figuring out what tools and libraries I would use for my project, than in actually writing any code for the project :) Part of the investigation was to survey the state of the art in build systems. At work, we started using <a class="zem_slink freebase/en/scons" title="SCons" rel="homepage" href="http://www.scons.org/">SCons</a> for most of our build, which was already a huge improvement over Make. But SCons has its own set of issues.</p>
<p>One of the nicest features in SCons is that build files are regular <a class="zem_slink freebase/guid/9202a8c04000641f800000000002f83f" title="Python (programming language)" rel="homepage" href="http://www.python.org/">Python</a> files. This provides enormous flexibility and immediate familiarity. Unfortunately, the SCons documentation leaves much to be desired. I still don&#8217;t quite understand the execution model of SCons very well. For instance, I know how to extend SCons to support cross-compilation for multiple platforms. However, I don&#8217;t really understand why those modifications work &#8212; there&#8217;s quite a bit of black magic that goes on behind the scenes. As a concrete example, there are several magic variables such ﻿﻿﻿_LIBDIRFLAGS that have strange powers.</p>
<div class="wp-caption alignnone" style="width: 65px"><a href="http://code.google.com/p/waf/  "><img title="Waf" src="http://code.google.com/p/waf/logo?logo_id=1238250832" alt="Waf" width="55" height="55" /></a><p class="wp-caption-text">Waf</p></div>
<p>After some more looking around, I discovered <a href="http://code.google.com/p/waf/">Waf</a>. And now that I&#8217;ve played around with it a little bit, I&#8217;m happy to say that it is the most pleasant build system I&#8217;ve ever used. Things I really like about Waf:</p>
<ul>
<li>The execution model <em>just makes sense</em> to me. You typically build a project in phases: there&#8217;s a configure phase, to sort out dependencies, tools etc; there&#8217;s the actual build phase; and then there&#8217;s the install phase. It is not uncommon to have a &#8216;dist&#8217; step as well, to prepare the source for distribution. Waf understands these operations as first class entities. There is a very strong notion of workflow built into Waf.</li>
<li>Comprehensive documentation. Check out the <a href="http://freehackers.org/~tnagy/wafbook/index.html">Waf book</a> and the <a href="http://code.google.com/p/waf/w/list">wiki</a>.</li>
<li>Waf has a very strong task model. There is a much stronger notion of dependencies (powered by content hashes, not timestamps). Waf also enforces that all generated code lands up in a separate &#8220;build&#8221; directory, so your source tree always remains clean.</li>
<li>Using waf is a breeze &#8212; there are no big dependencies, no packages to install, no bloated software to include with your code. Just a single 80kb script.</li>
<li>Progress indication and colored output is built in, not an after thought. Like SCons, Waf build files are regular Python files.</li>
<li>Waf is fast. Faster than SCons.</li>
</ul>
<p>Of course, Waf is not perfect. Coming from a Make/SCons world, I sorely miss the ability to build specific targets. Yes there are ways to achieve this in Waf, but they are all clumsy. The <a href="http://freehackers.org/~tnagy/wafdoc/index.html">API documentation</a> (and the source itself) are a bit hard to parse.</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=3173a045-3af4-49ff-a33d-4984a5c08a22" alt="" /><span class="zem-script more-info pretty-attribution"><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/2009/12/24/goolego-googles-software-building-blocks/' rel='bookmark' title='gooLego: Google&#8217;s software building blocks'>gooLego: Google&#8217;s software building blocks</a></li>
<li><a href='http://floatingsun.net/2006/06/12/google-earth-system-requirements/' rel='bookmark' title='Google Earth &#8211; System Requirements'>Google Earth &#8211; System Requirements</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://floatingsun.net/2010/03/01/waf-a-pleasant-build-system/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tools I use: tmux</title>
		<link>http://floatingsun.net/2010/02/16/tools-i-use-tmux/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tools-i-use-tmux</link>
		<comments>http://floatingsun.net/2010/02/16/tools-i-use-tmux/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 00:17:19 +0000</pubDate>
		<dc:creator>Diwaker Gupta</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[screen]]></category>
		<category><![CDATA[tmux]]></category>

		<guid isPermaLink="false">http://floatingsun.net/?p=1184</guid>
		<description><![CDATA[Readers of this blog will know that I&#8217;m a big fan of GNU screen. While screen is a great tool, it hasn&#8217;t seen any major development or feature addition in quite some time. The code base is pretty old, there &#8230; <a href="http://floatingsun.net/2010/02/16/tools-i-use-tmux/">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://floatingsun.net/2006/03/21/tools-i-use-screen/' rel='bookmark' title='Tools I use: screen'>Tools I use: screen</a></li>
<li><a href='http://floatingsun.net/2006/05/16/tools-i-use-dirvish/' rel='bookmark' title='Tools I use: dirvish'>Tools I use: dirvish</a></li>
<li><a href='http://floatingsun.net/2010/01/08/tools-for-the-savvy-grad-student/' rel='bookmark' title='Tools for the savvy grad student'>Tools for the savvy grad student</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Readers of this blog will know that I&#8217;m a <a href="http://floatingsun.net/2006/03/21/tools-i-use-screen/">big fan</a> of <a href="http://www.gnu.org/software/screen/">GNU screen</a>. While screen is a great tool, it hasn&#8217;t seen any major development or feature addition in quite some time. The code base is pretty old, there are some ancient bugs that still linger, and support for modern terminals (such as 256 colors by default) is not quite up to speed. I recently discovered <a href="https://launchpad.net/byobu">byobu</a> and was extremely happy with it &#8212; it completely overhauled my screen user experience. You can read all about byobu <a href="http://blog.dustinkirkland.com/search/label/Byobu">here</a>.</p>
<p>I thought I had attained screen nirvana&#8230; until I found <a href="http://tmux.sourceforge.net/">tmux</a> (<em>hat tip <a href="http://xed.ch">xed</a>)</em>. So what exactly is tmux?</p>
<blockquote><p>tmux is intended to be a modern, BSD-licensed alternative to programs such as GNU screen. Major features include:</p>
<ul>
<li>A powerful, consistent, well-documented and easily scriptable command interface.</li>
<li>A window may be split horizontally and vertically into panes.</li>
<li>Panes can be freely moved and resized, or arranged into one of four preset layouts.</li>
<li>Support for UTF-8 and 256-colour terminals.</li>
<li>Copy and paste with multiple buffers.</li>
<li>Interactive menus to select windows, sessions or clients.</li>
<li>Change the current window by searching for text in the target.</li>
<li>Terminal locking, manually or after a timeout.</li>
<li>A clean, easily extended, BSD-licensed codebase, under active development.</li>
</ul>
</blockquote>
<p>And how is tmux better than screen? Thats question #1 in the <a href="http://tmux.cvs.sourceforge.net/viewvc/*checkout*/tmux/tmux/FAQ">FAQ</a>:</p>
<blockquote>
<div id="_mcePaste">tmux offers several advantages over screen:</div>
<div id="_mcePaste">- a clearly-defined client-server model: windows are independent entities which may be attached simultaneously to multiple sessions and viewed from multiple clients (terminals), as well as moved freely between sessions within the same tmux server;</div>
<div id="_mcePaste">- a consistent, well-documented command interface, with the same syntax whether used interactively, as a key binding, or from the shell;</div>
<div id="_mcePaste">- easily scriptable from the shell;</div>
<div id="_mcePaste">- multiple paste buffers;</div>
<div id="_mcePaste">- choice of vi or emacs key layouts;</div>
<div id="_mcePaste">- an option to limit the window size;</div>
<div id="_mcePaste">- a more usable status line syntax, with the ability to display the first line of output of a specific command;</div>
<div id="_mcePaste">- a cleaner, modern, easily extended, BSD-licensed codebase.</div>
<div></div>
<div>There are still a few features screen includes that tmux omits:</div>
<div id="_mcePaste">- builtin serial and telnet support; this is bloat and is unlikely to be added to tmux;</div>
<div id="_mcePaste">- wider platform support, for example IRIX and HP-UX, and for odd terminals.</div>
</blockquote>
<div>I&#8217;ve been using tmux exclusively for the last couple of weeks and I really like it so far. For once, I can actually understand the configuration file :) But there are a few things that I miss from screen:</div>
<div>
<ul>
<li>I found the screen way of scrolling in a buffer and copying text much easier to use than tmux&#8217;s. Unless I&#8217;m missing something, the only way to scroll a buffer in tmux and copy some text is by using vi-like keyboard commands. While this is doable, it is not always quick or convenient.</li>
<li>byobu made it really easy to add various status indicators. Wish I had something similar for tmux.</li>
</ul>
</div>
<p>Related posts:<ol>
<li><a href='http://floatingsun.net/2006/03/21/tools-i-use-screen/' rel='bookmark' title='Tools I use: screen'>Tools I use: screen</a></li>
<li><a href='http://floatingsun.net/2006/05/16/tools-i-use-dirvish/' rel='bookmark' title='Tools I use: dirvish'>Tools I use: dirvish</a></li>
<li><a href='http://floatingsun.net/2010/01/08/tools-for-the-savvy-grad-student/' rel='bookmark' title='Tools for the savvy grad student'>Tools for the savvy grad student</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://floatingsun.net/2010/02/16/tools-i-use-tmux/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Web based password managers: 3 years later</title>
		<link>http://floatingsun.net/2010/02/03/web-based-password-managers-3-years-later/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=web-based-password-managers-3-years-later</link>
		<comments>http://floatingsun.net/2010/02/03/web-based-password-managers-3-years-later/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 03:31:12 +0000</pubDate>
		<dc:creator>Diwaker Gupta</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Add new tag]]></category>
		<category><![CDATA[Clipperz]]></category>
		<category><![CDATA[LastPass]]></category>
		<category><![CDATA[passpack]]></category>

		<guid isPermaLink="false">http://floatingsun.net/?p=1193</guid>
		<description><![CDATA[Almost three years ago (yes, I was quite surprised myself), I wrote about my requirements from a web based password manager. That post generated a lot of discussion, and we have come a long long way since then. I figured &#8230; <a href="http://floatingsun.net/2010/02/03/web-based-password-managers-3-years-later/">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/2009/04/08/web-services-i-wouldnt-mind-paying-for/' rel='bookmark' title='Web services I wouldn&#8217;t mind paying for'>Web services I wouldn&#8217;t mind paying for</a></li>
<li><a href='http://floatingsun.net/2007/11/13/secure-passwords-the-other-side-of-the-story/' rel='bookmark' title='Secure passwords: the other side of the story'>Secure passwords: the other side of the story</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Almost three years ago (yes, I was quite surprised myself), I <a href="http://floatingsun.net/2006/02/27/web-based-password-manager/">wrote about my requirements from a web based password manager</a>. That post generated a lot of discussion, and we have come a long long way since then. I figured it was a good time to step back and present what I feel are some of the best solutions out there.</p>
<p>First, let us recap some basic requirements:</p>
<ul>
<li>Security: this is a no-brainer. If I&#8217;m going to trust my passwords to a software, it better be secure. In particular, the developer/owners of the software should <em>not</em> be able to look at my passwords.</li>
<li>Online and offline access: I want access to my password regardless of whether or not I have internet connectivity. I should also be able to get to my passwords from any of my devices from anywhere in the world. This usually translates to a web-based system where passwords are stored at some server(s) in the &#8220;cloud&#8221;.</li>
<li>Export: My password data is mine and mine alone, and I want to be able to export it out of the system (for personal backups, for instance).</li>
<li>Desktop, Tools, API: I would prefer an open system, one that provides rich access interfaces. I&#8217;d love to have a desktop app, plugins for <a href="http://do.davebsd.com">Do</a> or <a class="zem_slink" title="Quicksilver (software)" rel="homepage" href="http://www.blacktree.com/">QuickSilver</a> etc. You get the idea.</li>
<li>Simple to use: The password manager should not get in my way. Adding new passwords should be a breeze. Using stored passwords should be equally simple. Ideally, I shouldn&#8217;t even notice that I&#8217;m using a web-based password manager and not the stored passwords from my browser.</li>
</ul>
<p>Without further ado, here are the top three web-based password managers.</p>
<div class="wp-caption alignnone" style="width: 454px"><a href="http://clipperz.com"><img src="http://www.clipperz.com/themes/clipperz_com/images/logo.png" alt="clipperz" width="444" height="57" /></a><p class="wp-caption-text">clipperz</p></div>
<p>If you are really paranoid about security, clipperz might be a good option. clipperz is open-source, so you can audit the code yourself should you so desire. It is also a measure of confidence from clipperz &#8212; by revealing their source code, they are basically saying, &#8220;Hey, we are clean, you can check us out yourself&#8221;. It also signals that clippers does not believe in security by obscurity. Apart from being open source, clipperz has all the other expected goodies: you can export your data, it supports one-click logins, you can download an offline copy etc.</p>
<p>I personally did not end up using clipperz because a variety of small problems: I did not like the interface; when I started using clipperz, the one-click login was barely functional; and overall I found the user experience of PassPack much better (read below).</p>
<div class="wp-caption alignnone" style="width: 307px"><a href="http://passpack.com"><img title="PassPack" src="http://www.passpack.com/en/images/passpack_logo.gif" alt="PassPack" width="297" height="50" /></a><p class="wp-caption-text">PassPack</p></div>
<p>PassPack is the first web-based password manager that I used seriously, and so far it has worked out great! The team is very responsive and constantly rolling out new features. I think PassPack did a really good job of promoting and educating the public on &#8220;<a class="zem_slink freebase/en/host_proof_hosting" title="Host-proof hosting" rel="wikipedia" href="http://en.wikipedia.org/wiki/Host-proof_hosting">host-proof hosting</a>&#8220;, meaning that even the service provider does not have access to your data. This is something that most web-based password managers now support, but at least in my mind, PassPack really led the way in terms of awareness.</p>
<p>Some features that really drew me to PassPack: password tagging; I can mark certain passwords as &#8220;favorites&#8221; so they are loaded first; the two-level security; the desktop app based on <a class="zem_slink" title="Adobe AIR" rel="homepage" href="http://www.adobe.com/products/air/">Adobe AIR</a>; the ability to store arbitrary notes (such as routing numbers or PINs). PassPack is particularly well-suited for groups. You can share passwords in a secure manner with people in your group. Recently they even added a feature to allow sending passwords securely via email. Now you no longer need to copy/paste your passwords into chats and emails.</p>
<p>What I always missed in PassPack was browser integration and seamless one-click login. With the PassPack bookmarklet, one-click login is almost seamless, but it never worked very well for me. For some websites it just won&#8217;t work. For others I&#8217;d have to re-login into my PassPack account. Yet other times there the bookmarklet would work in one browser but not in another. At the end of the day, it was just becoming cumbersome to manage multiple copies of my passwords &#8212; one in each of the browsers I used on each of my devices, and one in PassPack.</p>
<div class="wp-caption alignnone" style="width: 174px"><a href="http://lastpass.com"><img title="LastPass" src="http://lastpass.com/media/logo_lastpass.png" alt="LastPass" width="164" height="20" /></a><p class="wp-caption-text">LastPass</p></div>
<p>I recently discovered LastPass, and right now it is my favorite tool. I found it via its Chrome extension, which is when I realized that they have plugins for Firefox and work with pretty much all the good browsers on all the major platforms. I have to admit though, LastPass is nowhere close to PassPack in terms of the maturity of the UI and the overall user experience. But the killer feature for me was browser integration. With LastPass, adding new websites is exactly like Firefox asking you to store password information for a website. In fact, the FireFox plugin for LastPass allows you to disable and bypass the Firefox password manager altogether. When you come to a website that has already been stored in LastPass, it will fill out your username and password just like your browser would do. No need to click on a bookmarklet or any thing else. Transparent, seamless integration.</p>
<p>Unlike PassPack, LastPass has no group features at this point, which is perfectly fine by me. In the words of <a href="http://twitter.com/tara_kelly">Tara Kelly</a>, a co-founder of PassPack:</p>
<blockquote><p><a class="zem_slink" title="Passpack" rel="homepage" href="http://www.passpack.com">Passpack</a> is pwd mngr with sharing &amp; workgroups. Lastpass is login tool for individuals. Different strokes 4 different folks.</p></blockquote>
<p>If there is a better web-based password manager out there that you know of, I&#8217;d love to hear about it.</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=ec2718b5-4c71-410d-9799-d82df5bcdf9a" alt="" /><span class="zem-script more-info pretty-attribution"><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/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/2009/04/08/web-services-i-wouldnt-mind-paying-for/' rel='bookmark' title='Web services I wouldn&#8217;t mind paying for'>Web services I wouldn&#8217;t mind paying for</a></li>
<li><a href='http://floatingsun.net/2007/11/13/secure-passwords-the-other-side-of-the-story/' rel='bookmark' title='Secure passwords: the other side of the story'>Secure passwords: the other side of the story</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://floatingsun.net/2010/02/03/web-based-password-managers-3-years-later/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Tools for the savvy grad student</title>
		<link>http://floatingsun.net/2010/01/08/tools-for-the-savvy-grad-student/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tools-for-the-savvy-grad-student</link>
		<comments>http://floatingsun.net/2010/01/08/tools-for-the-savvy-grad-student/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 04:20:41 +0000</pubDate>
		<dc:creator>Diwaker Gupta</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Grad School]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://floatingsun.net/?p=1182</guid>
		<description><![CDATA[As a grad student, I was always looking out for tools to make my life simple (read: I&#8217;m quite lazy). Here are some of the tools I think every savvy grad student must know. A good plotting library Don&#8217;t even &#8230; <a href="http://floatingsun.net/2010/01/08/tools-for-the-savvy-grad-student/">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://floatingsun.net/2006/05/15/tools-i-use-beamer/' rel='bookmark' title='Tools I use: beamer'>Tools I use: beamer</a></li>
<li><a href='http://floatingsun.net/2010/02/16/tools-i-use-tmux/' rel='bookmark' title='Tools I use: tmux'>Tools I use: tmux</a></li>
<li><a href='http://floatingsun.net/2005/08/30/must-read-for-grad-students/' rel='bookmark' title='Must read for grad students'>Must read for grad students</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>As a grad student, I was always looking out for tools to make my life simple (read: I&#8217;m quite lazy). Here are some of the tools I think every savvy grad student must know.</p>
<h3>A good plotting library</h3>
<p>Don&#8217;t even mention <a href="http://www.gnuplot.info">gnuplot</a>. Not only is it old school (how many times have you looked at a graph in a paper and just known that it was produced using gnuplot?), but it is extremely limited in its feature set. My biggest gripe with gnuplot, however, is that it forced me to separate my data collection/analysis from the actual plotting of the data. I personally am a <a href="http://floatingsun.net/2006/02/07/tools-i-use-matplotlib/">huge fan of matplotlib</a> &#8212; it is an <a href="http://matplotlib.sourceforge.net/">uber-plotting library</a> written in <a class="zem_slink freebase/guid/9202a8c04000641f800000000002f83f" title="Python (programming language)" href="http://www.python.org/" rel="homepage">Python</a>. It can produce high-quality graphics in dozens of formats (including interactive plotting), it has an object-oriented API as well as a imperative API along the lines of <a class="zem_slink freebase/en/matlab" title="MATLAB" href="http://www.mathworks.com/products/matlab/" rel="homepage">Matlab</a> (hence the name). You can create amazingly rich plots and best of all, you can combine your data collection and analysis (which I was doing in Python anyways) with your plotting.</p>
<p>If you are more a <a class="zem_slink freebase/guid/9202a8c04000641f80000000000335a5" title="Ruby (programming language)" href="http://www.ruby-lang.org/" rel="homepage">Ruby</a> person, check out <a href="http://nubyonrails.com/pages/gruff">gruff</a>.</p>
<h3>Bibliography Management</h3>
<p>There are two aspects of bibliography management. First is the context of a specific paper: you are working on a paper and you want to collect all the relevant bibliographic information for citing in the paper. <a class="zem_slink freebase/en/bibtex" title="BibTeX" href="http://en.wikipedia.org/wiki/BibTeX" rel="wikipedia">BibTex</a> is the tool that is most commonly used for this, in combination with <a class="zem_slink freebase/en/latex" title="LaTeX" href="http://en.wikipedia.org/wiki/LaTeX" rel="wikipedia">LaTeX</a>. However, BibTex is buggy, the syntax is inconsistent across implementations, it lacks simple features like variables and the ability to &#8220;import&#8221; other bibtex files etc. Enter <a href="http://crosstex.sf.net">CrossTeX</a> &#8212; a drop-in replacement for BibTex. CrossTeX is written in Python. It has an object-oriented model for representing citations. So once you define an object for author &#8220;Foo Bar&#8221; aliased as foobar, you can simply use foobar wherever you would like to cite &#8220;Foo Bar&#8221;.  CrossTeX also makes it trivial to define new formatting styles for your citations. For instance, if you want to change the capitalization of the titles or abbreviate &#8220;Proceedings&#8221; to &#8220;Proc.&#8221; everywhere. Finally, CrossTeX was built by some nice folks at Cornell, so they know exactly what the pain points of <a class="zem_slink freebase/en/bibtex" title="BibTeX" href="http://en.wikipedia.org/wiki/BibTeX" rel="wikipedia">BibTeX</a> were.</p>
<p>The second aspect of bibliography management is simply keeping a track of all the papers you read and review. These will come in handy when you are writing a paper, a dissertation, preparing for a talk or an interview, or simply trying to recall prior work in a given field. I highly recommend using <a class="zem_slink freebase/en/citeulike" title="CiteULike" href="http://en.wikipedia.org/wiki/CiteULike" rel="wikipedia">CiteULike</a> &#8212; it is an online bibliography management portal. Some features I really like: CiteULike has a really nice bookmarklet that you adding new items to your bibliography using a single click from various sites such as ACM, USENIX, IEEE, <a class="zem_slink freebase/en/pubmed" title="PubMed" href="http://en.wikipedia.org/wiki/PubMed" rel="wikipedia">PubMed</a>, <a class="zem_slink" title="arXiv" href="http://www.arXiv.org" rel="homepage">arXiv</a> and so on; it has some really nice social features as well such as tagging, groups, watch lists etc.; you can download selected citations in multiple formats; you can search easily by keyword, tag, author, area, year etc.</p>
<h3>A Text Editor</h3>
<p>I don&#8217;t mean an IDE (like Eclipse) or a Word processor (like MS Word). I mean a text editor and only a text editor. AFAIC, that means Vim or Emacs (if that works for you). The bottom line is, learn a text editor and become really really good at it. You will be amazed at how much time will save you and how much can it impact your productivity. Some features that are essential: syntax highlighting, regular expression support, spell check, support for snippets etc.</p>
<p>On that note, learn to write in LaTeX. I&#8217;m horrified by the fact that so many people are still using Word like tools to write papers. I don&#8217;t have anything against Word, but it is the wrong tool for writing papers. Just reference management, formatting, including figures etc are so incredibly easier in LaTeX. And if you are struggling to find the code for the right symbol in LaTeX, you&#8217;ll love <a href="http://detexify.kirelabs.org/classify.html">detexify</a> (<em>hat tip: <a href="http://pages.cs.wisc.edu/~nater/">Nate</a>)</em>!</p>
<h3><a class="zem_slink freebase/en/revision_control" title="Revision control" href="http://en.wikipedia.org/wiki/Revision_control" rel="wikipedia">Version Control</a></h3>
<p>I can&#8217;t stress this more &#8212; you must get in the habit of versioning <em>everything</em>. Not just code, but your notes, write-ups and obviously papers. Having some version control has saved me from disasters many a times. And if you are collaborating on papers, I can&#8217;t imagine how people do it without some kind of version control system. Now there are a lot of choices out there. But if you are really savvy, you must use <a href="http://git-scm.com">git</a> :) Basically use any reasonable distributed VCS (<a class="zem_slink freebase/en/mercurial" title="Mercurial" href="http://mercurial.selenic.com/" rel="homepage">Mercurial</a> and Bazaar are also ok), but avoid Subversion and absolutely refuse to use CVS at all costs. CVS has lived a good life, but its time is now past and we must let it go.</p>
<h3>Information Management</h3>
<p>And by that, I mean staying on top of the news and research in your research area and/or academic community. I&#8217;ve found it very useful to add all the relevant blogs to a &#8216;research&#8217; tag in my <a href="http://reader.google.com">Google Reader</a> (yes, <a href="http://floatingsun.net/2009/07/28/blogging-bug-bites-academia/">the blogging bug has bit academia</a>). Likewise, you can find a lot of current information on Twitter. I&#8217;m sure people have already started live-blogging and twittering from academic conferences as well!</p>
<p>Of course, for more conventional searches, <a href="http://www.informatik.uni-trier.de/~ley/db/">DBLP</a> and <a href="http://scholar.google.com">Google Scholar</a> are invaluable. <a class="zem_slink freebase/en/citeseer" title="CiteSeer" href="http://en.wikipedia.org/wiki/CiteSeer" rel="wikipedia">CiteSeer</a> used to be the go-to website a few years ago, but I personally find Google Scholar much nicer to use and with just as much information, if not more.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/zemified_e.png?x-id=7b161ae1-395d-4ec0-b589-ef1f501ad4b1" alt="Enhanced by Zemanta" /></a></div>
<p>Related posts:<ol>
<li><a href='http://floatingsun.net/2006/05/15/tools-i-use-beamer/' rel='bookmark' title='Tools I use: beamer'>Tools I use: beamer</a></li>
<li><a href='http://floatingsun.net/2010/02/16/tools-i-use-tmux/' rel='bookmark' title='Tools I use: tmux'>Tools I use: tmux</a></li>
<li><a href='http://floatingsun.net/2005/08/30/must-read-for-grad-students/' rel='bookmark' title='Must read for grad students'>Must read for grad students</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://floatingsun.net/2010/01/08/tools-for-the-savvy-grad-student/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>gooLego: Google&#8217;s software building blocks</title>
		<link>http://floatingsun.net/2009/12/24/goolego-googles-software-building-blocks/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=goolego-googles-software-building-blocks</link>
		<comments>http://floatingsun.net/2009/12/24/goolego-googles-software-building-blocks/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 05:00:31 +0000</pubDate>
		<dc:creator>Diwaker Gupta</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Add new tag]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[Languages]]></category>
		<category><![CDATA[Open source]]></category>

		<guid isPermaLink="false">http://floatingsun.net/?p=1161</guid>
		<description><![CDATA[Image via Wikipedia Over the past few years, Google has open sourced several projects that provide some commonly used building blocks in any large software project. Some of them I was aware of since when they were launched (like protobufs), &#8230; <a href="http://floatingsun.net/2009/12/24/goolego-googles-software-building-blocks/">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://floatingsun.net/2006/07/17/india-blocks-blogs/' rel='bookmark' title='India blocks blogs?'>India blocks blogs?</a></li>
<li><a href='http://floatingsun.net/2006/01/22/best-web-20-software-of-2005/' rel='bookmark' title='Best Web 2.0 Software of 2005'>Best Web 2.0 Software of 2005</a></li>
<li><a href='http://floatingsun.net/2011/03/27/the-silent-victories-of-open-source/' rel='bookmark' title='The silent victories of open source'>The silent victories of open source</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="zemanta-img" style="margin: 1em; display: block;">
<div>
<dl class="wp-caption alignleft" style="width: 310px;">
<dt class="wp-caption-dt"><a href="http://en.wikipedia.org/wiki/Image:Google.png"><img title="Google Inc." src="http://upload.wikimedia.org/wikipedia/en/thumb/5/51/Google.png/300px-Google.png" alt="Google Inc." width="300" height="109" /></a></dt>
<dd class="wp-caption-dd zemanta-img-attribution" style="font-size: 0.8em;">Image via <a href="http://en.wikipedia.org/wiki/Image:Google.png">Wikipedia</a></dd>
</dl>
</div>
</div>
<p>Over the past few years, <a class="zem_slink freebase/en/google" title="Google" rel="homepage" href="http://google.com">Google</a> has open sourced several projects that provide some commonly used building blocks in any large software project. Some of them I was aware of since when they were launched (like protobufs), while others I discovered only recently. I couldn&#8217;t find any location where all the projects were listed together and combing through Google Code looking for them was painful, so I&#8217;m putting together a list myself. Hope some of you find it useful.</p>
<ul>
<li><a href="http://code.google.com/p/protobuf/">protobufs</a>: Platform agnostic messages. Critical for any distributed system. Note that protobufs only provide message serialization/deserialization (for various languages). An important missing piece is an <a class="zem_slink freebase/en/remote_procedure_call" title="Remote procedure call" rel="wikipedia" href="http://en.wikipedia.org/wiki/Remote_procedure_call">RPC</a> framework built on top of them. There are several projects attempting to build one using protobufs, but none of them are robust or mature enough for production use.</li>
<li><a href="http://code.google.com/p/google-styleguide/">style guide</a>: The importance of a style guide is probably understated. It is not about what is the &#8220;right&#8221; style &#8212; it is about consistency. While people may have different opinions, if everyone follows the same style, the code becomes much more readable and maintainable. Google maintains style guides for C++ and <a class="zem_slink freebase/guid/9202a8c04000641f800000000002f83f" title="Python (programming language)" rel="homepage" href="http://www.python.org/">Python</a>.</li>
<li><a href="http://code.google.com/p/google-gflags/">config flags</a>: Another important building block for all command line programs.</li>
<li><a href="http://code.google.com/p/google-glog/">logging</a>: Self-evident. Google&#8217;s logging library supports various log levels and other useful macros.</li>
<li><a href="http://code.google.com/p/google-coredumper/">core dumper</a>: A very nifty library &#8212; it allows you to dump core from within a running application. Extremely useful for debugging production systems.</li>
<li><a href="http://code.google.com/p/google-perftools/">perftools</a>: An extremely useful library for measuring and monitoring performance of programs. By simply linking against perftools, your application gets a much better malloc, heap checking, visual CPU profile of various routines (via graphviz), visualization of memory usage etc.</li>
<li><a href="http://code.google.com/p/googlemock/">googlemock</a>: A framework to quickly build mock objects &#8212; useful for testing.</li>
<li><a href="http://code.google.com/p/googletest/">googletest</a>: Google&#8217;s C++ unit testing framework, built on top of xUnit. Integrates well with googlemock.</li>
</ul>
<p>Of course, this is not an exhaustive list. There are numerous other open source projects from Google, some of them probably much more bigger and visible than the ones listed above &#8212; such as Wave, Go, GWT etc. If there&#8217;s a project that is a software building block that I missed out, do chime in the comments below.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/zemified_a.png?x-id=ba9f4934-b701-41c3-8cfe-b9f147d507ee" alt="Enhanced by Zemanta" /></a><span class="zem-script more-info pretty-attribution"><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/07/17/india-blocks-blogs/' rel='bookmark' title='India blocks blogs?'>India blocks blogs?</a></li>
<li><a href='http://floatingsun.net/2006/01/22/best-web-20-software-of-2005/' rel='bookmark' title='Best Web 2.0 Software of 2005'>Best Web 2.0 Software of 2005</a></li>
<li><a href='http://floatingsun.net/2011/03/27/the-silent-victories-of-open-source/' rel='bookmark' title='The silent victories of open source'>The silent victories of open source</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://floatingsun.net/2009/12/24/goolego-googles-software-building-blocks/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Reconsidering Vim</title>
		<link>http://floatingsun.net/2009/11/08/reconsidering-vim/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=reconsidering-vim</link>
		<comments>http://floatingsun.net/2009/11/08/reconsidering-vim/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 23:31:03 +0000</pubDate>
		<dc:creator>Diwaker Gupta</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Editor]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://floatingsun.net/?p=1160</guid>
		<description><![CDATA[NOTE: This post is not about the editor war — so please don’t try to start one either. First, some background. Lets just say that I lost my editor virginity to Vim. It was a brief, but violent introduction &#8212; &#8230; <a href="http://floatingsun.net/2009/11/08/reconsidering-vim/">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://floatingsun.net/2005/06/03/the-ancient-wars/' rel='bookmark' title='The Ancient Wars'>The Ancient Wars</a></li>
<li><a href='http://floatingsun.net/2009/11/22/emacs-vs-vim/' rel='bookmark' title='Emacs vs. Vim'>Emacs vs. Vim</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><em>NOTE: This post is not about the <a href="http://en.wikipedia.org/wiki/Editor_wars">editor war</a> — so please don’t try to start one either.</em></p>
<p>First, some background. Lets just say that I lost my editor virginity to <a class="zem_slink" title="Vim (text editor)" rel="homepage" href="http://www.vim.org/">Vim</a>. It was a brief, but violent introduction &#8212; the modal editing was too unfamiliar, the learning curve too steep. After dabbling with a few other conventional editors (such as <a class="zem_slink" title="KWrite" rel="homepage" href="http://www.kate-editor.org">KWrite</a>), I settled upon <a class="zem_slink" title="Emacs" rel="homepage" href="http://www.gnu.org/software/emacs/">Emacs</a> (<a class="zem_slink" title="XEmacs" rel="homepage" href="http://www.xemacs.org/">XEmacs</a> actually, but thats another story).</p>
<p>For the next three years, I tweaked my .emacs file, fiddled around with settings and plugins and modes, played games and browsed the web, checked my email and newsgroups, all within the comfortable confines of Emacs. But I was getting wary of the long startup times and (at that time) the inability to use the same interface and features in console mode (such as over SSH) as in GUI mode. It was time to move on.</p>
<p>I rediscovered Vim around 6 years ago. I started with a clean slate. As the saying goes, Emacs is an operating system that also happens to have an editor in it. The relatively more focused feature set of Vim was refreshing in comparison. I loved that I could work in GUI mode, save my session, go back home and resume my session in a terminal over SSH, which the exact same interface and keybindings. I quickly became very productive with Vim, and over the years have honed my plugins, settings and color themes to just how I like them.</p>
<p>But recently, I&#8217;ve been thinking about this again, and I might just reconsider Vim. I highly recommend reading these two blog posts to better understand where I&#8217;m coming from:</p>
<ul>
<li><a href="http://upsilon.cc/~zack/blog/posts/2008/10/from_Vim_to_Emacs_-_part_1/">From Vim to Emacs &#8212; Part I</a></li>
<li><a href="http://upsilon.cc/~zack/blog/posts/2008/11/from_Vim_to_Emacs_-_part_2/">From Vim to Emacs &#8212; Part II</a></li>
</ul>
<p>Don&#8217;t get me wrong &#8212; I think <a href="http://floatingsun.net/2009/04/18/vim-is-still-sexy/">Vim still has a lot to offer</a>. But, I can not deny that Vim is not what I would call a &#8220;forward looking editor.&#8221; Here&#8217;s why:</p>
<ul>
<li>Development community: the Emacs development community is a lot more open and vibrant right now than the Vim community. Part of this has to do with the BDFL model in Vim. Bram Moolenar has done a tremendous job in bringing Vim to the stage where it is. People can and have forked Vim in the past. But for one reason or another, Vim has stayed Vim, and its development trajectory has been slow and incremental.</li>
<li>Source code: Vim&#8217;s source code is not clean. At all. I just briefly skimmed over the source tree for Emacs 23, and it looks a lot more understandable and well structured.</li>
<li>Architecture: Vim 7 finally got spell check. But the spell check does not use any of the existing tools or formats. Vim has its own scripting language, with its own interpreter, grammer and data structures. Why not just use one of the many wonderful programming languages out there? Yes, there are interfaces to allow writing Vim code in Python, Ruby, Perl etc. But why reinvent the wheel all over again?</li>
</ul>
<p>When <a class="zem_slink" title="Bram Moolenaar" rel="wikipedia" href="http://en.wikipedia.org/wiki/Bram_Moolenaar">Bram Moolenaar</a> &#8212; the lead developer of Vim &#8211; <a href="http://googlesystem.blogspot.com/2006/03/google-hires-bram-moolenaar-author-of.html"> joined Google</a>, I had hoped that Vim would generate a lot more interest and enthusiasm. But so far, it hasn&#8217;t changed much.</p>
<p>And so, in the next few weeks, I&#8217;m going to take another look at Vim as well as Emacs. I&#8217;ll try to do an objective evaluation of where the editors stand today, where I perceive they are headed. I hope to make my decision on whether to move away from Vim or not by the end of this year.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/4b496703-543c-471e-9665-ef0f3e6a2d44/"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=4b496703-543c-471e-9665-ef0f3e6a2d44" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><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/2005/06/03/the-ancient-wars/' rel='bookmark' title='The Ancient Wars'>The Ancient Wars</a></li>
<li><a href='http://floatingsun.net/2009/11/22/emacs-vs-vim/' rel='bookmark' title='Emacs vs. Vim'>Emacs vs. Vim</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://floatingsun.net/2009/11/08/reconsidering-vim/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Vim and the future of editors</title>
		<link>http://floatingsun.net/2009/05/06/vim-and-the-future-of-editors/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=vim-and-the-future-of-editors</link>
		<comments>http://floatingsun.net/2009/05/06/vim-and-the-future-of-editors/#comments</comments>
		<pubDate>Wed, 06 May 2009 19:56:43 +0000</pubDate>
		<dc:creator>Diwaker Gupta</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://floatingsun.net/?p=1119</guid>
		<description><![CDATA[As is evident from the image below, something about my last post clearly struck a chord with a lot of people. I don&#8217;t know if it was &#8220;vim&#8221; or it was &#8220;sexy&#8221;, but somehow this post landed up on Reddit. &#8230; <a href="http://floatingsun.net/2009/05/06/vim-and-the-future-of-editors/">Continue reading <span class="meta-nav">&#8594;</span></a>
No related posts.]]></description>
			<content:encoded><![CDATA[<p>As is evident from the image below, something about <a href="http://floatingsun.net/2009/04/18/vim-is-still-sexy/">my last post</a> clearly struck a chord with a lot of people.</p>
<div id="attachment_1120" class="wp-caption alignnone" style="width: 272px"><a href="http://floatingsun.net/wordpress/wp-content/uploads/2009/05/snapshot6.png"><img class="size-full wp-image-1120" title="snapshot6" src="http://floatingsun.net/wordpress/wp-content/uploads/2009/05/snapshot6.png" alt="Traffic spike" width="262" height="177" /></a><p class="wp-caption-text">Traffic spike</p></div>
<p>I don&#8217;t know if it was &#8220;vim&#8221; or it was &#8220;sexy&#8221;, but somehow this post <a href="http://www.reddit.com/search?q=vim+sexy">landed up</a> on <a href="http://www.reddit.com">Reddit</a>. This is the closest I&#8217;ve come to being slashdotted &#8212; for that one day, Reddit drove nearly 95% of the traffic to my site. Also, before you start jumping to conclusions from the graph above, let me put some numbers out there. On average, my site gets anywhere between 200 to 400 visitors daily. On April 18th, my site got <strong>7000+ </strong>visitors, an order of magnitude more than I normally get. That is the spike you see, and now the traffic is back to normal, thank you very much.</p>
<p>Since a lot of people seem to be interested in Vim hopefully, I want to discuss the space of text editors (in particular, editors for programming) and where I think we are headed.</p>
<p>The first observation is that both of the giants on the editing world &#8212; Vim and Emacs &#8212; are ancient by any standards. Depending o how you look at it, I think it is fair to say that neither editor has evolved significantly in terms of the underlying code, architecture and usage model in the past two decades, if not more.</p>
<p>The second observation is that despite the large number of editors out there, IMHO few have any significant mind and market share other than Vim and Emacs. Obviously there is Eclipse, Visual Studio, IntelliJ etc.</p>
<p>And so I wonder, what would the text editor landscape look 5-10 years down the line? There are many who would say if it ain&#8217;t broke, don&#8217;t fix it. However, I&#8217;m a big believer in change, and I think over time, change is inevitable. However, at this point I don&#8217;t know what, if any, substantial change is happening in the text-editor arena. No new editors with fundamentally new ways of manipulating text or amazingly compelling features are emerging. I actually don&#8217;t mind reinventions of the wheel either, as long as the reinvention delivers a much better wheel. For instance, the Vim source code is not the most modular, extensible or maintainable. And it is in C &#8212; not that there is anything wrong with it, but I think an object oriented language is better for a complex piece of software like Vim.</p>
<p>The only recent buzz has been about <a href="http://macromates.com/">Textmate</a> and the many <a href="http://www.e-texteditor.com/">clones</a> it has since inspired. I&#8217;m really looking forward to <a href="http://yzis.org">Yzis</a> reach a usable milestone. What are other promising editors out there that you are excited about?</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://floatingsun.net/2009/05/06/vim-and-the-future-of-editors/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Vim is still sexy!</title>
		<link>http://floatingsun.net/2009/04/18/vim-is-still-sexy/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=vim-is-still-sexy</link>
		<comments>http://floatingsun.net/2009/04/18/vim-is-still-sexy/#comments</comments>
		<pubDate>Sat, 18 Apr 2009 22:04:35 +0000</pubDate>
		<dc:creator>Diwaker Gupta</dc:creator>
				<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://floatingsun.net/?p=1109</guid>
		<description><![CDATA[NOTE: This post is not about the editor war &#8212; so please don&#8217;t try to start one either. I use vim as my editor of choice. As I note above, to each his own editor. However, Vim is not what &#8230; <a href="http://floatingsun.net/2009/04/18/vim-is-still-sexy/">Continue reading <span class="meta-nav">&#8594;</span></a>
No related posts.]]></description>
			<content:encoded><![CDATA[<p><em>NOTE: This post is not about the <a href="http://en.wikipedia.org/wiki/Editor_wars">editor war</a> &#8212; so please don&#8217;t try to start one either.</em></p>
<p>I use vim as my editor of choice. As I note above, to each his own editor.</p>
<p>However, Vim is not what one would call a &#8220;sexy editor&#8221;. After all, it has been around (in some shape or form) since before I was born. It does not generate as much buzz in the blogosphere and is not the darling of all the new kids on the block, as <a href="http://macromates.com/">some of the other editors out there</a>. Not many Ruby on Rails developers, for instance, seem to be using Vim for coding (actually, saying that a lot of RoR developers seem to be using Textmate is probably more accurate, but you get the point). It is written in C and does not use git for hosting. The Vim website leaves much to be desired. In the social networking world, Vim barely has a presence.</p>
<p><img src="http://rlv.zcache.com/vi_bad_attitude_shirt-p235322641079260529trat_325.jpg" alt="Vim attitude" width="184" height="184" /></p>
<p>But, I contend that Vim still has a lot to offer. Here are few of the things you can check out to spruce up your Vim usage:</p>
<ul>
<li><a href="http://www.vim.org/scripts/script.php?script_id=2140">xoria256</a>: a modern, functional and eye-pleasing color scheme.</li>
<li><a href="http://www.vim.org/scripts/script.php?script_id=2540">snipMate</a>: Textmate like snippets for Vim. Interestingly, snipmate <a href="http://github.com/meese/snipmate.vim/tree/master">lives on github</a>. There are actually several textmate like plugins for Vim, I prefer snipMate. I have succesfully used <a href="http://www.vim.org/scripts/script.php?script_id=1318">snippetsEmu</a> in the past.</li>
<li><a href="http://vimdoc.sourceforge.net/htmldoc/version7.html#new-omni-completion">Omni completion</a>: Probably not as awesome as Visual Studio&#8217;s, but useful nonetheless.</li>
<li>Check out <a href="http://floatingsun.net/2005/03/11/must-need-vim-plugins/">my list of some essential vim plugins</a>.</li>
<li><a href="http://www.swaroopch.com/notes/Vim">A byte of Vim</a>: from the author of the well known &#8220;A byte of Python&#8221; book.</li>
</ul>
<p>I&#8217;m also very happy to see the number of <a href="http://github.com/search?langOverride=VimL&amp;q=vim&amp;type=Repositories&amp;x=0&amp;y=0">Vim related repositories on github</a>. Bottomline: don&#8217;t give up on Vim. Vim is still sexy baby, you just need to look in the right places :)</p>
<p><em>Update:</em> I&#8217;m including a screenshot of Xoria below.</p>
<p><a href="http://ix2.piccy.info.nyud.net/i3/2f/32/04d9c2b4095038a9ee591e9ef6a3.png"><img src="http://ix2.piccy.info.nyud.net/i3/2f/32/04d9c2b4095038a9ee591e9ef6a3.png" alt="xoria, GUI, C" width="338" height="673" /></a></p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://floatingsun.net/2009/04/18/vim-is-still-sexy/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Web services I wouldn&#8217;t mind paying for</title>
		<link>http://floatingsun.net/2009/04/08/web-services-i-wouldnt-mind-paying-for/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=web-services-i-wouldnt-mind-paying-for</link>
		<comments>http://floatingsun.net/2009/04/08/web-services-i-wouldnt-mind-paying-for/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 15:17:28 +0000</pubDate>
		<dc:creator>Diwaker Gupta</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[mint]]></category>
		<category><![CDATA[passpack]]></category>
		<category><![CDATA[web services]]></category>

		<guid isPermaLink="false">http://floatingsun.net/?p=1105</guid>
		<description><![CDATA[Here are some web service I wouldn&#8217;t mind paying for, simply because of the value they add to my day-to-day life. Note that some of them already have paid plans, it is just that I haven&#8217;t reached a stage where &#8230; <a href="http://floatingsun.net/2009/04/08/web-services-i-wouldnt-mind-paying-for/">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://floatingsun.net/2004/12/04/better-services/' rel='bookmark' title='Better services'>Better services</a></li>
<li><a href='http://floatingsun.net/2006/02/16/how-let-change-of-mind-saved-iit-k-hindustantimescom/' rel='bookmark' title='How LeT change of mind saved IIT-K : HindustanTimes.com'>How LeT change of mind saved IIT-K : HindustanTimes.com</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Here are some web service I wouldn&#8217;t mind paying for, simply because of the value they add to my day-to-day life. Note that some of them <em>already</em> have paid plans, it is just that I haven&#8217;t reached a stage where I actually need to upgrade. All I&#8217;m saying is that these websites have enough real value add for me to be worth for real money.</p>
<p><img src="http://www.mint.com/images/global/mint.png" alt="mint.com" width="194" height="80" /></p>
<p>Having <em>all</em> my financial data pulled in a single place is fantastic. Previously, I used to have to go and log into 5 different websites to check on all my bank accounts and credit cards. Add to that the ability to examine spending trends, watch your investment grow (or crash, as is the case with the current economy) over time, alerts for fee, low balance and over-budgets etc, and you&#8217;ve got a killer service in your hands. Of course, Mint is not without its problems, but the benefits far outweigh the snags.</p>
<p><img title="passpack" src="http://www.passpack.com/en/images/passpack_logo.gif" alt="passpack" width="222" height="38" /></p>
<p>Passpack has been a real time saver for me. I have written about <a href="http://floatingsun.net/2006/02/27/web-based-password-manager/ ">web based password managers before</a>, and so far Passpack has been just fantastic! I just wish they would bring back search-as-you-type&#8230;</p>
<p><img title="RTM" src="http://www.rememberthemilk.com/img/logo.png" alt="RTM" width="188" height="83" /></p>
<p>I&#8217;m a big believer in using the right tools you help you work <em>smarter.</em> RTM is a great way to offload your todo list from your brain. It has all the key elements of a good web service good &#8212; a great UI, keyboard shortcuts, the ability to email tasks, integration with services like IMified, a nice API (so you can use desktop apps such as Gnome DO or Quicksilver to interact with RTM without ever leaving your desktop).</p>
<p>Related posts:<ol>
<li><a href='http://floatingsun.net/2004/12/04/better-services/' rel='bookmark' title='Better services'>Better services</a></li>
<li><a href='http://floatingsun.net/2006/02/16/how-let-change-of-mind-saved-iit-k-hindustantimescom/' rel='bookmark' title='How LeT change of mind saved IIT-K : HindustanTimes.com'>How LeT change of mind saved IIT-K : HindustanTimes.com</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://floatingsun.net/2009/04/08/web-services-i-wouldnt-mind-paying-for/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Tools I use: beamer</title>
		<link>http://floatingsun.net/2006/05/15/tools-i-use-beamer/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tools-i-use-beamer</link>
		<comments>http://floatingsun.net/2006/05/15/tools-i-use-beamer/#comments</comments>
		<pubDate>Tue, 16 May 2006 07:32:02 +0000</pubDate>
		<dc:creator>Diwaker Gupta</dc:creator>
				<category><![CDATA[Grad School]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[beamer]]></category>
		<category><![CDATA[latex]]></category>

		<guid isPermaLink="false">http://floatingsun.net/blog/2006/05/15/647/</guid>
		<description><![CDATA[This is largely a rip-off of my original article. I figured I should repost it for posterity and it fits in line with my tools theme.﻿ Being a grad student (for that matter, in almost any profession these days), I &#8230; <a href="http://floatingsun.net/2006/05/15/tools-i-use-beamer/">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://floatingsun.net/2005/06/28/why-beamer/' rel='bookmark' title='Why beamer?'>Why beamer?</a></li>
<li><a href='http://floatingsun.net/2004/11/02/its-been-a-long-time-2/' rel='bookmark' title='Its been a long time&#8230;'>Its been a long time&#8230;</a></li>
<li><a href='http://floatingsun.net/2005/03/30/more-vim-tools/' rel='bookmark' title='More Vim tools'>More Vim tools</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><em>This is largely a rip-off of my <a href="http://floatingsun.net/articles/why-latex-beamer.html">original article</a>. I figured I should repost it for posterity and it fits in line with my <a href="http://floatingsun.net/tags/tools">tools theme</a>.﻿</em></p>
<p>Being a grad student (for that matter, in almost any profession these days), I frequently need to give talks or present some material. I have finally settled on <a href="http://latex-beamer.sf.net">Latex Beamer</a> as my preferred presentation tool, and this article describes why.</p>
<h2>Introduction</h2>
<p>Presentation is one of the most effective means of communication for a small audience with diverse backgrounds. Both in the industry and the acedemia, it is becoming increasingly important to create affective and compelling presentations. Not surprisingly then, the presentation tool you use becomes very important in the work place.</p>
<p>The de facto tool for presentation out there is <a class="zem_slink freebase/en/microsoft_powerpoint" title="Microsoft PowerPoint" rel="homepage" href="http://office.microsoft.com/en-us/powerpoint">Microsoft Powerpoint</a>. For more reasons than one, I prefer not to use it. I have tried several alternatives, and finally decided to use Latex Beamer for my presentations. Here I try to describe why I made this choice. I must mention here that the beamer web page looks ostentiously simple and naive &#8212; don&#8217;t be fooled by it. Beamer is one of the most sophisticated and extensively documented (user manual has more than 300 pages of professionally written documentation) presentation tools I have come across. Take a look at one of the sample slides to get a feel of what beamer can do.</p>
<h3>Things I dislike about other presentation tools</h3>
<p>While I&#8217;m not talking about any one tool in particular, the general flavor is of tools belonging to the Powerpoint family (this includes OpenOffice.org&#8217;s Impress, <a class="zem_slink freebase/en/koffice" title="Calligra Suite" rel="homepage" href="http://www.calligra-suite.org/">KOffice</a>&#8216;s <a class="zem_slink freebase/en/kpresenter" title="Calligra Stage" rel="homepage" href="http://www.koffice.org/kpresenter/">KPresenter</a> etc)</p>
<ul>
<li>I have to worry about layout</li>
<li>Font sizes are a function of amount of content</li>
<li>Changing parts of a &#8220;theme&#8221; is hard</li>
<li>Powerpoint slides won&#8217;t run nicely on Impress or KOffice. The latter two won&#8217;t run at all on Powerpoint. Why do I need something as bulky as powerpoint just to do the presentation? While making, I can understand that we might need significant software complexity, but can&#8217;t we have something more lightweight for presenting?</li>
</ul>
<h2>Things I like about beamer?</h2>
<ul>
<li><span style="font-size: 14px; font-weight: normal;">Its <a class="zem_slink freebase/en/latex" title="LaTeX" rel="homepage" href="http://www.latex-project.org">LaTeX</a>: latex and friends have survived the test of time and for more than 2 decades people have been using tex derived technologies for typesetting their writings. With latex, beamer makes it easier than ever to put mathematical formualae and all kinds of symbols in your presentations, embed images, make tables and do everything else that you can do with latex. Since many of us already use latex, it means there is less tool to learn &#8212; I can make my presentations in a language that I&#8217;m already familiar with! And I don&#8217;t need any bulky tool to manipulate my presentation, just a text editor is enough, thank you.</span></li>
<li>Its PDF: We all know what PDF stands for &#8212; Portable Document Format. Thats it! Portable! Latex runs on all major operating systems and architectures out there. Once you get a PDF from Latex, you can display it using any regular PDF viewer. Imagine how easy it now becomes to move your presentation around. You don&#8217;t have to worry if your laptop breaks down and the other laptops in the room don&#8217;t have the right version of Powerpoint installed. Put your PDF in a USB key and stop worrying about it!</li>
<li>Takes care of layout</li>
<li>Themes are endlessly customizable: beamer comes with <strong>dozens</strong> of pre-packages themes, and its very easy to modify an existing theme. Same thing with fonts and colors (you can even do alpha transparency!)</li>
<li>Notes and handouts made the way you want them</li>
<li>Organize your presentation in a logical manner: beamer sort of follows the MVC philosophy. In each presentation, there is a content structure, which determines how your content flows through (just like a regular article with sections and subsections). Then there is a slide structure, which determines how this content fits onto your slides. The content structure controls the generation of navitation and table of contents. The slide structure controls the slides and the control flow between them.</li>
<li>Amazing documentation: The beamer user manual is over 200 pages long, and its all good solid documentation. It is amazing well written considering the fact that its mostly done by a single person. It starts off with a nice tutorial, followed by detailed references and examples.</li>
<li>Accompanying packages: Just check out the documentations for <a href="ftp://tug.ctan.org/pub/tex-archive/macros/latex/contrib/xcolor/xcolor.pdf">xcolor</a> and <a href="ftp://tug.ctan.org/pub/tex-archive/graphics/pgf/doc/generic/pgf/version-for-pdftex/en/pgfmanual.pdf">pgf</a>. The documentation is just as comprehensive as beamer itself, and these packages make it easy and fun to do fancy stuff with beamer. Like draw pretty pictures and do some basic animation. Again, all with the comfort of latex.</li>
</ul>
<h2>But nothing is perfect</h2>
<ul>
<li>No knowledge of projectors or screens &#8212; the user has to deal with that (or the operating system)</li>
<li>Animation is still hard.</li>
<li>In general, multimedia is hard: embedding audio and video clips may not work reliably on all platforms.</li>
</ul>
<p>I <em>highly</em> recommend beamer to anyone who wants to try an alternative to Powerpoint, and if you write a lot of technical papers in latex, you&#8217;ll immediately love beamer. Check out my <a href="http://floatingsun.net/talks/nsdi06-tdf-talk.pdf">NSDI talk</a> for a sample of what beamer can do for you.</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=23d67d40-dafb-4828-a404-024208c62f4e" 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/2005/06/28/why-beamer/' rel='bookmark' title='Why beamer?'>Why beamer?</a></li>
<li><a href='http://floatingsun.net/2004/11/02/its-been-a-long-time-2/' rel='bookmark' title='Its been a long time&#8230;'>Its been a long time&#8230;</a></li>
<li><a href='http://floatingsun.net/2005/03/30/more-vim-tools/' rel='bookmark' title='More Vim tools'>More Vim tools</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://floatingsun.net/2006/05/15/tools-i-use-beamer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

