<?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>aamir virani &#187; software development</title>
	<atom:link href="http://www.aamusings.com/category/software-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.aamusings.com</link>
	<description>Aamir Virani's Thoughts, Ramblings, Ponderings</description>
	<lastBuildDate>Wed, 25 Nov 2009 17:00:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>How Apple&#8217;s Approval Process Actually Helps Users</title>
		<link>http://www.aamusings.com/2009/11/23/how-apples-approval-process-actually-helps-users/</link>
		<comments>http://www.aamusings.com/2009/11/23/how-apples-approval-process-actually-helps-users/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 17:00:08 +0000</pubDate>
		<dc:creator>Aamir</dc:creator>
				<category><![CDATA[iphone]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.aamusings.com/?p=173</guid>
		<description><![CDATA[Paul Graham wrote an article on how Apple alienates its iPhone developers.  He has a good discussion about developers iterating and needing to get a new product in the hands of their users.  In fact, he mentions a developer who says the approved app feels crappy next to the daily builds and betas [...]]]></description>
			<content:encoded><![CDATA[<p>Paul Graham wrote an article on <a href="http://www.paulgraham.com/apple.html">how Apple alienates its iPhone developers</a>.  He has a good discussion about developers iterating and needing to get a new product in the hands of their users.  In fact, he mentions a developer who says the approved app feels crappy next to the daily builds and betas he hands out.</p>
<p>It&#8217;s time for these folks to try my G1.  Not because it&#8217;s better but because <b>Android will annoy the crap out of you</b>.  Every day, I get a notification telling me &#8220;N number of apps updated.&#8221;  And every day, I roll my eyes and clear the notification.  Users don&#8217;t want to go through this process; it&#8217;s annoying when it happens on a desktop every few weeks, so it&#8217;s even worse on a daily basis on a phone trying to download over a <del datetime="2009-11-22T19:54:11+00:00">3G</del> EDGE connection.</p>
<p>Deciding what constitutes a critical bug is difficult &#8211; if you&#8217;re a lone developer you think <b>everything</b> is important.  Should Apple trust you to self-regulate and update only on critical fixes or major new releases?</p>
<p>Apple has an iron fist when it comes to the iPhone and its ecosystem because its advantage is a tightly knit experience.  Getting a daily notification while you sync asking you to update or an in-app pop-up with details lessens the polish.</p>
<p>Ultimately, I think this App Store stuff is a way of throttling developers to ensure the experience is not too painful.  More updates make users think, and you want to <b>minimize that</b>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aamusings.com/2009/11/23/how-apples-approval-process-actually-helps-users/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Super Quick Guide to Using Git</title>
		<link>http://www.aamusings.com/2008/12/05/a-super-quick-guide-to-using-git/</link>
		<comments>http://www.aamusings.com/2008/12/05/a-super-quick-guide-to-using-git/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 21:27:45 +0000</pubDate>
		<dc:creator>Aamir</dc:creator>
				<category><![CDATA[project management]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.aamusings.com/2008/12/05/a-super-quick-guide-to-using-git/</guid>
		<description><![CDATA[While thinking about how to organize projects on my home machines, I decided to look into Git, a version control system like CVS and Subversion (SVN).  Unlike those two, however, Git is distributed, which means you can have multiple repositories for the same project, and/or only a local one to handle your stuff.
You can [...]]]></description>
			<content:encoded><![CDATA[<p>While thinking about how to organize projects on my home machines, I decided to look into <a href="http://git.or.cz">Git</a>, a version control system like <a href="http://www.nongnu.org/cvs">CVS</a> and <a href="http://www.subversion.tigris.org">Subversion (SVN)</a>.  Unlike those two, however, Git is distributed, which means you can have multiple repositories for the same project, and/or only a local one to handle your stuff.</p>
<p>You can use Git a lot like Subversion with one major benefit: you can do local check-ins without having to branch, synchronize, and create remote copies of your own sandbox.</p>
<p>Of course, this means you have to learn yet another set of syntax.  A really good primer is a <a href="http://git.or.cz/course/svn.html">crash course on Git for SVN users</a>, but here are the key things I learned and found to get rolling fast.</p>
<p>So let&#8217;s just assume you&#8217;re creating a project in directory <i>local_dir</i>.  You already have a bunch of files and you want to sync up.  You also have a remote server <i>my_server</i>.  Here&#8217;s what you do.</p>
<p>First, go into the <i>local_dir</i> directory and:</p>
<ul>
<li><b>git init</b> &#8211; sets up the git files for tracking locally</li>
<li>create and edit a text file called <b>.gitignore</b> &#8211; on each line place files you want to ignore, like DS_Store and *.tmp files, etc.</li>
<li><b>git add .</b> &#8211; tells git you want all files (recursively) as part of the next commit</li>
<li><b>git commit -m &#8220;initial checkin blah blah&#8221;</b> &#8211; tells git to commit with the given message</li>
</ul>
<p>At this point you&#8217;re locally ready to go.  If you don&#8217;t want to work on multiple machines or synchronize to the cloud, have fun!</p>
<p>Otherwise, you should now go to your server and set up a place for your files to live in <i>remote_dir</i>:</p>
<ul>
<li><b>mkdir remote_dir</b></li>
<li><b>cd remote_dir</b></li>
<li><b>git &#8211;bare init</b> &#8211; sets up git in this directory with no initial working copy</li>
</ul>
<p>Now you go back to your local machine and tell it about your remote server:</p>
<ul>
<li><b>git remote add origin account_name@server.com:remote_dir</b> &#8211; tells git how to ssh to your remote repository</li>
<li><b>git push origin master</b> &#8211; tells git to send your local copy to the server &#8211; magic!</li>
</ul>
<p>You may want to edit <b>.git/config</b> so that you can quickly push and pull files by adding the following lines to this file:</p>
<p><code><br />
[branch "master"]<br />
&nbsp;&nbsp;remote = origin<br />
&nbsp;&nbsp;merge = refs/heads/master<br />
</code></p>
<p>This will mean you can use the following commands to synchronize to and from the remote server:</p>
<ul>
<li><b>git push</b> &#8211; send local copy to the server</li>
<li><b>git pull</b> &#8211; get server updates into local copy</li>
</ul>
<p>Finally, if you want to work on other machines (or have someone else join you in your work), all they have to do is:</p>
<ul>
<li><b>git clone account_name@server.com:remote_dir</b> &#8211; copies the remote repository to your local machine</li>
</ul>
<p>Voila &#8211; you&#8217;re ready to go!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aamusings.com/2008/12/05/a-super-quick-guide-to-using-git/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How do you know if your code is fast enough?</title>
		<link>http://www.aamusings.com/2008/11/08/how-do-you-know-if-your-code-is-fast-enough/</link>
		<comments>http://www.aamusings.com/2008/11/08/how-do-you-know-if-your-code-is-fast-enough/#comments</comments>
		<pubDate>Sat, 08 Nov 2008 20:35:23 +0000</pubDate>
		<dc:creator>Aamir</dc:creator>
				<category><![CDATA[project management]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.aamusings.com/2008/11/08/how-do-you-know-if-your-code-is-fast-enough/</guid>
		<description><![CDATA[One of the big pains I&#8217;ve seen while at PR and X is dealing with customers, managers, and critics who go off on performance.
 
When you click here, it takes too long!
 
When you start up, it takes forever!
 
When this page loads, I can go get a cup of coffee and it&#8217;s still loading!

All [...]]]></description>
			<content:encoded><![CDATA[<p>One of the big pains I&#8217;ve seen while at PR and X is dealing with customers, managers, and critics who go off on performance.
<ul> 
<li><i>When you click here, it takes too long!</i></li>
<p> 
<li><i>When you start up, it takes forever!</i></li>
<p> 
<li><i>When this page loads, I can go get a cup of coffee and it&#8217;s still loading!</i></li>
<p></ul>
<p>All are valid concerns, but it gets a little ridiculous when you hear someone say &#8220;it needs to be 0.2 seconds faster&#8221; or &#8220;we have to be at least as fast as before even though we&#8217;re doing 10 times more processing&#8221;.</p>
<p><b>Perception, a qualitiative measure, is more important than quantitative measurement.</b></p>
<p>Given that Internet connection speeds vary, that client computers can be a few years old, and that humans can be sedated or caffeinated, it&#8217;s even more important to move beyond simple clock-watching.</p>
<p><a href="http://unweary.com/2008/11/specifying-performance.html">David Weiss discusses performance</a> on his blog and mentions a classification scheme for timing perception:</p>
<ul> 
<li>Instantaneous (0.1 to 0.2 seconds)</li>
<p> 
<li>Immediate (0.5 to 1.0 seconds)</li>
<p> 
<li>Continuous (2 to 5 seconds)</li>
<p> 
<li>Captive (7 to 10 seconds)</li>
<p></ul>
<p>So instead of simply whining about how things have gotten slower by 0.1 seconds, determine where your feature (broken down into actions or features or events, but that&#8217;s another topic) falls.  Now, are you within range?</p>
<p>The other difficulty is deciding <b>which</b> category the feature should be in.  This is where user studies matter.  Your boss is not the ultimate arbiter.  You are not the ultimate arbiter.  Make sure your typical set of users would be happy with your choice by faking time delays in a mockup.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aamusings.com/2008/11/08/how-do-you-know-if-your-code-is-fast-enough/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.622 seconds -->
