<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
    <title type="html">Caffeinated Code</title>
    <subtitle type="html">A blog about technology, art, life integration, cool tools, and caffeinated minds.</subtitle>
    <id>http://caffeinatedcode.com/wsup</id>
    <link rel="alternate" type="text/html" href="http://caffeinatedcode.com/wsup" />
            
            <updated>2012-01-18T16:23:02+00:00</updated>
    <generator uri="http://roller.apache.org" version="4.0.1 (20090102102238:dave)">Apache Roller Weblogger</generator>
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/CaffeinatedCode" /><feedburner:info uri="caffeinatedcode" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>CaffeinatedCode</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/stop_sopa_pipa</id>
        <title type="html">Stop SOPA/PIPA</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/Y2KpZPjA8YU/stop_sopa_pipa" />
        <published>2012-01-18T16:23:02+00:00</published>
        <updated>2012-01-18T16:23:02+00:00</updated> 
        <category term="/News" label="News" />
        <content type="html">&lt;iframe src="http://player.vimeo.com/video/31100268?byline=0&amp;amp;portrait=0" width="400" height="225" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen&gt;&lt;/iframe&gt;&lt;p&gt;&lt;a href="http://vimeo.com/31100268"&gt;PROTECT IP / SOPA Breaks The Internet&lt;/a&gt; from &lt;a href="http://vimeo.com/fightforthefuture"&gt;Fight for the Future&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/stop_sopa_pipa</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/gnu_screen_status_bar</id>
        <title type="html">Gnu Screen Status Bar</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/9zzWkzY-7YE/gnu_screen_status_bar" />
        <published>2011-12-20T21:45:16+00:00</published>
        <updated>2011-12-21T02:04:23+00:00</updated> 
        <category term="/#code" label="#code" />
        <content type="html">&lt;p&gt;This is a pretty cool way to set a status bar at the bottom of your unix &lt;a href="http://www.gnu.org/s/screen/" target="_blank"&gt;screen&lt;/a&gt; session. Add this to your screenrc file (one line):&lt;/p&gt;&lt;p&gt;&lt;font face="'courier new', courier, monospace"&gt;[dennis@box ~]% vim .screenrc&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="'courier new', courier, monospace"&gt;caption always &amp;quot;%{=b dw}:%{-b dw}:%{=b dk}[ %{-b dw}%{-b dg}$USER%{-b dw}@%{-b dg}%H %{=b dk}] [ %= %?%{-b dg}%-Lw%?%{+b dk}(%{+b dw}%n:%t%{+b dk})%?(%u)%?%{-b dw}%?%{-b dg}%+Lw%? %{=b dk}]%{-b dw}:%{+b dw}:&amp;quot;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/gnu_screen_status_bar</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/data_cake</id>
        <title type="html">Data Cake</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/XwEF2T3zG4c/data_cake" />
        <published>2011-07-25T15:22:59+00:00</published>
        <updated>2011-07-25T15:22:59+00:00</updated> 
        <category term="/#code" label="#code" />
        <content type="html">&lt;p&gt;A good metaphor from &lt;a href="http://epicgraphic.com/"&gt;epicgraphic.com&lt;/a&gt;:&lt;/p&gt;&lt;p&gt;&lt;a href="http://epicgraphic.com/data-cake/"&gt;&lt;img src="http://epicgraphic.com/wp-content/uploads/2011/06/data-cake-graphic.jpg" alt="data cake" width="550" height="521" /&gt;&lt;/a&gt;&lt;br /&gt;Image by &lt;a href="http://epicgraphic.com/"&gt;EpicGraphic&lt;/a&gt;&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/data_cake</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/happy_ipv6_day</id>
        <title type="html">Happy IPv6 Day</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/P-OYwKKvDvI/happy_ipv6_day" />
        <published>2011-06-08T17:07:31+00:00</published>
        <updated>2011-06-08T17:25:02+00:00</updated> 
        <category term="/News" label="News" />
        <content type="html">&lt;p&gt;If you call up a shell and do:&lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier,monospace"&gt;host -t AAAA caffeinatedcode.com&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier,monospace"&gt;&lt;/font&gt; or&lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier,monospace"&gt;dig +short AAAA caffeinatedcode.com&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier,monospace"&gt;&lt;/font&gt;you'll see that &lt;font face="courier new,courier,monospace"&gt;caffeinatedcode.com has IPv6 address 2607:f358:1a:1a:5000:1::&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.worldipv6day.org/"&gt;Happy IPv6 Day&lt;/a&gt;. Hopefully you're viewing this site over IPv6 with a supporting ISP. &lt;/p&gt;&lt;p&gt;&lt;!-- IPv6-test.com button BEGIN --&gt;
&lt;a href='http://ipv6-test.com/validate.php?url=referer'&gt;&lt;img src='http://ipv6-test.com/button-ipv6-big.png' alt='ipv6 ready' title='ipv6 ready' border='0' /&gt;&lt;/a&gt;
&lt;!-- IPv6-test.com button END --&gt;&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/happy_ipv6_day</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/programmer_problem_solving</id>
        <title type="html">Developer's Problem Solving</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/EIXW8729xJg/programmer_problem_solving" />
        <published>2011-02-28T16:57:00+00:00</published>
        <updated>2011-04-09T15:36:45+00:00</updated> 
        <category term="/#code" label="#code" />
        <content type="html">&lt;meta charset="utf-8" /&gt;&lt;p&gt;I found this funny, then sad.&lt;/p&gt;&lt;p&gt;2010 developer's problem solving sequence: 1. Google 2. Coworkers 3. #StackOverflow 4. RTFM. 5. Think&lt;/p&gt;&lt;div style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; background-color: rgb(255, 255, 255); "&gt;&lt;p&gt;&lt;a href="http://www.johndcook.com/blog/2010/10/22/programmer-problem-solving-sequence/" target="_blank"&gt;http://www.johndcook.com/blog/2010/10/22/programmer-problem-solving-sequence/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/programmer_problem_solving</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/my_development_toolbox_2010_edition</id>
        <title type="html">My Development Toolbox, 2010 Edition</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/WRwn8bx-z0A/my_development_toolbox_2010_edition" />
        <published>2011-01-15T21:32:35+00:00</published>
        <updated>2011-01-15T21:40:54+00:00</updated> 
        <category term="/#code" label="#code" />
        <content type="html">&lt;p&gt;After reading my friend &lt;a title="Intridea Blog" target="_blank" href="http://intridea.com/2011/1/12/my-web-development-toolbox-2010-edition"&gt;Jerry Cheung's post about his most used web development tools&lt;/a&gt;, I felt like I wanted to also share my &amp;quot;basic necessities of development&amp;quot;; but not just that-- I also want to share some regular system tools that I find essential to a desktop/portable computer. This doesn't reflect my workplace development environment, which is extremely locked down and provides little leeway for customization. These are personal favorite go-to apps that greatly ease my computing life. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img hspace="5" border="1" vspace="5" align="left" src="https://caffeinatedcode.com/wsup/cafe/resource/chrome.png" alt="Google Chrome" /&gt;&lt;a title="Google Chrome" href="http://www.google.com/chrome"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;a title="Google Chrome" href="http://www.google.com/chrome"&gt;Google Chrome&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Like Jerry, I switched primarily to Chrome in 2010, and it just felt like a better experience. I read the stats on memory usage, and saw that it doesn't offer any significant improvement over Firefox. It also lacks the many great add-ons that Mozilla has like &lt;a href="http://getfirebug.com/"&gt;Firebug&lt;/a&gt;, &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/live-http-headers/"&gt;Live HTTP headers&lt;/a&gt;, &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/add-n-edit-cookies/"&gt;Add N Edit Cookies&lt;/a&gt;, and &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/yslow/"&gt;YSlow&lt;/a&gt;. But I am so used to it I often get jarred into reality when I enter search terms into the URL bar of other browsers. &lt;br clear="all" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img hspace="5" border="1" vspace="5" align="left" alt="Adium Chat Client" src="https://caffeinatedcode.com/wsup/cafe/resource/Adium.png" /&gt;&lt;b&gt;&lt;a title="Adium IM" href="http://adium.im/"&gt;Adium&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;As far as multi-chat clients go, Adium is fairly standard for OSX. I like the OTR (Off-the-record) encryption for chatting with other Adium users, and the fact that it supports nearly every chat protocol. Skype is still the way to go for video, until Apple fixes FaceTime for Mac.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img hspace="5" border="1" vspace="5" align="left" alt="Eclipse Helios IDE" src="https://caffeinatedcode.com/wsup/cafe/resource/Eclipse.png" /&gt;&lt;a title="Eclipse IDE" href="http://eclipse.org"&gt;&lt;b&gt;Eclipse&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Nothing beats the coverage of things you can develop in Eclipse. For me, it's Java. And it's great that I don't have to change IDE's when I want to work in Google AppEngine, GWT, Android, and PyDev. There might be better faster IDEs out there, but Eclipse is definitely a bang-for-the-buck tool that I cannot do without. And it's a divide by zero value because Eclipse is free! &lt;br /&gt;&lt;/p&gt;&lt;img hspace="5" border="1" vspace="5" align="left" alt="VMWare Fusion" src="https://caffeinatedcode.com/wsup/cafe/resource/fusion.png" /&gt;&lt;a title="VMWare Fusion" href="http://www.vmware.com/products/fusion/"&gt;&lt;b&gt;VMWare Fusion&lt;/b&gt;&lt;/a&gt;&lt;p&gt;Inevitably, we need to test how Windows users view our applications. I also find it funny that Adobe Flash uses what appears to be less resources when run in a Windows VM on IE8, then it does when running natively on Firefox/Chrome.&lt;br clear="all" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img hspace="5" border="1" vspace="5" align="left" src="https://caffeinatedcode.com/wsup/cafe/resource/TextMate.png" alt="Macromates TextMate" /&gt;&lt;a href="http://macromates.com"&gt;&lt;b&gt;TextMate&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;quot;The Missing Text Editor for OSX&amp;quot;. I have to agree. Syntax highlighting for most every language is quite delightful to view (except, amusingly enough, for ASP.NET). This is where Ruby and django development happens (if not in vim).&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h3&gt;And now for some regular workstation utilities&lt;/h3&gt;&lt;p&gt;The above list is fairly innocuous, and even standard for most developers. They are part and parcel to almost all things programmatic that I do on my machine. Of course, there are at least a half dozen terminal windows open as well.&lt;/p&gt;&lt;p&gt;&lt;img hspace="5" border="1" vspace="5" align="left" src="https://caffeinatedcode.com/wsup/cafe/resource/iPulse.png" /&gt;&lt;a href="http://iconfactory.com/software/ipulse" title="Iconfactory iPulse"&gt;&lt;b&gt;iPulse&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;It is nice to see, at a glance, what your system is up to. I don't need a dedicated windowed application telling me all kinds of running graphs and alerts, I just need a little HAL-like widget in the corner of my screen that I can reference every once in a while if my system is slowing down.&lt;/p&gt;&lt;p&gt;&lt;img hspace="5" border="1" vspace="5" align="left" src="https://caffeinatedcode.com/wsup/cafe/resource/LittleSnitch.png" /&gt;&lt;a href="http://www.obdev.at/products/littlesnitch/index.html" title="LittleSnitch Network Monitor"&gt;&lt;b&gt;Little Snitch&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Little Snitch likes to tell me when some rogue program is trying to talk to the Internet. I use it as a line of defense against trojans or applications that I have not explicitly told to report to a server out there.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img hspace="5" border="1" vspace="5" align="left" src="https://caffeinatedcode.com/wsup/cafe/resource/Espionage.png" alt="TaoEffect Espionage" /&gt; &lt;a href="http://www.taoeffect.com/espionage/"&gt;&lt;b&gt;TaoEffect Espionage&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This application encrypts specific applications and folders. While it's much like encrypting .dmg image files, it takes the manual process out of it and is very convenient. I use it mostly to lock down applications that might be storing PII in places on the filesystem I am not aware.&lt;/p&gt;&lt;p&gt;&lt;img hspace="5" border="1" vspace="5" align="left" src="https://caffeinatedcode.com/wsup/cafe/resource/JungleDisk.png" /&gt;&lt;a href="https://www.jungledisk.com/"&gt;&lt;b&gt;JungleDisk&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You have rehearsed your backup/recovery strategy, right? JungleDisk is not the cheapest among the cloud backup solutions out there, but I like that I can use my own &lt;a title="Amazon Web Services" href="http://aws.amazon.com"&gt;AWS S3&lt;/a&gt; buckets; and that files are stored encrypted and immediately available if I need them. I just set it and forget it, and I know that my system isn't the only repository of my photos, documents, and code.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h3&gt; Don't obsess over the tool, just work&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;I know it's easy to debate this or that best tool for the job. Whole project portfolios have been lost in analysis paralysis. I am always checking out what others are using, but what drives it is getting to the task at hand: Creating cool stuff. &lt;/p&gt;&lt;p&gt;What are your favorite tools? Feel free to share in the comments.&lt;br /&gt;&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/my_development_toolbox_2010_edition</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/hofstadter_s_law</id>
        <title type="html">Hofstadter's Law</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/SX080A80WCw/hofstadter_s_law" />
        <published>2010-10-15T20:50:24+00:00</published>
        <updated>2010-10-15T21:00:07+00:00</updated> 
        <category term="/#code" label="#code" />
        <content type="html">&lt;blockquote&gt;&lt;p&gt;It always takes longer than you expect, even when you take into account Hofstadter's Law.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;–Douglas Hofstadter, &lt;i&gt;&lt;a href="http://www.amazon.com/gp/product/0465026567?ie=UTF8&amp;amp;tag=caffecode-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0465026567"&gt;Gödel, Escher, Bach: An Eternal Golden Braid&lt;/a&gt;&lt;img height="1" width="1" border="0" style="border: medium none ! important; margin: 0px ! important;" src="http://www.assoc-amazon.com/e/ir?t=caffecode-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0465026567" /&gt;
