<?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>NorthIs..⇡ &#187; adam</title>
	<atom:link href="http://northisup.com/blog/author/adam/feed/" rel="self" type="application/rss+xml" />
	<link>http://northisup.com</link>
	<description>The enemy&#039;s gate is down.</description>
	<lastBuildDate>Mon, 25 Jan 2010 08:30:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>A New Sith, or Revenge of the Hope (mirror)</title>
		<link>http://northisup.com/blog/a-new-sith-or-revenge-of-the-hope-mirror/</link>
		<comments>http://northisup.com/blog/a-new-sith-or-revenge-of-the-hope-mirror/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 08:30:10 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://northisup.com/?p=826</guid>
		<description><![CDATA[This is such a gem that I had to re-post it just in case the original gets lost in the churn of the interwebs. Originally © Keith Martin 2005.
Reconsidering Star Wars IV in the light of I-III
If we accept all the Star Wars films as the same canon, then a lot that happens in the [...]]]></description>
			<content:encoded><![CDATA[<p>This is such a gem that I had to re-post it just in case the original gets lost in the churn of the interwebs. Originally © Keith Martin 2005.</p>
<p>Reconsidering Star Wars IV in the light of I-III</p>
<p>If we accept all the Star Wars films as the same canon, then a lot that happens in the original films has to be reinterpreted in the light of the prequels. As we now know, the rebel Alliance was founded by Yoda, Obi-Wan Kenobi and Bail Organa. What can readily be deduced is that their first recruit, who soon became their top field agent, was R2-D2.</p>
<p>Consider: at the end of RotS, Bail Organan orders 3PO&#8217;s memory wiped but not R2&#8217;s. He wouldn&#8217;t make the distinction casually. Both droids know that Yoda and Obi-Wan are alive and are plotting sedition with the Senator from Alderaan. They know that Amidala survived long enough to have twins and could easily deduce where they went. However, R2 must make an impassioned speech to the effect that he is far more use to them with his mind intact: he has observed Palpatine and Anakin at close quarters for many years, knows much that is useful and is one of the galaxy&#8217;s top experts at hacking into other people&#8217;s systems. Also he can lie through his teeth with a straight face. Organa, in immediate need of espionage resources, agrees.</p>
<p>For the next 20 years, as far as 3PO knows, he is the property of Captain Antilles, doing protocol duties on a diplomatic transport. He is vaguely aware of the existence of the princess but doesn&#8217;t know much about her. Wherever 3PO goes, being as loud and obvious as he always is, his unobtrusive little counterpart goes with him. 3PO is R2&#8217;s front man. Wherever they land, R2 is passing messages between rebel sympathisers and sizing up governments as potential rebel recruits &#8211; both by personal contact and by hacking into their networks. He passes his recommendations on to Organa.</p>
<p>Yoda is out of the picture by this stage, using the Force-infused swamps of Dagobah to hide himself from Vader and the Emperor. Or something. He is meditating on the future and keeping in touch with Obi-Wan via the ghost of Qui-Gon Jin, which as comm systems go has the virtue of being untappable. Obi-Wan, on Tattoine, keeps in touch with Bail Organa and the other Rebel leaders by courier, of which more later.</p>
<p>As Star Wars opens, R2 is rushing the Death Star plans to the Rebellion. R2, not Leia. The plans are always in R2. What Leia puts into him in the early scene is only her own holographic message to Kenobi. Leia&#8217;s own mission, as she says in the holographic message, is to pick up Obi-Wan and take him to Alderaan &#8211; or so she thinks. Actually, her father just wants her to meet Kenobi, which up to this point she never has. There&#8217;s a reason for that.</p>
<p>Obi-Wan has spent the last 20 years in the Tattoine desert, keeping watch over Luke Skywalker and trying to decide on one of the three available options:<br />
A) If Luke shows no significant access to the Force, then leave him alone in obscurity<br />
B) If Luke shows real Force ability, then consider recruiting him as a Jedi. The rebellion needs Jedi. Now.<br />
But, if Luke shows any signs of turning out like his father, then C) sneak into his house one fine night and chop his head off. With great regret but it&#8217;ll save a lot of trouble later on.<br />
Knowing this to be the case, Bail Organa (perhaps at the insistence of his wife) has found excuses not to send Leia to Ben for assessment of Jedi potential, largely for fear of option C.</p>
<p>To be fair to all concerned, Leia has shown no overt signs of a link to the Force. Luke on the other hand has. In his home-built hotrod aircraft, with no formal fighter pilot training and no decent instrumentation, Luke can regularly score centre-hits on 2-metre targets in complicated zero-altitude maneouvres. Until he attends the briefing on Yavin, Luke has no way of knowing that hardened combat pilots would consider that nearly impossible. To him it&#8217;s easy. Obi-Wan, who saw Anakin&#8217;s performance in the Pod Race, is nervous.</p>
<p>Much of Obi-Wan&#8217;s behaviour in this film, and Yoda&#8217;s in the next, can best be understood if they are frankly scared to death of what Luke might become. (Ben is also scared that he himself will make all the same mistakes he made with Anakin.)</p>
<p>Now, with the existence of the rebellion at stake, Bail Organa has finally told Leia to go see Obi-Wan and has sent her along with R2. The original plan would then be for Obi-Wan (with optional Luke and/or Leia in tow) to leave his exile and take the Death Star plans to Yavin, where they can be put to use. R2 (with Leia if Ben doesn&#8217;t want to take her) would then carry on to Alderaan to maintain the cover story. The original plan does not survive contact with a large Imperial Star Destroyer.</p>
<p>R2 and 3PO bail out in an escape pod, landing in vaguely the right area of Tattoine, where R2&#8217;s first priority is transport. He arranges to be captured by a group of Jawas and, once on board their transport, he makes a deal with them (possibly using emergency funds stored about his person) to take him where he wants to go. The Jawas refuse to go directly to Kenobi for fear of marauding Sandpeople but they agree to R2&#8217;s second request : transport to the Skywalker farm. They even get to keep the purchase price if they can sell R2 and 3PO there. The Jawas shake on it and go through with the plan.</p>
<p>Seeing 3PO fail to recognise the farm where he worked for 10 years gives r2 a moment&#8217;s amusement but, as soon as possible, he gets away and heads for Kenobi. Luke and 3PO follow, which may or may not have been part of the plan.</p>
<p>On first seeing R2, Obi-Wan has a twinkle in his eye and calls him &#8220;my little friend&#8221;. Well, he is. However, when Luke wakes up and says that R2 claimed to be owned by an Obi-Wan Kenobi, he blandly says &#8220;I don&#8217;t seem to remember ever owning a droid.&#8221; Ben has in fact owned several but the remark is aimed at R2 and translates as &#8220;You keep quiet. I&#8217;m not about to tell him everything just yet.&#8221; Obi-Wan thinks fast and tells Luke a version of his past that does not involve a father who became a dark lord of the Sith. He wants to examine Luke a lot more closely before he risks telling him the real truth.</p>
<p>Although the Death Star plans need to get to Yavin as soon as possible, Obi-Wan needs to make one more diversion first. If the Empire knows that Leia is a Rebel leader, then they also know about her father and the whole Organa family may need immediate evacuation. Fortunately, before coming to Tattoine, R2 had already arranged transport, which is waiting at Mos Eisley, under the command of the Rebellion&#8217;s other chief field agent and espionage asset. Chewbacca.</p>
<p>20 years earlier, Chewbacca was second in command of the defence of his planet. He&#8217;s there in the tactical conferences and there on the front lines and is a personal friend of Yoda&#8217;s. When he needed reliable people to join the embryonic Alliance, who else would Yoda turn to but his old friend from Kashykk? Given his background, there is no way that Chewie would spend the crucial years of the rebellion as the second-in-command to (sorry Han) a low-level smuggler. Unless it&#8217;s his cover. In fact, Chewie is a top-line spy and flies what is in many ways the Rebellion&#8217;s best ship.</p>
<p>The Millenium Falcon may look like a beat-up old freighter but it can outrun any Imperial ship in normal space or hyperspace, hang in a firefight with a Star Destroyer or outmaneouvre a dozen top-of-the-line TIE fighters. It&#8217;s a remarkable feat of engineering and must have cost a colossal fortune to build. How does Han come to own a ship like that? He only thinks he does, actually it&#8217;s Chewie&#8217;s. Half-way through RotS, we see the Falcon landing at the Senate building on Coruscant. If it&#8217;s the same ship (which of course it is) then it was the personal transport of one of the senatorial delegations &#8211; a much more likely source to commission its design. That delegatino must have later joined the Rebellion and given it the use of the Falcon. In fact, if the delegation is the one from Kashykk, then the ship may have belonged to Chewbacca as early as RotS.</p>
<p>Han is Chewie&#8217;s front man. It&#8217;s much better, and safer for him, if he doesn&#8217;t know what&#8217;s really going on. Chewie used to work with Lando Calrissian in a similar way but Lando wanted to settle down, so Chewie arranged for him to lose the Falcon in a card game to Han Solo, an even better choice as partner. Han and Chewie&#8217;s working method is pretty much what we see in the cantina scene: Chewie make the contacts and sets up the deals, then turns them over to Han who haggles over the price and gives the final yea or nay. This lets Chewie wander the seamy underside of the galaxy pretty much at will, making contacts, gathering and passing information with no-one was the wiser, especially not Han.</p>
<p>Chewie persuaded Han to do business with Jabba the Hutt so he could make regular runs to Tattoine, where Chewie could pass messages between Kenobi and Organa. When R2&#8217;s urgent message came through only days before, the only way for Chewie to get back to Tattoine in time was to make the &#8220;mistake&#8221; that forced Han to dump his cargo to avoid capture. As a down side, this led to Solo&#8217;s getting a death mark out on him from Jabba the Hutt. Chewie was a bit upset about the need for that but figured they weren&#8217;t going to be dealing with Tattoine for much longer.</p>
<p>En route to Alderaan, R2 and Chewie play stop-motion chess. This is the latest in a series of games they&#8217;ve played over the year in the back rooms of space stations and cantinas across the galaxy, but this is the first time they&#8217;ve done it in front of their respective straight men, so they put on a big show.</p>
<p>Then it all goes wrong again. Alderaan is gone and the Falcon is caught and brought aboard the Death Star. Only Han, Luke and 3PO don&#8217;t know just how much trouble they&#8217;re in but Obi-Wan has a plan and seems confident (but Jedi always do). Soon afterwards, R2 finds Leia in the detention cells and shouts that they have to rescue her, to which Chewie can only agree. If Vader learns he has a daughter, then they&#8217;re all in deep trouble, so Chewie does his bit to persuade Han to go along with Luke&#8217;s plan.</p>
<p>Then, on the verge of escape, Vader himself turns up only yards from both of his children, one of whom is leaking Force all over the place. Obi-Wan stages a distraction by letting himself  die and go into the Force while the others escape. At this point, Chewie suddenly realises that he&#8217;s been left in charge, not only of the Death Star Plans and the survival of the Rebellion but of the secret son and daughter of Darth Vader. With the Organas and Kenobi all dead, only Chewie, R2 and Yoda know who Luke and Leia are. And only Ob-Wan knew where Yoda has been hiding. Chewie is stressed out by the responsibility and R2 (who keeps making crude jokes about the whole affair) is being no help at all.</p>
<p>Chewie&#8217;s first problem is what is happening between Luke and Leia. With a psychic link they can feel but don&#8217;t understand, thrown together in a life-or-death escape, they are looking at each other with a sparky intensity that Chewie gradually recognises as Romantic Tension. He&#8217;s no expert on human relationships but Chewie is fairly sure that that&#8217;s Wrong, so he does the only thing he can under the circumstances &#8211; he throws Han at her. Han is at first not interested but after a while starts to warm to the idea with an intensity that gives Chewie new worries.</p>
<p>When they reach Yavin, Han decides to take the money and run and Chewie decides to go with him. Looked at in cold light, it&#8217;s for the good of the Rebellion. Even if Yavin is destroyed, there&#8217;ll be one agent who knows what&#8217;s going on who can try and put something back together, but he doesn&#8217;t feel good about it. When Han decides to turn around and join the attack, Chewie is all for it.</p>
<p>Han and Luke get medals but Chewie doesn&#8217;t. Actually, Leia offers him one but Chewie turns it down. He got one of those things from Yoda about 20 years ago, but there&#8217;s no way he can tell her that.</p>
<p>As the film ends, the three founders of the Rebellion are all gone. Bail Organa is dead, Yoda is out of contact and Obi-Wan&#8217;s ghost can only talk to other Jedi. (So that would be Yoda then.) Thus, the field leadership of the rebellion has just been turned over to the daughter of Darth Vader. Chewie is really hoping that someone with an official rank greater than hers will get here real soon before he has to think really seriously about option C.</p>
]]></content:encoded>
			<wfw:commentRss>http://northisup.com/blog/a-new-sith-or-revenge-of-the-hope-mirror/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OS X Blessings</title>
		<link>http://northisup.com/blog/os-x-blessings/</link>
		<comments>http://northisup.com/blog/os-x-blessings/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 16:11:31 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://northisup.com/blog/os-x-blessings/</guid>
		<description><![CDATA[Just found out about bless. It is a command that allows you to modify aspects of the filesystem. Like flag a volume as bootable. One nifty option is &#8211;openfolder. From the manpage:
--openfolder directory Specify a folder to be opened in the Finder when the volume is mounted by the system.
So I first tried changing the [...]]]></description>
			<content:encoded><![CDATA[<p>Just found out about <code>bless</code>. It is a command that allows you to modify aspects of the filesystem. Like flag a volume as bootable. One nifty option is &#8211;openfolder. From the manpage:</p>
<p><code>--openfolder directory Specify a folder to be opened in the Finder when the volume is mounted by the system.</code></p>
<p>So I first tried changing the current setting to another existing folder via:</p>
<p><code>sudo bless --folder "/Volumes/Douglas" --openfolder "/Volumes/Douglas/var"</code></p>
<p>After unmounting and remounting the volume, the Finder automatically displayed the var folder this time. You can&#8217;t specify a nonexistent folder, so I went ahead and created dummy inside of tmp on the Install DVD partition, and then issued this command:</p>
<p><code>sudo bless --folder "/Volumes/Douglas" --openfolder "/Volumes/Douglas/tmp/dummy"</code></p>
]]></content:encoded>
			<wfw:commentRss>http://northisup.com/blog/os-x-blessings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The best workflow ever.</title>
		<link>http://northisup.com/blog/the-best-workflow-ever/</link>
		<comments>http://northisup.com/blog/the-best-workflow-ever/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 22:26:01 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://northisup.com/?p=797</guid>
		<description><![CDATA[Eye-fi. Buy it. It is the best device ever. Not just because of what it can do, but because of how it gets it done.
So, what does Eye-fi do? Simply put, it&#8217;s an SD card with wifi. When you take a picture it can geo-tag it based on nearby wifi hotspots using Skyhook data. Additionally [...]]]></description>
			<content:encoded><![CDATA[<p>Eye-fi. Buy it. It is the best device ever. Not just because of what it can do, but because of how it gets it done.</p>
<p>So, what does Eye-fi do? Simply put, it&#8217;s an SD card with wifi. When you take a picture it can geo-tag it based on nearby wifi hotspots using Skyhook data. Additionally it can upload your pictures directly to your computer. The second one is the killer feature. It can upload pictures directly to your computer, anywhere on your computer, including into photo applications.</p>
<p>When I get home from taking pictures I wait two minutes then open iPhoto. The pictures are already in iPhoto. I didn&#8217;t have to click any buttons, there were no cables, the only thing I had to do was open the door to my house and go inside. The Eye-fi card automatically connected to my home network and uploaded its photos to my computer. The Eye-fi manager application downloaded them and put them into iPhoto. If you don&#8217;t use iPhoto it can also put them in a folder of your choosing. Also available is the ability to post photos directly to Facebook, Flickr, Picasa, and all the other photo sharing sites.</p>
<p>Why is this so awesome? The workflow to get my media from its initial capture to the web has been reduced to only the steps where I creatively interact with it. Eye-fi has removed all technical glue from the equation. Steve Jobs likes to use the word &#8220;automagic&#8221; to describe workflows in Apple&#8217;s products that work this well. Eye-fi has raised the bar.</p>
<hr />
<p>Normally I don&#8217;t do product links, but I love this one too much not to make it easy for you to buy. The only thing I don&#8217;t like about the Eye-fi is how many versions there are, each has a slightly different set of features. Its too confusing. They only need three versions &#8220;home&#8221; for basic uploading to a computer, &#8220;explorer&#8221; for geo-tagging, flicker integration, etc., and &#8220;pro&#8221; for raw and video upload. I would also like to see Eye-fi compatible apps for iPhone and android in the future. Allowing me to use this amazing service with devices that don&#8217;t suppor their hardware. Eye-fi, are you listening?</p>
<p><center><br />
<iframe src="http://rcm.amazon.com/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=adamhitc-20&#038;o=1&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=10FE9736YVPPT7A0FBG2&#038;asins=B001AD0TGQ" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe> <iframe src="http://rcm.amazon.com/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=adamhitc-20&#038;o=1&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=10FE9736YVPPT7A0FBG2&#038;asins=B001U0O5QO" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe> <iframe src="http://rcm.amazon.com/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=adamhitc-20&#038;o=1&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=10FE9736YVPPT7A0FBG2&#038;asins=B001AD0TGG" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe> <iframe src="http://rcm.amazon.com/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=adamhitc-20&#038;o=1&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=10FE9736YVPPT7A0FBG2&#038;asins=B001U0O5QE" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe> <iframe src="http://rcm.amazon.com/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=adamhitc-20&#038;o=1&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=10FE9736YVPPT7A0FBG2&#038;asins=B002C1B3OC" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><br />
</center></p>
]]></content:encoded>
			<wfw:commentRss>http://northisup.com/blog/the-best-workflow-ever/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Droid Doesn&#8217;t</title>
		<link>http://northisup.com/blog/droid-doesnt/</link>
		<comments>http://northisup.com/blog/droid-doesnt/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 18:53:21 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://northisup.com/?p=781</guid>
		<description><![CDATA[I bought the droid on day one, this is why I returned it 30 days later.
Edit: There were many aspects about the droid that were awesome (Google Navigation and Google Contact sync: superawesome), but in this post I&#8217;m focusing on the aspects that gave me trouble. To that end I also am trying to not [...]]]></description>
			<content:encoded><![CDATA[<p>I bought the droid on day one, this is why I returned it 30 days later.</p>
<p><strong>Edit:</strong> There were many aspects about the droid that were awesome (Google Navigation and Google Contact sync: superawesome), but in this post I&#8217;m focusing on the aspects that gave me trouble. To that end I also am trying to not compare it to other devices such as the iPhone or Pre. I wanted to look at my experience on the droid as a standalone experience.</p>
<h2>User Interface</h2>
<p>It seems Google focused on making a flexible OS instead of a phone OS. When I think of what I want a phone to do, I think of 1) make phone calls, and 2) listen to music. The droid doesn&#8217;t make it easy to do either. The best way to frame this problem is as the workflow of getting from application X, to music or phone, then getting back to application X . Ignoring the interface of the actual applications (the phone is fine, the music leaves much to be desired), it was difficult to even get back to my music to skip a track/pause/play/etc. and then get back to the web, or game, or whatever. While the feature is there, the workflow is not. I know you can hold the Home button for the previous six apps, but often music wasn&#8217;t in those anymore.</p>
<p><strong>Edit:</strong> I have gotten a lot of flack from people saying &#8220;Look, it isn&#8217;t that hard to hit home, swipe your finger a few times and hit the phone button. What&#8217;s your problem?&#8221; They then go on to make some very disparaging ad hominem remarks. If you agree with them then you are missing the point. My complaint is not that it is difficult to make a phone call, it is that it is more difficult than it <em>should be</em>. The single thing I do most on my phone should be the single easiest thing to do. Do not treat playing music and making phone calls like all the other apps. They are why I bought the phone, they are special, they are royalty; treat them as such.</p>
<h2>Marketplace</h2>
<p>In short the marketplace has a horrible interface; its good for search but not for exploration.</p>
<p>The marketplace is one of the greatest disappointments of the device. Other than &#8220;Featured,&#8221; &#8220;New,&#8221; and &#8220;Updated&#8221; there is no way to explore the Marketplace for new and interesting apps. The result of this lack of exploration for apps in related categories meant I would download several applications with a similar purpose and then keep the one I liked the most. This leads to the next frustrating thing.</p>
<p>Another huge failure of the marketplace is how it deals with applications not compatible with certain version of the Android OS. If you search for an application that works on 1.6, but not 2.0 Google says that application doesn&#8217;t exist. From a user interface perspective, if I click a link/QRCode on a site it appears as a broken link to the user. A better method would be to show the app, but not allow its download stating &#8220;Not compatible with your Android version.&#8221;</p>
<p><strong>Edit:</strong> People have asked why this is such a big deal. As a user I had the experience of going to companies websites and filling support claims telling them that their links on their site were broken. Or that their application is not, in fact, listed in the Marketplace which is contrary to what they are telling me. I sent them screenshots, and they were confused too. From a developer&#8217;s perspective, I am confused why my product appears to be broken to my users.</p>
<h2>Application Management and Removal</h2>
<p>There is no easy way to manage applications individually or in bulk. For me application management includes moving them around my home screens (of which there are only three, and this number is not negotiable) as well as removing applications I no longer want to use. I thought that by version 2.0 Google would have found a better way remove and manage applications by now. Since Google Sync is one of the core features of the device delivering contacts, mail, and calendars, why not make it deliver applications too? There should be a Google web app that is specifically for managing an Android device. Or, the way things are going, a suite of a user&#8217;s Android devices.</p>
<p>Since you are arbitrarily limited to three home screens you can use folders to allow &#8216;quick&#8217; access to applications. I put quick in quotations because the folders actually just get in the way. I had one folder for people I call frequently, this works fine, but folders don&#8217;t close once you hit an icon inside them. This means the next time you get to the home screen you have to close the folder you used last.</p>
<p>I love it that you can return applications. Google&#8217;s Marketplace is the only one that can, but I found it frustrating that I could return some and not others. Nor was there any indication as to which applications could or could not be returned. From a user&#8217;s perspective this inconsistent interface is confusing and difficult to figure out. If you are going to offer such a great service as returns offer them universally. Furthermore now that I have returned my device I am very upset that I have no way to return the apps I did purchase (and I bought a lot).</p>
<h2>Battery Life</h2>
<p>I love gadgets, I have lots of them, I&#8217;ve had countless Palms, Handsprings (remember them?), Zaurs&#8217;, iPods, etc. The Droid is the first one that I have actively been dissapointed with its battery life. The device was dead 24 out of 30 days before I got home from work. Let me preempt some questions. GPS was only on while actively being used, and it was not used frequently, wifi was used when available, but not left on. I actively killed background processes that didn&#8217;t need to be running. All apps that wanted to poll for information were set at one to three hours for polling duration except for twitter which was set at 30 minutes. And I had less than 30 minutes talk time each day. Under these power usage settings I expect the device to at least make it all day, possibly two, not less than eight hours.</p>
<h2>Bugs</h2>
<p>One of the most well publicized bugs is the autofocus, so I won&#8217;t address it, I&#8217;ll address ones that are less publicized.</p>
<p>After booting to the home screen you would expect to be able to do things, right? Wrong. The device would hang for five to ten minutes while who knows what went on. I think this was related to background processes, but the sandboxing system on the droid is supposed to prevent background processes from interfering with foreground process.</p>
<p>Don&#8217;t know if this is a bug, but the device was generally choppy when sliding screens with a lot of icons.</p>
<p>Every person I talked to complained about the audio quality, saying that I sounded muffled and distant.</p>
<p>Most disappointing was the instability of core applications. Two to three times a day I would dial and hit send and the phone application would quit, I&#8217;d try again and again until a message would pop up &#8220;Application &#8216;Dialer&#8217; has hung, wait or force quit.&#8221; I expected compatibility issues from third party apps, not from core google applications. Very disappointing.</p>
<h2>Conclusion</h2>
<p>For all these reasons I&#8217;ll be leaving the droid platform for the time being. I was willing to give it a second chance, maybe I had a lemon, but Verizon would not extend the 30 day return policy to a second unit. I&#8217;m still willing to give the Android platform a second go, but I&#8217;m just not willing to pay $300 and two years of my life for it.</p>
]]></content:encoded>
			<wfw:commentRss>http://northisup.com/blog/droid-doesnt/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Jim Henson on How To Make Muppets</title>
		<link>http://northisup.com/blog/jim-henson-on-how-to-make-muppets/</link>
		<comments>http://northisup.com/blog/jim-henson-on-how-to-make-muppets/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 20:08:36 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://northisup.com/?p=777</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/AC440k6iByA&#038;hl=en_US&#038;fs=1&#038;color1=0xe1600f&#038;color2=0xfebd01"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/AC440k6iByA&#038;hl=en_US&#038;fs=1&#038;color1=0xe1600f&#038;color2=0xfebd01" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://northisup.com/blog/jim-henson-on-how-to-make-muppets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Politwit — politically important hashtags</title>
		<link>http://northisup.com/blog/politwit-politically-important-hashtags/</link>
		<comments>http://northisup.com/blog/politwit-politically-important-hashtags/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 17:34:40 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[featured]]></category>
		<category><![CDATA[Politics]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://northisup.com/?p=767</guid>
		<description><![CDATA[I just finished politwit. A twitter app to generate politically important hash tags. Currently it only supports a single campaign. But it will be expanding shortly! The goal of the app is to allow anybody with a message to start a twitter campaign that will automatically hash tag their state and national representatives.
Check it out [...]]]></description>
			<content:encoded><![CDATA[<p>I just finished politwit. A twitter app to generate politically important hash tags. Currently it only supports a single campaign. But it will be expanding shortly! The goal of the app is to allow anybody with a message to start a twitter campaign that will automatically hash tag their state and national representatives.</p>
<p>Check it out at <a title="http://bit.ly/E8zaj" href="http://bit.ly/E8zaj">http://bit.ly/E8zaj</a></p>
]]></content:encoded>
			<wfw:commentRss>http://northisup.com/blog/politwit-politically-important-hashtags/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vim tricks for %s and ^M</title>
		<link>http://northisup.com/blog/vim-tricks-for-s-and-m/</link>
		<comments>http://northisup.com/blog/vim-tricks-for-s-and-m/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 03:10:19 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://northisup.com/?p=732</guid>
		<description><![CDATA[Windows and, well everybody else, treat en-lines differently. When editing a Windows file under an editor such as vim at the end of each line a ctrl+m character is visibly displayed at the as ^M.
To remove the ^M characters at the end of all lines in vi, do this:

:%s/^V^M//g

The ^v and ^m characters are entered [...]]]></description>
			<content:encoded><![CDATA[<p>Windows and, well everybody else, treat en-lines differently. When editing a Windows file under an editor such as vim at the end of each line a ctrl+m character is visibly displayed at the as ^M.</p>
<p>To remove the ^M characters at the end of all lines in vi, do this:</p>
<pre class="brush: bash">
:%s/^V^M//g
</pre>
<p>The ^v and ^m characters are entered by typing the ctrl+v or ctrl+m respectively. When done correctly you should see this:</p>
<pre class="brush: bash">
:%s/^M//g
</pre>
<p>In UNIX, you can escape a control character by preceding it with a ctrl+v. The :%s is a basic search and replace command in vi. It tells vi to replace the regular expression between the first and second slashes (^M) with the text between the second and third slashes (nothing in this case). The g at the end directs vi to search and replace globally (all occurrences).</p>
<p>Another vim trick. If you want to do a search/replace on a path, say you have /home/north and want to replace it with /Users/adam the / character has to get escaped a lot. The reason for this is that / is both the path delimiter and the search/replace delimiter. To make things easier vim lets you use any character you want for the search/replace delimiter.</p>
<p>So this:</p>
<pre class="brush: bash">
:%s/\/home\/north/\/Users\/adam/g
</pre>
<p>Becomes this:</p>
<pre class="brush: bash">
:%s@/home/north@/Users/adam@g
</pre>
<p>Much nicer!</p>
]]></content:encoded>
			<wfw:commentRss>http://northisup.com/blog/vim-tricks-for-s-and-m/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>David Pogue launches all-out war on canned voicemail messages</title>
		<link>http://northisup.com/blog/david-pogue-launches-all-out-war-on-canned-voicemail-messages/</link>
		<comments>http://northisup.com/blog/david-pogue-launches-all-out-war-on-canned-voicemail-messages/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 19:06:33 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://northisup.com/?p=728</guid>
		<description><![CDATA[Repost from Engadget
You know, we love fighting the good fight &#8212; especially if it means calling out corporations on their untoward business practices. Today we&#8217;re joining David Pogue of the New York Times in calling foul on cellphone carriers&#8217; insistence that users be forced to listen to those maddening, pointless 15-second canned carrier messages. In case [...]]]></description>
			<content:encoded><![CDATA[<p>Repost from Engadget</p>
<p>You know, we love fighting the good fight &#8212; especially if it means calling out corporations on their untoward business practices. Today we&#8217;re joining David Pogue of the <em>New York Times</em> in calling foul on cellphone carriers&#8217; insistence that users be forced to listen to those maddening, pointless 15-second canned carrier messages. In case you&#8217;ve held off on owning a cellphone or calling anyone who has one, they go a little something like this:<br style="line-height: 0.8em;" /></p>
<blockquote style="margin-top: 1.5em; margin-right: 0px; margin-bottom: 1.5em; margin-left: 1.5em; quotes: none; color: #666666; font-style: italic; padding: 0px;"><p>At the tone, please record your message. When you have finished recording, you may hang up, or press 1 for more options. To leave a callback number, press 5. (Beep)<br style="line-height: 0.8em;" /></p></blockquote>
<p>Not only is Pogue mad-as-hell-and-not-going-to-take-it about the ridiculous idea that we still need to be told how to use voicemail, it turns out those additional messages are actually costing you cold, hard cash. He estimates that Verizon, for instance, is netting around $620 million a year thanks to these little annoyances. So what&#8217;s to be done? Well Pogue wants the citizens of the internet to take up virtual arms&#8230; and complain like nobody&#8217;s business. He&#8217;s wrangled together all the best contact points for the four largest carriers in the US (included for your convenience after the break). Let them know you know don&#8217;t want to pay for voicemail instructions. And hey, while you&#8217;re at it, tell them the <a style="color: #0aa7d6; text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial;" href="http://www.engadget.com/2008/12/28/the-truth-about-text-messaging-youre-getting-ripped-off/">price-gouging on text messages</a>needs to go, too.</p>
<p><span style="font-weight: bold;">Verizon:</span> Post a complaint <a style="color: #0aa7d6; text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial;" href="http://www.verizonwireless.com/b2c/contact/index.jsp">here</a>.<br style="line-height: 0.8em;" /><br style="line-height: 0.8em;" /><span style="font-weight: bold;">AT&amp;T:</span> Send e-mail to Mark Siegel, executive director of media relations: MS8460@att.com.<br style="line-height: 0.8em;" /><br style="line-height: 0.8em;" /><span style="font-weight: bold;">Sprint:</span> Post a complaint <a style="color: #0aa7d6; text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial;" href="http://community.sprint.com/baw/community/buzzaboutwireless/general/rants-and-raves?view=discussions">here</a>.<br style="line-height: 0.8em;" /><br style="line-height: 0.8em;" /><span style="font-weight: bold;">T-Mobile:</span> Post a complaint <a style="color: #0aa7d6; text-decoration: none; outline-style: none; outline-width: initial; outline-color: initial;" href="http://forums.t-mobile.com/tmbl/board?board.id=General">here</a>.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">David Pogue launches all-out war on canned voicemail messages</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">by Joshua Topolsky, posted Jul 30th 2009 at 1:04PM</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">You know, we love fighting the good fight &#8212; especially if it means calling out corporations on their untoward business practices. Today we&#8217;re joining David Pogue of the New York Times in calling foul on cellphone carriers&#8217; insistence that users be forced to listen to those maddening, pointless 15-second canned carrier messages. In case you&#8217;ve held off on owning a cellphone or calling anyone who has one, they go a little something like this:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">At the tone, please record your message. When you have finished recording, you may hang up, or press 1 for more options. To leave a callback number, press 5. (Beep)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Not only is Pogue mad-as-hell-and-not-going-to-take-it about the ridiculous idea that we still need to be told how to use voicemail, it turns out those additional messages are actually costing you cold, hard cash. He estimates that Verizon, for instance, is netting around $620 million a year thanks to these little annoyances. So what&#8217;s to be done? Well Pogue wants the citizens of the internet to take up virtual arms&#8230; and complain like nobody&#8217;s business. He&#8217;s wrangled together all the best contact points for the four largest carriers in the US (included for your convenience after the break). Let them know you know don&#8217;t want to pay for voicemail instructions. And hey, while you&#8217;re at it, tell them the price-gouging on text messages needs to go, too.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Verizon: Post a complaint here.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">AT&amp;T: Send e-mail to Mark Siegel, executive director of media relations: MS8460@att.com.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Sprint: Post a complaint here.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">T-Mobile: Post a complaint here.</div>
]]></content:encoded>
			<wfw:commentRss>http://northisup.com/blog/david-pogue-launches-all-out-war-on-canned-voicemail-messages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The ternary operator in Python</title>
		<link>http://northisup.com/blog/the-ternary-operator-in-python/</link>
		<comments>http://northisup.com/blog/the-ternary-operator-in-python/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 21:03:04 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ternary]]></category>

		<guid isPermaLink="false">http://northisup.com/?p=663</guid>
		<description><![CDATA[The ternary operator of C is one of my favorite operators, it may be hard to read at times, but oh so useful.

(a ? b : c)

In python you can do this in three ways, the third way is only available in python 2.5 and up. It is essentially a ternary operator and doesn&#8217;t require [...]]]></description>
			<content:encoded><![CDATA[<p>The ternary operator of C is one of my favorite operators, it may be hard to read at times, but oh so useful.</p>
<pre class="brush: c">
(a ? b : c)
</pre>
<p>In python you can do this in three ways, the third way is only available in python 2.5 and up. It is essentially a ternary operator and doesn&#8217;t require any complicated hacks. In these lambda function examples I am using <b>a</b> as the conditional, <b>b</b> as the true option and <b>c</b> as the false option:</p>
<pre class="brush: python">
q=lambda a,b,c: (a and [b] or [c])[0]
</pre>
<p>This works due to the <a href="http://www.diveintopython.org/power_of_introspection/and_or.html">particular nature of and and or</a>. The article is very good and goes in depth into the nature of and and or, specifically as to why this works. The reason that <b>b</b> and <b>c</b> are in brackets is because in some cases the <b>b</b> value can return False, but a list will always return True. Since we are returning a list we must reference the first element.</p>
<pre class="brush: python">
q=lambda a,b,c: (b,c)[not a]
</pre>
<p>In this instance we rely on the fact that <code>True == 1</code> and <code>False == 0</code>. This is important because we are using a conditional to access an element of the tuple. If a is True then not a will be false, or 0, thus accessing the first element. Similarly if a is False then not a will be True, or 1, and this will access the second element.</p>
<pre class="brush: python">
q=lambda a,b,c: b if a else c
</pre>
<p>This simply returns b if a is true and c otherwise. Very self explanatory.</p>
<p>Here is an example of each form in action:</p>
<pre class="brush: python">
twoleg  = [&quot;human&quot;, &quot;kangaroo&quot;]
fourleg = [&quot;dog&quot;, &quot;elephant&quot;]
animals = [&quot;human&quot;, &quot;kangaroo&quot;, &quot;dog&quot;, &quot;elephant&quot;]

print(&quot;\nMethod one:&quot;)
for c in animals:
    print &quot;%s has %s legs&quot;%(c, (c in twoleg and [&quot;two&quot;] or [&quot;four&quot;])[0])

print(&quot;\nMethod two:&quot;)
for c in animals:
    print &quot;%s has %s legs&quot;%(c, (&quot;two&quot;, &quot;four&quot;)[c not in twoleg])

print(&quot;\nPython 2.5+ only:&quot;)
for c in animals:
    print &quot;%s has %s legs&quot;%(c, &quot;two&quot; if c in twoleg else  &quot;four&quot;)
</pre>
]]></content:encoded>
			<wfw:commentRss>http://northisup.com/blog/the-ternary-operator-in-python/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>An even shorter passwordless ssh tutorial</title>
		<link>http://northisup.com/blog/an-even-shorter-passwordless-ssh-tutorial/</link>
		<comments>http://northisup.com/blog/an-even-shorter-passwordless-ssh-tutorial/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 20:10:12 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://northisup.com/?p=647</guid>
		<description><![CDATA[My favorite passwordless ssh tutorial went offline, so here is my rehash of it.
Your server names will, of course, vary. Localhost is the machine you are currently on and, in my case, northisup.com is the server I&#8217;m SSHing into.

localhost$ ssh-keygen -t dsa
localhost$ cat ~/.ssh/id_dsa.pub &#124; \
  ssh northisup.com &#039;cat &#62;&#62; ~/.ssh/authorized_keys; \
  chmod [...]]]></description>
			<content:encoded><![CDATA[<p>My favorite passwordless ssh tutorial went offline, so here is my rehash of it.</p>
<p>Your server names will, of course, vary. Localhost is the machine you are currently on and, in my case, northisup.com is the server I&#8217;m SSHing into.</p>
<pre class="brush: php">
localhost$ ssh-keygen -t dsa
localhost$ cat ~/.ssh/id_dsa.pub | \
  ssh northisup.com &#039;cat &gt;&gt; ~/.ssh/authorized_keys; \
  chmod 644 ~/.ssh/authorized_keys; \
  cat ~/.ssh/authorized_keys&#039;
localhost$ ssh username@northisup.com
</pre>
<p>If you are prompted for a password it should be the password entered in the first step.</p>
<p>This part:</p>
<pre class="brush: php">chmod 644 ~/.ssh/authorized_keys</pre>
<p>is the most common cause of problems, ssh requires authorized_keys not be group writable. Permissions are also important for the home directory on the server.</p>
<p>Now <strong>at this point you may be done</strong>, but if it is still asking for your key password (you will know because the password dialog is different from the standard ssh dialog) then you will have to set up an ssh-agent. I haven&#8217;t had to setup an ssh-agent in years; this is because many modern OSs like OS X and recent versions of Ubuntu have keychains that have properties indistinguishable from magic.</p>
<pre class="brush: php">
localhost$ ssh-agent code
localhost$ ssh-add ~/.ssh/id_dsa
localhost$ ssh username@northisup.com
</pre>
<p>This is effective only for your <em>current</em> shell. So if you open up a second instance of xterm you&#8217;ll have to do it again. Further more it doesn&#8217;t allow cron or other scripts, which frequently run in their own shell instances, to use passwordless ssh. To solve this we want to add the agent initalization to our .coderc file.</p>
<p>Edit ~/.bashrc and add the following at the end:</p>
<pre class="brush: php">
ssh_agent=&quot;$HOME/.ssh-agent.sh&quot;
if [ -f $ssh_agent ] ; then
  source $ssh_agent &gt; /dev/null
fi
</pre>
<p>Note that I pipe the output to /dev/null to stop the agent pid being echo&#8217;d which can break the pipe of some commands (sftp, for instance).</p>
<pre class="brush: php">
localhost$ ssh-agent &gt; ~/.ssh-agent.sh
</pre>
<p>Either exit the shell and start a new one or</p>
<pre class="brush: php">
localhost$ source ~/.ssh_agent.sh
localhost$ ssh-add ~/.ssh/id_dsa
localhost$ ssh username@northisup.com
</pre>
<p>This time there should be no password!</p>
<p>While ssh-agent is running all your processes (including your cron jobs) shouldn&#8217;t need a password. However if ssh-agent dies or is killed things might go wrong since the old settings are left over.</p>
]]></content:encoded>
			<wfw:commentRss>http://northisup.com/blog/an-even-shorter-passwordless-ssh-tutorial/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
