<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Squarespace Site Server v5.11.81 (http://www.squarespace.com/) on Mon, 13 Feb 2012 12:08:24 GMT--><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>Shaheeb Roshan -My most profound thoughts on pants</title><link>http://www.shaheeb.com/blog/</link><description></description><lastBuildDate>Sun, 29 Jan 2012 19:00:02 +0000</lastBuildDate><copyright></copyright><language>en-US</language><generator>Squarespace Site Server v5.11.81 (http://www.squarespace.com/)</generator><item><title>What Get Set...GO! has taught me about mobile web development...</title><category>GetSetGo</category><category>getsetgo</category><dc:creator>Shaheeb</dc:creator><pubDate>Sun, 29 Jan 2012 17:40:44 +0000</pubDate><link>http://www.shaheeb.com/blog/2012/1/29/what-get-setgo-has-taught-me-about-mobile-web-development.html</link><guid isPermaLink="false">290186:2961060:14775997</guid><description><![CDATA[<p>With just over 20 hours <span style="text-decoration: line-through;">sunk</span> invested into my beta/prototype of <a href="http://www.getsetgomobile.com">Get Set...GO!</a>, I've picked up on a few realities of mobile web development.</p>
<p><strong>Let me first introduce you to Get Set...GO!</strong> &nbsp;</p>
<p>Think of middle school recess or those hot summer afternoons when you and your friends from the block would race to the end of the street. &nbsp;Think of that free, simple feeling of just tearing down the alley to see who could get to that mailbox first (you know, that yellow one next to the big tree?). &nbsp;There were no rules, and what you won was bragging rights. &nbsp;</p>
<p>Get Set Go! revives that same simple sense of competition as a location-aware mobile game. &nbsp;You pick a destination (maybe that Alterra coffeeshop two blocks over), send a challenge via sms or email to a few friends, and its game on! &nbsp;Get Set Go! tracks your location, as well as your friends, and the first one to get there is checked in as the winner. &nbsp;</p>
<p>You pick up points for races you start and join (with bonus badges for wins). &nbsp;Businesses that sponsor destinations can offer prizes to winners and other checkin rewards to other racers.</p>
<p><strong>Minimum Viable Prototype...</strong></p>
<p>Planning is key (I'm told). &nbsp;I forced myself to spend a few hours paper-napkin-ing the idea. &nbsp;I developed a flow for the app (try <a href="http://www.lucidchart.com">LucidChart</a> for dirt simple flowcharting), thought about some basic game mechanics and worked out a value-proposition for the race sponsors (ie my revenue model). &nbsp;The exercise helped me land on a basic spec for the game that would allow me to get my phone out and tap on some screens as I pitched the concept to <span style="text-decoration: line-through;">friends</span> anyone who'd listen.</p>
<p>I decided to try wireframes using <a href="http://www.balsamiq.com/products/mockups/mybalsamiq">Balsamiq</a> and some others, but found that for my own use, the mockups made the app much harder to visualize. &nbsp;I decided to try platforms like <a href="http://www.applicationcraft.com">ApplicationCraft</a>&nbsp;and <a href="http://rhomobile.com/">Rhomobile</a>&nbsp;to simplify the visual aspects of designing a mobile application flow. &nbsp;Now these tools are incredibly powerful, and while they do simplify certain advanced aspects of multiple platform targeting, they do come with a non-trivial learning curve.</p>
<p>My needs were centered around developing a usable protoype of the concept, quickly and cheaply. &nbsp;I've written some code now and again, and decided that it would be faster for me to whip something together myself, and then transition to ApplicationCraft when I'm ready to refine the prototype into a more beta product.</p>
<p><strong><a href="http://jquerymobile.com">jQueryMobile</a> to the rescue...</strong></p>
<p>Any developer familiar with the incredibly powerful and popular jQuery framework can be extremely productive extremely quickly using the jQueryMobile platform. &nbsp;However! &nbsp;Beware. &nbsp;I was surprised to find so much of what I needed to accomplish required various degrees of hackery. &nbsp;</p>
<ul>
<li>Cross-domain requests or Same Origin Policy woes 
<ul>
<li>http://www.giantflyingsaucer.com/blog/?p=2682</li>
<li>Not quite a hack per se, but the whole concept of how JSONP is implemented is oddly complex, but a necessary reality in mobile web development</li>
</ul>
</li>
<li>Variety of mobile specific implementations of the Google Map API 
<ul>
<li>Google's eerily awesome javascript mapping API <a href="http://code.google.com/apis/maps/documentation/javascript/">(v3)</a></li>
<li>Best API to the API I've found (<a href="http://www.smashinglabs.pl/gmap">GMap</a>). &nbsp;Certainly consuming the Google API directly is likely the best way to go for reliability and performance, but in reality fairly routine operations like <a href="http://www.smashinglabs.pl/gmap/labs#markerkeys">searching for markers on a map</a> is often easier through wrappers than dealing with the core API.</li>
</ul>
</li>
<li>Implementing fixed headers and footers 
<ul>
<li>Various approaches ranging from the <a href="http://jquerymobile.com/test/docs/toolbars/bars-fixed.html">standard</a>&nbsp;to some <a href="http://stackoverflow.com/questions/4377062/how-to-fix-jquery-mobiles-fixed-footer">more</a> <a href="http://stackoverflow.com/questions/4724068/how-to-keep-jquery-mobile-header-and-footer-fixed">exotic</a> approaches.</li>
</ul>
</li>
</ul>
<p>Now, I'm not complaining mind you! &nbsp;Just cautioning that although access to the raw tools can empower you to produce workable prototypes with minimal friction, you have to evaluate whether its sustainable for you to deal with build challenges *and* business development priorities.</p>
<p>So what can I say about my experience so far with mobile development:</p>
<p>&nbsp;</p>
<ol>
<li><strong>Plan</strong>. &nbsp;Committing to a hardline spec for your prototype will bound the scope of your effort, and also go a long way in refining your best available options to deliver that desired state.</li>
<li><strong>Build it yourself.</strong> &nbsp;At least in the beginning. &nbsp;You will very quickly learn the key challenges you will need to invest the greatest amount of resources into as you move further toward delivery.</li>
<li><strong>Share it. </strong>&nbsp;Its a difficult proposition, but share what you have early and often. &nbsp;Its painful to hear comments like "is it supposed to look like that??", or "huh, that didn't quite work!", but you will end up directing your effort more accurately toward the right challenges in your project. &nbsp;That is, the ones your users and customers care about; &nbsp;and these may not be the ones you thought of first!</li>
</ol>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></description><wfw:commentRss>http://www.shaheeb.com/blog/rss-comments-entry-14775997.xml</wfw:commentRss></item><item><title>Shabana's guest post on Disability.gov</title><category>Bluefrog</category><category>Personal</category><category>personal</category><dc:creator>Shaheeb</dc:creator><pubDate>Sat, 17 Dec 2011 17:35:07 +0000</pubDate><link>http://www.shaheeb.com/blog/2011/12/17/shabanas-guest-post-on-disabilitygov.html</link><guid isPermaLink="false">290186:2961060:14153836</guid><description><![CDATA[<p>My sister (<a href="http://www.linkedin.com/in/shabanawollin">Shabana Wollin</a>) was invited as a guest blogger at <a href="http://blog.govdelivery.com/">Disability.gov</a>. &nbsp;She <a href="http://blog.govdelivery.com/usodep/2011/12/5-helpful-tips-to-successfully-negotiate-in-a-tough-job-market.html">wrote a post</a> on negotiating in a tough job market. &nbsp;I can tell you from personal experience, Shabana has mastered the art of understanding a client's technical problem space, figuring out if she's the right solution fit, and then agressively negotiating an arrangement that benefits both parties. &nbsp;<a href="http://blog.govdelivery.com/usodep/2011/12/5-helpful-tips-to-successfully-negotiate-in-a-tough-job-market.html">Check out the post and comment!</a></p>]]></description><wfw:commentRss>http://www.shaheeb.com/blog/rss-comments-entry-14153836.xml</wfw:commentRss></item><item><title>A quick note about Hu Moments (re: DARPA Shredder Challenge)</title><category>darpa</category><category>shredder</category><category>software</category><dc:creator>Shaheeb</dc:creator><pubDate>Wed, 09 Nov 2011 04:46:44 +0000</pubDate><link>http://www.shaheeb.com/blog/2011/11/8/a-quick-note-about-hu-moments-re-darpa-shredder-challenge.html</link><guid isPermaLink="false">290186:2961060:13651010</guid><description><![CDATA[<p>Kat Scott from the <a href="http://www.simplecv.org">SimpleCV</a>/<a href="http://www.ingenuitas.com">Ingenuitas</a>&nbsp;team was gracious enough to share some feedback with me on my use of the SimpleCV package and approach to the Shredder Challenge. &nbsp;Not surprisingly, she and her colleagues have had their own thoughts on how to tackle the puzzles, and I for one am eagerly looking forward to their attempts.</p>
<p>Kat (very diplomatically!) confirmed my comment that shape matching would not work, and then very kindly shared some specific technical information on why. &nbsp;&nbsp;</p>
<blockquote>
<p>"Your approach is a good first start, but unfortunately the Hu moment is not going to work in this situation. The Hu moment is a measure of the image moment, which is kinda like a moment in physics. Basically a moment describes how much work you have to do to get something to spin. Round things have less of a moment and spin easily, long things are a lot more difficult to spin. Moments are actually a good way to match things that are similar shapes, but not to align edges that are a like puzzel pieces."</p>
</blockquote>
<p>Kat also forwarded a video of a simplified visual explanation of the math behind the Hu moments that illustrates how robust the calculations are in identifying a particular image, regardless of transformations applied to it: &nbsp;<a href="http://www.youtube.com/watch?v=O-hCEXi3ymU" target="_blank">http://www.youtube.com/watch?v=O-hCEXi3ymU</a>&nbsp;</p>
<p>Personally, I found that while the video definitely drove the point home, Kat's simple, straightforward explanation was key for me in understanding the nature of this feature.</p>
<p>I hope this little bit sets off a light bulb or two for others, as it did for me. &nbsp;At the moment, my thinking on the first puzzle has turned to collision detection; the type you might be familiar with if you've played any old-school platform scroller arcade game. &nbsp;These games determined when two polygons intersected each other, and I think the principle should apply to determine whether two puzzle pieces in the shredder challenge are a good fit.</p>
<p>My latest homework is to understand the <a href="http://www.codezealot.org/archives/55#sat-intro">Separating Axis Theorem</a>&nbsp;and see if I can develop an approach based on this concept.</p>]]></description><wfw:commentRss>http://www.shaheeb.com/blog/rss-comments-entry-13651010.xml</wfw:commentRss></item><item><title>DARPA Shredder Challenge - Part Deux</title><dc:creator>Shaheeb</dc:creator><pubDate>Fri, 04 Nov 2011 03:28:17 +0000</pubDate><link>http://www.shaheeb.com/blog/2011/11/3/darpa-shredder-challenge-part-deux.html</link><guid isPermaLink="false">290186:2961060:13590662</guid><description><![CDATA[<p>As promised, here is a bit of code that follows my preliminary line of thinking on Puzzle1:&nbsp;</p>
<div class="codeSnip">#!/usr/bin/python<br /> from SimpleCV import *<br /> from optparse import OptionParser<br /> import random<br /> <br /> cmdOptParser = OptionParser()<br /> cmdOptParser.add_option("-i","--input",dest="inputFilename",help="Filename of the image to operate on")<br /> cmdOptParser.add_option("-o","--output",dest="outputFilename",help="Filename of the image to save on")<br /> <br /> (options,args) = cmdOptParser.parse_args()<br /> puzzleImg = Image(options.inputFilename)<br /> #&nbsp;&nbsp;The source images for the challenges are flippin huge.  So let's up the recursion limit to support the search for many blobs<br /> sys.setrecursionlimit(10000)<br /> #&nbsp;&nbsp;Kick things off by creating a binarized() version of the source image<br /> binarizedSrc = puzzleImg.binarize()<br /> #&nbsp;&nbsp;Now lets find the blobs.  Lets set some mins to make sure we don't worry about the itty bitty scraps<br /> binBlobs = binarizedSrc.findBlobs(-1,2000)<br /> #&nbsp;&nbsp;We have a set of identified blobs, so we can do some basic analysis.  Let's just stupidly try to match up blobs.  This won't really work for us because we are not trying to find duplicates etc, we need matching tiles.  But anyway.<br /> blobBestMatches = {}<br /> for i,blob in enumerate(binBlobs):<br /> &nbsp;&nbsp;blobMatchSet = {}<br /> &nbsp;&nbsp;for c,blobCmp in enumerate(binBlobs,1):<br /> &nbsp;&nbsp;&nbsp;&nbsp;blobMatch = blob.match(blobCmp)<br /> &nbsp;&nbsp;&nbsp;&nbsp;if (blobMatch &gt; 0):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#blobMatch at 0 means it is itself<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blobMatchSet[c] = blobMatch<br /> &nbsp;&nbsp;blobBestMatches[i] = min(blobMatchSet,key=blobMatchSet.get)&nbsp;&nbsp;&nbsp;&nbsp;#this clever little bit identifies the index of the dict that contains the lowest possible match value.<br /> for k,v in blobBestMatches.iteritems():<br /> &nbsp;&nbsp;randomColor = (random.randint(0,255),random.randint(0,255),random.randint(0,255))<br /> &nbsp;&nbsp;print randomColor<br /> &nbsp;&nbsp;binBlobs[k].draw(randomColor,-1,-1,binarizedSrc.dl())<br /> &nbsp;&nbsp;binBlobs[v].draw(randomColor,-1,-1,binarizedSrc.dl())<br />&nbsp; binarizedSrc.save(options.outputFilename)</div>
<p>&nbsp;</p>
<p>Forgive me if the code formatting creates issues for you. &nbsp;The script is dirt simple, and should be easy to follow. &nbsp;It is only a proof of concept that (usefully) gets as far as identifying the distinct blobs. &nbsp;From there, I've asked it to perform a simple match and identify the pairs by coloring each of the matches the same. &nbsp;Running the script produces something similar to this:</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://www.shaheeb.com/storage/post-images/puzzle1_titlecropped_manip5.png?__SQUARESPACE_CACHEVERSION=1320378372089" alt="" /></span><span class="thumbnail-caption" style="width: 350px;">Doesn't that look a lot easier now?</span></span></p>
<p>This last bit is not at all useful in solving the puzzle because we are not attempting to identify duplicates in the image. &nbsp;Rather we need to match each shred to a "fit match". &nbsp;I have not yet figured out the math to express the "fit match", but at least I'm a step closer in this marathon.</p>]]></description><wfw:commentRss>http://www.shaheeb.com/blog/rss-comments-entry-13590662.xml</wfw:commentRss></item><item><title>DARPA Shredder Challenge - Preliminary (quarter-baked) thoughts...</title><dc:creator>Shaheeb</dc:creator><pubDate>Mon, 31 Oct 2011 21:38:20 +0000</pubDate><link>http://www.shaheeb.com/blog/2011/10/31/darpa-shredder-challenge-preliminary-quarter-baked-thoughts.html</link><guid isPermaLink="false">290186:2961060:13543454</guid><description><![CDATA[DARPA recently opened its Shredder Challenge, and I for one am eager for the opportunity to play engineer and think about how I might think about a problem like this!]]></description><wfw:commentRss>http://www.shaheeb.com/blog/rss-comments-entry-13543454.xml</wfw:commentRss></item><item><title>Paramiko: easy, native ssh in Python...</title><dc:creator>Shaheeb</dc:creator><pubDate>Sat, 13 Aug 2011 18:25:41 +0000</pubDate><link>http://www.shaheeb.com/blog/2011/8/13/paramiko-easy-native-ssh-in-python.html</link><guid isPermaLink="false">290186:2961060:12505533</guid><description><![CDATA[<p>I just discovered Paramiko (<a href="http://www.lag.net/paramiko/docs/">docs here</a>)! &nbsp;This module allows SSH interaction natively (meaning directly through code, and not through system calls), and supports a pretty comprehensive scope of operations over ssh. &nbsp;The key items that caught my attention are:</p>
<p>&nbsp;</p>
<ul>
<li>Intutive syntax and application      
<ul>
<li>
<div class="codeSnip">mysshclient = paramiko.SSHClient() mysshclient.connect('hostadd',username='user',password='pass')</div>
</li>
<li>Addressed the missing host key issue we are all familiar with directly on the shell
<div class="codeSnip">mysshclient = paramiko.SSHClient() mysshclient.set_missing_host_key_policy(paramiko.AutoAddPolicy())</div>
</li>
</ul>
</li>
<li>Key based authentication      
<ul>
<li>Terrific <a href="http://segfault.in/2010/03/paramiko-ssh-and-sftp-with-python/">example here</a></li>
<li>
<div class="codeSnip">mysshclient = paramiko.SSHClient() mysshclient.set_missing_host_key_policy(paramiko.AutoAddPolicy()) privateKeyPath = '/path/to/your/key' privateKey = paramiko.RSAKey.from_private_key_file(privateKeyPath) mysshclient.connect('hostaddr',username='user',pkey=privateKey)</div>
</li>
</ul>
</li>
<li>Send commands and interact with output on the remote machine      
<ul>
<li>
<div class="codeSnip">mysshclient = paramiko.SSHClient() mysshclient.set_missing_host_key_policy(paramiko.AutoAddPolicy()) mysshclient.connect('hostaddr',username='user',password='pass') stderr, stdout, stdin = myssh.exec_command('ls -latrh') stdout.readlines()</div>
</li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<p>Brilliant. &nbsp;Will be applying Paramiko to a teeny automation script that will start an Amazon EC2 instance, run a series of commands on the server (neat scraping and analysis stuff I hope to write more about), and then process some post shutdown ops.</p>
<p>&nbsp;</p>]]></description><wfw:commentRss>http://www.shaheeb.com/blog/rss-comments-entry-12505533.xml</wfw:commentRss></item><item><title>Mint.com let me down today...</title><dc:creator>Shaheeb</dc:creator><pubDate>Wed, 13 Oct 2010 23:28:38 +0000</pubDate><link>http://www.shaheeb.com/blog/2010/10/13/mintcom-let-me-down-today.html</link><guid isPermaLink="false">290186:2961060:9180127</guid><description><![CDATA[<p>I have been a loyal Mint.com user for over 2 years, and today I experienced a level of dissatisfaction with the service that surprised me.</p>
<p>&nbsp;A little background: &nbsp;At around 6:45am CST today (10/13/2010), I received an email with no message body or subject line from "<span class="gD">Mint.com</span>&nbsp;<span class="go">&lt;stage-mini@mint.com&gt;". &nbsp;The message contained an single 1x1 pixel image that "phoned home" to mkt41.net - an email marketing firm that presumably tracks visits and message load statistics. &nbsp;After a little Googling, I <a href="http://gsfn.us/t/1n67r">learned</a> that Mint.com apparently sent a "flood of emails" the previous morning due to a "simple" misconfiguration of a test server "with no customer data". &nbsp;Stephen Mann (Mint.com's Director - Customer Advocacy) assures us (other loyal users like me no doubt) that measures were being put in place to ensure this never happens again.</span></p>
<p>So when I received a second blank email - identical to the first - about 6 hours later, I was upset. &nbsp;I then learned that many others had received a half dozen or more emails well after Stephen Mann's rather inadequate message. &nbsp;As I re-read that message that Mann posted early on 10/13, I grew more upset as I saw clearly both the incompetence and the utter lack of professionalism represented in the content. &nbsp;</p>
<p>Here are my two main issues with Mint.com/Stephen Mann's message:</p>
<ul>
<li>Stephen Mann's choice of language in posting "sorry for being annoying" and "We also apologize if we woke you up from your sleep! " indicates that he thinks he's managing the social presence for a brand new shiny web2.0 side project. &nbsp;Mint.com manages the personal financial information for hundreds of thousands (millions?) of users. &nbsp;Stephen Mann should take this more seriously. &nbsp;Moreover, a $30million sale to Intuit should firmly signal (at least to Mint.com) that Mint.com has a greater responsibility to its userbase. &nbsp;We should not be subject to amateurish mistakes like allowing a test server to communicate with the outside world.</li>
<li>I believe Stephen Mann is either too incompetent to have correctly determined the technical details of the problem, or outright lied in this message. &nbsp;If the mistake occurred on a test-system with "no customer data", how was the email delivered to my email address? &nbsp;If the test system has access to my email address, what other detail exists in this environment?</li>
</ul>
<p>My final concern is that not many people appear to be aware of this problem! &nbsp;To my own tiny part, I have hooked the RSS feed for this utterly shameful feedback thread into twitterfeed. &nbsp;Any updates to the forum will be pumped into my <a href="http://www.twitter.com/shaheeb">embarrassingly lonely twitter stream</a>.</p>
<p>&nbsp;</p>
<p>For shame Mint.com. &nbsp;Cereal.</p>
<p>&nbsp;</p>
<p>Track the Forum Here: &nbsp;<a href="http://gsfn.us/t/1n67r">http://gsfn.us/t/1n67r</a></p>
<p>&nbsp;</p>]]></description><wfw:commentRss>http://www.shaheeb.com/blog/rss-comments-entry-9180127.xml</wfw:commentRss></item><item><title>On becoming a positive deviant...</title><dc:creator>Shaheeb</dc:creator><pubDate>Wed, 14 Apr 2010 03:59:00 +0000</pubDate><link>http://www.shaheeb.com/blog/2010/4/13/on-becoming-a-positive-deviant.html</link><guid isPermaLink="false">290186:2961060:7319027</guid><description><![CDATA[<p>I just finished Atul Gawande's "<a href="http://amzn.com/0312427654">Better</a>" and found his closing thought particularly inspiring.  Gawande is a gifted author, and masterfully guides his readers through a series of case studies that illustrate instances of remarkable achievement, how these were accomplished (and then replicated), and what he learned about the people that dedicated themselves to the relentless pursuit of "better".</p>
<p>Gawande's closing centers around a lecture he once gave to medical students that he hoped would help guide them in their own efforts to distinguish themselves in their careers (and likely their lives in general).  He offers his students 5 ideas that he feels would condition them into a pattern of behavior that would set them in the right direction:</p>
<p>&nbsp;</p>
<ul>
<li><strong>Ask an unscripted question</strong>:  he encourages stepping outside the routine to establish a more human connection; not just with patients, but also with collegues or friends.</li>
<li><strong>Count something</strong>:  in one of my favorite lines in the book, Gawande suggests that everyone should be a scientist in their world. &nbsp; Counting something - as he did the number of instances sponges or tools were left behind in the body after surgeries - conditions the mind to ask the types of probing questions that invariably lead to innovation and change.</li>
<li><strong>Embrace change</strong>:  he is careful to caution against blind adoption.  Rather he encourages the willingness to learn, critically evaluate, and adopt new ideas if they bear merit.</li>
<li><strong>Don't complain</strong>:  Gawande suggests (from his own experience) that nothing is as demoralizing in healthcare than hearing doctors complain. &nbsp; I'm inclined to think that a variation of that sentiment applies equivalently to virtually any situation.</li>
<li><strong>Write something</strong>:  perhaps this last suggestion was the most compelling as it motivated me to write this short blurb.  I find that writing (particularly about things that are meaningful to me personally) naturally forces me to think more critically and creatively. &nbsp; At the very least it has forced me to put the iPad keyboard through it's paces! (this post was authored on my spanking new iPad using SquareSpace's iPhone app. &nbsp;Thanks Mona!)</li>
</ul>
<p>&nbsp;</p>
<p>I highly recommend <a href="http://amzn.com/0312427654">Better</a>, as well as Gawande's other texts (including <a href="http://amzn.com/0805091742">The Checklist Manifesto</a>, and his very <a href="http://bit.ly/b6B1XD">insightful</a> <a href="http://bit.ly/bEVs4Z">contributions</a> in the <a href="http://bit.ly/bCakQ5">New Yorker</a>).</p>]]></description><wfw:commentRss>http://www.shaheeb.com/blog/rss-comments-entry-7319027.xml</wfw:commentRss></item><item><title>Trusting Trust...</title><dc:creator>Shaheeb</dc:creator><pubDate>Thu, 21 Jan 2010 04:09:09 +0000</pubDate><link>http://www.shaheeb.com/blog/2010/1/20/trusting-trust.html</link><guid isPermaLink="false">290186:2961060:6386029</guid><description><![CDATA[<p><a href="http://cm.bell-labs.com/who/ken/trust.html">This brief talk</a> by <a href="http://en.wikipedia.org/wiki/Ken_Thompson">Ken Thompson</a> is an elegant treatise on computing trust.&nbsp; I've read it 3 times now, and feel like it is only just starting to sink in.</p>]]></description><wfw:commentRss>http://www.shaheeb.com/blog/rss-comments-entry-6386029.xml</wfw:commentRss></item><item><title>Panasonic BL-C111A rocks. Cereal.</title><dc:creator>Shaheeb</dc:creator><pubDate>Tue, 29 Sep 2009 00:18:58 +0000</pubDate><link>http://www.shaheeb.com/blog/2009/9/28/panasonic-bl-c111a-rocks-cereal.html</link><guid isPermaLink="false">290186:2961060:5330227</guid><description><![CDATA[<p>A few weeks ago, I purchased a Linksys WVC54GCA Wireless IP-Camera and found myself <a href="http://www.shaheeb.com/blog/2009/8/22/linksys-wvc54gca-woes.html">somewhat frustrated</a>.&nbsp; The has been dutifully monitoring the breakfast nook in the kitchen, and sure enough, the pups spend minutes out of the day in there.&nbsp; That's right, minutes!</p>
<p>Since Romy and Mothi have decided that the living room is more their style these days, I thought it was a good opportunity to revist the IP-Camera project, and (hopefully) correct some of my first-time missteps.</p>
<p>&nbsp;<br /><strong>What's over there?</strong></p>
<p>PTZ.&nbsp; Pan. Tilt. Zoom.&nbsp; One of the issues I had with my Linksys fixed camera was that it monitored only a fairly narrow portion of the room.&nbsp; Now in the living room, I knew I need my camera to be able to cover a larger area, and the ablity to move the camera around was a necessity.&nbsp; The Pannie sports a 180 degree pan, and a 150 degree tilt.&nbsp; Its digital zoom isn't going to win any awards, but the range of movement easily compensates.</p>
<p><strong>But it'll cost ya!</strong></p>
<p>PTZ adds an easy $100 to the standard fixed versions.&nbsp; If I wanted to also keep wireless, I'm looking at $250.&nbsp; Yipes.&nbsp; Enter Powerline Adaptors.&nbsp; I'd like to write a more detailed post on these suckers alone, but in a nutshell, Powerline Adaptors convert the electrical wiring in your home into network cabling.&nbsp; So anywhere you have an outlet, you have network at abour 85mbps.&nbsp; A fantastic compromise which put my camera investment back down to $160.</p>
<p><strong>Network Printing should be this easy...</strong></p>
<p>The <a href="http://www.amazon.com/Panasonic-BL-C111A-Network-Camera-Wired/dp/B000NVSPQW/ref=sr_1_1?ie=UTF8&amp;s=electronics&amp;qid=1254189227&amp;sr=1-1">BL-C111A</a>.&nbsp; Box to streaming video in less than 6 minutes. I timed it.&nbsp; Fine, I cheated a little.&nbsp; I only run Macs at home, so using the included setup CD wasn't going to fly.&nbsp; I found this fantastic tip that pointed me to the camera's default address (192.168.0.254).&nbsp;</p>
<blockquote>
<p><em>By &nbsp;&nbsp;&nbsp; Jefferson Harkins (FL, VI, NS) - See all my reviews<br />(REAL NAME)&nbsp;&nbsp; <br />Panasonic doesn't support it, but this camera, and all Panasonic Netcams, work fine with a Mac. Later versions of Safari, Netscape and Firefox allow you to view full motion video. No add-ons or active-x or other such nonsense is needed with. The video just works. <br /><br />As for setup, you will have to set this (and other Panasonic Netcams) up with a broswer, not with the automatic setup CD that works with windows. It's not difficult. Configure your Mac to use the built in Ethernet connection only, configured manually to IP address 192.168.0.5, subnet 255.255.255.0. Connect an ethernet cable between your Mac and the Camera (with a modern Mac any cable will do, with older ones you'll need a crossover cable.) Then access the camera at the address specified deep in the documentation (for this camera it's 192.168.0.253). The first time in you'll be asked to select a username and password. Do that and then you'll have full access to the setup utilities where you can change IP addrerss, DCHP, and other parameters. You can also setup the excellent free viewnetcam.com service and give your camera a real internet name. This is my third Panasonic Netcam, and I've been very pleased with them all.</em></p>
</blockquote>
<p>The web setup is comprehensive and intuitive.&nbsp; While the camera can stream RTSP, I've found enabling my router's UPnP setting and allowing the camera to auto-configure its port forwarding is a much better bet.</p>
<p>The web portal works like a charm on my iPhone, and supports display from upto 16 cameras.&nbsp; So I'm officially on the lookout for as many as these little Pannies as I can!&nbsp; If you're on the fence about picking up an easy, solid camera to keep an eye on your pets or kids or whatever, you cannot go wrong with the BL-C111A.&nbsp; Git one!</p>]]></description><wfw:commentRss>http://www.shaheeb.com/blog/rss-comments-entry-5330227.xml</wfw:commentRss></item></channel></rss>