&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/hofstadter_s_law</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/securely_sending_your_repository_to</id>
        <title type="html">Securely Sending Your Repository to the Cloud</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/xiIZyzGSfM0/securely_sending_your_repository_to" />
        <published>2010-09-14T16:00:00+00:00</published>
        <updated>2010-09-14T23:13:04+00:00</updated> 
        <category term="/#code" label="#code" />
        <category term="cloud" scheme="http://roller.apache.org/ns/tags/" />
        <category term="aws" scheme="http://roller.apache.org/ns/tags/" />
        <category term="backup" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;
&lt;a href="http://www.backup-manager.org/" target="_blank" title="backup-manager command line utility"&gt;backup-manager&lt;/a&gt; is a great utility that supports delivery to Amazon S3.With this tool, it is possible to schedule jobs that do full or incremental backups and push them off to the cloud, even encrypted before they cross the wire. It reminds me a lot of duplicity, tarsnap, and desktop clients like JungleDisk, but is very easy to use and has little dependency on third parties.&lt;/p&gt;&lt;p&gt;Unfortunately, it does not work out-of-box, so to speak. First, set up AWS: Create a bucket in S3 dedicated for backup-manager.&lt;/p&gt;&lt;p&gt;Next, use apt to install backup-manager. It will run through some configurations, like what you'd like to backup (e.g. /etc, /home/git). Once it's installed, you can be stop here and begin backing up to local drive... Or, you can create the most resilient offsite backup ever. Install dependencies for connecting to S3. I'm using it to backup my git remote repositories on an Ubuntu server.&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;&lt;p&gt;sudo apt-get install libperl6-slurp-perl libxml2-dev&lt;br /&gt;sudo cpan XML::LibXML&lt;br /&gt;sudo cpan Net::Amazon::S3 &lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;p&gt;Once these are installed, all you need to do is follow the very detailed instructions in &lt;code&gt;/etc/backup-manager.conf&lt;/code&gt;: Find the line &lt;code&gt;export BM_UPLOAD_METHOD=&lt;/code&gt; and add &amp;quot;s3&amp;quot;, add your AWS bucket access key and secret key, and if you are paranoid (like most offsite backup administrators are), set:&lt;/p&gt;&lt;pre&gt;export BM_ENCRYPTION_METHOD=&amp;quot;gpg&amp;quot;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;and specify a key ID to encrypt to in BM_ENCRYPTION_RECIPIENT.&lt;/p&gt;&lt;p&gt;Try a test run, and make sure it saves the tarball where you specified and encrypted it. Set your cron for your favorite backup interval (I do daily backups), and voila! Secure redundant offsite backups that only a rogue asteroid or global thermonuclear war could take out.&lt;br /&gt;&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/securely_sending_your_repository_to</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/making_git_daemon_work_in</id>
        <title type="html">Making git-daemon Work in Ubuntu</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/v_DRxNjb9iI/making_git_daemon_work_in" />
        <published>2010-09-13T04:01:08+00:00</published>
        <updated>2010-09-13T05:34:17+00:00</updated> 
        <category term="/#code" label="#code" />
        <category term="git" scheme="http://roller.apache.org/ns/tags/" />
        <category term="gitosis" scheme="http://roller.apache.org/ns/tags/" />
        <category term="git-daemon" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ubuntu" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;&lt;a href="http://www.zazzle.com/got_git_tshirt-235796314535946797" target="_blank" title="Got git? tshirt"&gt;&lt;img border="0" align="right" hspace="5" vspace="0" src="http://caffeinatedcode.com/wsup/cafe/resource/got_git_tshirt-300x300.jpg" /&gt;&lt;/a&gt;It is surprising, considering all the talk I've been hearing about 
the wonders of git, how much one has to dig around the Internet to figure out &lt;i&gt;git-daemon&lt;/i&gt; 
(which comes with &lt;i&gt;git-core&lt;/i&gt;) on Ubuntu (the most popular free Linux 
server distribution). &lt;/p&gt;&lt;p&gt;What is &lt;i&gt;git-daemon&lt;/i&gt; you may ask? It's a way to make your own remote git repository server into one that allows read-only public access to your projects. It's how you share code with users who haven't given you ssh pubkeys and don't have commit rights. I won't get into how to make your own remote git repo server because that works good and fine through many online tutorials and blog entries much better presented than this one. &lt;b&gt;Public&lt;/b&gt; repo access is where I hit a snag, and I thought I'd share some of my discoveries here for those who are googling like mad to get package &lt;i&gt;git-daemon-run&lt;/i&gt; to work. &lt;/p&gt;&lt;p&gt;First,
 if you've searched around and seen people say &amp;quot;it's so easy, just 
