<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>The ByteBaker &#187; Programming</title>
	<atom:link href="http://bytebaker.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://bytebaker.com</link>
	<description>Computer Science isn&#039;t a science and it&#039;s not about computers</description>
	<lastBuildDate>Wed, 23 May 2012 19:07:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='bytebaker.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/6d47d9dd6b113f7f539237c5cff8cd54?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>The ByteBaker &#187; Programming</title>
		<link>http://bytebaker.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://bytebaker.com/osd.xml" title="The ByteBaker" />
	<atom:link rel='hub' href='http://bytebaker.com/?pushpress=hub'/>
		<item>
		<title>Grit for Programmers</title>
		<link>http://bytebaker.com/2012/05/01/grit-for-programmers/</link>
		<comments>http://bytebaker.com/2012/05/01/grit-for-programmers/#comments</comments>
		<pubDate>Tue, 01 May 2012 14:00:00 +0000</pubDate>
		<dc:creator>Shrutarshi Basu</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[deliberate practice]]></category>
		<category><![CDATA[grit]]></category>

		<guid isPermaLink="false">http://bytebaker.com/?p=1913</guid>
		<description><![CDATA[It turns out that the best indicator of success isn&#8217;t IQ or natural talent or how well off you were at birth. Rather it&#8217;s something called grit – the perseverance and passion for long-term goals. Grit requires a clear goal, self-confidence and a careful balance between stubborness and flexibility. For the last few months I&#8217;ve [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bytebaker.com&#038;blog=8123270&#038;post=1913&#038;subd=bytebaker&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It turns out that the best indicator of success isn&#8217;t IQ or natural talent or how well off you were at birth. Rather it&#8217;s something called <a href="http://www.fastcompany.com/1800541/grit-top-predictor-of-success">grit</a> – the perseverance and passion for long-term goals. Grit requires a clear goal, self-confidence and a careful balance between stubborness and flexibility. For the last few months I&#8217;ve been living one of the most productive (and most challenging) times of my life. I&#8217;ve been building a system that has more parts, does more things and is much larger than just about anything I&#8217;ve built before. It&#8217;s been challenging and rewarding work and I couldn&#8217;t have done it without lots of support from great mentors. As I&#8217;ve stumbled, fallen down, hit brick walls, picked myself up and kept going I&#8217;ve been wondering – does grit apply equally to programmers and success in building good software?</p>
<p>Programming culture is generally synonymous with hard work and long hours &#8212; death marches, all-nighters, 80 hour work weeks, we do them all. But we&#8217;re talking about grit here, not masochism. Grit isn&#8217;t strictly equal to working obscenely hard, long hours. Part of the problem with thinking about grit in relation to programming is defining what success means for a programmer. Is your definition of success simply finding a working solution? Does it mean finding the most efficient solution? Are you successful if you cover every single edge case or is it enough to just take care of the most common ones? Is your program really better if it handles everything you could throw at it or should you handle core uses cases well and fail gracefully on the others? Part of the problem of coming up with a good solution is asking the right question. This is especially true of building software. However merely coming up with the right question requires a certain amount of grit. We need the patience to look beyond the obvious problems and solutions and ask the hard questions.</p>
<p>So now we&#8217;ve found the right question and defined bounds on the possible solutions. What next? How does grit help with the actual act of writing code and building stuff? Programming is not easy. It can be fun and exciting and uplifting, but sometimes it is downright hard and depressing. Sometimes we spend hours sifting through possible solutions before hitting upon the appopriate one. Sometimes we spend several intimate hours with a debugger tracking down pointer bugs before finding that one variable we forgot to initialize. Being tenacious and persistent in the face of seemingly unrelenting roadblocks is not an added benefit for a programmer – it is a bare necessity. When it comes down to the act of sitting down, writing and debugging code grit is not optional. Without it not only can we not be good programmers, we can&#8217;t even be an average ones.</p>
<p>But if our goal is to be a good (maybe even great) programmer, then grit will continue to help. One of the qualities of good programmers is that they get a lot of stuff done. In particular they do a lot that isn&#8217;t strictly their job. This includes fixing and extending their tools and improving core infrastructure. They do this even if they aren&#8217;t in charge of infrastructure because they realize that their code depends on what&#8217;s underneath. Grit is the difference between waiting for someone else to fix the annoying bug in the library that you depend on and diving in and fixing it ourselves. When Steve Yegge talks about the difference between &#8220;superhumanly godlike&#8221; and &#8220;smart&#8221;, grit is a part of what he&#8217;s talking about. Not that there&#8217;s anything wrong with being smart, but it might not be enough. Of course to cultivate that level of grit we need to cultivate a good deal of courage. Diving into someone else&#8217;s code and fixing it can be a daunting task but it&#8217;s one that has to be mastered.</p>
<p>While I&#8217;ve always <em>liked</em> programming it&#8217;s taken me a long time to understand the importance of grit. When you do something because you like it (mostly) it&#8217;s tempting to stay away from the parts that are painful and hard. For a long time I avoided writing large programs because I was afraid of all the complexity that was involved. I was afraid of becoming familiar with complex algorithms because I was afraid of the possibility that I&#8217;d get it wrong. I understand now that I can&#8217;t become a good programmer if I don&#8217;t push myself to do the things that I consider hard and dislike. I need to have the grit to handle large complex problems and spend the time to understand and apply advanced algorithms. The good news is that just like perseverance and discipline, grit can be trained and improved. I&#8217;m no longer as afraid to dive into unknown codebases as I was a few months ago. I now find it much easier to hold complex code paths in my head. I&#8217;m certainly far, far away from being superhuman, but I try to suck a little less every day.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bytebaker.wordpress.com/1913/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bytebaker.wordpress.com/1913/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bytebaker.wordpress.com/1913/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bytebaker.wordpress.com/1913/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bytebaker.wordpress.com/1913/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bytebaker.wordpress.com/1913/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bytebaker.wordpress.com/1913/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bytebaker.wordpress.com/1913/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bytebaker.wordpress.com/1913/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bytebaker.wordpress.com/1913/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bytebaker.wordpress.com/1913/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bytebaker.wordpress.com/1913/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bytebaker.wordpress.com/1913/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bytebaker.wordpress.com/1913/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bytebaker.com&#038;blog=8123270&#038;post=1913&#038;subd=bytebaker&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bytebaker.com/2012/05/01/grit-for-programmers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ccb1217c46b31b7b232878d355f7f4e4?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Basu</media:title>
		</media:content>
	</item>
		<item>
		<title>Predicting Human Intent</title>
		<link>http://bytebaker.com/2012/03/20/predicting-human-intent/</link>
		<comments>http://bytebaker.com/2012/03/20/predicting-human-intent/#comments</comments>
		<pubDate>Tue, 20 Mar 2012 15:30:00 +0000</pubDate>
		<dc:creator>Shrutarshi Basu</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://bytebaker.com/?p=1875</guid>
		<description><![CDATA[Readability is one of my favorite web services. Readability is well designed, carefully made, unobtrusive and they&#8217;re not trying to wring me of personal information to datamine and sell at every turn (at least I don&#8217;t think they are). Their web service gives you browser plugins that strip out everything but the content of a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bytebaker.com&#038;blog=8123270&#038;post=1875&#038;subd=bytebaker&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="https://www.readability.com/">Readability</a> is one of my favorite web services. Readability is well designed, carefully made, unobtrusive and they&#8217;re not trying to wring me of personal information to datamine and sell at every turn (at least I don&#8217;t think they are). Their web service gives you browser plugins that strip out everything but the content of a page and present it in a clean, crisp format. If you sign up for an account you can make use of their &#8220;Reading List&#8221; to store pages for later reading. Recently they released beautiful iOS and Android apps that sync with your reading list allowing you to stock up on things to read at your computer and read them on the move.</p>
<p>Though Readability is a great service and they have great supporting apps they have one flaw. However, it&#8217;s not entirely their fault: I think it&#8217;s a side-effect of the difficulty of predicting human intent. The problem has to do with Readability&#8217;s reading list. When you install the browser plugins you get three buttons: a &#8220;Read Now&#8221; button, a &#8220;Read Later&#8221; button and a &#8220;Send to Kindle&#8221; button. The &#8220;Send to Kindle&#8221; button formats and sends the web page you&#8217;re on to your Kindle (assuming you&#8217;ve set up and connected your Kindle properly). The &#8220;Read Later&#8221; button saves the page you&#8217;re on to your Reading List which can be synced to your iOS or Android devices. The &#8220;Read Now&#8221; button will do the Readability formatting on your current page and show you the cleaned up version right then for you to continue reading.</p>
<p>That&#8217;s all great. However, the &#8220;Read Now&#8221; button also drops the page you just converted into your Reading List. This is great if you start reading a long article and then have to leave your machine. You can come back to it later, on another browser or another device entirely. But what happens if you finish reading the article right there and then? The article still ends up in your reading list. That would be fine if the list was simply a history of things you&#8217;ve read. However the Reading List is also a list of things you&#8217;re <em>going to read</em>. So the Reading List now contains things I&#8217;m going to read, things I&#8217;ve read and things I might want to read again. I think this problem stems from the fact that Readability started as a formatter and added read-later functionality unlike services like Instapaper which are designed for savings articles for later.</p>
<p>How can we differentiate between all these types of articles? Readability provides the ability to &#8220;Archive&#8221; and &#8220;Favorite&#8221; articles. Once I&#8217;m done with reading an article I Favorite it if I&#8217;m going to read it again and Archive it otherwise. But could Readability do this for me? Could Readability somehow figure out what I want to happen to the article? The simplest solution would be to archive whatever I Read Now and only add to the Reading List ones that I mark to Read Later. However that means that if I start reading something and then have to leave it ends up in the Archive where I might never look at it again. Could Readability be a little smarter? One heuristic would be to check where I am in the article. By default an article is always added to the Reading List as it is now. But when I scroll to the bottom Readability takes that to mean that I&#8217;m done reading and moves it into the Archive. If I liked it and wanted to come back to it I manually mark it as a Favorite. (I don&#8217;t expect Readability to be <em>that</em> clever. Yet.)</p>
<p>Without having actually tested the solutions, I can&#8217;t say how well they would work. There are certainly edge cases: what if I scroll down to read a footnote and then scroll back up to read the rest of the article? What if I get to the end and then go back to re-read a particular section? What if I quickly skim through an article to get to the end and want to come back later to read it in more depth? I think there&#8217;s no clear answer because fundamentally we&#8217;re trying to have Readability &#8220;guess&#8221; what we&#8217;re trying to do without giving an unambiguous signal. Sure, all of them could be solved with a few manual interactions. But the whole point of having advanced software is so that I <em>don&#8217;t</em> have to tell my computer what to do in excruciating detail.</p>
<p>Like I said at the beginning I don&#8217;t think that Readability is necessarily at fault for how their service works. Any attempt to automatically manage the Reading List would require making some assumptions as to what it is the user wants to do. Even if those assumptions are right most of the time, there will almost certainly be times when they&#8217;re <em>wrong</em>. We are, after all, dealing with people here, and people aren&#8217;t perfectly predictable agents. If they were, human computer interaction and economics would both be very different fields.</p>
<p>Predicting human intent is a hard problem. Ultimately, some amount of direct intervention might be inevitable. While Readability is meant to be a product it would be interesting to see researchers using it (or similar services) for doing research with real users about how our software can make choices for us in a way that closely reflects what we would have done ourselves. Unlike some people I don&#8217;t want my software to do less and have fewer features. I want it to do more so that I can concentrate on more important things. Like <a href="http://lesswrong.com/lw/91c/so_you_want_to_save_the_world/">saving the world</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bytebaker.wordpress.com/1875/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bytebaker.wordpress.com/1875/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bytebaker.wordpress.com/1875/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bytebaker.wordpress.com/1875/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bytebaker.wordpress.com/1875/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bytebaker.wordpress.com/1875/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bytebaker.wordpress.com/1875/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bytebaker.wordpress.com/1875/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bytebaker.wordpress.com/1875/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bytebaker.wordpress.com/1875/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bytebaker.wordpress.com/1875/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bytebaker.wordpress.com/1875/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bytebaker.wordpress.com/1875/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bytebaker.wordpress.com/1875/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bytebaker.com&#038;blog=8123270&#038;post=1875&#038;subd=bytebaker&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bytebaker.com/2012/03/20/predicting-human-intent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ccb1217c46b31b7b232878d355f7f4e4?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Basu</media:title>
		</media:content>
	</item>
		<item>
		<title>Etudes for programming</title>
		<link>http://bytebaker.com/2012/03/02/etudes-for-programming/</link>
		<comments>http://bytebaker.com/2012/03/02/etudes-for-programming/#comments</comments>
		<pubDate>Fri, 02 Mar 2012 14:00:00 +0000</pubDate>
		<dc:creator>Shrutarshi Basu</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[deliberate practive]]></category>
		<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://bytebaker.com/?p=1861</guid>
		<description><![CDATA[From Wikipedia: An étude (a French word meaning study, French pronunciation: [eˈtyd], English pronunciation: / ˈeɪtjuːd /) is an instrumental musical composition, most commonly of considerable difficulty, usually designed to provide practice material for perfecting a particular technical skill. I noticed today that Michael Fogus (one of the authors of Joy of Clojure) has a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bytebaker.com&#038;blog=8123270&#038;post=1861&#038;subd=bytebaker&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>From <a href="http://en.wikipedia.org/wiki/Étude">Wikipedia</a>:</p>
<blockquote><p>An étude (a French word meaning study, French pronunciation: [eˈtyd], English pronunciation: / ˈeɪtjuːd /) is an instrumental musical composition, most commonly of considerable difficulty, usually designed to provide practice material for perfecting a particular technical skill.</p></blockquote>
<p>I noticed today that <a href="http://blog.fogus.me/">Michael Fogus</a> (one of the authors of <a href="http://joyofclojure.com/">Joy of Clojure</a>) has a number of <a href="https://github.com/fogus">Github repos</a> with names such as etude-ocaml and etude-syntax. I also realized this week that I&#8217;m a pretty slow programmer. I&#8217;ve been getting better over the years but I&#8217;m still slow, especially if there&#8217;s a good amount of API design involved. While I think that writing lots of code will make me faster over time, I do wish there was a more structured, focused approach.</p>
<p>In general, I wish there was more by the way of études for programming &#8212; problems and exercises of considerable difficulty designed to provide practice material for a particular (set of) skills. There are of course great textbooks for programming and computer science and those books have good exercises (I particularly like <a href="http://mitpress.mit.edu/sicp/">SICP</a> and the <a href="http://en.wikipedia.org/wiki/The_C_Programming_Language">K&amp;R C book</a>), however in most of those cases the point is to teach first and practice second. What I&#8217;d like to see is the reverse – assume that the reader already knows about functional programming or the C language but needs to &#8220;level up&#8221;, so to speak. The exercises would be harder and more in number but would also cover a broad area in terms of application of the concepts involved.</p>
<p>This is related to what I&#8217;ve written earlier in terms of <a href="http://bytebaker.com/2011/11/21/deliberate-practice-for-programmers/">deliberate practice for programmers</a>. That post talks about &#8220;level up&#8221; lists – <a href="https://gist.github.com/1372296">a list of programs to make</a> that help explore the different areas of computer science and help you gain experience and hence &#8220;level up&#8221; as a developer. On the other hand études would focus on depth rather than breadth – each one would focus on a small technique or technology and fully explore that area. Together a continuous habit of working on études and doing level-up projects would give programmers a steady stream of deliberate practice exercises to work on.</p>
<p>The question is, where are we to find these études? I&#8217;m not sure if there are programming books out there that fit that description. If there are, I&#8217;d love to here about them. But in the meantime I&#8217;ve found an acceptable alternative &#8212; homework and assignments for college level courses. This semester I&#8217;m the TA for a course on <a title="Functional Programming" href="http://www.cs.cornell.edu/courses/cs3110/2012sp/index.php">functional programming</a> and throughout the semester we have a set of 6 assignments for students to do. Each of them have about 3 to 4 problems (each with multiple parts) that tackle a small area of functional programming. I think exercises like this are great material for études. I&#8217;m currently working through the exercises at the same time as the students (other TAs are making them). Even though I&#8217;m already familiar with most of the material it&#8217;s been a good learning and great practice for me. I can&#8217;t really measure if I&#8217;m improving (apart from running my solutions through the test harness) but it&#8217;s more direct and practice in functional programming that I&#8217;ve ever had.</p>
<p>I&#8217;ll be done with this particular étude in a few months. I don&#8217;t think I&#8217;ll be releasing the code since the problems often get reused. However I do think there will be lot more where those came from. There are lots of college courses with website out there and there&#8217;s lots to learn. I&#8217;ll probably try compilers next. All that being said, it would be great to see some curation and collection. With Amazon&#8217;s Kindle Shorts and the growing interest in short, self-published books putting together a regular series of études might be a pretty lucrative endeavor.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bytebaker.wordpress.com/1861/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bytebaker.wordpress.com/1861/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bytebaker.wordpress.com/1861/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bytebaker.wordpress.com/1861/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bytebaker.wordpress.com/1861/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bytebaker.wordpress.com/1861/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bytebaker.wordpress.com/1861/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bytebaker.wordpress.com/1861/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bytebaker.wordpress.com/1861/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bytebaker.wordpress.com/1861/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bytebaker.wordpress.com/1861/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bytebaker.wordpress.com/1861/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bytebaker.wordpress.com/1861/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bytebaker.wordpress.com/1861/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bytebaker.com&#038;blog=8123270&#038;post=1861&#038;subd=bytebaker&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bytebaker.com/2012/03/02/etudes-for-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ccb1217c46b31b7b232878d355f7f4e4?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Basu</media:title>
		</media:content>
	</item>
		<item>
		<title>How much do environments matter?</title>
		<link>http://bytebaker.com/2012/02/29/how-much-do-environments-matter/</link>
		<comments>http://bytebaker.com/2012/02/29/how-much-do-environments-matter/#comments</comments>
		<pubDate>Wed, 29 Feb 2012 05:00:00 +0000</pubDate>
		<dc:creator>Shrutarshi Basu</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://bytebaker.com/?p=1857</guid>
		<description><![CDATA[The last week and a half has been really productive. I&#8217;ve written a lot of code, made progress on my research project and learned a lot of stuff in the process. Unfortunately it&#8217;s all been in one area, but that&#8217;s a matter for another post. But given how productive I&#8217;ve been one thing that I&#8217;ve [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bytebaker.com&#038;blog=8123270&#038;post=1857&#038;subd=bytebaker&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The last week and a half has been really productive. I&#8217;ve written a lot of code, made progress on my research project and learned a lot of stuff in the process. Unfortunately it&#8217;s all been in one area, but that&#8217;s a matter for another post. But given how productive I&#8217;ve been one thing that I&#8217;ve been wondering is how important an environment really is to productive.</p>
<p>I&#8217;m usually of the opinion that environment (both physical and in terms of setup) is really important for any sort of creative or intellectual work. However I&#8217;m not quite so certain anymore. My current working setup is less than perfect. Though I have a nice DIY standing desk and a brightly lit office I also share the office with six other people and at times it can get pretty busy and crowded. I have a very powerful work machine but most of my recent work has been in a basic Ubuntu virtual machine with no customization other than my Bash and Emacs setups.</p>
<p>Despite the fact that my environment is not perfect the last week has probably been the most productive I&#8217;ve had all year. This begs the question: are environments really as important as I had thought they were? Or is it sufficient (and necessary) to have a project you&#8217;re really interested in? Of course, I understand that this is a personal question, so I&#8217;m just going to try it for myself.</p>
<p>What I&#8217;m starting to think is that the environment doesn&#8217;t need to be perfect, it just has to be &#8220;not painful&#8221;. There are some things that I just can&#8217;t stand: I can&#8217;t stand bad chairs, environments that are too noisy or too high of a room temperature. But once I have air conditioning, a standing desk and decent set of headphones I can quite easily tune out everything else. Similarly, once I have a command-line UNIX environment and a decent enough keyboard I care much less about what window manager I&#8217;m using, what size my monitor is or even what my language or toolchain is. Once I&#8217;m in the zone there&#8217;s very little that I care about.</p>
<p>I would say that environments matter, but only to some extent. After a point an interesting and exciting project can easily make up for any deficiencies in the environment. However, the opposite – a great environment but an uninspiring project – hardly makes you want to jump out of bed in the morning and get to work.</p>
<p>In addition to my Macbook and my work machine I have a small Eee PC lying around with a bare bones Arch Linux install on it. As a small experiment I want to see if I can be as productive on that machine as I am on my work machine. In addition to my research project I&#8217;m taking a programming languages class and TAing a functional programming class, so I regularly find myself in the mood for some OCaml hacking. Admittedly it won&#8217;t be a scientifically controlled and rigorous experiment, but it will be interesting to see how far an interesting project can compensate for a less then ideal environment.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bytebaker.wordpress.com/1857/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bytebaker.wordpress.com/1857/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bytebaker.wordpress.com/1857/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bytebaker.wordpress.com/1857/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bytebaker.wordpress.com/1857/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bytebaker.wordpress.com/1857/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bytebaker.wordpress.com/1857/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bytebaker.wordpress.com/1857/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bytebaker.wordpress.com/1857/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bytebaker.wordpress.com/1857/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bytebaker.wordpress.com/1857/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bytebaker.wordpress.com/1857/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bytebaker.wordpress.com/1857/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bytebaker.wordpress.com/1857/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bytebaker.com&#038;blog=8123270&#038;post=1857&#038;subd=bytebaker&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bytebaker.com/2012/02/29/how-much-do-environments-matter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ccb1217c46b31b7b232878d355f7f4e4?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Basu</media:title>
		</media:content>
	</item>
		<item>
		<title>Crystallized Archetypes</title>
		<link>http://bytebaker.com/2012/02/22/crystallized-archetypes/</link>
		<comments>http://bytebaker.com/2012/02/22/crystallized-archetypes/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 15:00:00 +0000</pubDate>
		<dc:creator>Shrutarshi Basu</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://bytebaker.com/?p=1845</guid>
		<description><![CDATA[Manuel Simoni writes a very interesting (and brilliantly named) blog on programming languages entitled The Axis of Eval. For almost two years now he&#8217;s been delving deep and wide across the field of programming languages. He was interviewed by the State of Code blog a few months ago. I read something in that interview that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bytebaker.com&#038;blog=8123270&#038;post=1845&#038;subd=bytebaker&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Manuel Simoni writes a very interesting (and brilliantly named) blog on programming languages entitled <a href="http://axisofeval.blogspot.com/">The Axis of Eval</a>. For almost two years now he&#8217;s been delving deep and wide across the field of programming languages. He was <a href="http://www.stateofcode.com/2011/06/lisp-the-programmable-programming-language-with-manuel-simoni/">interviewed by the State of Code blog</a> a few months ago. I read something in that interview that has been lurking on and off in the back of my mind:</p>
<blockquote><p>I think Lisp is the archetype, the crystallized form of all dynamically-typed scripting languages, and for that reason I like it. I also like C and Haskell, because they’re similarly crystallized languages in their respective areas.</p></blockquote>
<p>As I study more about languages, and use a growing number of them on a regular basis, I can&#8217;t help but think: what are some of the other crystallized archetypes of languages out there?</p>
<p>Let&#8217;s start with Manuel&#8217;s list. <a href="http://en.wikipedia.org/wiki/Lisp_(programming_language)">Lisp</a> stands out as the archetype for dynamically typed scripting languages. Other similar languages (Perl, Python, Ruby and the like) all emulate bits and pieces of Lisp (with varying success). Each new scripting language that becomes popular seems to be just a little more Lisp-y. <a href="http://www.haskell.org/haskellwiki/Haskell">Haskell</a> is then the archetype for statically typed, functional programming languages. One could argue that this title belongs to <a href="http://caml.inria.fr/">OCaml</a> or the various other MLs. From my experience working with them both occupy very strong points in the space of statically-typed functional languages. Which one you choose depends very much on what your particular needs are.</p>
<p>On another level entirely resides C. While both Lisp and Haskell strive to help you create elegant towers of abstraction, C will happily lay open the bare hardware for you. C is your archetype for a low-level systems programming language for a <a href="http://en.wikipedia.org/wiki/Von_Neumann_architecture">von Neumann machine</a>. There&#8217;s certainly a new generation of systems programming languages waiting in the wings: D, Go and Rust to name a few. Though I have limited experience with any of them, from what I can tell they are all a few layers above the machine. While that&#8217;s certainly great for programmers (and I hope it picks up speed) if you want to get down into the guts of your computer you&#8217;d better reach for your C compiler. If you have more experience on this front, feel free to enlighten me.</p>
<p>While Java and C++ might have introduced much of the world to object-oriented programming, the title of archetype almost certainly goes to <a href="http://en.wikipedia.org/wiki/Smalltalk">Smalltalk</a>. While Lisp can play host to a <a href="http://en.wikipedia.org/wiki/Common_Lisp_Object_System">powerful object system</a> and OCaml goes far towards combining OO and functional programming, Smalltalk stands out as being object-oriented from the bottom up, so to speak. Of the modern popular languages, Ruby is probably closest to the Smalltalk way while still being a scripting language for Unix-like systems. I&#8217;ve only done a tiny bit of Smalltalk programming myself (and certainly haven&#8217;t made a large system) but it&#8217;s definitely a very interesting experience. I don&#8217;t know if there&#8217;s an &#8216;aha moment&#8217; like there is with Lisp, but I highly recommend it if you write OO code regularly.</p>
<p>While those four cover most of the ground for popular programming paradigms, there are a handful of other interesting archetypes out there. For concatenative programming I&#8217;d recommend <a href="http://factorcode.org/">Factor</a>. Similarly, <a href="http://en.wikipedia.org/wiki/Prolog">Prolog</a> stand for declarative, logic programming. I&#8217;m hesitant to name archetypes for web or distributed programming. Personally I think of JavaScript as more of a prototype-based OO language that happens to be in the browser than as the archetype for a web programming language. Somehow I feel like we can do better than the HTML, CSS and JS trifecta we have now.</p>
<p>As I keep learning about languages, I&#8217;m looking forward to exploring these archetypes in greater depth (and their particular instantiations). I might even try implementing a few of them. So much to learn, so much code to write, so little time.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bytebaker.wordpress.com/1845/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bytebaker.wordpress.com/1845/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bytebaker.wordpress.com/1845/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bytebaker.wordpress.com/1845/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bytebaker.wordpress.com/1845/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bytebaker.wordpress.com/1845/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bytebaker.wordpress.com/1845/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bytebaker.wordpress.com/1845/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bytebaker.wordpress.com/1845/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bytebaker.wordpress.com/1845/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bytebaker.wordpress.com/1845/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bytebaker.wordpress.com/1845/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bytebaker.wordpress.com/1845/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bytebaker.wordpress.com/1845/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bytebaker.com&#038;blog=8123270&#038;post=1845&#038;subd=bytebaker&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bytebaker.com/2012/02/22/crystallized-archetypes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ccb1217c46b31b7b232878d355f7f4e4?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Basu</media:title>
		</media:content>
	</item>
		<item>
		<title>Sunday Selection 2012-02-19</title>
		<link>http://bytebaker.com/2012/02/19/sunday-selection-2012-02-19/</link>
		<comments>http://bytebaker.com/2012/02/19/sunday-selection-2012-02-19/#comments</comments>
		<pubDate>Sun, 19 Feb 2012 17:23:00 +0000</pubDate>
		<dc:creator>Shrutarshi Basu</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://bytebaker.com/?p=1840</guid>
		<description><![CDATA[Around the Web UNIX as IDE I have a love-hate relationship with IDEs. While I understand that IDEs are useful (if not essential) for languages like Java and C++, I personally can stay away from those languages and hence I use Emacs + command line tools as my IDE. Working primarily in Linux (and sometimes [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bytebaker.com&#038;blog=8123270&#038;post=1840&#038;subd=bytebaker&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>Around the Web</h2>
<p><a title="UNIX as IDE" href="http://blog.sanctum.geek.nz/series/unix-as-ide/">UNIX as IDE</a> I have a love-hate relationship with IDEs. While I understand that IDEs are useful (if not essential) for languages like Java and C++, I personally can stay away from those languages and hence I use Emacs + command line tools as my IDE. Working primarily in Linux (and sometimes OS X) makes this very easy. This series (it&#8217;s a long read) is chock full of useful tips to better use Unix as your IDE.</p>
<p><a title="Don't Fall in Love With Your Technology" href="http://prog21.dadgum.com/128.html">Don&#8217;t Fall in Love with Your Technology</a> Our job is not to use the best technology or write code. Our job is to solve problems.</p>
<p><a title="Letter to a Young PL enthusiast" href="http://axisofeval.blogspot.com/2010/06/letter-to-young-pl-enthusiast.html">Letter to a Young PL enthusiast</a> This pretty topic-specific, but I&#8217;m a PL enthusiast so it&#8217;s relevant. If you&#8217;re interested in PL research (or just like exposing yourself to new ideas) this is a worthwhile. I don&#8217;t know half the things mentioned, but I try to learn a little more everyday. Additionally there seems to be a new PL-oriented mailing list called <a title="LL.next" href="https://groups.google.com/group/ll-next">LL.next</a>.</p>
<h2>Fromt the Bookshelf</h2>
<p><a title="How to Steal like an Artist" href="http://www.amazon.com/Steal-Like-Artist-Things-Creative/dp/0761169253/ref=sr_1_1?ie=UTF8&amp;qid=1329671956&amp;sr=8-1">How to Steal like an Artist</a> Ok, I&#8217;m jumping the gun on this one. It just came out and I pre-ordered on Amazon so I&#8217;m going to get it in a few days. But judging from the <a href="http://www.austinkleon.com/2011/03/30/how-to-steal-like-an-artist-and-9-other-things-nobody-told-me/">talk and blog post</a> that started it all, it&#8217;s going to be awesome. Amazon has it for the cost of a venti something-or-the-other from Starbucks.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bytebaker.wordpress.com/1840/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bytebaker.wordpress.com/1840/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bytebaker.wordpress.com/1840/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bytebaker.wordpress.com/1840/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bytebaker.wordpress.com/1840/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bytebaker.wordpress.com/1840/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bytebaker.wordpress.com/1840/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bytebaker.wordpress.com/1840/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bytebaker.wordpress.com/1840/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bytebaker.wordpress.com/1840/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bytebaker.wordpress.com/1840/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bytebaker.wordpress.com/1840/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bytebaker.wordpress.com/1840/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bytebaker.wordpress.com/1840/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bytebaker.com&#038;blog=8123270&#038;post=1840&#038;subd=bytebaker&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bytebaker.com/2012/02/19/sunday-selection-2012-02-19/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ccb1217c46b31b7b232878d355f7f4e4?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Basu</media:title>
		</media:content>
	</item>
		<item>
		<title>Sunday Selection 2012-02-12</title>
		<link>http://bytebaker.com/2012/02/12/sunday-selection-2012-02-12/</link>
		<comments>http://bytebaker.com/2012/02/12/sunday-selection-2012-02-12/#comments</comments>
		<pubDate>Sun, 12 Feb 2012 22:20:57 +0000</pubDate>
		<dc:creator>Shrutarshi Basu</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://bytebaker.com/?p=1830</guid>
		<description><![CDATA[Around the Web The Information Diet : A Case for Conscious Consumption You could consider this a counter-argument to my previous post on how we can use consume and use information. I think we&#8217;re still pretty early into the Information Age and we&#8217;re still coming to grips with the fact that we have the world&#8217;s [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bytebaker.com&#038;blog=8123270&#038;post=1830&#038;subd=bytebaker&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>Around the Web</h2>
<p><a title="The Information Diet: A Case for Conscious Consumption" href="http://www.brainpickings.org/index.php/2012/01/19/the-information-diet-clay-johnson/">The Information Diet : A Case for Conscious Consumption</a> You could consider this a counter-argument to my previous post on how we can use consume and use information. I think we&#8217;re still pretty early into the Information Age and we&#8217;re still coming to grips with the fact that we have the world&#8217;s knowledge just a few clicks away. I haven&#8217;t read the book yet, but it&#8217;s definitely on my reading list.</p>
<p><a title="10 rules of a Zen Programmer" href="http://www.grobmeier.de/the-10-rules-of-a-zen-programmer-03022012.html">10 Rules of a Zen Programmer</a> I&#8217;m not entirely sure why there seems to be a strong interest in Eastern meditation and mysticism in the hacker culture, but tit does lead to some interesting analogies. In that light, this article is both pragmatic and idealist. While I don&#8217;t agree with all of it (no. 5 for example) it&#8217;s a worthwhile read and might help change your perspectives.</p>
<p><a title="How to be Relentlessly Resourceful" href="http://www.jasonshen.com/2012/how-to-be-relentlessly-resourceful/">How to be Relentlessly Resourceful</a> This isn&#8217;t about technology or Zen (at least not directly). It&#8217;s more about how to get the job done. And we all want to get the job done.</p>
<h2>Software</h2>
<p><a title="Spotify" href="http://spotify.com">Spotify</a> To be honest, I still have my doubts about streaming music. I do prefer to have my own collection that I&#8217;ve paid for and (mostly) have physical copies of. That being said, I do think Spotify is a really neat service and a good way to try out artists and albums before I decide to buy.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bytebaker.wordpress.com/1830/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bytebaker.wordpress.com/1830/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bytebaker.wordpress.com/1830/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bytebaker.wordpress.com/1830/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bytebaker.wordpress.com/1830/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bytebaker.wordpress.com/1830/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bytebaker.wordpress.com/1830/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bytebaker.wordpress.com/1830/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bytebaker.wordpress.com/1830/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bytebaker.wordpress.com/1830/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bytebaker.wordpress.com/1830/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bytebaker.wordpress.com/1830/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bytebaker.wordpress.com/1830/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bytebaker.wordpress.com/1830/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bytebaker.com&#038;blog=8123270&#038;post=1830&#038;subd=bytebaker&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bytebaker.com/2012/02/12/sunday-selection-2012-02-12/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ccb1217c46b31b7b232878d355f7f4e4?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Basu</media:title>
		</media:content>
	</item>
		<item>
		<title>Sunday Selection 2011-12-11</title>
		<link>http://bytebaker.com/2011/12/11/sunday-selection-2011-12-11/</link>
		<comments>http://bytebaker.com/2011/12/11/sunday-selection-2011-12-11/#comments</comments>
		<pubDate>Sun, 11 Dec 2011 14:00:00 +0000</pubDate>
		<dc:creator>Shrutarshi Basu</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[diet]]></category>
		<category><![CDATA[health]]></category>
		<category><![CDATA[literate programming]]></category>
		<category><![CDATA[motivation]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://bytebaker.com/?p=1735</guid>
		<description><![CDATA[Around the Internet More shell, less egg It&#8217;s alway a joy to see two masters at the top of their craft engaged in a respectful, but determined duel. This is a short commentary on Donald Knuth and Doug McIlroy&#8217;s approaches to literate programming. Worth reading even if you&#8217;re not a big fan of literate programming. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bytebaker.com&#038;blog=8123270&#038;post=1735&#038;subd=bytebaker&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="outline-container-1" class="outline-3">
<h3 id="sec-1">Around the Internet</h3>
<div id="text-1" class="outline-text-3">
<p><a href="http://www.leancrew.com/all-this/2011/12/more-shell-less-egg/">More shell, less egg</a> It&#8217;s alway a joy to see two masters at the top of their craft engaged in a respectful, but determined duel. This is a short commentary on Donald Knuth and Doug McIlroy&#8217;s approaches to literate programming. Worth reading even if you&#8217;re not a big fan of literate programming.</p>
<p><a href="http://www.johndcook.com/blog/2011/12/08/selective-use-of-technology-2/">Selective use of technology</a> I firmly believe that science and technology is a good thing and that our world is better because of them. However I also understand that technology cannot do everything for us. In particular there are a lot of decisions it cannot make for us (yet). I also tend to get a lot of my best work when I am least partially disconnected and can hold at bay the full force of the Internet. All things in moderation.</p>
<p><a href="http://www.wired.com/wiredscience/2011/12/why-sugar-makes-us-sleepy-and-protein-wakes-us-up/">Why sugar makes us sleepy (and protein wakes us up)</a> As much as many of us would like to live as if we disembodied brains surviving on anything that barely resembled food, that is definitely not the case. Since we are stuck with our flesh-and-blood physical bodies for the foreseeable future, it is a good idea to figure out how it all works and make the most of it.</p>
</div>
</div>
<div id="outline-container-2" class="outline-3">
<h3 id="sec-2">From the Bookshelf</h3>
<div id="text-2" class="outline-text-3">
<p><a href="http://www.amazon.com/gp/product/1936719010?qid=1322772409&amp;ref_=sr_1_1&amp;s=books&amp;sr=1-1">Do the Work</a> While I&#8217;m not entrely a fan of Steven Pressfield&#8217;s use of vaguely &#8220;spiritual&#8221; ideas and terms, this book is still worth reading for everyone. It&#8217;s especially useful if you have that big project you&#8217;ve been thinking about but never got around to actually starting. At $1.99 for the Kindle edition, it&#8217;s a steal.</p>
</div>
</div>
<div id="outline-container-3" class="outline-3">
<h3 id="sec-3">Video</h3>
<div id="text-3" class="outline-text-3">
<p><a href="http://vimeo.com/9270320">What we actually know about software development</a> Despite the importance of software development, most developers are acutely unaware of the scientific studies in the area and rely mostly on anecdote. Luckily there is an increasing amount of research in software development (not to be confused with computer science) and it&#8217;s worth knowing what we actually know about the field and what is myth.</p>
</div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bytebaker.wordpress.com/1735/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bytebaker.wordpress.com/1735/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bytebaker.wordpress.com/1735/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bytebaker.wordpress.com/1735/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bytebaker.wordpress.com/1735/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bytebaker.wordpress.com/1735/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bytebaker.wordpress.com/1735/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bytebaker.wordpress.com/1735/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bytebaker.wordpress.com/1735/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bytebaker.wordpress.com/1735/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bytebaker.wordpress.com/1735/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bytebaker.wordpress.com/1735/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bytebaker.wordpress.com/1735/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bytebaker.wordpress.com/1735/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bytebaker.com&#038;blog=8123270&#038;post=1735&#038;subd=bytebaker&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bytebaker.com/2011/12/11/sunday-selection-2011-12-11/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ccb1217c46b31b7b232878d355f7f4e4?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Basu</media:title>
		</media:content>
	</item>
		<item>
		<title>Getting to Work</title>
		<link>http://bytebaker.com/2011/12/08/getting-to-work/</link>
		<comments>http://bytebaker.com/2011/12/08/getting-to-work/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 14:00:00 +0000</pubDate>
		<dc:creator>Shrutarshi Basu</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://bytebaker.com/?p=1725</guid>
		<description><![CDATA[There is a danger to doing what you love as part of your day job. For a few weeks I&#8217;ve been working on a programming project. The project should have been very interesting and motivating. It involved combining programming languages (which I love and have been learning about for years) and networks (which I don&#8217;t [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bytebaker.com&#038;blog=8123270&#038;post=1725&#038;subd=bytebaker&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There is a danger to doing what you love as part of your day job. For a few weeks I&#8217;ve been working on a programming project. The project should have been very interesting and motivating. It involved combining programming languages (which I love and have been learning about for years) and networks (which I don&#8217;t know that well, but have a growing interest in). This should have been an ideal project – a project with just the right combination of personal skill and challenge. It was a project with definite goals, with people who supported me and wanted me to succeed and were willing to give me regular feedback. And yet it was so hard to actually get myself to do the work.</p>
<div id="outline-container-1" class="outline-3">
<h3 id="sec-1">The Motivation Problem</h3>
<div id="text-1" class="outline-text-3">
<p>I think the problem is that for most of my life programming was something I did on the side. In school, programming and computers were never the main course of study. In fact, more than once my parents had to tear me away from the computer. In college I decided to be an Electrical Engineer because I wanted to know how the machine worked from the lowest level up. Though that was an interesting and very fulfilling learning experience I realized at the end of four years that I would rather use computers to do something interesting rather than improve the machine itself. Though I did do a good bit of programming in college, most of my classes did not involve programming as the focus.</p>
<p>But now I&#8217;m in graduate school and programming is supposed to be part of the job description. Yes, I know that large areas of computer science are essentially mathematics and you can get away with writing very little code, but that&#8217;s not where my interests lie. For me, programming is no longer just something I do for the fun of it. It&#8217;s something I do because my grades depend on it and because I&#8217;m getting paid for it. It has become work and that has been fairly disastrous to my ability to get things done.</p>
<p>As knowledge about our psychology improves one of the interesting facts that has come up is that <a href="http://en.wikipedia.org/wiki/Motivation#Intrinsic_and_extrinsic_motivation">intrinsic motivation is a much stronger force</a> than any form of external motivation. In a specific sense that means I need to have an internal reason for doing my work. In a more general sense I need to have an <a href="http://en.wikipedia.org/wiki/Autotelic">autotelic</a> personality: to &#8220;have a purpose in and not apart from itself&#8221;. The good news is that I&#8217;m in a line of work that favors autotelics. The bad news is that it seems to be all too easy to lose the sense of self-motivation, to feel like that the only reason I&#8217;m working is because I&#8217;m expected to and I&#8217;ll get something definite out of it.</p>
<p>However one more piece of good news is that starting is often the hardest part, especially for something you think you should want to do, but can&#8217;t muster the motivation for it. I&#8217;ve noticed that once I&#8217;ve started and am making progress it&#8217;s easy to keep going. The trick is to both start and end in the right way.</p>
</div>
</div>
<div id="outline-container-2" class="outline-3">
<h3 id="sec-2">Start and Stop</h3>
<div id="text-2" class="outline-text-3">
<p>Whenever I start out reading and thinking too much about my problem I sabotage myself. I tell myself the problem is too hard, there&#8217;s too much other stuff I need to know first, surely someone else has already solved the problem and I can just use their code. Down that path lies madness (and not getting anything done). Though I&#8217;m all for thinking before pumping out code, for starters I like to just jump in and get going.</p>
<p>Diving in and hacking away helps produce the feeling that I&#8217;m making progress. Whatever I do at this phase is pretty basic: code cleanup, documentation, minor refactoring, maybe fixing a small bug. The point isn&#8217;t to get productive immediately, it&#8217;s to load the working context of the program into my brain, to get minor victories that help get past the resistance to start. Once I&#8217;m past the initial hump I can pause and think deeply about the core of the problem. Since I&#8217;ve already loaded up the problem in my head that also becomes easier.</p>
<p>I&#8217;ve learned the hard way that stopping probably is just as important. The key is momentum. During each coding session I build up a certain amount of momentum as I build up a mental model of the problem and the solution. Unfortunately I have to re-acquire that momentum every time I start again. I want to pick the proper stopping points so that the re-acquisition is quick and smooth.</p>
<p>I make sure that I always leave code in a relatively clean state: everything has been committed, there is some amount of documentation and most importantly I&#8217;ve identified what I need to do next. That way the next time I sit down with the code I can look up the README or the TODO file and pick off the next thing on the list. If the last commit was broken the next thing is usually something to fix. If the last commit was good I can add a new feature. I use a version control system that makes it easy to roll back changes and commits so I don&#8217;t hesitate to put in a &#8220;checkpoint&#8221; commit, even if it&#8217;s broken. The <a href="http://www.nytimes.com/2011/08/21/magazine/do-you-suffer-from-decision-fatigue.html">less time and effort I have to spend in deciding</a> what to do next the better a chance I have at actually getting something worthwhile done.</p>
</div>
</div>
<div id="outline-container-3" class="outline-3">
<h3 id="sec-3">This isn&#8217;t about computers</h3>
<div id="text-3" class="outline-text-3">
<p>…or computer science or programming. This is about getting work done, work that I love. But sometimes love isn&#8217;t enough to get me out of the browser and into the text editor. Habit is often stronger (and less demanding) than will power. The good thing about habits is that they can be both formed and broken. I&#8217;m starting to learn that the key isn&#8217;t to beat yourself up for being a slacker, but rather engineering your life so that getting stuff done is on the path of <a href="http://matt.might.net/articles/productivity-tips-hints-hacks-tricks-for-grad-students-academics/#philosophy">least resistance</a>.</p>
<p>And now it&#8217;s time to get back to my project.</p>
</div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bytebaker.wordpress.com/1725/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bytebaker.wordpress.com/1725/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bytebaker.wordpress.com/1725/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bytebaker.wordpress.com/1725/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bytebaker.wordpress.com/1725/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bytebaker.wordpress.com/1725/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bytebaker.wordpress.com/1725/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bytebaker.wordpress.com/1725/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bytebaker.wordpress.com/1725/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bytebaker.wordpress.com/1725/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bytebaker.wordpress.com/1725/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bytebaker.wordpress.com/1725/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bytebaker.wordpress.com/1725/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bytebaker.wordpress.com/1725/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bytebaker.com&#038;blog=8123270&#038;post=1725&#038;subd=bytebaker&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bytebaker.com/2011/12/08/getting-to-work/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ccb1217c46b31b7b232878d355f7f4e4?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Basu</media:title>
		</media:content>
	</item>
		<item>
		<title>Sunday Selection 2012-12-04</title>
		<link>http://bytebaker.com/2011/12/04/sunday-selection-2012-12-04/</link>
		<comments>http://bytebaker.com/2011/12/04/sunday-selection-2012-12-04/#comments</comments>
		<pubDate>Sun, 04 Dec 2011 14:00:00 +0000</pubDate>
		<dc:creator>Shrutarshi Basu</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Writing]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Zach Holman]]></category>

		<guid isPermaLink="false">http://bytebaker.com/?p=1719</guid>
		<description><![CDATA[Around the Internet How I went from writing 2000 words a day to 10,000 words a day Writing is no easy business and writing a lot on a regular basis is even harder still. It&#8217;s good to know that there you don&#8217;t need some special gift to become super-productive, you just need to carve out [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bytebaker.com&#038;blog=8123270&#038;post=1719&#038;subd=bytebaker&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="outline-container-1" class="outline-3">
<h3 id="sec-1">Around the Internet</h3>
<div id="text-1" class="outline-text-3">
<p><a href="http://thisblogisaploy.blogspot.com/2011/06/how-i-went-from-writing-2000-words-day.html">How I went from writing 2000 words a day to 10,000 words a day</a> Writing is no easy business and writing a lot on a regular basis is even harder still. It&#8217;s good to know that there you don&#8217;t need some special gift to become super-productive, you just need to carve out the time and work to the patterns that let you get the most out of the day.</p>
<p><a href="http://www.elegantcoding.com/2011/11/eleven-equations-true-computer-science.html">Eleven equations Computer Science geeks should know</a> There&#8217;s not much consensus when it comes to how much mathematics computer scientists and programmers need to know. Personally I would say that if you are a <em>computer scientist</em> you need a fairly strong mathematics background (something I&#8217;m still working on, I&#8217;ll admit). Even if you&#8217;re just a programmer I think having some mathematical familiarity will make you a better thinker and give you a better bag of tricks to call upon.</p>
<p><a href="http://www.quora.com/Does-going-on-an-information-diet-improve-ones-productivity/answer/Clay-Johnson">Clay Johnson&#8217;s Information Diet</a> Though I love social networks, both the technology powering them and the interesting interactions they produce, too much of anything is a bad thing. I&#8217;ve been considering going on an information diet (or perhaps more correctly an information consumption diet) so that I could more of that time into creating instead of consuming.</p>
</div>
</div>
<div id="outline-container-2" class="outline-3">
<h3 id="sec-2">Videos</h3>
<div id="text-2" class="outline-text-3">
<p><a href="http://confreaks.net/videos/706-rubyconf2011-how-github-uses-github-to-build-github">How Github uses Github to build Github</a> I firmly believe that good tools and workflows can make your job easier and your production better. I also think <a href="http://zachholman.com">Zach Holman</a> is really cool. While this focuses on Github it&#8217;s easily applicable to any group of developers (or creators in general) working together to produce awesome stuff.</p>
</div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bytebaker.wordpress.com/1719/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bytebaker.wordpress.com/1719/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bytebaker.wordpress.com/1719/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bytebaker.wordpress.com/1719/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bytebaker.wordpress.com/1719/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bytebaker.wordpress.com/1719/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bytebaker.wordpress.com/1719/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bytebaker.wordpress.com/1719/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bytebaker.wordpress.com/1719/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bytebaker.wordpress.com/1719/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bytebaker.wordpress.com/1719/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bytebaker.wordpress.com/1719/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bytebaker.wordpress.com/1719/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bytebaker.wordpress.com/1719/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bytebaker.com&#038;blog=8123270&#038;post=1719&#038;subd=bytebaker&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bytebaker.com/2011/12/04/sunday-selection-2012-12-04/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ccb1217c46b31b7b232878d355f7f4e4?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Basu</media:title>
		</media:content>
	</item>
	</channel>
</rss>