install git-daemon-run&amp;quot;, and you followed their directions, then you may have already failed. Do an &lt;code&gt;apt-get purge git-daemon-run&lt;/code&gt;. For whatever reason (arcane discussion threads can tell 
you), simply trying to install apt git-daemon service on Ubuntu breaks. At least, it didn't work for me, and I stopped trying to figure out why a valid connection and url kept giving me &amp;quot;does not appear to be a git repository&amp;quot; in the logs.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;You'll basically have to write your own /etc/init.d/git-daemon startup script:&lt;/p&gt;&lt;pre&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:\&lt;br /&gt;/usr/bin:/usr/lib/git-core&lt;br /&gt;NAME=git-daemon&lt;br /&gt;PIDFILE=/var/run/$NAME.pid&lt;br /&gt;DESC=&amp;quot;git daemon&amp;quot;&lt;br /&gt;DAEMON=/usr/lib/git-core/git-daemon&lt;br /&gt;DAEMON_OPTS=&amp;quot;--base-path=/home/git/repositories --verbose \&lt;br /&gt;--syslog --detach --pid-file=$PIDFILE --user=git \&lt;br /&gt;--group=nogroup&amp;quot;&lt;br /&gt;&lt;br /&gt;test -x $DAEMON || exit 0&lt;br /&gt;&lt;br /&gt;[ -r /etc/default/git-daemon ] &amp;amp;&amp;amp; . /etc/default/git-daemon&lt;br /&gt;&lt;br /&gt;. /lib/lsb/init-functions&lt;br /&gt;&lt;br /&gt;start_git() {&lt;br /&gt;  start-stop-daemon --start --quiet --pidfile $PIDFILE \&lt;br /&gt;    --startas $DAEMON -- $DAEMON_OPTS&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;stop_git() {&lt;br /&gt;  start-stop-daemon --stop --quiet --pidfile $PIDFILE&lt;br /&gt;  rm -f $PIDFILE&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;status_git() {&lt;br /&gt;  start-stop-daemon --stop --test --quiet --pidfile $PIDFILE &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;case &amp;quot;$1&amp;quot; in&lt;br /&gt;  start)&lt;br /&gt;  log_begin_msg &amp;quot;Starting $DESC&amp;quot;&lt;br /&gt;  start_git&lt;br /&gt;  log_end_msg 0&lt;br /&gt;  ;;&lt;br /&gt;  stop)&lt;br /&gt;  log_begin_msg &amp;quot;Stopping $DESC&amp;quot;&lt;br /&gt;  stop_git&lt;br /&gt;  log_end_msg 0&lt;br /&gt;  ;;&lt;br /&gt;  status)&lt;br /&gt;  log_begin_msg &amp;quot;Testing $DESC: &amp;quot;&lt;br /&gt;  if status_git&lt;br /&gt;  then&lt;br /&gt;    log_success_msg &amp;quot;Running&amp;quot;&lt;br /&gt;    exit 0&lt;br /&gt;  else&lt;br /&gt;    log_failure_msg &amp;quot;Not running&amp;quot;&lt;br /&gt;    exit 1&lt;br /&gt;fi&lt;br /&gt;  ;;&lt;br /&gt;  restart|force-reload)&lt;br /&gt;  log_begin_msg &amp;quot;Restarting $DESC&amp;quot;&lt;br /&gt;  stop_git&lt;br /&gt;  sleep 1&lt;br /&gt;  start_git&lt;br /&gt;  log_end_msg 0&lt;br /&gt;  ;;&lt;br /&gt;  *)&lt;br /&gt;  echo &amp;quot;Usage: $0 {start|stop|restart|force-reload|status}&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;  exit 1&lt;br /&gt;  ;;&lt;br /&gt;esac&lt;br /&gt;&lt;br /&gt;exit 0&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;(Here's a &lt;a title="git-daemon init.d script" target="_blank" href="http://pastie.org/private/eoawnw1ey5een7jldcvolw"&gt;pastie link&lt;/a&gt;.) Make sure nothing's bound to default port 9418 (from your previous attempts at running git-daemon-run under runsvdir) and then change the script executable and run it:&lt;/p&gt;&lt;pre&gt;sudo chmod +x /etc/init.d/git-daemon&lt;br /&gt;sudo invoke-rc.d git-daemon start&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Since your Ubuntu server is locked down with ufw (you &lt;i&gt;are&lt;/i&gt; firewalling all but essential traffic, right?), don't forget to open the port:&lt;/p&gt;&lt;pre&gt;sudo ufw allow proto tcp from any to any port 9418&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Assuming you've already pushed a project to your remote server that is running &lt;i&gt;gitosis&lt;/i&gt;, and made it accessible with touched file &lt;code&gt;git-daemon-export-ok&lt;/code&gt;, And then try from your local machine to do an anonymous git:&lt;/p&gt;&lt;pre&gt;git clone git://yourserver.com/pubproj.git&lt;br /&gt;&lt;/pre&gt;&lt;p&gt; And it should check out your copy of the repo.&lt;br /&gt;&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/making_git_daemon_work_in</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/the_zen_of_python</id>
        <title type="html">The Zen of Python</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/7a-O4YwTGN8/the_zen_of_python" />
        <published>2010-02-16T23:57:32+00:00</published>
        <updated>2010-02-16T23:57:32+00:00</updated> 
        <category term="/#code" label="#code" />
        <category term="commandline" scheme="http://roller.apache.org/ns/tags/" />
        <category term="zen" scheme="http://roller.apache.org/ns/tags/" />
        <category term="zsh" scheme="http://roller.apache.org/ns/tags/" />
        <category term="python" scheme="http://roller.apache.org/ns/tags/" />
        <category term="shell" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;So good:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;font face="courier new,courier,monospace"&gt;% python&lt;br /&gt;Python 2.5.4 (r254:67916, Nov 27 2009, 18:35:00) &lt;br /&gt;[GCC 4.2.1 20070719&amp;nbsp; [FreeBSD]] on freebsd8&lt;br /&gt;Type &amp;quot;help&amp;quot;, &amp;quot;copyright&amp;quot;, &amp;quot;credits&amp;quot; or &amp;quot;license&amp;quot; for more information.&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; import this&lt;br /&gt;The Zen of Python, by Tim Peters&lt;br /&gt;&lt;br /&gt;Beautiful is better than ugly.&lt;br /&gt;Explicit is better than implicit.&lt;br /&gt;Simple is better than complex.&lt;br /&gt;Complex is better than complicated.&lt;br /&gt;Flat is better than nested.&lt;br /&gt;Sparse is better than dense.&lt;br /&gt;Readability counts.&lt;br /&gt;Special cases aren't special enough to break the rules.&lt;br /&gt;Although practicality beats purity.&lt;br /&gt;Errors should never pass silently.&lt;br /&gt;Unless explicitly silenced.&lt;br /&gt;In the face of ambiguity, refuse the temptation to guess.&lt;br /&gt;There should be one-- and preferably only one --obvious way to do it.&lt;br /&gt;Although that way may not be obvious at first unless you're Dutch.&lt;br /&gt;Now is better than never.&lt;br /&gt;Although never is often better than *right* now.&lt;br /&gt;If the implementation is hard to explain, it's a bad idea.&lt;br /&gt;If the implementation is easy to explain, it may be a good idea.&lt;br /&gt;Namespaces are one honking great idea -- let's do more of those!&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;br /&gt;&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/the_zen_of_python</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/tarsnap_online_backups_for_the</id>
        <title type="html">Online Backups for the Truly Paranoid</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/pxqJPUUyGH0/tarsnap_online_backups_for_the" />
        <published>2009-11-29T00:54:12+00:00</published>
        <updated>2009-11-29T05:56:49+00:00</updated> 
        <category term="/#code" label="#code" />
        <content type="html">&lt;p&gt;
&lt;img vspace="5" hspace="5" border="0" align="left" alt="If only there were a real Backup key on computers." src="http://caffeinatedcode.com/wsup/cafe/resource/BackupKey.jpg" /&gt;I like paranoia in design. Well, I take that back. I don't like it when it inhibits programming experimentation and creativity, but I do like it when it comes to services, and most especially when it comes to backup.&lt;/p&gt;&lt;p&gt;I wanted to write about my experiences with consumer offsite backup services (e.g. Mozy, Carbonite, Jungle Disk) as well as the plain practice of having a redundant storage device onsite. But all that was side-tracked when I recently needed to quickly backup my servers, and discovered &lt;a title="Tarsnap" target="_blank" href="http://www.tarsnap.com"&gt;tarsnap&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Tarsnap was created by &lt;a href="http://www.daemonology.net/" target="_blank"&gt;Dr. Colin Percival&lt;/a&gt;, the FreeBSD Security Officer. He also worked on the utilities &lt;a href="http://www.freebsd.org/doc/en/books/handbook/portsnap.html" target="_blank"&gt;portsnap&lt;/a&gt; and &lt;a href="http://www.daemonology.net/freebsd-update/" target="_blank"&gt;freebsd-update&lt;/a&gt;. All of these tools are run in the command-line, and greatly simplify the maintenance (and now backup) of unix systems.&lt;/p&gt;&lt;p&gt;The things I like about tarsnap are encompassed in its listed design features:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;It encrypts information before sending it to the &lt;a target="_blank" href="http://aws.amazon.com/s3/"&gt;Amazon Cloud (AWS)&lt;/a&gt;, so if a person somehow gets access to the cloud servers, the information is unreadable. Even metadata is unreadable (filenames, sizes, names of the backups, etc.).&lt;/li&gt;&lt;li&gt;It's easy to learn and use, and quite scriptable.&lt;/li&gt;&lt;li&gt;It breaks your backup into variable-length blocks, and keeps track of these, so if another archive contains the same data, that same block does not get re-uploaded. As long as &lt;i&gt;any&lt;/i&gt; backup references that piece of info, it'll remain stored and not be deleted. It's like storing incremental changes, but so much cooler.&lt;/li&gt;&lt;li&gt;It's quite cheap. Especially if used for server backups, which typically won't take terabytes of space. 300 picodollars per byte transferred ($0.30/GB), and 300 picodollars per byte per month stored (again, $0.30/GB-month).&lt;/li&gt;&lt;/ul&gt;Also, other than &amp;quot;&lt;a target="_blank" href="http://www.tarsnap.com/design.html"&gt;security, flexibility, efficiency, utility&lt;/a&gt;&amp;quot;, I personally liked that:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The client code is open to peer review.
&lt;/li&gt;&lt;li&gt;It uses AWS! Geo-replication concerns are no longer a problem.&lt;/li&gt;&lt;li&gt;It runs on almost any OS, yes, even Cygwin.&lt;/li&gt;&lt;li&gt;You can secure the backup keys so that, if a person breaks into your system and starts deleting everything, they cannot also read or delete your backed up data. Even the backup key security is fascinating!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Not to mention the author was surprisingly responsive via email to some questions I had about the web-based reporting and command-line options.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The tool has basically addressed almost every concern I've had about backups. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Most early &amp;quot;backup service&amp;quot; providers would simply give you space at a cost, but had very little to say about their data loss/breach liability or who had access to their systems. Others would claim their service is &amp;quot;secure using 128-bit encryption&amp;quot; but that only meant they installed an SSL cert for transfer; backups were still unencrypted on disk. Then there are those who tout The Cloud, and how much safer it is, without a hint about data geo-redundancy (or if they have more than one data center).&lt;/p&gt;&lt;p&gt;But with tarsnap, I just install it, create a key, split the keys to read, write, and delete keys (encrypting the read and delete keys), and with a command I'm securely backing up entire directories. Online. In the Amazon™ cloud.&lt;/p&gt;&lt;p&gt;&lt;code&gt;tarsnap --keyfile /usr/tarsnap.key -c 
-f backup-2009-11-27 /usr/home /usr/local/etc /etc&lt;/code&gt; &lt;/p&gt;&lt;p&gt;How much easier could that be? And if your backups aren't gigabytes large, the small pre-payment of the online service could last a very long time.&lt;/p&gt;&lt;p&gt;My only concern is that the tarsnap server is, as of this time, a single point of failure. We have no option of having our own tarsnap interface to our own personal AWS accounts. So 1) we have to trust that it is indeed being sent to AWS by Dr. Percival (is that too paranoid?), and 2) we have to hope that the tarsnap server is fault tolerant and can be restored quickly. Granted, this problem exists for any online backup service unless you write your own. We depend on third-party uptime for any service, so it boils down to who's thought it through, and has addressed our backup concerns.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;For now, I am glad &amp;quot;production&amp;quot; isn't the only place some important data lives. I am glad to not have to manually tar.gz files and move them to my workstation to be picked up by my desktop backup scheduler. With tarsnap, I was able to upgrade from FreeBSD 7.2 to 8.0-RELEASE and not worry (too much) about having to rebuild the server in case all failed. (I didn't need to.) &lt;/p&gt;&lt;p&gt;Online backup for the truly paranoid. Who backs stuff up who isn't paranoid?&lt;br /&gt;&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/tarsnap_online_backups_for_the</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/sound_engineering_awesomeness</id>
        <title type="html">Sound Engineering Awesomeness</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/rzlIEsnbKCc/sound_engineering_awesomeness" />
        <published>2009-11-13T00:15:54+00:00</published>
        <updated>2009-11-13T00:19:55+00:00</updated> 
        <category term="/News" label="News" />
        <content type="html">&lt;p&gt;&lt;object width="400" height="267"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2539741&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed width="400" height="267" src="http://vimeo.com/moogaloop.swf?clip_id=2539741&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" /&gt;&lt;/object&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://vimeo.com/2539741"&gt;Stand By Me | Playing For Change | Song Around The World&lt;/a&gt; from &lt;a href="http://vimeo.com/concord"&gt;Concord Music Group&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Time for a different kind of engineering. Not software, but beautifully constructed nonetheless. At first I didn't see what was going on with this video. But then I realized it's from worldwide asynchronous sources.
&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/sound_engineering_awesomeness</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/the_filesystem_encryption_balance</id>
        <title type="html">The OSX Filesystem Encryption Balance</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/Ot6DKuaE4i0/the_filesystem_encryption_balance" />
        <published>2009-11-10T00:54:50+00:00</published>
        <updated>2009-11-10T00:57:00+00:00</updated> 
        <category term="/#code" label="#code" />
        <content type="html">&lt;p&gt;Lots of security-conscious users say we should use &lt;i&gt;whole disk encryption&lt;/i&gt;. It prevents files from being read when you're not logged in. This is good protection if your computer is lost or stolen. If not used, tools like &lt;a title="Knoppix Live Linux CD" target="_blank" href="http://www.knoppix.org/"&gt;Knoppix&lt;/a&gt;, &lt;a title="Slax Pocket Operating System" target="_blank" href="http://www.slax.org/"&gt;Slax&lt;/a&gt;, or &lt;a title="Damn Small Linux" target="_blank" href="http://www.damnsmalllinux.org/"&gt;DamnSmallLinux&lt;/a&gt; can easily be used to boot a fully functioning operating system (from, say, a CD or USB key) and view your files' contents.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img width="300" vspace="5" hspace="5" height="199" border="1" align="left" alt="Close-up image on hard drive platters" src="http://caffeinatedcode.com/wsup/cafe/resource/HD_closeup.jpg" /&gt;Even deleted files are not truly deleted. They are not listed but also not fully removed from the disk. Typically, they exist without a file pointer to their location, so an undelete program or disk scanner can easily recover and/or view them.&amp;nbsp; The only remedy to this is to &amp;quot;wipe&amp;quot; them, and people don't typically expend the extra steps to perform a &lt;a title="About data remanence" target="_blank" href="http://en.wikipedia.org/wiki/Data_remanence"&gt;file wipe&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;So your hard disk in its default state presents problems. Aside from oft-cited &lt;a title="CNN article on laptop searches" target="_blank" href="http://www.cnn.com/2008/TRAVEL/02/11/laptop.searches/index.html"&gt;airport laptop searches&lt;/a&gt;, it's just not cool to have your files ready to be read by almost anyone with a USB key or bootable CD. Hence the push for encrypting everything on the &lt;i&gt;whole disk&lt;/i&gt;. This is good for a few reasons:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;It's ubiquitous: You don't have to think about it and the drive is protected.&lt;/li&gt;&lt;li&gt;There's little performance hit for doing this.&lt;/li&gt;&lt;li&gt;It's free and easy to configure.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The default state of files is secure, a.k.a. fail-secure.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;But this is a bit of overkill, in my opinion. If you also like things like versioning, snapshots, and incremental backup (e.g. Apple's Time Machine), whole-disk encryption forces a choice: Do you want smart automatic backups? Or do you want to backup your entire disk volume (BIG!) each and every time?&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I puzzled over this for a while, sticking with whole-disk encryption while not having a safe backup somewhere. I figured privacy and security were more important than the risks of data loss. (Huh?) &lt;/p&gt;&lt;p&gt;But with a new computer, I realized that automated unattended backups gave great peace of mind. How could I have incremental, optimized, regular scheduled backups while having some form of data privacy and security? One option was to create various encrypted volumes using Disk Utility or Truecrypt. But this was cumbersome, manual (needing me to remember to mount and unmount a volume all the time), and still didn't address my backup concerns.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I also realized that every single file on the computer does not need to be encrypted. Many files, like application libraries, everyday documents, publicly shareable media, etc. do not need high encryption. Just don't mix tax forms and healthcare PDFs with the latest lolcats jpegs saved to the Documents folder.&lt;/p&gt;&lt;p&gt;It was then that I happened upon &lt;a title="Tao Effect Espionage" target="_blank" href="http://www.taoeffect.com/espionage/"&gt;Tao Effect Espionage&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.taoeffect.com/espionage/" target="_blank"&gt;&lt;img vspace="0" hspace="0" border="0" align="baseline" alt="Espionage screenshot" src="http://caffeinatedcode.com/wsup/cafe/resource/Espionage.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.taoeffect.com/espionage/" target="_blank"&gt;Espionage&lt;/a&gt; is a customizable encryption tool that can secure areas you choose. It takes advantage of the sparsebundle and sparseimage functionality of OSX, but automates the process so you don't have to think about encryption. This forces you to keep your files organized, protect sensitive ones, and keep the rest of your system and non-sensitive files available for simple backups. Each time you want to access an important doc, a prompt gets your authorization, and you are in. Otherwise, it's fail-secure.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;It even works on the Application-level. So let's say you want to password-protect and encrypt your email. This is not trivial in OSX. But with Espionage you can configure your Mail app to be protected, and it will unlock and lock the mail directories whenever the app is opened or closed!&lt;/p&gt;&lt;p&gt;Truth-in-advertising: There's &lt;a title="Forum topic on Time Machine and Espionage" target="_blank" href="http://www.taoeffect.com/forums/viewtopic.php?f=3&amp;amp;t=3"&gt;a little trickery that needs to happen&lt;/a&gt; with Espionage and Time Machine. Espionage has its own backup functionality, and it's best to ignore protected directories in the Time Machine preferences. But I believe even with this slight config, the application is a great balance between keeping files secure, and keeping things simple, available, and smartly backed up.&lt;/p&gt;&lt;p&gt;In so many words of this article, it's easy to resist and do nothing. But don't do nothing! Keep your files both secure and backed up! You no longer have to choose one or the other; use &lt;a href="http://www.taoeffect.com/espionage/" target="_blank"&gt;Tao Effect Espionage&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/the_filesystem_encryption_balance</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/we_drove_surveillance_into_ubiquity</id>
        <title type="html">We Drove Surveillance into Ubiquity</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/UgwX2KXORcE/we_drove_surveillance_into_ubiquity" />
        <published>2009-10-27T17:45:16+00:00</published>
        <updated>2009-10-27T18:02:40+00:00</updated> 
        <category term="/News" label="News" />
        <content type="html">&lt;p&gt;Let the record show that Big Brother was established by us, the mobile camera-wielding public. In response to all the would-be police brutality videos captured by anyone with a phone, San Jose has started their own CYA program to document and record all interactions using &lt;a title="Taser AXON video technology." target="_blank" href="http://www.taser.com/products/law/Pages/TASERAXON.aspx"&gt;TASER AXON&lt;/a&gt; video recording technology.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;When we wonder how we got to a world where someone's always watching, blame ourselves. Think about it. How does someone monitoring you change your true behavior? Is this for the better? Welcome &lt;a href="http://www.amazon.com/gp/product/0452284236?ie=UTF8&amp;amp;tag=caffecode-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0452284236"&gt;1984&lt;/a&gt;&lt;img border="0" height="1" width="1" src="http://www.assoc-amazon.com/e/ir?t=caffecode-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0452284236" style="border: medium none  ! important; margin: 0px ! important;" /&gt;.&lt;/p&gt;
&lt;object height="280" width="320" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" name="cfa4cb6on" id="cfa4cb6oi"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;param value="http://p.castfire.com/oglmm/video/181873/181873_2009-10-26-233050.flv" name="movie" /&gt;&lt;param value="true" name="allowFullScreen" /&gt;&lt;param value="always" name="allowScriptAccess" /&gt;&lt;embed height="280" width="320" allowscriptaccess="always" allowfullscreen="true" type="application/x-shockwave-flash" name="cfa4cb6en" id="cfa4cb6ei" src="http://p.castfire.com/oglmm/video/181873/181873_2009-10-26-233050.flv" /&gt;&lt;br /&gt;&lt;/object&gt;&lt;p&gt;&lt;br /&gt;If you cannot see embedded video, download it here: &lt;a href="http://serve.castfire.com/video/181873/181873_2009-10-26-233050.mp4"&gt;http://serve.castfire.com/video/181873/181873_2009-10-26-233050.mp4&lt;/a&gt;&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/we_drove_surveillance_into_ubiquity</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/counter_culture_corporate_culture_netflix</id>
        <title type="html">Counter-Culture Corporate Culture: Netflix</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/GYj6SUiBYFM/counter_culture_corporate_culture_netflix" />
        <published>2009-10-23T18:09:18+00:00</published>
        <updated>2009-10-23T18:34:13+00:00</updated> 
        <category term="/#code" label="#code" />
        <content type="html">&lt;p&gt;This is supposedly an internal Netflix memo, but when posted on Slideshare it was &lt;a title="HackingNetflix" target="_blank" href="http://www.hackingnetflix.com/2009/08/netflix-posted-a-128-page-internal-presentation-on-the-company-culturereference-guide-on-our-freedom-responsibility-culture.html"&gt;discovered&lt;/a&gt; and spread virally. As you read through it, you will feel this coolness vortex pulling at you, making you wonder if it could ever be possible to have such a culture where you currently work. Such freedom, respect, fostering of innovation and excellence.&lt;/p&gt;&lt;p&gt;I especially like the sections on being &amp;quot;highly aligned and loosely coupled,&amp;quot; which goes against anything I've witnessed before. &lt;br /&gt; &lt;br /&gt;&lt;/p&gt;&lt;div id="__ss_1798664" style="width: 425px; text-align: left;"&gt;&lt;object width="425" height="355" style="margin: 0px;"&gt;&lt;param value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=culture9-090801103430-phpapp02&amp;amp;rel=0&amp;amp;stripped_title=culture-1798664" name="movie" /&gt;&lt;param value="true" name="allowFullScreen" /&gt;&lt;param value="always" name="allowScriptAccess" /&gt;&lt;embed width="425" height="355" allowfullscreen="true" allowscriptaccess="always" type="application/x-shockwave-flash" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=culture9-090801103430-phpapp02&amp;amp;rel=0&amp;amp;stripped_title=culture-1798664" /&gt;&lt;/object&gt;&lt;div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;"&gt;&lt;p&gt;View more &lt;a href="http://www.slideshare.net/" style="text-decoration: underline;"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/reed2001" style="text-decoration: underline;"&gt;Reed Hastings&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/counter_culture_corporate_culture_netflix</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/outspokes_launches_at_techcrunch_50</id>
        <title type="html">Outspokes Launches, Demo's at TechCrunch 50</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/6TfLfHEIlgM/outspokes_launches_at_techcrunch_50" />
        <published>2009-09-16T20:36:51+00:00</published>
        <updated>2009-09-17T23:23:11+00:00</updated> 
        <category term="/News" label="News" />
        <category term="launch" scheme="http://roller.apache.org/ns/tags/" />
        <category term="tc50" scheme="http://roller.apache.org/ns/tags/" />
        <category term="outspokes" scheme="http://roller.apache.org/ns/tags/" />
        <category term="startup" scheme="http://roller.apache.org/ns/tags/" />
        <category term="techcrunch" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;Congratulations to &lt;a title="Outspokes" target="_blank" href="http://outspokes.com"&gt;Outspokes&lt;/a&gt; for a successful launch on Sept 15, and the cool demos in the Demo Pit of TechCrunch 50.
&lt;/p&gt;&lt;p&gt;For those not familiar, let me quote their site:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;With Outspokes, you instantly gather the feedback of your entire team
by doing nothing more than sending them a link to your site. No more
arduous screenshot annotation or endless email ping-pong. Empower your
team to express their feedback about your website the easy way: on the
site itself.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;
&lt;a href="http://www.flickr.com/photos/dailylifeofmojo/3922885095/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2504/3922885095_ef363180bd_m.jpg" style="border: 2px solid rgb(0, 0, 0);" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;
&lt;a href="http://www.flickr.com/photos/dailylifeofmojo/3922885095/"&gt;Outspokes.com in the TC50 Demo Pit&lt;/a&gt;
&lt;br /&gt;
&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;I've beta tested it, and thought the web application service quite impressive. The ability to collaboratively change elements and annotate while looking at the live site is something I've never considered and yet so common sense. And, just like any Google widget, it takes only a line of html code to enable it for almost any website. At TechCrunch 50, I overheard one attendee say, &amp;quot;When working with webdesigners on my site, I'd have to take a screen shot, copy that into a Powerpoint, then add highlights and comments for what I'd want changed.&amp;quot; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;With Outspokes, you can directly receive site feedback from QA, beta-testers, developers, designers, and even marketing without burdening anyone with screen shots or mockups. Change the look-and-feel, report bugs, modify text formatting, add comments, and even agree or disagree with other users' feedback.&lt;/p&gt;&lt;p&gt;So why do I post about it? I once worked with one of the founders, &lt;a title="Jerry Cheung's Portfolio site" target="_blank" href="http://whatcodecraves.com"&gt;Jerry Cheung&lt;/a&gt;, at UC Berkeley (I hope to say that often in the future when he's famous). I am amazed that co-founder &lt;a href="http://www.duskdesigns.com/" target="_blank" title="Arthur Klepchukov's portfolio site"&gt;Arthur Klepchukov's&lt;/a&gt; CS 169 software project has taken off into its own company. I wish them success in their new startup, and encourage you to incorporate Outspokes if you have any kind of website.&lt;br /&gt;&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/outspokes_launches_at_techcrunch_50</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/jsr_299_contexts_and_dependency</id>
        <title type="html">JSR 299: Contexts and Dependency Injection &amp; JSF 2.0</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/ofo_kAjqiKE/jsr_299_contexts_and_dependency" />
        <published>2009-09-04T04:45:50+00:00</published>
        <updated>2009-09-10T15:28:40+00:00</updated> 
        <category term="/#code" label="#code" />
        <category term="svwebjug" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jug" scheme="http://roller.apache.org/ns/tags/" />
        <category term="javausersgroup" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;
On August 19, the &lt;a href="http://www.meetup.com/sv-web-jug/" target="_blank" title="SV Web JUG"&gt;Silicon Valley Web Java User Group&lt;/a&gt; had the chance to hear &lt;a title="Dan Allen" target="_blank" href="http://relation.to/Bloggers/Dan"&gt;Dan Allen&lt;/a&gt; (author of &lt;a href="http://www.amazon.com/gp/product/1933988401?ie=UTF8&amp;amp;tag=caffecode-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1933988401"&gt;Seam in Action&lt;/a&gt;&lt;img height="1" width="1" border="0" src="http://www.assoc-amazon.com/e/ir?t=caffecode-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=1933988401" style="border: medium none  ! important; margin: 0px ! important;" /&gt;) talk about JSR 299: Contexts and Dependency Injection (CDI), and what's new in JavaServer Faces 2.0. Dan gave me permission to post the audio recording of this fascinating Java tech talk. This is &lt;a title="Spec Lead Gavin King submits Proposed Final Draft of JSR 299" target="_blank" href="http://relation.to/Bloggers/JSR299ProposedFinalDraftSubmitted"&gt;quite a big change to JEE 6&lt;/a&gt;, and I can't wait till it's supported across the major Java containers. &lt;/p&gt;&lt;p&gt;There was so much new to talk about that we ran out of time. Hopefully I can also track down the slides so some of the code examples can be followed.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="Dan Allen, part 1" href="http://mojado.com/audio/01-JSR_299_Contexts_and_Dependency_Injection_for_Java_EE.MP3"&gt;JSR 299: Contexts and Dependency Injection for Java EE&lt;/a&gt; (90MB, 1 hour 34:35 minutes).&lt;/li&gt;&lt;li&gt;&lt;a title="Dan Allen, part 2" href="http://mojado.com/audio/02-New_Developments_in_JSF_2_0.MP3"&gt;JSF 2.0: What's new in JavaServer Faces 2.0&lt;/a&gt; (15.9MB, 16:34 minutes).&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;b&gt;Update Sept 10, 2009: &lt;/b&gt;Here are links to the slides so you can follow along.&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://seamframework.org/service/File/94931" target="_blank" title="Contexts and Dependency Injection slides"&gt;CDI&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://seamframework.org/service/File/94930" target="_blank" title="JSF 2.0 slides from seamframework.org"&gt;JSF 2.0&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Thanks to &lt;a title="Googleplex" target="_blank" href="http://maps.google.com/maps?cid=13883056401095221724&amp;amp;gl=us&amp;amp;hl=en"&gt;Google headquarters&lt;/a&gt; for a great venue, and to the SV Web JUG for organizing the event.&lt;br /&gt;&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/jsr_299_contexts_and_dependency</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/are_you_a_language_monk</id>
        <title type="html">Are You a Language Monk?</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/drYotWVyEME/are_you_a_language_monk" />
        <published>2009-09-01T17:47:55+00:00</published>
        <updated>2009-09-01T18:05:44+00:00</updated> 
        <category term="/#code" label="#code" />
        <content type="html">&lt;p&gt;This title came from my misreading of &lt;a href="http://blogs.tedneward.com/2009/08/15/Are+You+A+Language+Wonk+Do+You+Want+To+Be.aspx" target="_blank"&gt;Are you a language wonk?&lt;/a&gt;, a blog article about building a language. Sounds really cool, but I currently have no interest in creating my own language. The topic brought to mind a discussion I had with &lt;a title="Minh H. Tran" target="_blank" href="http://minht.me"&gt;a very sharp former Cal student&lt;/a&gt;. He stated to all the newb programmers in the team, &amp;quot;Good programmers are language agnostic.&amp;quot;&lt;/p&gt;&lt;p&gt;This got me to thinking about all the different religious battles I've witnessed (and been in) about what the best programming language is for the task at hand. Without delving into heuristics, bias, and conventions, here are a few things I think support mht's claim:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;It is likely much easier for younger minds to switch-task and switch-context often.&lt;/li&gt;&lt;li&gt;Having the ABC's in place, i.e. the theory (versus learning only by projects that require a certain job to be done) helps one be more platform-agnostic.&lt;/li&gt;&lt;li&gt;We will, under stress or deadline, always resort to the path of least resistance. In programming, this is the path that we know best, the one where we are most practiced. (This is why it's good to regularly practice outside one's own comfort zone.)&lt;/li&gt;&lt;li&gt;Learning on the job (also known as &amp;quot;experience&amp;quot;) is not a substitute for personal interest and personal development in computer science.&lt;/li&gt;&lt;li&gt;&lt;a href="http://celestinechua.com/blog/2009/08/10000-hours-to-develop-talent/" target="_blank" title="10,000 Hours To Develop Talent"&gt;Mastery takes 10,000 hours&lt;/a&gt;. But master one language, and there is collateral benefit to other languages.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Writing lots of code is the only way to mastery.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;So think about your job. Are you tied to a single way of thinking/doing? Do you have strong opinions of what is &amp;quot;the best&amp;quot; without having fully understood the alternative languages? These are signs you are still on a monk's path to mastery, and would benefit from some agnosticism.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/are_you_a_language_monk</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/way_to_stifle_creativity_apple</id>
        <title type="html">Way to Stifle Creativity, Apple</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/yfZQuZGBUwY/way_to_stifle_creativity_apple" />
        <published>2009-07-28T19:07:51+00:00</published>
        <updated>2009-09-04T07:10:35+00:00</updated> 
        <category term="/#code" label="#code" />
        <content type="html">&lt;p&gt;Recent rejection of the official Google Voice application from the iTunes App Store has prompted me to write something that's been grumbling in the depths of my soul. (Well, not quite that deep, but still, grumbling.)&lt;/p&gt;&lt;p&gt; &lt;img vspace="0" hspace="5" border="0" align="right" alt="Phones, Unite!" src="http://caffeinatedcode.com/wsup/cafe/resource/phonesunite.jpg" /&gt;Google has, once again in their spirit of giving paradigm-shifting technology, given away for free a telephony system called Google Voice. Basically it's a service that consolidates all your varying numbers into a single number. Not a new idea, but with things like voicemail transcription, and the long-wanted but hardly ever implemented phone blocking/screening features, I must say it's far and away one of the most useful free telephony services ever to be given to the eager public.&lt;/p&gt;&lt;p&gt;Android (an open mobile operating system created by Google) developers and Blackberry developers have already released applications to utilize this great system natively on supporting phones. But the question always comes up, &amp;quot;When is the iPhone app going to be ready?&amp;quot;&lt;/p&gt;&lt;p&gt;This is a sticking point for me. A thorn. Yes, the iPhone is unbelievably amazing. Usability of the OS alone makes it stand out as the ultimate take-everywhere device. If I am not at my computer, I am probably holding my iPhone if not thinking about holding it. It is undeniably a market leader, the standard by which all are compared.&lt;/p&gt;&lt;p&gt;But there's the despised side to Apple. It's their controlling side. They've played it well by having super-secret product development, generating buzz and causing a frenzied cult following for anything latest-greatest to come out of their Chinese factories. They've kept their design elements uniform, and their development environments very well-integrated; they've controlled their features by constantly simplifying, doing away with the superfluous (what they deem superfluous) and forcing users to realize that they don't need things like LPT ports, PCMCIA slots, and Firewire 400. And so with these undemocratic decisions, still keeping a pulse on usability design somehow, they've managed to provide us with products we admire and covet, even to the point of forsaking features we used to really like.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;This, of course, has nothing to do with Google Voice, which merely hopes to give you free calls and better services than AT&amp;amp;T, but Apple has pulled the plug on any apps that use this service, citing duplicated features, and arbitrarily rejecting something we all could really (and do want to) use on our take-everywhere device.&lt;/p&gt;&lt;p&gt;It's really time for Nokia and Android to step up. I wanted to write a more comparative post about the pros and cons of developing on each platform. Having hammered out code in each environment, I've come to appreciate and dislike some things about each. But with this latest F-U from Apple, I'm just going to get to the gist of competitors:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Android needs to fix its garbage collection so the performance doesn't suck so much.&lt;/li&gt;&lt;li&gt;Android needs a UI guru.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I mean, it's a great system. A pleasure to write in (albeit a bit legacy Java-like), and best of all, it's so free! And I don't mean let's go download it for free, free-- but free as in code what you like free. With some terms-of-service exceptions Android development involves no App Store bonehead who is going to axe your months-of-labor baby because it competes with their existing official app or irks the carrier. As for UI, let's face it. If I'm dragging a tab with my finger, and it freezes for a half-second, then jumps and makes me select something else accidentally, that's just plain annoying. Annoying to the point of not wanting to use the phone anymore. It's that much of a deal-breaker.&lt;/p&gt;&lt;p&gt;So no matter how great the OS is, if it doesn't perform in a usable way, it will ultimately be set down in favor of what Just Works™.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Nokia needs to quit meandering in J2ME and linux wannabe obscurity (and S60 inaccessibility), set out some&amp;nbsp; welcoming development tools and, once again, design awesome usability.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Thing about Nokia S60 (and Win) development is you have no real crazed following of &amp;quot;for fun&amp;quot; side-project-turned-startup developers. I try to find programming resources in these areas, and they don't hold up a candle to the deluge of iPhone-- and now Android-- dev resources. User groups are easy to find in those other non-Nokia platforms, too. &lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Nokia and Blackberry’s hardware and carrier focus has thus far led to
lack of investment/interest/capability in software SDK design &amp;amp;
developer support.&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" href="http://venturebeat.com/2009/04/12/mobile-app-developers-fire-back-nokia-sucks/"&gt;Diesel McFadden&lt;/a&gt; in response to &lt;a href="http://games.venturebeat.com/2009/04/11/iphone-devotion-blinds-silicon-valley-app-developers/" target="_blank" title="iPhone devotion blinds Silicon Valley app developers"&gt;an article by Christine Gonzalez &lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Inaccessibility, and developer pain, are not a ways to build a kickass mobile OS. I'd really like to see this major mobile player kick developer-friendliness up a few notches and quit being so arcane. &lt;/p&gt;&lt;p&gt;The more Apple does stuff like this, the more it is a loud call, a superb opportunity, for other competing OS providers to come up with a superior user experience and draw more into their fold. What better way to create a following than to have thousands of determined coders evangelizing for the greatness and intuitive ease-of-use of your products.&lt;/p&gt;&lt;p&gt;Apple can also see this as an opportunity to lighten up, and to let people have what they want even if it doesn't agree with Apple superiority. But I have a feeling that might be asking too much.&lt;br /&gt;&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/way_to_stifle_creativity_apple</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/failure_and_building_or_destroying</id>
        <title type="html">Failure, and Building (or Destroying) Loyalty</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/-ljTfWqQUYY/failure_and_building_or_destroying" />
        <published>2009-07-22T15:06:47+00:00</published>
        <updated>2009-07-22T15:59:58+00:00</updated> 
        <category term="/#code" label="#code" />
        <content type="html">&lt;p&gt;&lt;img vspace="0" hspace="5" border="0" align="right" alt="Customer Service Rep" src="http://caffeinatedcode.com/wsup/cafe/resource/CustSvcPerturbed.jpg" /&gt;As programmers or service providers, our lifeblood is our customers. Well, duh! you may say. Yet many a (young) programmer would like to think they could just code away at their desks creating elegant and properly formatted perfection, avoiding &amp;quot;useless meetings,&amp;quot; and being largely abstinent of the business side of things.&lt;/p&gt;&lt;p&gt;But what happens when things fail? Fail massively? What happens when our front-line support staff are forced to face the music as dozens, if not thousands, of customers start calling in? How do you manage an audience that is starting to share horrible things about your products? &lt;/p&gt;&lt;p&gt;It's bound to happen... Are you prepared for it?&lt;/p&gt;&lt;p&gt;I was recently reading &lt;a title="Link to HighTechDad Blog" target="_blank" href="http://www.hightechdad.com/2009/07/14/the-dos-and-donts-of-customer-service-in-a-social-media-age/"&gt;an article by HighTechDad&lt;/a&gt; about the do's and don'ts of customer service. HTD is well-versed in this area, having run Customer Service departments in the past. He shares some experiences and provides many tips about keeping your cool and getting to resolution from the customer or company perspective, e.g.:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Offer solutions&lt;/li&gt;&lt;li&gt;Try to go beyond the expected&lt;/li&gt;&lt;li&gt;Don’t let the customer know that you are frustrated&lt;/li&gt;&lt;li&gt;Be friendly and conversational&lt;/li&gt;&lt;li&gt;Try to connect at some level with the customer (e.g., if you know their location, ask about it)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In this day and age, you don't want people walking away from your service reps feeling deprived or ignored. Especially since there's the added vector of complaint when your socially-networked customers instantaneously broadcast their pain and suffering to hundreds of friends, family, coworkers, business contacts, Twitter followers, and blog readers. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Many companies dread the periods of high support traffic and view it in the &amp;quot;lock down&amp;quot; mentality; a mindset of merely dealing with damage control. Service representatives are trained to tell frustrated and/or impatient people that: Yes, we know there's a problem, we don't know exactly what happened, we don't know yet when it will be fixed, and we are sorry for the inconvenience. Customers who deal with &amp;quot;enterprise vendors&amp;quot; in particular are almost
used to the abuse and don't expect much from a submitting a trouble
ticket. I believe people on all levels, from the coder in the trenches, to the person who has to answer the phones, can go beyond what is expected to help retain customers and let them know they keep us alive.&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;The difference between how a company treats us when they make a
mistake can be the ultimate in loyalty building (or destroying). A
mistake handled well might makes us more loyal customers than we would
have been had we never experienced a service problem. Remember this
with &lt;i&gt;your&lt;/i&gt; customers when you make mistakes on the job.&lt;/p&gt;- Chad Fowler, &lt;i&gt;&lt;a href="http://www.amazon.com/gp/product/1934356344?ie=UTF8&amp;amp;tag=caffecode-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1934356344"&gt;The Passionate Programmer&lt;/a&gt;&lt;img width="1" height="1" border="0" src="http://www.assoc-amazon.com/e/ir?t=caffecode-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=1934356344" style="border: medium none  ! important; margin: 0px ! important;" /&gt;
&lt;/i&gt;&lt;/blockquote&gt; &lt;p&gt;From the end-user point of view, nothing sucks more than having a valued service suddenly fail to perform at the minimum acceptable level. Even retail purchased items that were once prized possessions (before they broke) cause us much disappointment when they fail to do their function. If I paid hard-earned money for it, it better perform. We've all been there: High elated expectations come crashing down as we realize, &amp;quot;What? It doesn't work? Why? What alternatives do I have? Do I really want to stick with this and try to get it fixed? Can I refund it? Nooo, can't it just work! Aaagh, why's life so hard?&amp;quot;&lt;/p&gt;&lt;h4&gt;A Good Bad Good Customer Service Experience&lt;br /&gt;&lt;/h4&gt;&lt;p&gt;Recently I visited a well-reviewed winery called &lt;a title="Darioush Winery, Napa, CA" target="_blank" href="http://www.darioush.com/"&gt;Darioush&lt;/a&gt;. This was about 2 wineries into a trip, so I had already sampled and enjoyed a bit of Napa Valley to this point. But what wines I thought were good were far and away superseded by the ones at Darioush. &lt;img vspace="5" hspace="0" border="0" align="left" src="https://caffeinatedcode.com/wsup/cafe/resource/wines-cab1-darioush.jpg" alt="Signature Cabernet from Darioush.com" /&gt;I had no problems handing over $80 for a bottle of wine that I absolute &lt;i&gt;had&lt;/i&gt; to take home with me.&lt;/p&gt;&lt;p&gt;You might be thinking, &amp;quot;Who cares? I thought this was about customer service! Why are you talking about your dumb yuppie-wannabe wine trip?&amp;quot; Well, let me get to that.&lt;/p&gt;&lt;p&gt;Once I got home, I unpackaged the wine to admire its serene bottled beauty. But then I noticed a little purple residue in the cork wrapper. I knew immediately this meant the cork was leaking, which meant the wine was probably bad. From high to low. What to do? Such an insignificant single item in the grand scheme of wine production. Dejected, I went to their website sent them a note about my discovery. For a few seconds I considered driving the 40 miles the next weekend to exchange it in person, but in the end I resigned myself to $80 down the tubes. Sigh.&lt;/p&gt;&lt;p&gt;The next day I got a call from a number I didn't know. The person on the other line asked for me by name and was suddenly apologetic about my experience with my wine purchase. Without even questioning the nature of the problem, she was ready to send me a replacement bottle immediately, and only needed to verify my original purchase and get my shipping address. Wow, just like that, they want me to be happy with their product. They've gained a loyal customer in me.&lt;/p&gt;&lt;p&gt;Then I waited a week and a half.&lt;/p&gt;&lt;p&gt;Bad. What happened to my shiny customer service impression? It faded into mild acceptance. I felt like I was duped, like a yes-man (or woman in this case) told me what I wanted to hear then left me in the paperwork. &amp;quot;Immediately&amp;quot; was not really so much. Once again let down, I counted it a loss and sent another short message via their website. &lt;/p&gt;&lt;p&gt;The following day I got a FedEx tracking number originating from Napa. No call, no reply.&lt;/p&gt;&lt;p&gt;They followed through on their promise, albeit with a little reminder. This, coupled with a great product, was good enough for me. I can still share the story about how they went beyond initial expectations to keep me happy, but the story is not as punchy as it could have been. They have, my loyalty, retained.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Moral of the story? If you're the customer, don't come to the table feeling entitled; manage your own expectations. For the service representative: Be honest and receptive (even if it's bad news) and be ready for your product to fail. You never know who's socially networked and waiting to share. Do whatever you can to transform the mistake or problem into a chance to build loyalty, and, perhaps most important of all, &lt;i&gt;follow through on your promises&lt;/i&gt;.&lt;/p&gt;&lt;p&gt;-- &lt;br /&gt;&lt;font size="1"&gt;* This article title I got from Chad Fowler's book referenced in the quote. Please read this book if you're in any sense working with code, it has some fantastic advice.&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/failure_and_building_or_destroying</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/transience_of_the_digital_medium</id>
        <title type="html">Transience of the Digital Medium</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/ILzIh3lsu1o/transience_of_the_digital_medium" />
        <published>2009-07-09T07:49:59+00:00</published>
        <updated>2009-07-09T07:51:35+00:00</updated> 
        <category term="/#code" label="#code" />
        <content type="html">&lt;p&gt;
We lament the loss of material things, and try to honor the &amp;quot;old ways&amp;quot; that were more tangible and harder to erase. The digital age comes with it a seeming cheapening of these pieces of information in that they are so easily lost, hidden, stored away, and forgotten. And yet, the digital age is much more like life in a way. It is transient, so easily lost, so temporary and temporal. Death is constant with digital media. There is no lasting, there is no permanence. Everything is in transition, and in almost inconceivable bits and bytes that can be wiped with a misdirected EM pulse, corrupted NAND module, or disk platter failure. &lt;/p&gt;&lt;p&gt;Death is merely transition. How attached we are to the old state, is how heavily we feel the sense of loss. But digital (computer) media is always bound for transition and nothing is guaranteed. In this sense it is very much like life, like reality. And much less an illusion than the &amp;quot;old ways&amp;quot; of information storage that we romanticize.&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/transience_of_the_digital_medium</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/gtug_meetup_about_android_1</id>
        <title type="html">GTUG Meetup about Android 1.5</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/STctSLmdWqE/gtug_meetup_about_android_1" />
        <published>2009-06-11T05:46:36+00:00</published>
        <updated>2009-06-12T00:37:43+00:00</updated> 
        <category term="/#code" label="#code" />
        <category term="cupcake" scheme="http://roller.apache.org/ns/tags/" />
        <category term="svandroid" scheme="http://roller.apache.org/ns/tags/" />
        <category term="sv_gtug" scheme="http://roller.apache.org/ns/tags/" />
        <category term="android" scheme="http://roller.apache.org/ns/tags/" />
        <category term="svgtug" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px; "&gt;
&lt;a href="http://www.flickr.com/photos/dailylifeofmojo/3615414769/" title="photo sharing"&gt;&lt;img src="http://farm4.static.flickr.com/3397/3615414769_8047fe26a0_m.jpg" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); " /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;span style="font-size: 0.9em; margin-top: 0px; "&gt;
&lt;a href="http://www.flickr.com/photos/dailylifeofmojo/3615414769/"&gt;Google's Dan Morrill discusses Android 1.5&lt;/a&gt;
&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;This meetup talk given by Dan Morrill of Google Developer Relations includes upcoming Android features for &amp;quot;Cupcake&amp;quot; 1.5, some code demos showing Dalvik VM versus native development benchmarks, and a few of Dan's favorite apps.&lt;/p&gt;&lt;p&gt;Admittedly, it's difficult to follow the technical parts of this talk in an audio recording only; especially as Dan modifies code and demos the &lt;a href="http://en.wikipedia.org/wiki/K-means_clustering" target="_blank" title="Definition of k-means clustering at Wikipedia"&gt;k-means clustering&lt;/a&gt; application. But there are several fascinating knowledge gems about this rapidly-growing mobile OS.&lt;/p&gt;&lt;p&gt;Broken up in three parts as usual:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mojado.com/audio/01_Android_1.5_Intro_and_Announcements.MP3"&gt;Intro and announcements&lt;/a&gt; - 8.3MB, 9:03 minutes.&lt;/li&gt;&lt;li&gt;&lt;a href="http://mojado.com/audio/02_Android_1.5.MP3"&gt;Android 1.5&lt;/a&gt; - 45.4MB, 49:36 minutes.&lt;/li&gt;&lt;li&gt;&lt;a href="http://mojado.com/audio/03_Android_1.5_QnA.MP3"&gt;Q&amp;amp;A session&lt;/a&gt; - 10.5MB, 11:26 minutes.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Thanks to the &lt;a href="http://www.meetup.com/sv-gtug/" target="_blank" title="SV GTUG on Meetup.com"&gt;SV Google Technology Users Group&lt;/a&gt;, and the &lt;a href="http://www.meetup.com/svandroid/" target="_blank" title="SV Android on Meetup.com"&gt;Silicon Valley Android Developers&lt;/a&gt; group for cross-promoting this event. And of course, thanks to the Google campus for hosting us.&lt;/div&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/gtug_meetup_about_android_1</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/google_android_v1_5</id>
        <title type="html">Android v1.5 and the HTC Google Ion</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/jqJrA1wWSqo/google_android_v1_5" />
        <published>2009-06-07T06:17:44+00:00</published>
        <updated>2009-06-09T01:41:49+00:00</updated> 
        <category term="/#code" label="#code" />
        <content type="html">&lt;div style="float: left; margin-right: 10px; margin-bottom: 10px;"&gt;
&lt;a href="http://www.flickr.com/photos/dailylifeofmojo/3575602742/" title="photo sharing"&gt;&lt;img src="http://farm4.static.flickr.com/3664/3575602742_6baecd160e_m.jpg" style="border: 2px solid rgb(0, 0, 0);" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;
&lt;a href="http://www.flickr.com/photos/dailylifeofmojo/3575602742/"&gt;09 I/O splash screen&lt;/a&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;a href="http://www.flickr.com/people/dailylifeofmojo/"&gt;&lt;/a&gt;
&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;
When Google &lt;a href="http://www.google.com/intl/en/corporate/execs.html#gundotra" target="_blank" title="Vic Gundotra profile on Google Inc mgmt web page"&gt;VP of Engineering &lt;/a&gt;&lt;span class="description"&gt;&lt;a href="http://www.google.com/intl/en/corporate/execs.html#gundotra" target="_blank" title="Vic Gundotra profile on Google Inc mgmt web page"&gt;Vic Gundotra&lt;/a&gt; announced at the Day 1 keynote that attendees of Google I/O would all receive a free Android developer phone, the room of thousands went into an uproar of applause.&lt;/span&gt; I arrived late, so I was all the way in the back catching the tail end of the keynote. But wow did I catch the good part! Free unlocked developer phones? No way!&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Since laying my hands on the phone, I managed to stay excited about it even almost two weeks later. What a way to get developers into coding for this relatively new mobile OS.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Having previously developed on Symbian S60, dabbled in QT, and a former member of the technical demo teams of the ACCESS Linux Platform, I settled on the iPhone's superior user experience; and basically surrendered any hope that competing mobile operating systems would be able to take a major hold in the market. &lt;/p&gt;&lt;p&gt;Even when Android SDK 1.0 was launched last September (2008), my reaction was &amp;quot;neato&amp;quot; but with a small degree of skepticism: &amp;quot;Yet another Linux-based mobile operating system by some consortium of vendors.&amp;quot; Fast forward to today. It took Oprah-like generosity, an open SDK, and a very cool little phone for me to see how engaging it could be to develop on Android. I will delve into programming in another post. For now, let me talk about a few key hardware differences straight out:&lt;/p&gt;&lt;h3&gt;The HTC Google Ion &amp;quot;G2&amp;quot; vs. iPhone&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;&lt;i&gt;Media Player:&lt;/i&gt; &lt;br /&gt;&lt;/p&gt;&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;
&lt;a href="http://www.flickr.com/photos/dailylifeofmojo/3602093853/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2480/3602093853_ceffc6354e_m.jpg" style="border: 2px solid rgb(0, 0, 0);" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;
&lt;a href="http://www.flickr.com/photos/dailylifeofmojo/3602093853/"&gt;Google Ion and 1st Gen iPhone&lt;/a&gt;
&lt;br /&gt;
&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;The Google Ion, a.k.a. the HTC Magic, is definitely not (yet) a media player competitor. The included demo songs sounded horrible (both from a personal choice perspective, and in overall quality) so I deleted them and went to my own library. I loaded up some of my finest Amazon MP3s and was shocked to hear so many sound artifacts and the same loss of resolution (despite the high quality source of these music files). I should backtrack and mention that I listened via the USB-to-headphone adapter, which might the culprit. There is no headphone jack on this device. If I hadn't known any better I would have thought the MP3s were recorded on a voice-recorder using space-conserving settings. The player is likewise rudimentary, nothing at all like an iPod experience. I am almost certain this aspect of the OS will improve with upcoming phones/Android releases.&lt;/p&gt;&lt;p&gt;&lt;i&gt;Video and Camera:&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The Ion can record video (a plus) but playback is a crude 3-button interface. At least I'm primed and ready now to do my own cell-phone videos, something I've always wanted for my iPwn. However, you can only email the latest recorded video, and must copy off the microSD card to share any other previous videos (that's gotta be an easy bug to fix).&lt;/p&gt;&lt;p&gt;The 3.2MP pinhole camera auto-focuses. Decent for street documentary, I'd say. The auto-focus feature enables easy use of another favorite: The bar code reader. Using &lt;a href="http://www.androiddownload.org/download-compare-everywhere/" target="_blank"&gt;Compare Everywhere&lt;/a&gt; I am able to scan up a shopping list of books each time I go to Barnes &amp;amp; Noble. &lt;/p&gt;&lt;p&gt;&lt;i&gt;Standby Time:&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Battery life is really lacking on the HTC. Moderate usage with 3G enabled, wifi on, Bluetooth, and GPS will give you less than a full day (24hrs) of life before it needs to be plugged back in to the USB power supply. Forum posts blame background multiple processes (typically runaway apps). I have, several times now, had an app get stuck; then the battery would get really warm as it churned up CPU. I tried an app called Advanced Task Manager to possibly &amp;quot;kill -9&amp;quot; runaways like this, but no such luck. Only a full power-cycle was able to stop them.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;Soft keypad:&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;&lt;/i&gt;I was really expecting a pop-out keyboard like the G1. The touchscreen keypad is comparable, but come on, how hard can it be to allow us to use Bluetooth HID profiles? I want to use my fold-out Bluetooth keyboard!&lt;/p&gt;&lt;p&gt;&lt;i&gt;Trackball:&lt;/i&gt;&lt;/p&gt;&lt;p&gt;There's a little Blackberry-Pearl-like rollerball by the bottom buttons. I don't use it much, but one colleague explained it's best for moving the cursor around when editing text. Seems superfluous.&lt;/p&gt;&lt;p&gt;&lt;i&gt;Phone calls:&lt;/i&gt;&lt;/p&gt;&lt;p&gt;This is what the phone is for, right? Call quality was fine, but being accustomed to the multi-tasking phone features of the iPhone, the HTC was disconcerting. When on a call, the screen just blanks after a few seconds. Even when the caller hangs up, the phone does nothing. You have to remember to press a button to call up any menu (like the dialpad or to hang up).&lt;/p&gt;&lt;p&gt;&lt;i&gt;The Network:&lt;/i&gt;&lt;/p&gt;&lt;p&gt; The HTC doesn't have the right radio for other 3G netoworks, so if you like 3G you're stuck with T-Mobile. It &lt;i&gt;is&lt;/i&gt; unlocked, though, so in theory it's compatible with any GSM network. I've tested it on AT&amp;amp;T EDGE with no problems. You can guess which phone I'd take with me when traveling, especially out of country.&lt;/p&gt;&lt;p&gt;&lt;i&gt;Conclusion:&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;All in all, it is somewhat obvious this is a developer-focused phone. Both the hardware and the UX need some polishing, but it's lot sleeker and cool than the G1. I don't know if it's just my SDK excitement or the newness factor of being handed a free phone... my 1st gen iPhone is currently powered-off and calls are forwarded to the Ion. This is the first time I've honestly considered switching away from the iPhone. The HTC Ion with Android is very welcoming. If you're into programming at all, the barrier to entry is quite low.&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;Pick a Path&lt;/h3&gt;&lt;p&gt;This month (June 2009) is a very exciting month in the mobile industry. There are several local events-- Google I/O, Palm Pre webOS launch, and WWDC --that are really shaking the way we think of mobile applications. Whereas before I thought the iPhone blew everyone out of the water, the gap is closing fast. Do I learn ObjectiveC and join a &lt;a href="http://www.apple.com/iphone/appstore/" target="_blank" title="Apple's iPhone App Store"&gt;rabid app market&lt;/a&gt;? Do I jump into an open community of &lt;a href="http://developer.android.com" target="_blank" title="Android Developer's Site"&gt;Google Android&lt;/a&gt; developers? What about &lt;a href="http://developer.palm.com/" target="_blank" title="Web-based mobile programming by Palm"&gt;webOS&lt;/a&gt; and the rave reviews that the new Pre UI is receiving? We are at a crossroad, and for programmers there are many new paths to explore.&lt;br /&gt;&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/google_android_v1_5</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/launch_a_product_with_your</id>
        <title type="html">Launch a Product with your Community</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/II6CXylTanA/launch_a_product_with_your" />
        <published>2009-06-05T14:30:27+00:00</published>
        <updated>2009-06-08T04:18:12+00:00</updated> 
        <category term="/#code" label="#code" />
        <content type="html">&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;
&lt;a href="http://www.flickr.com/photos/dailylifeofmojo/3596878883/" title="photo sharing"&gt;&lt;img src="http://farm4.static.flickr.com/3410/3596878883_2d5a02dd25_m.jpg" style="border: 2px solid rgb(0, 0, 0);" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;
&lt;a href="http://www.flickr.com/photos/dailylifeofmojo/3596878883/"&gt;Loic Le Meur of Seesmic&lt;/a&gt;
&lt;br /&gt;
&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;Went to a meetup (&lt;a target="_blank" href="http://www.startupsf.com"&gt;StartupSF&lt;/a&gt;) with a wise guest speaker, Loic Le Meur, founder and organizer of &lt;a target="_blank" href="http://www.leweb.net/"&gt;LeWeb Paris&lt;/a&gt; and CEO of &lt;a href="http://www.seesmic.com" target="_blank"&gt;Seesmic&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;I am glad I recorded the talk because it was filled with insightful and contrarian views to competitors, reacting to negative feedback, and determining product features. &lt;/p&gt;&lt;p&gt;Have a listen.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mojado.com/audio/01_StartupSF_Intro.MP3"&gt;StartupSF Introduction&lt;/a&gt; - 11.1MB, 12:06 minutes&lt;/li&gt;&lt;li&gt;&lt;a href="http://mojado.com/audio/02_How_to_Launch_a_Product_with_your_Community.MP3"&gt;How to Launch a Product with your Community&lt;/a&gt; - 32.1MB, 35:03 minutes. &lt;b&gt;Update: &lt;/b&gt;6/9/2009 view Loic's slides that Slideshare sync'd to this recording &lt;a title="Slideshare sync'd Loic's slides with this audio recording" target="_blank" href="http://www.loiclemeur.com/english/2009/06/how-to-build-a-product-with-your-community-slidecast-slidesaudio.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mojado.com/audio/03_How_to_Launch_a_Product_with_your_Community_Q_A.MP3"&gt;How to Launch a Product with your Community, Q&amp;amp;A&lt;/a&gt; - 41.1MB, 44:52 minutes.&lt;/li&gt;&lt;/ul&gt;Thanks to &lt;a href="http://www.gogrid.com" target="_blank"&gt;GoGrid&lt;/a&gt; Cloud Hosting, and Technology Evangelist &lt;a href="http://www.hightechdad.com/" target="_blank"&gt;Michael Sheehan&lt;/a&gt; for the invitation and organizing the event.&lt;br /&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/launch_a_product_with_your</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/disk_encryption_usable_or_impediment</id>
        <title type="html">Disk Encryption: Usable or Impediment?</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/4k8gZO-xcLo/disk_encryption_usable_or_impediment" />
        <published>2009-02-17T22:09:50+00:00</published>
        <updated>2009-02-17T22:09:50+00:00</updated> 
        <category term="/#code" label="#code" />
        <content type="html">&lt;p&gt;Just wanted to poll you OSX users out there, how many of you actually use &lt;a href="http://docs.info.apple.com/article.html?path=Mac/10.4/en/mh1877.html" target="_blank" title="FileVault Documentation"&gt;FileVault&lt;/a&gt; on your home (or work) systems? As far as I know, enabling FileVault user home directory encryption will make most of Apple Timecapsule's functions useless (e.g. point-in-time auto-backup and recovery).&lt;/p&gt;&lt;p&gt;I am already assuming that 99.99% of Windows users are not implementing &lt;a href="http://www.truecrypt.org/" target="_blank" title="TrueCrypt home page"&gt;TrueCrypt&lt;/a&gt; or &lt;a href="http://www.checkpoint.com/products/datasecurity/pc/index.html" target="_blank" title="Check Point Pointsec"&gt;PointSec&lt;/a&gt; whole-disk encryption, so I won't ask. However, OSX seems to make some efforts at making this easy to enable and run fully in the background.&lt;/p&gt;&lt;p&gt;The challenge with whole-disk encryption is that if you are good about backing files up, you need a way to do it on the backup side as well. This is not trivial, especially if incremental backups are part of the picture. One way I've seen is a combination of rsync.net and a utility called duplicity. But in my initial attempts, it has the same shortcomings as regular rsync, only that you cannot clean up the files as easy because you cannot view them at all on the remote location (a security feature).&lt;/p&gt;&lt;p&gt;I'm wondering how many actually secure their drives, or if important stuff just gets compartmentalized into encrypted .dmg volumes?&lt;br /&gt;&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/disk_encryption_usable_or_impediment</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/unix_time_event</id>
        <title type="html">Unix Time Event</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/B_ZmVo1ECf0/unix_time_event" />
        <published>2009-02-13T20:00:40+00:00</published>
        <updated>2009-02-23T18:58:17+00:00</updated> 
        <category term="/News" label="News" />
        <content type="html">&lt;p&gt;Unix time, the time calculated as seconds since January 1, 1970 UTC (not counting leap seconds), will reach &lt;b&gt;1234567890&lt;/b&gt; today at 15:31:30 PST. This is a momentous event for geeks worldwide, but I highly doubt many will notice except for a small number of L337 tech people.&lt;/p&gt;&lt;p&gt;BTW, unix time 1234554321 lapsed earlier today at 11:45:21 PST. &lt;br /&gt;&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/unix_time_event</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/technical_people</id>
        <title type="html">Technical People</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/l5Q_TA3K3DY/technical_people" />
        <published>2009-02-08T19:03:16+00:00</published>
        <updated>2009-06-14T11:56:58+00:00</updated> 
        <category term="/#code" label="#code" />
        <content type="html">&lt;blockquote&gt;The clue is right there in the name itself, &lt;i&gt;technical people&lt;/i&gt;. The word &lt;i&gt;technical&lt;/i&gt; finds its roots in the same soil as the word &lt;i&gt;technique&lt;/i&gt;. These are people who are more captivated by technique than by application. Their attention is more engaged by how a system works rather than what a system does.&lt;br /&gt;– &lt;a href="http://www.amazon.com/gp/product/0787961485?ie=UTF8&amp;amp;tag=caffcode-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0787961485"&gt;Paul Glen, &lt;i&gt;Leading Geeks&lt;/i&gt;&lt;/a&gt;&lt;img width="1" height="1" border="0" src="http://www.assoc-amazon.com/e/ir?t=caffcode-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0787961485" style="border-top-width: medium !important; border-right-width: medium !important; border-bottom-width: medium !important; border-left-width: medium !important; border-top-style: none !important; border-right-style: none !important; border-bottom-style: none !important; border-left-style: none !important; border-color: initial !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; " /&gt;
.&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;This is an interesting take on geek mindset. I am sometimes amazed at how some geeks I know can spend dozens of free-time hours figuring out and understanding a particular technology only to not have any real deliverable produced from it. But for the most part, my peers, coworkers, and colleagues would much rather see something &amp;quot;just work&amp;quot; and curse the heavens when stuff breaks and they have to dig deep to figure it out.&lt;/p&gt;&lt;p&gt;Rare is the person who just pumps out personal techie projects; is both fascinated by the technical learning, but also just keeps applying the technology's potential. It's one thing to know a lot about a subject, but it's entirely another to be creative about it– that is, creating consistently. Technical people will have high regard for those who can bridge the gap of deep knowledge and applied pursuits. This is partly why there exists the startup stereotype of &amp;quot;the techie guy&amp;quot; partnering up with &amp;quot;the business guy&amp;quot;.&lt;/p&gt;&lt;p&gt;One immediate parallel that comes to mind is the realm of amateur (wannabe professional) photography. Especially now with the advent of consumer digital photography, you will find lots of people who love to scour forums and pick apart technique and gear. Then you'll have those who just love to produce. They learn, but don't get caught up in the eliteness of certain technologies or methods. They constantly produce new work; and in doing so gain more expertise.&lt;/p&gt;&lt;p&gt;I'm not saying one or the other is better even though my admiration of producers is leaking through. I'm just pointing out that the disparity will always cause conflict between &amp;quot;just works&amp;quot; and &amp;quot;do it correctly&amp;quot; people. This blog itself was an exercise in my own attempt at &amp;quot;doing it right&amp;quot;at the cost of &amp;quot;what can it do&amp;quot;. I chose Java on BSD with Tomcat and PostgreSQL&amp;nbsp;when a much simpler LAMP (linux, apache, mysql, PHP) setup would been quicker and would have worked almost right out of the box. And now, after looking at &lt;a href="http://wordpress.org/" target="_blank" title="Wordpress Blogging Software"&gt;Wordpress&lt;/a&gt;'s newest versions (a popular free content-management software), I am wondering how much I am constrained by this [fascinating] technique I've implemented at Caffeinated Code;&amp;nbsp; Wordpress features and plugins are simply astounding. There are so many features available even though the Wordpress community's choices of implementation are somewhat contentious.&lt;/p&gt;&lt;p&gt;Continues Paul Glen,&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;This is not to say that geeks don't care about business, but it does run a strong second to technique.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;I guess what we're all looking for is a kind of tech holy grail. Despite the many ideas of what technology should do, and despite the many arguments and attempts of how it should be done, we wish to create things that are both architecturally a masterpiece, and highly useful and usable.&lt;br /&gt;&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/technical_people</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/online_newspapers_in_1981</id>
        <title type="html">Online Newspapers in 1981</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/nk0rsrGDbV8/online_newspapers_in_1981" />
        <published>2009-01-31T18:00:33+00:00</published>
        <updated>2009-01-31T18:07:43+00:00</updated> 
        <category term="/News" label="News" />
        <content type="html">&lt;p&gt;Before the Internet, there was an effort to distribute news to the 2000 or so home computer owners in the Bay Area. It only took over 2 hours to download an entire newspaper over the phone at a $5.00 per hour usage charge, now that's tech!&lt;/p&gt;
&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/5WCTn4FljUQ&amp;amp;hl=en&amp;amp;fs=1" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed width="425" height="344" src="http://www.youtube.com/v/5WCTn4FljUQ&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" /&gt;&lt;/object&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/online_newspapers_in_1981</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/don_t_mess_with_my</id>
        <title type="html">Don't Mess with My Tools</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/PlOZn50qu9s/don_t_mess_with_my" />
        <published>2009-01-16T21:25:16+00:00</published>
        <updated>2009-01-17T02:00:42+00:00</updated> 
        <category term="/#code" label="#code" />
        <content type="html">&lt;p&gt;If you ask a random programmer what the best development environment is, you're likely to get a different answer each time. You simply don't mess with one's development tools. It's like converting someone to a different religion or telling them what car or wife is best for them.&lt;/p&gt;&lt;p&gt; I mention this because I've experienced a vendor workshop recently (won't name names), and they have their well-integrated development solution that's supposed to be awesome with all things and all platforms&lt;sup&gt;*&lt;/sup&gt;. I asked someone about this and he said, &amp;quot;If you try a visual IDE, you will never go back.&amp;quot; He cited tab-completion, intelli-sensing of object methods, syntax highlighting, debugging, and all the other bells and whistles of a truly &amp;quot;integrated&amp;quot; development environment.&lt;/p&gt;&lt;p&gt;But really, such general statements are really that, very general. You cannot claim any tool or IDE is the best without knowledge of the platform or domain for which the apps are being written.&lt;/p&gt;&lt;p&gt;Even with a common development environment, people will pick the tools that they are good at. And if you try to force a different tool, you are not capitalizing on the strengths of your individual team members. It's just not practical to make a person work outside of their talents.&lt;/p&gt;&lt;p&gt;In the past, I've been tasked to determine standarized development for the teams I've been in. One thing I've found is you will go a long way to try to accommodate a programmer's fave development tools (not preaching to them from the get-go). Address the things people don't need to think about: Outline the procedures, coding conventions, release management processes, separation of duties.&amp;nbsp; If the coder is proficient and used to a set of tools, don't think the whizbang compiling &amp;quot;user-friendly&amp;quot; new IDE's will wow them into submission.&lt;/p&gt;&lt;p&gt;This argument applies with all other &amp;quot;crafts&amp;quot;. You're not wanting to tell a Canon user that a Nikon camera is better (although many idiots attempt this). You're not asking a painter to switch to charcoal because it's &amp;quot;more expressive&amp;quot;. You definitely don't want to mess with a coder's tools.&lt;br /&gt;&lt;/p&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/don_t_mess_with_my</feedburner:origLink></entry>
    <entry>
        <id>http://caffeinatedcode.com/wsup/cafe/entry/computer_friends</id>
        <title type="html">Computer Friends</title>
        <author><name>Mojo</name></author>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CaffeinatedCode/~3/QCAf-PX071Y/computer_friends" />
        <published>2008-11-28T20:59:41+00:00</published>
        <updated>2008-11-29T18:04:40+00:00</updated> 
        <category term="/#code" label="#code" />
        <content type="html">This video rules.

&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/FNXe_3gVz6I&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed width="425" height="344" src="http://www.youtube.com/v/FNXe_3gVz6I&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" /&gt;&lt;/object&gt;</content>
    <feedburner:origLink>http://caffeinatedcode.com/wsup/cafe/entry/computer_friends</feedburner:origLink></entry>
</feed>

