<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
 <title>John Wang</title>
 <link href="/feed" rel="self"/>
 <link href=""/>
 <updated>2012-03-17T10:26:54-07:00</updated>
 <id></id>
 
 <author>
   <name>John Wang</name>
   <email></email>
 </author>
 

 
 <entry>
   <title>Remove the Heroku Toolbelt</title>
   <link href="/blog/2011/09/13/remove-heroku-toolkit/"/>
   <updated>2011-09-13T00:00:00-07:00</updated>
   <id>/blog/2011/09/13/remove-heroku-toolkit</id>
   <content type="html">&lt;p&gt;If for some reason you installed the &lt;a href=&quot;http://toolbelt.herokuapp.com/osx/readme&quot;&gt;Heroku Toolbelt&lt;/a&gt; and want to remove it. You can do so by running these 2 commands:
&lt;code&gt;rm -rf /usr/local/heroku&lt;/code&gt;
&lt;code&gt;rm -rf /usr/bin/heroku&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Unfortunately, these aren't documented on the site yet and it gave me some issues with my heroku accounts plugin and heroku ruby gem.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Factory Girl Blocking Rake Database Migrations</title>
   <link href="/blog/2011/09/07/factory_girl_db_migrate/"/>
   <updated>2011-09-07T00:00:00-07:00</updated>
   <id>/blog/2011/09/07/factory_girl_db_migrate</id>
   <content type="html">&lt;p&gt;I use a couple of items for doing Behavior Driven Development. Primarily, &lt;a href=&quot;http://cukes.info&quot;&gt;Cucumber&lt;/a&gt; and &lt;a href=&quot;http://relishapp.com/rspec&quot;&gt;RSpec&lt;/a&gt;. In conjunction with those, I use &lt;a href=&quot;https://github.com/thoughtbot/factory_girl&quot;&gt;Factory Girl&lt;/a&gt; and &lt;a href=&quot;https://github.com/thoughtbot/shoulda-matchers&quot;&gt;Shoulda&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Sometimes, it seems that Factory Girl can get in the way of running &lt;code&gt;rake db:migrate&lt;/code&gt; when you push your code up to your source control system, in my case &lt;a href=&quot;http://github.com&quot;&gt;GitHub&lt;/a&gt;, for others download and run it. Such was the case with the &lt;a href=&quot;http://jenkins-ci.org&quot;&gt;Jenkins CI&lt;/a&gt; server.&lt;/p&gt;

&lt;h4&gt;The Issue&lt;/h4&gt;

&lt;p&gt;The problem was that Factory Girl attempts to create factories for models that did not have database tables created yet. It was trying to run before the database migrations ran when the server tried running the &lt;code&gt;rake db:migrate&lt;/code&gt;. (Note, yes, we always prepend &lt;code&gt;bundle exec&lt;/code&gt;, but shortened it here for context.)&lt;/p&gt;

&lt;h4&gt;The Solution&lt;/h4&gt;

&lt;p&gt;It seems that you're not to load the &lt;code&gt;factory_girl_rails&lt;/code&gt; gem in your Gemfile in the &lt;code&gt;:development&lt;/code&gt; group at all. The configuration on &lt;a href=&quot;https://github.com/thoughtbot/factory_girl_rails&quot;&gt;the GitHub repo&lt;/a&gt; just says to add it to your Gemfile, but instead you should add it to your &lt;code&gt;:test&lt;/code&gt; group only. For example:
&lt;code&gt;gem 'factory_girl_rails', :group =&amp;gt; :test&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;More details can be found on &lt;a href=&quot;https://groups.google.com/d/topic/factory_girl/0RtdwiUIm5I/discussion&quot;&gt;the mailing list topic&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Android UI Patterns</title>
   <link href="/blog/2011/09/06/android-ui-patterns/"/>
   <updated>2011-09-06T00:00:00-07:00</updated>
   <id>/blog/2011/09/06/android-ui-patterns</id>
   <content type="html">&lt;p&gt;I previous wrote about &lt;a href=&quot;http://johntwang.com/blog/2011/05/07/iOS-UI-Patterns/&quot;&gt;iOS UI Patterns resources&lt;/a&gt;. There were 3 that I curated. At the time, I was having a hard time finding some for Android. I still am, but since thing, a new one has popped up. These 2 are the resources I've found:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.androidpatterns.com&quot;&gt;Android Interaction Design Patterns&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.androiduipatterns.com&quot;&gt;Android UI Design Patterns&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Also, there's always the &lt;a href=&quot;http://android-developers.blogspot.com/&quot;&gt;Android Developers Blog&lt;/a&gt; where every now and then a UI pattern post comes up. Like &lt;a href=&quot;http://android-developers.blogspot.com/2010/05/twitter-for-android-closer-look-at.html&quot;&gt;this one on Twitter for Android's UI&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you know of any others, please share. I'm always looking for them.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Fuzzy and Document Searching with Solr</title>
   <link href="/blog/2011/09/05/Fuzzy-and-Document-Searching-with-WebSolr-and-Heroku/"/>
   <updated>2011-09-05T00:00:00-07:00</updated>
   <id>/blog/2011/09/05/Fuzzy-and-Document-Searching-with-WebSolr-and-Heroku</id>
   <content type="html">&lt;p&gt;Recently, I needed to get add Searching into a web app. I decided to use Sunspot and Solr. Luckily, Ryan Bates has already done a &lt;a href=&quot;http://railscasts.com/episodes/278-search-with-sunspot&quot;&gt;Sunspot Railscasts&lt;/a&gt;, which got me started. However, I needed Fuzzy and Document Searching. The first part is actually fairly trivial thanks to the &lt;a href=&quot;https://github.com/outoftime/sunspot/wiki/Wildcard-searching-with-ngrams&quot;&gt;Wildcard searching with ngrams&lt;/a&gt; and many other results from doing a simple Google Search.&lt;/p&gt;

&lt;h3&gt;Fuzzy Searching&lt;/h3&gt;

&lt;p&gt;For the fuzzy searching, it was a simple matter of changing the configuration for &lt;em&gt;text&lt;/em&gt; fieldType to:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;xml&quot;&gt;    &lt;span class=&quot;nt&quot;&gt;&amp;lt;fieldType&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;text&amp;quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;solr.TextField&amp;quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;omitNorms=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
      &lt;span class=&quot;nt&quot;&gt;&amp;lt;analyzer&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;type=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;index&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
          &lt;span class=&quot;nt&quot;&gt;&amp;lt;tokenizer&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;solr.StandardTokenizerFactory&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
          &lt;span class=&quot;nt&quot;&gt;&amp;lt;filter&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;solr.StandardFilterFactory&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
          &lt;span class=&quot;nt&quot;&gt;&amp;lt;filter&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;solr.LowerCaseFilterFactory&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
          &lt;span class=&quot;nt&quot;&gt;&amp;lt;filter&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;solr.EdgeNGramFilterFactory&amp;quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;minGramSize=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;2&amp;quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;maxGramSize=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;15&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;/analyzer&amp;gt;&lt;/span&gt;
      &lt;span class=&quot;nt&quot;&gt;&amp;lt;analyzer&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;type=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;query&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;tokenizer&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;solr.StandardTokenizerFactory&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;filter&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;solr.StandardFilterFactory&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;filter&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;solr.LowerCaseFilterFactory&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;filter&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;solr.PorterStemFilterFactory&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;filter&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;solr.PhoneticFilterFactory&amp;quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;encoder=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;DoubleMetaphone&amp;quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;inject=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class=&quot;nt&quot;&gt;&amp;lt;/analyzer&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;/fieldType&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;h3&gt;Document Searching&lt;/h3&gt;

&lt;p&gt;To add searching of attachments, I needed to add the &lt;a href=&quot;https://github.com/chebyte/sunspot_cell&quot;&gt;Sunspot Cell add-on&lt;/a&gt;. It's important to note, that this is a fork of the Sunspot Cell that is linked from the main Sunspot Wiki. &lt;a href=&quot;http://www.chebyte.com/2011/08/13/how-to-index-file-contents-like-pdf-doc-etc-with-solr-sunspot-paperclip-s3-and-rails-3/&quot;&gt;The reference for it, is by Mauro Torres&lt;/a&gt; who's fork is being used.&lt;/p&gt;

&lt;p&gt;The first step was to download the &lt;a href=&quot;https://gist.github.com/1196190&quot;&gt;Solr Cell dependencies&lt;/a&gt; that are needed and install the plugin through &lt;em&gt;rails plugin install&lt;/em&gt;. They all go into the solr/lib with the rest of Sunspot's built in Solr server. I have uploaded them into 2 separate zip files. &lt;a href=&quot;http://cl.ly/9tFw&quot;&gt;File 1&lt;/a&gt;. &lt;a href=&quot;http://cl.ly/9tV4&quot;&gt;File 2&lt;/a&gt;. Combined, they are 26MB large. that's why it's not in the main sunspot project.&lt;/p&gt;

&lt;p&gt;After that, the schema needs to be altered to include the &lt;em&gt;_attachment&lt;/em&gt; dynamic type.&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;xml&quot;&gt;    &lt;span class=&quot;nt&quot;&gt;&amp;lt;dynamicField&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;*_attachment&amp;quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;stored=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;type=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;text&amp;quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;multiValued=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;indexed=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;     
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;dynamicField&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;ignored_*&amp;quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;type=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;ignored&amp;quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;h3&gt;Searching Amazon S3 Documents&lt;/h3&gt;

&lt;p&gt;Since I'm deploying to Heroku and Heroku doesn't support writing to the filesystem for persistent storage, we use the recommended Amazon S3. You can use other systems, such as Google Storage for Developers or RackSpace CloudFiles. I use Paperclip for handling file uploads.&lt;/p&gt;

&lt;p&gt;Due to the S3 needs. We need to grab the URL and use that for the attachment search. This is a simple as changing the &lt;em&gt;searchable&lt;/em&gt; to use a private method like so:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Asset&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;has_attached_file&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:file&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;storage&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:s3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;ss&quot;&gt;:s3_credentials&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;Rails&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;root&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/config/amazon_s3.yml&amp;quot;&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;searchable&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
       &lt;span class=&quot;n&quot;&gt;text&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:title&lt;/span&gt;
       &lt;span class=&quot;n&quot;&gt;attachment&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:attached_file&lt;/span&gt;
     &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;

  &lt;span class=&quot;kp&quot;&gt;private&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;attached_file&lt;/span&gt;
      &lt;span class=&quot;no&quot;&gt;URI&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;parse&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;expiring_url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;60&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;h3&gt;Deployment with Heroku and WebSolr&lt;/h3&gt;

&lt;p&gt;I deployed to Heroku. The easiest way I found to deal with the Solr system was to use the &lt;a href=&quot;http://addons.heroku.com/websolr&quot;&gt;WebSolr Addon&lt;/a&gt; instead of trying to bring up my own Solr server. The starting point is $20/month. Not too terrible. You will need to check the &lt;em&gt;PDF/MS Word/etc Indexing&lt;/em&gt; checkbox in the &lt;em&gt;Basic Configuration&lt;/em&gt; section. Then in the &lt;em&gt;Advanced Configuration&lt;/em&gt; copy and paste your &lt;em&gt;schema.xml&lt;/em&gt; that you have configured for the document search.&lt;/p&gt;

&lt;h3&gt;Gotchas&lt;/h3&gt;

&lt;p&gt;There seems to still be a bug in the sunspot gem when it is used for fuzzy and document searching. It seems to be due to multiple matches in a document. The issue is with &lt;a href=&quot;https://github.com/outoftime/sunspot/blob/master/sunspot/lib/sunspot/search/abstract_search.rb#L230&quot;&gt;line 230 of the abstract_search.rb file&lt;/a&gt;. I recall seeing a pull request being sent to the sunspot repository, but it doesn't look like it's been merged in yet. I forked the gem and &lt;a href=&quot;https://github.com/jwang/sunspot/commit/1154a62f261fd8679d2a29129deaafa67bde66b3&quot;&gt;patched it&lt;/a&gt;. I'm using the git url to get this working until it is merged back into the upstream gem repo.&lt;/p&gt;

&lt;p&gt;Note that you need to invoke the sunspot rake command to reindex all the items you have already uploaded. The system will only index new uploads and not existing without invoking the rake command.&lt;/p&gt;

&lt;h3&gt;TL;DR&lt;/h3&gt;

&lt;p&gt;The &lt;a href=&quot;https://gist.github.com/1196146&quot;&gt;full schema.xml can be downloaded from the GitHub Gist&lt;/a&gt;. Download the Solr Cell Dependencies [&lt;a href=&quot;http://cl.ly/9tFw&quot;&gt;Part 1&lt;/a&gt; &lt;a href=&quot;http://cl.ly/9tV4&quot;&gt;Part 2&lt;/a&gt;]. And put them in the solr/lib with the other files.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>New Google APIs Client Library for Objective-C</title>
   <link href="/blog/2011/08/31/Google-APIs-for-Objective-C/"/>
   <updated>2011-08-31T00:00:00-07:00</updated>
   <id>/blog/2011/08/31/Google-APIs-for-Objective-C</id>
   <content type="html">&lt;p&gt;A while back, I wrote a &lt;a href=&quot;http://johntwang.com/blog/2009/06/08/how-to-use-google-apis-with-iphone-sdk/&quot;&gt;small tutorial on how to use Google's GData Client library for iPhone&lt;/a&gt;. It's a pretty popular tutorial that constantly gets questions. Today, &lt;a href=&quot;http://googlecode.blogspot.com/2011/08/new-objective-c-library-for-new.html&quot;&gt;Google announced a new version of the Google Data library for Objective-C&lt;/a&gt;. I'm pretty exicted about this for a couple of reasons. The &lt;a href=&quot;http://code.google.com/p/google-api-objectivec-client/&quot;&gt;new Client library&lt;/a&gt; utilizes JSON, which I'm a big fan of and it also the new &lt;a href=&quot;http://googlecode.blogspot.com/2011/03/making-auth-easier-oauth-20-for-google.html&quot;&gt;OAuth2 for authentication&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It looks just amazing.&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;objc&quot;&gt;&lt;span class=&quot;cp&quot;&gt;#import &amp;quot;GTLBooks.h&amp;quot;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;GTLServiceBooks&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;service&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;GTLServiceBooks&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;alloc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;init&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;GTLQueryBooks&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;query&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; 
  &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;GTLQueryBooks&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;queryForVolumesListWithQ:&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;@&amp;quot;Mark Twain&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;query&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;filter&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;kGTLBooksFilterFreeEbooks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;service&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;executeQuery:&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;query&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;completionHandler:&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;GTLServiceTicket&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ticket&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;kt&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;NSError&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;c1&quot;&gt;// callback&lt;/span&gt;
      &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;error&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;nil&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;GTLBooksVolumes&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;results&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;GTLBooksVolume&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;volume&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;results&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;n&quot;&gt;NSLog&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;@&amp;quot;%@&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;volume&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;volumeInfo&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;And it also follows the &lt;a href=&quot;http://google-styleguide.googlecode.com/svn/trunk/objcguide.xml&quot;&gt;Google Objective-C Style Guide&lt;/a&gt; which I'm also a fan of.&lt;/p&gt;

&lt;p&gt;Check out the new version of the &lt;a href=&quot;http://code.google.com/p/google-api-objectivec-client/&quot;&gt;Client library&lt;/a&gt; at the Google Project page.&lt;/p&gt;

&lt;p&gt;I'm going to try and get a new updated tutorial in a couple of days.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Lessons from Google I/O 2011</title>
   <link href="/blog/2011/05/16/Lessons-From-Google-IO/"/>
   <updated>2011-05-16T00:00:00-07:00</updated>
   <id>/blog/2011/05/16/Lessons-From-Google-IO</id>
   <content type="html">&lt;p&gt;&lt;img src=&quot;/images/io2011.png&quot; alt=&quot;Google I/O 2011&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This was my first &lt;a href=&quot;http://www.google.com/events/io/2011/index-live.html&quot;&gt;Google I/O&lt;/a&gt; as an attendee. It was definitely a great experience and I'll be going again for the foreseeable future. I learned a lot, met a lot of great people (not just Googlers, though they were all great), and I got to see some really impressive work from the Sandboxes.&lt;/p&gt;

&lt;p&gt;This year's I/O conference sold out in less than an hour. Luckily, I was able to get in during the madness and also managed to snag myself into the I/O Bootcamp. I already had some expectations and pre-conceptions about the conference, but those all changed.&lt;/p&gt;

&lt;h3&gt;Lesson #1 - Attend Bootcamp&lt;/h3&gt;

&lt;p&gt;The Bootcamp was great. I was able to get into all the sessions I had planned on attending and also get some great insight. It was definitely worth it, given that only a small 100 or so can get in, compared to the 5,000 plus that were at I/O. Bootcamp was not only a great way to get up to speed on some things, but it was also a great way to get to chat with the Googlers where the odds are not as hectic.&lt;/p&gt;

&lt;h2&gt;Lesson #2 - Go to Office Hours&lt;/h2&gt;

&lt;p&gt;By far the least utilized part of the entire conference was Office Hours. I saw tons of developers walking around and very few actually took advantage of the Office Hours. Next year, I definitely plan on bringing along all my problems to the Android, AppEngine, Chrome and GoogleTV teams.&lt;/p&gt;

&lt;h3&gt;Lesson #3 - Don't be a Jerk&lt;/h3&gt;

&lt;p&gt;I heard quite a few people who only went for the free stuff. That's really not what you should be going for. I was also in a session where a developer was just plain rude to the speakers due to something that was outside of their area and not in their control. If you have a problem with Google's decision on which library they choose to use, talk to the developers at Office Hours and don't cause a scene during a session. It's very unprofessional and you do not get any sympathy from the room full of developers.&lt;/p&gt;

&lt;h3&gt;Lesson #4 - Pick Yours Sessions Wisely&lt;/h3&gt;

&lt;p&gt;All of the sessions this year were live streamed and recorded. They're now all available on &lt;a href=&quot;http://www.youtube.com/user/GoogleDevelopers&quot;&gt;YouTube to be watched&lt;/a&gt;. Everyone knew that beforehand, so going to the sessions, was mostly making sure to pick the ones you were most interested in, and also the ones with the speakers you wanted to talk to and ask questions. Most sessions also had giveaways, such as t-shirts, socks, stickers, etc. Some sessions occur during lunch time and can cause people to run around to the lunch room and back. Pretty much every session will be packed.&lt;/p&gt;

&lt;h3&gt;Lesson #5 - Visit the Sandboxes&lt;/h3&gt;

&lt;p&gt;Probably the second least utilized area. There were always people interacting with the sandboxes, but there were times when I would see a bunch of them just trying to get people's attention. You shouldn't just brush them off because they're not Google. In fact, there are some really great conversations you can have with them. For example, what challenges they have run into while getting their apps integrated with the Google APIs and how they got around it.&lt;/p&gt;

&lt;h3&gt;Overall Thoughts&lt;/h3&gt;

&lt;p&gt;I got a lot more out of I/O than I had expected. I had gone primarily to get better at Android development, learn Google Go and get more information out of AppEngine. I had already expected to do some networking and that's something I will work more on as well. The energy, excitement and enthusiasm of being there is just amazing. The price was a steal for the amount of information and networking. It'll likely go up a bit next year, but that's more than fine. I look forward to more great future I/O events.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>iOS UI Design Patterns</title>
   <link href="/blog/2011/05/07/iOS-UI-Patterns/"/>
   <updated>2011-05-07T00:00:00-07:00</updated>
   <id>/blog/2011/05/07/iOS-UI-Patterns</id>
   <content type="html">&lt;p&gt;A few iOS Mobile UI Patterns Galleries have popped up over the past couple of years. They do a pretty good job at putting together A set of screenshots per objective, like launch screens, navigation bars, etc.&lt;/p&gt;

&lt;p&gt;Here are 3 that I've run into and have heard many others talk about. Note that none of these currently have an iPad galleries. For iPad, I recommend checking out &lt;a href=&quot;http://thoughtbot.com&quot;&gt;ThoughtBot's&lt;/a&gt; great site, &lt;a href=&quot;http://landingpad.org&quot;&gt;LandingPad&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://pttrns.com&quot;&gt;Pattrns&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://mobile-patterns.com&quot;&gt;Mobile UI Patterns&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.lovelyui.com&quot;&gt;LovelyUI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;I also haven't found one for Android and this is the best I've found so far &lt;a href=&quot;http://www.androiduipatterns.com&quot;&gt;Android UI Patterns&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Please feel free to contribute in the comments and I shall add them to the list.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Learning MacRuby</title>
   <link href="/blog/2011/04/10/Learning-MacRuby/"/>
   <updated>2011-04-10T00:00:00-07:00</updated>
   <id>/blog/2011/04/10/Learning-MacRuby</id>
   <content type="html">&lt;p&gt;I recently started learning &lt;a href=&quot;http://macruby.org&quot;&gt;MacRuby&lt;/a&gt;. The successor to &lt;a href=&quot;http://en.wikipedia.org/wiki/RubyCocoa&quot;&gt;RubyCocoa&lt;/a&gt;, which when I last looked at, was messy to get into. Since then, MacRuby has come a long way and will be a private framework in Apple's OS X Lion (10.7). This primarily just means that it will be present, but you will still need to package MacRuby within your app for bit longer.&lt;/p&gt;

&lt;p&gt;If you're interested in the differences between the two, there's a great resource on the MacRuby Documentation section titled &lt;a href=&quot;http://www.macruby.org/documentation/rubycocoa-to-macruby.html&quot;&gt;Essential Differences between RubyCocoa and MacRuby&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So far it's been fairly painless and a great learning experience. It's also likely a lot easier to pick up if you already know a bit of Objective-C and/or have had some &lt;a href=&quot;http://www.ruby-lang.org/en/&quot;&gt;Ruby&lt;/a&gt; exposure. That way you're not trying to learn two completely different languages and trying to bind them together. That's not to say, you can't. It's very much possible and you can learn Objective-C along the way.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;http://www.macruby.org/project.html&quot;&gt;MacRuby team&lt;/a&gt; does a great job at pushing out fixes and getting back to developers on their &lt;a href=&quot;http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel&quot;&gt;Mailing List&lt;/a&gt; and IRC channel #macruby. They've also just recently migrated over to &lt;a href=&quot;https://github.com/macruby&quot;&gt;GitHub&lt;/a&gt; which made me much happier about digging into &lt;a href=&quot;https://github.com/MacRuby/MacRuby&quot;&gt;the source&lt;/a&gt; and getting started a bit better.&lt;/p&gt;

&lt;p&gt;I'm hoping to push out at least a couple of apps to the the Mac App Store using MacRuby and see how that goes. I also plan to convert the &lt;a href=&quot;https://github.com/jwang/pgpane&quot;&gt;PGPane preference pane&lt;/a&gt; to MacRuby in a separate branch as an exercise.&lt;/p&gt;

&lt;p&gt;Here are some of the resources I have been using to learn MacRuby.&lt;/p&gt;

&lt;h3&gt;Websites&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; Apple's &lt;a href=&quot;http://developer.apple.com/library/mac/#featuredarticles/UsingMacRuby/_index.html#//apple_ref/doc/uid/TP40010259&quot;&gt;Developing Cocoa Applications Using MacRuby&lt;/a&gt; at their Mac OS X Developer Library.&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://www.macruby.org/documentation.html&quot;&gt;MacRuby.org's Documentation section&lt;/a&gt; has some great tutorials, screencasts and more.&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Screencasts&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; PeepCode's &lt;a href=&quot;http://peepcode.com/products/peepopen&quot;&gt;PeepOpen app&lt;/a&gt; and &lt;a href=&quot;http://peepcode.com/products/meet-macruby&quot;&gt;Meet MacRuby screencast&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt; Mike Clark's &lt;a href=&quot;http://pragmaticstudio.com/screencasts/6-macruby&quot;&gt;MacRuby&lt;/a&gt; Screencast for Pragmatic Programmers&lt;/li&gt;
&lt;li&gt; Mike Clark's &lt;a href=&quot;http://pragmaticstudio.com/screencasts/7-embedding-macruby&quot;&gt;Embedding MacRuby&lt;/a&gt; screencast for Pragmatic Programmers&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Books&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://ofps.oreilly.com/titles/9781449380373/&quot;&gt;MacRuby: The Definitive Guide by Matt Aimonetti&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.manning.com/lim/&quot;&gt;MacRuby in Action by Brendan Lim and Paul Crawford&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;I also found this nice step by step blog post while listening to &lt;a href=&quot;http://rubyshow.com/&quot;&gt;The Ruby Show&lt;/a&gt;. &lt;a href=&quot;http://redwoodapp.posterous.com/macruby-and-xcode-4-build-a-self-contained-ma&quot;&gt;MacRuby &amp;amp; Xcode 4: Build a Self-Contained MacRuby Application&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>PostgreSQL Preference Pane</title>
   <link href="/blog/2011/04/03/PostgreSQL-Preference-Pane/"/>
   <updated>2011-04-03T00:00:00-07:00</updated>
   <id>/blog/2011/04/03/PostgreSQL-Preference-Pane</id>
   <content type="html">&lt;p&gt;I recently found myself having introducing interns to Ruby on Rails development with both mySQL and PostgreSQL.  The downloadable version of mySQL found on &lt;a href=&quot;http://dev.mysql.com/downloads/mysql/&quot;&gt;mysql.com&lt;/a&gt; comes with a Preference Pane for Mac OS X.  The prefpane allows users to do a few small things.  Primarily, view the status of the database server, start and stop the server, and toggle the auto-start option.&lt;/p&gt;

&lt;p&gt;For &lt;a href=&quot;http://www.postgresql.org&quot;&gt;PostgreSQL&lt;/a&gt;, we install using &lt;a href=&quot;http://mxcl.github.com/homebrew/&quot;&gt;HomeBrew&lt;/a&gt;.  There's no accompanying Preference Pane when installed via:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;brew install postgresql&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I also looked around on the PostgreSQL download section and couldn't find anything.  A couple of Google searches yielded some outdated information, but a very interesting framework for Cocoa called &lt;a href=&quot;http://code.google.com/p/postgres-kit/&quot;&gt;postgres-kit&lt;/a&gt;.  I want to look a bit more into it at a later point, but I also needed something that was bit more quick and easy for the interns.&lt;/p&gt;

&lt;p&gt;The Terminal could be a bit more user friendly for Designers. Wise Heart Design has a &lt;a href=&quot;http://wiseheartdesign.com/articles/2010/11/12/the-designers-guide-to-the-osx-command-prompt/&quot;&gt;intro guide to the Terminal for Designers&lt;/a&gt;.  It's worth a read if you're not familiar with the terminal and shell commands.&lt;/p&gt;

&lt;p&gt;It's also been a pain point for learning as, there's long commands to learn, or we need to teach them how to create &lt;em&gt;aliases&lt;/em&gt; in the bash/zsh shell.  Something we want to avoid and get through quickly, so we can get the designers access to the CSS and view layers of the app for them to style.&lt;/p&gt;

&lt;p&gt;This gave me an interesting option of creating a Pref Pane for Postgres that mirrors the mySQL pref pane.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://github.com/jwang/pgpane/raw/master/Postgres.png&quot; alt=&quot;PGPane Screenshot&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It's available for &lt;a href=&quot;https://github.com/downloads/jwang/pgpane/Postgres.prefPane&quot;&gt;download&lt;/a&gt; and if installed with HomeBrew, does not need admin access or permissions to run.  The code is open source and available on &lt;a href=&quot;https://github.com/jwang/pgpane&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There's still a few things here and there that I may eventually try to add, but for the most part, it's a decent functional alpha.  Perhaps, I'll go through the exercise of rewriting it in &lt;a href=&quot;http://macruby.com&quot;&gt;MacRuby&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Moved to Jekyll and GitHub</title>
   <link href="/blog/2011/04/01/moving-to-jekyll-and-github/"/>
   <updated>2011-04-01T00:00:00-07:00</updated>
   <id>/blog/2011/04/01/moving-to-jekyll-and-github</id>
   <content type="html">&lt;p&gt;I just finished moving my website and blog over to &lt;a href=&quot;http://jekyllrb.com&quot;&gt;Jekyll&lt;/a&gt; from WordPress. I also moved the hosting over to &lt;a href=&quot;http://github.com&quot;&gt;GitHub&lt;/a&gt;. The process wasn't overly complex with the Jekyll &lt;a href=&quot;https://github.com/mojombo/jekyll/wiki/Blog-Migrations&quot;&gt;migration options&lt;/a&gt; available, but it was a bit time consuming, making sure things were back to normal. Converting the WordPress theme to the &lt;a href=&quot;http://www.liquidmarkup.org&quot;&gt;Liquid&lt;/a&gt; template system took a bit of time as well.&lt;/p&gt;

&lt;h3&gt;Why Did I Move?&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;I wanted to learn something new. Jekyll is a static site generator written in Ruby.&lt;/li&gt;
&lt;li&gt;I was having trouble accessing the old site due to some DNS issues with my provider which was preventing updates and new posts.&lt;/li&gt;
&lt;li&gt;I want to have the content under source control, and primarily use Git and GitHub.&lt;/li&gt;
&lt;li&gt;I like writing in &lt;a href=&quot;http://daringfireball.net/projects/markdown&quot;&gt;Markdown&lt;/a&gt;, and WordPress was doing some funky formatting with my content.&lt;/li&gt;
&lt;li&gt;I got tired of having to update WordPress and it's plugins whenever there was some security issue with it or new version that came out.&lt;/li&gt;
&lt;li&gt;I'm addicted to GitHub, though, this won't be a reason for everyone.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;As always, there's pros and cons to any system you use. These are the ones that I've had so far on the move.&lt;/p&gt;

&lt;h3&gt;Pros&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;It's on GitHub&lt;/li&gt;
&lt;li&gt;It's super fast with a 100 out of 100 score on Google &lt;a href=&quot;http://pagespeed.googlelabs.com/#url=johnwang.com&amp;amp;mobile=false&quot;&gt;PageSpeed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;I can move it to &lt;a href=&quot;http://heroku.com&quot;&gt;Heroku&lt;/a&gt; or &lt;a href=&quot;http://www.engineyard.com/products/appcloud&quot;&gt;Engine Yard AppCloud&lt;/a&gt; if I ever need to with &lt;a href=&quot;https://github.com/bry4n/rack-jekyll&quot;&gt;Rack-Jekyll&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Focus on Content and not worry about system updates&lt;/li&gt;
&lt;li&gt;Not PHP&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Cons&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Loss of Dynamic content management, ie. Photo Gallery, Comments, Search, etc.&lt;/li&gt;
&lt;li&gt;Required paid GitHub account (cheapest is $7 per month.)&lt;/li&gt;
&lt;li&gt;No Database - if you need a database and all.&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Overall&lt;/h3&gt;

&lt;p&gt;I'm very happy with having Jekyll as the platform and GitHub as the hosting. It's allowing me to focus on what's important. Content. While there are some annoyances and issues with the losses, I've found that many of them are rather trivial and simple to overcome.&lt;/p&gt;

&lt;h4&gt;Overcoming the Cons&lt;/h4&gt;

&lt;p&gt;Comments are set up through &lt;a href=&quot;http://disqus.com&quot;&gt;Disqus&lt;/a&gt; which I was previously using anyway.&lt;/p&gt;

&lt;p&gt;Search is now handled by &lt;a href=&quot;http://www.google.com/cse/&quot;&gt;Google Custom Search&lt;/a&gt; instead of the default WordPress search.&lt;/p&gt;

&lt;p&gt;Tags and Categories are still an issue I plan to look at eventually, though there are plugins and extensions to Jekyll out there. Jekyll does support categories, but my permalinks structure is currently blocking use of the categories.&lt;/p&gt;

&lt;p&gt;For the image hosting, I'm currently considering using &lt;a href=&quot;http://code.google.com/apis/storage/&quot;&gt;Google Storage&lt;/a&gt;, Amazon's &lt;a href=&quot;http://aws.amazon.com/s3/&quot;&gt;S3&lt;/a&gt; and &lt;a href=&quot;http://aws.amazon.com/cloudfront/&quot;&gt;CloudFront&lt;/a&gt; or just &lt;a href=&quot;http://flickr.com&quot;&gt;Flickr&lt;/a&gt;. Leaning towards Google Storage, primarily because learning is fun.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Enable NSZombie in XCode 4</title>
   <link href="/blog/2011/04/01/enable-NSZombie-in-XCode4/"/>
   <updated>2011-04-01T00:00:00-07:00</updated>
   <id>/blog/2011/04/01/enable-NSZombie-in-XCode4</id>
   <content type="html">&lt;p&gt;Cocoa Developers, especially new iOS and Mac developers have all likely run into the famous &lt;em&gt;EXC_BAD_ACCESS&lt;/em&gt; error message in XCode. I'm not going to go into what that error message is and how it gets trigger. There's plenty of content on that online.&lt;/p&gt;

&lt;p&gt;The way we normally debug those errors, are through NSZombies. You can go through Instruments and find those, but you can also just use the XCode Debugger while you're running the app in Debug by turning on the Environment Variable.&lt;/p&gt;

&lt;p&gt;In XCode 3.x, you would simply right-click on the .app file in the Product category and choose &lt;em&gt;Get Info&lt;/em&gt; then set the variable NSZombieEnabled to YES in the &lt;em&gt;Arguments&lt;/em&gt; tab.&lt;/p&gt;

&lt;p&gt;In XCode 4, this has been moved. The right-click menu no longer has the &lt;em&gt;Get Info&lt;/em&gt; option, and there's also no Inspector to help you. Instead you must now go to, the top menu and select &lt;em&gt;Product&lt;/em&gt;-&gt; &lt;em&gt;Edit Scheme&lt;/em&gt; or use the &quot; ⌘ &amp;lt;&quot; keyboard shortcut to bring up the menu.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm6.static.flickr.com/5053/5581705586_72ea92b8d4_d.jpg&quot; title=&quot;Product Menu&quot; alt=&quot;Product Menu&quot; /&gt;&lt;/p&gt;

&lt;p&gt;From here, you can simply verify that the &lt;em&gt;Run&lt;/em&gt; scheme is selected and set the environment variable in the tab as you normally have in XCode 3.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm6.static.flickr.com/5306/5581705556_9e368ac41f_z_d.jpg&quot; title=&quot;Scheme Menu&quot; alt=&quot;Scheme Menu&quot; /&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Helpful Tools for iOS and Mac Developers</title>
   <link href="/blog/2011/03/05/helpful-tools-for-ios-and-mac-developers/"/>
   <updated>2011-03-05T00:00:00-08:00</updated>
   <id>/blog/2011/03/05/helpful-tools-for-ios-and-mac-developers</id>
   <content type="html">&lt;p&gt;These are some of the great Third Party Developer Tools out there for Cocoa developers. I've used these on mostly a daily basis and others on an as needed basis. They're very handy and have saved me quite a lot of time and typing. Hopefully they'll be as useful to you, as they have been for me.&lt;/p&gt;

&lt;ol&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.kevincallahan.org/software/accessorizer.html&quot;&gt;Accessorizer&lt;/a&gt; - Code generation for pretty much everything you'll ever need in Cocoa development.&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://blog.mugunthkumar.com/products/mac-app-iconify/&quot;&gt;IConify&lt;/a&gt; - Drag in an image and it'll generate the icon files for your iOS app. XCode comes with &lt;a href=&quot;http://en.wikipedia.org/wiki/Apple_Developer_Tools#Icon_Composer&quot;&gt;Icon Composer&lt;/a&gt; which can help as well.&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.chimpstudios.com/appscanner/&quot;&gt;App Scanner&lt;/a&gt; - scans your app for private API calls, so you can check before you submit it to the App Store for review.&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.loc-suite.org&quot;&gt;Localization Suite&lt;/a&gt; - Everything you need to get your Cocoa app localized, minus someone to actually translate the words and phrases.&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://codepilot.cc/&quot;&gt;Code Pilot&lt;/a&gt; - Quick project navigation through files&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://fileability.net/ingredients/&quot;&gt;Ingredients&lt;/a&gt; - Cocoa Documentation Viewer&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Some are free, others are not.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Three20 Google Chrome Extension</title>
   <link href="/blog/2011/02/11/three20-google-chrome-extension/"/>
   <updated>2011-02-11T00:00:00-08:00</updated>
   <id>/blog/2011/02/11/three20-google-chrome-extension</id>
   <content type="html">&lt;p&gt;Earlier this week, Roman Nurik released &lt;a href=&quot;https://chrome.google.com/webstore/detail/hgcbffeicehlpmgmnhnkjbjoldkfhoin&quot;&gt;the Android SDK Reference Search&lt;/a&gt; Google Chrome Extension to search the Android SDK Docs. I wasn't aware that it was possible to add super powers to the Chrome Omnibox. Having wanting to create a Chrome Extension for quite some time now, but having no idea what do, I was inspired by Roman's idea and went through &lt;a href=&quot;http://code.google.com/p/romannurik-code/source/browse/chrome-extensions/android-sdk-reference-search&quot;&gt;his source code&lt;/a&gt; and also &lt;a href=&quot;http://code.google.com/chrome/extensions/samples.html&quot;&gt;the Google Chrome Extensions sample&lt;/a&gt;:&lt;a href=&quot;http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/omnibox/extension-docs/&quot;&gt;Extension Docs Search&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;alignnone&quot; title=&quot;Three20 Chrome Extension&quot; src=&quot;https://assets1.github.com/img/2fa131320a162f6bdd3b0519a49b7f13848137f3?repo=&amp;amp;url=http%3A%2F%2Ffarm6.static.flickr.com%2F5179%2F5437698841_9af26a8255_d.jpg&amp;amp;path=&quot; alt=&quot;&quot; width=&quot;400&quot; height=&quot;275&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The result, is a nifty little Omnibox for Three20's API library. This very simple extension adds an &lt;em&gt;tt&lt;/em&gt; command to the Chrome Omnibox. For example, typing &lt;em&gt;tt TTView&lt;/em&gt; will bring up a list of all class names in the Three20 Library API matching &lt;em&gt;TTView&lt;/em&gt; - selecting a list item navigates to the relevant Three20 API Reference URL on&lt;a href=&quot;http://api.three20.info/&quot;&gt;api.three20.info&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://chrome.google.com/extensions/detail/nbkcgmaaghokgoidfhfdddlgolegpknf?hl=en&quot;&gt;Install through the Google Chrome Extension Gallery&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can find &lt;a href=&quot;https://github.com/jwang/three20-chrome-extension&quot;&gt;the source code for the Three20 Chrome Extension on GitHub&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Teaching a One Day Intro to iPhone App Development Class at University of Hawaii</title>
   <link href="/blog/2010/12/15/teaching-a-one-day-intro-to-iphone-app-development-class-at-university-of-hawaii/"/>
   <updated>2010-12-15T00:00:00-08:00</updated>
   <id>/blog/2010/12/15/teaching-a-one-day-intro-to-iphone-app-development-class-at-university-of-hawaii</id>
   <content type="html">&lt;p&gt;The University of Hawaii Pacific New Media Outreach College has just posted the details for my one day &lt;a href=&quot;http://www.outreach.hawaii.edu/pnm/programs/2011/EVENT-L11327.asp&quot;&gt;Intro to iPhone App Development course&lt;/a&gt;. It's a limited class size, so if you are interested, don't hesitate and &lt;a href=&quot;http://www.outreach.hawaii.edu/pnm/programs/2011/EVENT-L11327.as&quot;&gt;sign up today&lt;/a&gt;!&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;No computer necessary, as the facilities will provide all the computers, network, and software required to build a working iPhone app. If you're interested in getting the app up and running on your iPod Touch, iPhone or iPad, you will need to be a paid Apple Developer. It costs $99 + tax per year. &lt;a href=&quot;http://developer.apple.com/programs/ios/&quot;&gt;You can register for the Apple account here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This is an introductory course, designed for those students that are comfortable with their computers and willing to learn some very basic programming.&lt;/p&gt;

&lt;p&gt;My goal is to get your comfortable with the technology and to have a lot of fun. Therefore, we will be results focused and will ensure that you have a working application before the end of the day!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Tracking iOS Crash Reports with Hoptoad</title>
   <link href="/blog/2010/11/06/tracking-ios-crash-reports-with-hoptoad/"/>
   <updated>2010-11-06T00:00:00-07:00</updated>
   <id>/blog/2010/11/06/tracking-ios-crash-reports-with-hoptoad</id>
   <content type="html">&lt;p&gt;The folks over at thoughtbot have an great web app called &lt;a href=&quot;http://hoptoadapp.com/&quot;&gt;Hoptoad&lt;/a&gt; to monitor exceptions. They've had support for a bunch of languages (PHP, Python, Ruby, etc) and frameworks (Merb, rails, Sinatra, etc) through their API. Until recently, I had been using a product called &lt;a href=&quot;http://crashbucket.com/&quot;&gt;CrashBucket&lt;/a&gt; from the guys over at &lt;a href=&quot;http://guicocoa.com/&quot;&gt;GUI Cocoa&lt;/a&gt; and &lt;a href=&quot;http://twoguys.us/&quot;&gt;Two Guys&lt;/a&gt; to track my iOS apps crash reports. Thoughtbot has now partnered with GUI Cocoa and Two Guys to bring the CrashBucket functionality into Hoptoad. The result of this partnership is the &lt;a href=&quot;http://hoptoadapp.com/pages/ios-notifier&quot;&gt;Hoptoad iOS Notifier&lt;/a&gt; and it was just announced on November 5th on &lt;a href=&quot;http://robots.thoughtbot.com/post/1487918632/track-ios-crashes-with-hoptoad&quot;&gt;Thoughtbot's blog&lt;/a&gt;.&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;While Crash Reports are available through the iTunesConnect portal, Hoptoad takes it a level further for developers. With the iOS Notifier, the crash reports are broken down by environment. You can also get crash reports for Adhoc app releases. Having these options are great for allowing the tracking down of crashes and bugs during development and beta testing. It's also great for those In-House apps that never make it to the App Store. That's the small requirement that iTunesConnect needs show reports.&lt;/p&gt;

&lt;p&gt;[caption id=&quot;attachment_874&quot; align=&quot;alignnone&quot; width=&quot;300&quot; caption=&quot;Image from Thoughtbot&quot;]&lt;a href=&quot;http://robots.thoughtbot.com/post/1487918632/track-ios-crashes-with-hoptoad&quot;&gt;&lt;img src=&quot;http://johntwang.com/blogturbo.paulstamatiou.com/uploads/2010/11/ios-notifier-post-iphone-and-ht-composed-300x162.png&quot; alt=&quot;iOS Notifier&quot; title=&quot;ios notifier&quot; width=&quot;300&quot; height=&quot;162&quot; class=&quot;size-medium wp-image-874&quot; /&gt;&lt;/a&gt;[/caption]&lt;/p&gt;

&lt;p&gt;Luckily for me, almost all of my apps are a combination of Ruby on Rails3 web apps and iOS apps. This makes it easy to see all of the reports for a bug in one place for both the Rails and iOS errors.&lt;/p&gt;

&lt;p&gt;Hopefully Android support is on the way for Hoptoad as well.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>GData on Rails on Google AppEngine</title>
   <link href="/blog/2010/06/10/gdata-on-rails-on-google-appengine/"/>
   <updated>2010-06-10T00:00:00-07:00</updated>
   <id>/blog/2010/06/10/gdata-on-rails-on-google-appengine</id>
   <content type="html">&lt;p&gt;There's a great article by Jeff Scudder on &lt;a href=&quot;http://code.google.com/appengine/articles/gdata.html&quot;&gt;Retrieving Authenticated Google Data Feeds with Google App Engine&lt;/a&gt; on the Google App Engine Articles site. Jeff's tutorial utilizes the &lt;a href=&quot;http://code.google.com/p/gdata-python-client&quot;&gt;GDdata (Google Data) Python client library&lt;/a&gt;. The aim of this article is to replicate Jeff's Tutorial using &lt;a href=&quot;http://code.google.com/apis/gdata/articles/gdata_on_rails.html&quot;&gt;GData on Rails&lt;/a&gt; on Google App Engine running on JRuby on Rails.&lt;/p&gt;


&lt;!--more--&gt;




&lt;h4&gt;Requirements&lt;/h4&gt;


&lt;ul&gt;
&lt;li&gt;Ruby 1.8.6 patch level 114+&lt;/li&gt;
&lt;li&gt;RubyGems 1.3.1+&lt;/li&gt;
&lt;li&gt;Rails 2.3.5&lt;/li&gt;
&lt;li&gt;GData Gem&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;Introduction&lt;/h3&gt;


&lt;p&gt;I'm sure your mind is positively buzzing with ideas for how to use Google App Engine, and a few of you might be &lt;a href=&quot;http://code.google.com/apis/gdata/overview.html&quot;&gt;Google Data&lt;/a&gt; AtomPub APIs. Quite of few of Google's products expose a Google Data API, (a few interesting examples are YouTube, Google Calendar, and Blogger--you can find a complete &lt;a href=&quot;http://code.google.com/apis/gdata/&quot;&gt;list here&lt;/a&gt;) and these APIs can be used to read and edit the user-specific data they expose.&lt;/p&gt;




&lt;p&gt;In this article we'll use the Google Documents List Data API to walk through the process of requesting access from and retrieving data for a particular user. We'll use Google App Engine's &lt;a href=&quot;http://code.google.com/appengine/docs/python/tools/webapp/&quot;&gt;webapp framework&lt;/a&gt; to generate the application pages, and the &lt;a href=&quot;http://code.google.com/appengine/docs/python/users/&quot;&gt;Users API&lt;/a&gt; to authenticate users with Google Accounts.&lt;/p&gt;




&lt;h3&gt;Google's AuthSub APIs&lt;/h3&gt;


&lt;p&gt;Some Google Data services require authorization from your users to read data, and all Google Data services require their authorization before your app can write to these services on the user's behalf. Google uses &lt;a href=&quot;http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html&quot;&gt;AuthSub&lt;/a&gt; to enable users to authorize your app to access specific services.&lt;/p&gt;




&lt;p&gt;Using AuthSub, users type their password into a secure page at google.com, then are redirected back to your app. Your app receives a token allowing it to access the requested service until the user revokes the token through the &lt;a href=&quot;https://www.google.com/accounts/ManageAccount&quot;&gt;Account Management&lt;/a&gt; page.&lt;/p&gt;




&lt;p&gt;In this article, we'll walk through the process of setting up the login link for the user, obtaining a session token to use for multiple requests to Google Data services, and storing the token in the datastore so that it can be reused for returning users.&lt;/p&gt;




&lt;h3&gt;Using the GData on Rails client library&lt;/h3&gt;


&lt;p&gt;Google offers a Data on Rails client library that simplifies token management and requesting data from specific Google Data APIs. In this article we'll use this library, but of course you're welcome to use whatever works best for your application. &lt;a href=&quot;http://code.google.com/p/gdata-ruby-util/&quot;&gt;Download the Gdata on Rails client library&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;To use this library with your Google App Engine application, simply install the library gem and require it as you usually would. There's nothing more to it than that!&lt;/p&gt;


&lt;h4&gt;Installing the Google Data Ruby Utility Library&lt;/h4&gt;


&lt;p&gt;To obtain the library, you can either download the library source directly from project hosting or install the gem:&lt;/p&gt;


&lt;p&gt;&lt;code&gt;sudo gem install gdata&lt;/code&gt;&lt;/p&gt;

&lt;h5&gt;config/enviroment.rb&lt;/h5&gt;


&lt;p&gt;&lt;code&gt;config.gem 'gdata', :lib =&gt; 'gdata'&lt;/code&gt;&lt;/p&gt;

&lt;h5&gt;config.ru&lt;/h5&gt;


&lt;p&gt;[sourcecode language=&quot;ruby&quot;]
require 'appengine-rack'
require 'image'
require 'image-upload'
require 'user'
require 'gdata'
AppEngine::Rack.configure_app(&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;:application =&amp;gt; 'jruby-gdata',
:precompilation_enabled =&amp;gt; true,
:sessions_enabled =&amp;gt; true,
:version =&amp;gt; &quot;1&quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;AppEngine::Rack.app.resource_files.exclude :rails_excludes
ENV['RAILS_ENV'] = AppEngine::Rack.environment&lt;/p&gt;

&lt;p&gt;deferred_dispatcher = AppEngine::Rack::DeferredDispatcher.new(&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;:require =&amp;gt; File.expand_path('../config/environment', __FILE__),
:dispatch =&amp;gt; 'ActionController::Dispatcher')
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;map '/contacts' do
  use AppEngine::Rack::LoginRequired
  run deferred_dispatcher
end&lt;/p&gt;

&lt;p&gt;map '/' do
  run deferred_dispatcher
end
[/sourcecode]&lt;/p&gt;

&lt;h5&gt;Gemfile&lt;/h5&gt;


&lt;p&gt;[sourcecode language=&quot;ruby&quot;]&lt;/p&gt;

&lt;h1&gt;Critical default settings:&lt;/h1&gt;

&lt;p&gt;disable_system_gems
disable_rubygems
bundle_path '.gems/bundler_gems'&lt;/p&gt;

&lt;h1&gt;List gems to bundle here:&lt;/h1&gt;

&lt;p&gt;gem 'rails_dm_datastore'
gem 'rails', &quot;2.3.5&quot;
gem 'appengine-apis'
gem 'gdata'
[/sourcecode]&lt;/p&gt;

&lt;h3&gt;Step 1: Generating the Token Request Link (AuthSub)&lt;/h3&gt;


&lt;p&gt;Applications use an API called &lt;a href=&quot;http://code.google.com/apis/accounts/docs/AuthForWebApps.html&quot;&gt;AuthSub&lt;/a&gt; to obtain a user's permission for accessing protected Google Data feeds. The process is fairly simple. To request access from a user to a protected feed, your app will redirect the user to a secure page on google.com where the user can sign in to grant or deny access. Once doing so, the user is then redirected back to your app with the newly-granted token stored in the URL.&lt;/p&gt;




&lt;p&gt;Your application needs to specify two things when using AuthSub: the common base URL for the feeds you want to access, and the redirect URL for your app, where the user will be sent after authorizing your application.&lt;/p&gt;




&lt;p&gt;To generate the token request URL, we'll use the &lt;code&gt;GData::Auth::AuthSub&lt;/code&gt; module included in the Google Data client library. This module contains a method, get_url, which automatically generates the correct URL given the base feed URL(scope) and your website's return address (next_url). In the code snippet below, we use this method to generate a URL requesting access to a user's Google Document List feed.&lt;/p&gt;




&lt;p&gt;In our routes.rb file, we will define a URL mapping to create a separate URL for each step. Here's an example:&lt;/p&gt;


&lt;p&gt;[sourcecode language=&quot;ruby&quot;]&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;map.connect 'step1', :controller =&amp;gt; 'step1', :action =&amp;gt; 'get'
map.connect 'step2', :controller =&amp;gt; 'step2', :action =&amp;gt; 'get'
map.connect 'step3', :controller =&amp;gt; 'step3', :action =&amp;gt; 'get'
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;[/sourcecode]&lt;/p&gt;

&lt;p&gt;To illustrate this first step of using AuthSub in the app, we will create a step1_countroller.rb that looks something like this:&lt;/p&gt;


&lt;p&gt;[sourcecode language=&quot;ruby&quot;]
class Step1Controller &amp;lt; ApplicationController&lt;/p&gt;

&lt;p&gt;  def get&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;scope = 'http://docs.google.com/feeds/'
next_url = url_for :controller =&amp;gt; self.controller_name, :action =&amp;gt; self.action_name
secure = false  # set secure = true for signed AuthSub requests
session = true
@authsub_link = GData::Auth::AuthSub.get_url(next_url, scope, secure, session)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;  end
end
[/sourcecode]&lt;/p&gt;

&lt;h3&gt;Step 2: Retrieving and Updating a Token&lt;/h3&gt;


&lt;p&gt;Once we've generated an authorization request URL for a particular Google Data service, we'll need a way to use the token returned to our app to access the feed in question. Now, we need to retrieve the initial token returned to us for the Google Documents List API, and upgrade that token to a permanent session token. Remember that we told the service to redirect the user to the URL 'http://jruby-gdata.appspot.com/step1'. Let's extend our simple example above to do a few things. We'll call this new version step2.&lt;/p&gt;




&lt;p&gt;Let's write the functionality that will handle the return request from the Google Data service the user signed in to. The Google Data service will request a URL that will look something like this:&lt;/p&gt;


&lt;p&gt;&lt;code&gt;http://jruby-gdata.appspot.com/?auth_sub_scopes=http%3A%2F%2Fdocs.google.com%2Ffeeds%2F&amp;amp;token=CKC5y...Mg&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Which is just our return URL appended with the initial authorization token for the service which grants our app access for our user. The code below first takes this URL and extracts the service and the token. Then, it requests an upgrade for the token for the document list service.&lt;/p&gt;




&lt;p&gt;We use two new methods to achieve this. First, we try to obtain the single use AuthSub token by examining the current page's URL. The params[:token] function handles token extraction for us. To upgrade this initial token to a session token, we use &lt;code&gt;client.auth_handler.upgrade()&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;[sourcecode language=&quot;ruby&quot;]
require 'appengine-apis/users'&lt;/p&gt;

&lt;p&gt;class Step2Controller &amp;lt; ApplicationController
  def get&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;@client = GData::Client::DocList.new
next_url = url_for :controller =&amp;gt; self.controller_name, :action =&amp;gt; self.action_name
secure = false  # set secure = true for signed AuthSub requests
sess = true
@authsub_link = @client.authsub_url(next_url, secure, sess)

if params[:token].nil? and session[:token].nil?
  @url = &quot;nothing&quot;
elsif params[:token] and session[:token].nil?
  @client.authsub_token = params[:token] # extract the single-use token from the URL query params
  session[:token] = @client.auth_handler.upgrade()
end

@url1, @url_linktext = if AppEngine::Users.current_user
    [AppEngine::Users.create_logout_url(request.url), 'Sign Out']
  else
    [AppEngine::Users.create_login_url(request.url), 'Sign In']
  end

@client.authsub_token = session[:token] if session[:token]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;  end
end&lt;/p&gt;

&lt;p&gt;[/sourcecode]&lt;/p&gt;

&lt;p&gt;After we upgrade the initial token using the &lt;code&gt;client.auth_handler.upgrade()&lt;/code&gt; method. Below, we will take you through the steps to use this token and fetch your user's feed in your application.&lt;/p&gt;




&lt;h3&gt;Step 3: Using a session token and fetching a data feed.&lt;/h3&gt;


&lt;p&gt;Now that we have obtained and stored the session token, we can use the AuthSub session token to retrieve the user's document list feed with our application. The final step is to get the user feed from Google Docs and display it on our site!&lt;/p&gt;




&lt;p&gt;Lets add a new method to our app to request the feed and handle a token required message. We will call this method fetch_feed and add it to the Fetcher request handler class. In this example, the app uses client.Get to try to read data from the feed.&lt;/p&gt;




&lt;p&gt;Some Google Data feeds require authorization before they can be read. If our app had previously saved an AuthSub session token for the current user and the desired feed URL, then the token will be found automatically by the client object and used in the request. If we did not have a stored token for the combination of the current user and the desired feed, then we will attempt to fetch the feed anyway. If we receive a &quot;token required&quot; message from the server, then we will ask the user to authorize this app which will give our app a new AuthSub token.&lt;/p&gt;




&lt;p&gt;Here is the code for the fetch_feed method:&lt;/p&gt;


&lt;p&gt;[sourcecode language=&quot;ruby&quot;]
def fetch_feed (client, feed_url)&lt;/p&gt;

&lt;p&gt;  if feed_url.nil?&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;'No feed_url was specified for the app to fetch.&amp;lt;br/&amp;gt;'
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;  else&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;  begin
    @feed = @client.get(feed_url).to_xml
    # If fetching fails
    rescue GData::Client::AuthorizationError
      @error = 'authorization error'
  end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;  end
end
[/sourcecode]&lt;/p&gt;

&lt;p&gt;Now that we have a method to fetch the target feed, we can modify the Fetcher class' get method to call this method after we upgrade and store the AuthSub token.&lt;/p&gt;




&lt;p&gt;Our app also needs to know the URL which should be fetched, so we add a URL parameter to the incoming request to indicate which feed should be fetched. The below code for the get method adds the ability to find out which URL the app should fetch and fetches the desired feed.&lt;/p&gt;


&lt;p&gt;[sourcecode language=&quot;ruby&quot;]
require 'appengine-apis/users'
require 'appengine-apis/urlfetch'&lt;/p&gt;

&lt;p&gt;class Step3Controller &amp;lt; ApplicationController&lt;/p&gt;

&lt;p&gt;  def get&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;@client = GData::Client::DocList.new
next_url = url_for :controller =&amp;gt; self.controller_name, :action =&amp;gt; self.action_name
secure = false  # set secure = true for signed AuthSub requests
sess = true
@authsub_link = @client.authsub_url(next_url, secure, sess)

if params[:token].nil? and session[:token].nil?
  @url = &quot;nothing&quot;
elsif params[:token] and session[:token].nil?
  @client.authsub_token = params[:token] # extract the single-use token from the URL query params
  session[:token] = @client.auth_handler.upgrade()
end


@url1, @url_linktext = if AppEngine::Users.current_user
    [AppEngine::Users.create_logout_url(request.url), 'Sign Out']
  else
    [AppEngine::Users.create_login_url(request.url), 'Sign In']
  end

@client.authsub_token = session[:token] if session[:token]

feed_url = params[:feed_url]

if feed_url.nil?
  @sample_url = next_url + '?feed_url=http%3A%2F%2Fdocs.google.com%2Ffeeds%2Fdocuments%2Fprivate%2Ffull'

end

fetch_feed(@client,feed_url)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;  end
end
[/sourcecode]&lt;/p&gt;

&lt;p&gt;In the above, we request the feed by calling &lt;code&gt;fetch_feed(@client, feed_url)&lt;/code&gt;.&lt;/p&gt;




&lt;p&gt;You can see the final program at work by visiting: &lt;a href=&quot;http://jruby-gdata.appspot.com/&quot;&gt;http://jruby-gdata.appspot.com/&lt;/a&gt;. Also, view the complete source code, where we put all of this together at the &lt;a href=&quot;http://code.google.com/p/jruby-google-app-engine-samples/&quot;&gt;Google App Engine sample code project&lt;/a&gt; on Google Code Hosting.&lt;/p&gt;




&lt;p&gt;The AuthSub session tokens are long lived, but they can be revoked by the user or by your application. At some point, a session token stored in your data store may become revoked so your application should handle cleanup of tokens which can no longer be used. The status of a token can be tested by &lt;a href=&quot;http://code.google.com/apis/accounts/docs/AuthForWebApps.html#AuthSubTokenInfo&quot;&gt;querying the token info URL.&lt;/a&gt; You can read more about AuthSub token management in the &lt;a href=&quot;http://code.google.com/apis/accounts/docs/AuthForWebApps.html&quot;&gt;AuthSub documentation.&lt;/a&gt; This feature is left as an exercise to the reader, have fun :)&lt;/p&gt;




&lt;h3&gt;Conclusion&lt;/h3&gt;


&lt;p&gt;Using the Google Data on Rails client library, you can easily manage your user's Google Data feeds in your own Google App Engine application.&lt;/p&gt;




&lt;p&gt;The Google Data on Rails client library includes support for almost all of the Google Data services. For further information, you can read the &lt;a href=&quot;http://code.google.com/apis/gdata/articles/gdata_on_rails.html&quot;&gt;getting started guide&lt;/a&gt; for the library, visit the &lt;a href=&quot;http://code.google.com/p/gdata-ruby-util/&quot;&gt;project&lt;/a&gt; to browse the source, and even ask questions on the 's Google group.&lt;/p&gt;




&lt;p&gt;As always, for questions about Google App Engine, read Google's &lt;a href=&quot;http://code.google.com/appengine/docs&quot;&gt;online documentation&lt;/a&gt; and visit our &lt;a href=&quot;http://groups.google.com/group/google-appengine&quot;&gt;google group.&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;Appendix: ClientLogin&lt;/h3&gt;


&lt;p&gt;This example uses AuthSub to authorize the app to act on the user's behalf, but the Google Data APIs support other authorization mechanisms. In some cases, you might want to temporarily use &lt;a href=&quot;http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html&quot;&gt;ClientLogin&lt;/a&gt; while developing your application. If you are going to use ClientLogin, the Ruby library has a client class for each of the APIs and a Base class:&lt;/p&gt;


&lt;p&gt;[sourcecode language=&quot;ruby&quot;]
client = GData::Client::DocList.new
client.clientlogin('user@gmail.com', 'pa$$word')&lt;/p&gt;

&lt;p&gt;client_login_handler = GData::Auth::ClientLogin.new('writely', :account_type =&gt; 'HOSTED')
token = client_login_handler.get_token('user@example.com', 'pa$$word', 'google-RailsArticleSample-v1')
client = GData::Client::Base.new(:auth_handler =&gt; client_login_handler)
[/sourcecode]&lt;/p&gt;

&lt;p&gt;You may receive a CAPTCHA challenge when requesting a ClientLogin token which you will need to handle in your app before you can receive a ClientLogin token. For this and a few other reasons, I don't recommend using ClientLogin in Google App Engine, but the above is how you could use it while developing your app.&lt;/p&gt;




&lt;h4&gt;Resources&lt;/h4&gt;


&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/appengine/docs/python/howto/usinggdataservices.html&quot;&gt;Using Google Data Services - Google App Engine&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/appengine/articles/gdata.html&quot;&gt;Retrieving Authenticated Google Data Feeds with Google App Engine&lt;/a&gt; with Python&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/gdata/articles/gdata_on_rails.html&quot;&gt;GData on Rails&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/gdata/articles/using_ruby.html&quot;&gt;Using Ruby with the Google Data APIs - Google Data Protocol - Google Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>JSON with Ruby on Rails on Google AppEngine</title>
   <link href="/blog/2010/04/23/json-with-ruby-on-rails-on-google-appengine/"/>
   <updated>2010-04-23T00:00:00-07:00</updated>
   <id>/blog/2010/04/23/json-with-ruby-on-rails-on-google-appengine</id>
   <content type="html">&lt;h3&gt;Getting Started&lt;/h3&gt;


&lt;p&gt;Here's a list of what you'll need to get started with the demo:&lt;/p&gt;


&lt;ul class=&quot;styled&quot;&gt;
&lt;li&gt;a Google AppEngine account&lt;/li&gt;
&lt;li&gt;Ruby 1.8.6&lt;/li&gt;
&lt;li&gt;Rails 2.3.5&lt;/li&gt;
&lt;li&gt;Ruby on Rails AppEngine Gem&lt;/li&gt;
&lt;/ul&gt;


&lt;!--more--&gt;


&lt;h4&gt;Instructions&lt;/h4&gt;


&lt;p&gt;The first steps that you'll want to follow are from John Woodell's Gist on &lt;a href=&quot;http://gist.github.com/268192&quot;&gt;Rails 2.3.5 on App Engine with DataMapper&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;As you'll notice, the last couple of steps generate a RESTful resource called Contact and also it's associated DataMapper Model.&lt;/p&gt;




&lt;h4&gt;Adding REST&lt;/h4&gt;


&lt;p&gt;Now in order to add JSON to the mix, we'll need a couple more things:&lt;/p&gt;


&lt;ul class=&quot;styled&quot;&gt;
&lt;li&gt;JSON gem&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://github.com/datamapper/dm-serializer/tree/&quot;&gt;dm-serializer&lt;/a&gt; gem&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;We only have to make a few very small changes to the demo app that you got from the &lt;a href=&quot;http://gist.github.com/268192&quot;&gt;Gist&lt;/a&gt; to get JSON integrated. They're listed below, and also at this &lt;a href=&quot;http://gist.github.com/377353&quot;&gt;Gist&lt;/a&gt;.&lt;/p&gt;




&lt;h5&gt;Gemfile changes: adding the &lt;em&gt;json-jruby&lt;/em&gt; and &lt;em&gt;dm-serializer&lt;/em&gt; to the gems for bundler&lt;/h5&gt;


&lt;p&gt;[sourcecode language=&quot;ruby&quot;]&lt;/p&gt;

&lt;h1&gt;Critical default settings:&lt;/h1&gt;

&lt;p&gt;disable_system_gems
disable_rubygems
bundle_path '.gems/bundler_gems'&lt;/p&gt;

&lt;h1&gt;List gems to bundle here:&lt;/h1&gt;

&lt;p&gt;gem 'rails_dm_datastore'
gem 'rails', &quot;2.3.5&quot;
gem &quot;json-jruby&quot;
gem &quot;dm-serializer&quot;
[/sourcecode]&lt;/p&gt;

&lt;h5&gt;config.ru changes: adding &lt;em&gt;require 'dm-serializer'&lt;/em&gt; and&lt;em&gt; 'json'&lt;/em&gt;&lt;/h5&gt;


&lt;p&gt;[sourcecode language=&quot;ruby&quot;]
require 'appengine-rack'
require 'cgi'
require 'json'
require 'dm-core'
require 'dm-serializer'&lt;/p&gt;

&lt;p&gt;AppEngine::Rack.configure_app(&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;:application =&amp;gt; 'iphone-json',
:precompilation_enabled =&amp;gt; true,
:sessions_enabled =&amp;gt; true,
:version =&amp;gt; &quot;1&quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;AppEngine::Rack.app.resource_files.exclude :rails_excludes
ENV['RAILS_ENV'] = AppEngine::Rack.environment&lt;/p&gt;

&lt;p&gt;deferred_dispatcher = AppEngine::Rack::DeferredDispatcher.new(&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; :require =&amp;gt; File.expand_path('../config/environment', __FILE__),
 :dispatch =&amp;gt; 'ActionController::Dispatcher', :isolate =&amp;gt; true)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;map '/admin' do
  use AppEngine::Rack::AdminRequired
  run deferred_dispatcher
end&lt;/p&gt;

&lt;p&gt;map '/user' do
  use AppEngine::Rack::LoginRequired
  run deferred_dispatcher
end&lt;/p&gt;

&lt;p&gt;map '/' do
  run deferred_dispatcher
end
[/sourcecode]&lt;/p&gt;

&lt;h5&gt;and finally, the contacts_controller.rb needs the corresponding &lt;em&gt;format.json&lt;/em&gt; render statements.&lt;/h5&gt;


&lt;p&gt;[sourcecode language=&quot;ruby&quot;]
class ContactsController &amp;lt; ApplicationController
  # GET /contacts
  # GET /contacts.xml
  # GET /contacts.json
  def index&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;@contacts = Contact.all

respond_to do |format|
  format.html # index.html.erb
  format.xml  { render :xml =&amp;gt; @contacts }
  format.json { render :json =&amp;gt; @contacts }
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;  end&lt;/p&gt;

&lt;p&gt;  # GET /contacts/1
  # GET /contacts/1.xml
  # GET /contacts/1.json
  def show&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;@contact = Contact.find(params[:id])

respond_to do |format|
  format.html # show.html.erb
  format.xml  { render :xml =&amp;gt; @contact }
  format.json { render :json =&amp;gt; @contact }
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;  end&lt;/p&gt;

&lt;p&gt;  # GET /contacts/new
  # GET /contacts/new.xml
  # GET /contacts/new.json
  def new&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;@contact = Contact.new

respond_to do |format|
  format.html # new.html.erb
  format.xml  { render :xml =&amp;gt; @contact }
  format.json { render :json =&amp;gt; @contact }
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;  end&lt;/p&gt;

&lt;p&gt;  # GET /contacts/1/edit
  def edit&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;@contact = Contact.find(params[:id])
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;  end&lt;/p&gt;

&lt;p&gt;  # POST /contacts
  # POST /contacts.xml
  # POST /contacts.json
  def create&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;@contact = Contact.new(params[:contact])

respond_to do |format|
  if @contact.save
    flash[:notice] = 'Contact was successfully created.'
    format.html { redirect_to(@contact) }
    format.xml  { render :xml =&amp;gt; @contact, :status =&amp;gt; :created, :location =&amp;gt; @contact }
    format.json { render :json =&amp;gt; @contact, :status =&amp;gt; :created, :location =&amp;gt; @contact }
  else
    format.html { render :action =&amp;gt; &quot;new&quot; }
    format.xml  { render :xml =&amp;gt; @contact.errors, :status =&amp;gt; :unprocessable_entity }
    format.json { render :json =&amp;gt; @contact.errors, :status =&amp;gt; :unprocessable_entity }
  end
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;  end&lt;/p&gt;

&lt;p&gt;  # PUT /contacts/1
  # PUT /contacts/1.xml
  # PUT /contacts/1.json
  def update&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;@contact = Contact.find(params[:id])

respond_to do |format|
  if @contact.update_attributes(params[:contact])
    flash[:notice] = 'Contact was successfully updated.'
    format.html { redirect_to(@contact) }
    format.xml  { head :ok }
    format.json { head :ok }
  else
    format.html { render :action =&amp;gt; &quot;edit&quot; }
    format.xml  { render :xml =&amp;gt; @contact.errors, :status =&amp;gt; :unprocessable_entity }
    format.json { render :json =&amp;gt; @contact.errors, :status =&amp;gt; :unprocessable_entity }
  end
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;  end&lt;/p&gt;

&lt;p&gt;  # DELETE /contacts/1
  # DELETE /contacts/1.xml
  def destroy&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;@contact = Contact.find(params[:id])
@contact.destroy

respond_to do |format|
  format.html { redirect_to(contacts_url) }
  format.xml  { head :ok }
  format.json { head :ok }
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;  end
end
[/sourcecode]&lt;/p&gt;

&lt;h3&gt;Final Notes&lt;/h3&gt;


&lt;ol class=&quot;styled&quot;&gt;
&lt;li&gt;You may have noticed that by default you get RESTful XML when you generated the resource. It doesn't work without the needed dm-serializer. Remember, we're using DataMapper here and not ActiveResource. If you try, you'll get this beautiful error.&lt;br /&gt;
&lt;code&gt;SEVERE: [1272067889120000]  RuntimeError (Not all elements respond to to_xml)&lt;/code&gt;&lt;br /&gt;
&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;If you inspect your DataMapper model, you'll notice that every field is a required field. This is key for when you're testing your POST method.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;The last thing that is currently being looked into, is that the POST requires you to pass in the Class in lowercase for it to properly work. I'm not sure if this is a case-sensitive issue, or just purely needing to change the param to be &quot;:Contact&quot; instead of &quot;:contact&quot; in the controller.&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;h3&gt;Source Code&lt;/h3&gt;


&lt;ul class=&quot;styled&quot;&gt;
&lt;li&gt;The fully working demo can be found running on Google AppEngine at: &lt;a href=&quot;http://iphone-json.appspot.com&quot;&gt;iphone-json.appspot.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;source is available on &lt;a href=&quot;http://github.com/freshblocks/iPhone-JSON&quot;&gt;Github&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;And there is an accompanying iPhone REST client also available on &lt;a href=&quot;http://github.com/freshblocks/iPhone-JSON-Client&quot;&gt;Github&lt;/a&gt;. (Android client is currently in development.)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Alternatively, if you just want to quickly test your newly created JSON RESTful resource, you can use the &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/9780&quot;&gt;REST Client for Firefox&lt;/a&gt; or &lt;a href=&quot;https://chrome.google.com/extensions/detail/fhjcajmcbmldlhcimfajhfbgofnpcjmb&quot;&gt;REST Client for Google Chrome.&lt;/a&gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Lessons Learned: Planning for a Successful Talk</title>
   <link href="/blog/2010/03/25/lessons-learned-planning-for-a-successful-talk/"/>
   <updated>2010-03-25T00:00:00-07:00</updated>
   <id>/blog/2010/03/25/lessons-learned-planning-for-a-successful-talk</id>
   <content type="html">&lt;p&gt;On March 20th, I had the privilege of being a speaker at &lt;a href=&quot;http://www.unconferenz.com&quot;&gt;Unconferenz&lt;/a&gt;. I also ended up hosting a couple of other talks throughout the day as well. I presented on the topic of Designing iPhone/iPad Apps and 3rd Party SDKs. The slides are available &lt;a href=&quot;http://freshblocks.com/downloads/unconferenz2010.pdf&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;I learned quite a few lessons as a speaker about giving a better talk.&lt;/p&gt;


&lt;!--more--&gt;


&lt;h3&gt;Internet Access&lt;/h3&gt;


&lt;p&gt;I didn't run into any problems on Internet Access at Unconferenz, but I did make sure to ask the host if there would be Internet access provided. I also brought along a personal USB 3G Modem as a backup.&lt;/p&gt;


&lt;h3&gt;Power&lt;/h3&gt;


&lt;p&gt;Power actually could have been a problem. I currently use a MacBook Pro which about 2-3hrs of battery life. However, something to consider is the computer going to sleep mode while you're in the middle of a presentation. Also, the power outlet may not be somewhere remotely close to how long your power cable reaches. For this, I carry both my power adapter and also a &lt;a href=&quot;http://www.amazon.com/RiteAV-ft-Power-Extension-Cord/dp/B000V1PAZS/ref=sr_1_1?ie=UTF8&amp;s=electronics&amp;qid=1269589267&amp;sr=8-1&quot;&gt;10ft extension cable&lt;/a&gt;. You may also want to be a kind person and bring a &lt;a href=&quot;http://www.amazon.com/Belkin-Mini-Surge-Protector-Charger/dp/B0015DYMVO/ref=sr_1_2?ie=UTF8&amp;s=electronics&amp;qid=1269589226&amp;sr=8-2&quot;&gt;multi-outlet mini surge protector&lt;/a&gt; so not to take the only one or 2 power outlet available.&lt;/p&gt;


&lt;h3&gt;Backup Plan&lt;/h3&gt;


&lt;p&gt;Always have a backup plan. The one thing that I did not have at all was a Mini-DisplayPort to VGA adapter for my laptop to connect to the projector. That was a bad thing. Luckily, someone at the conference did have one and I was able to borrow it. There was also a computer in the room that I could have used as another fallback as long as I had my presentation on a USB Key or uploaded somewhere like &lt;a href=&quot;http://www.dropbox.com&quot;&gt;DropBox&lt;/a&gt; on the web.&lt;/p&gt;


&lt;h3&gt;Contact Info&lt;/h3&gt;


&lt;p&gt;I ran out of business cards. That was a bad thing. Always bring lots of those. I was lucky enough that some people had iPhones with the Bump app to swap contact info and also some who were willing to either give me theirs so I could contact them or just quickly add me to either &lt;a href=&quot;http://twitter.com/johntwang&quot;&gt;Twitter&lt;/a&gt; or Gmail email address.&lt;/p&gt;


&lt;h3&gt;Double-Check Everything, Maybe Even Triple-Check&lt;/h3&gt;


&lt;p&gt;I had uploaded my slides ahead of time in case anyone wanted to download them. Unfortunately for me, I misspelled the file name and the link was dead. I quickly corrected the link and made sure to tweet it back out. That was very embarrassing to say the least. Make sure your stuff is set before you announce it.&lt;/p&gt;


&lt;h4&gt;Resources&lt;/h4&gt;


&lt;ul class=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://vimeo.com/7160585&quot;&gt;The Future of the Cloud by Simon Wardley&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://carsonified.com/blog/business/10-kick-ass-presentation-techniques/&quot;&gt;10 Kick Ass Presentation Techniques | Carsonified&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Presentation-Zen-Simple-Design-Delivery/dp/0321525655/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1269302992&amp;sr=8-1&quot;&gt;Presentation Zen: Simple Ideas on Presentation Design and Delivery&lt;/a&gt; - Garr Reynolds&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Presentation-Zen-Design-Principles-Presentations/dp/0321668790/ref=ntt_at_ep_dpt_2&quot;&gt;Presentation Zen Design: Simple Design Principles and Techniques to Enhance Your Presentations
&lt;/a&gt; - Garr Reynolds&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>On 37 Signals&#039; REWORK</title>
   <link href="/blog/2010/03/17/on-37-signals-rework/"/>
   <updated>2010-03-17T00:00:00-07:00</updated>
   <id>/blog/2010/03/17/on-37-signals-rework</id>
   <content type="html">&lt;p&gt;The folks over at 37 Signals recently released their new book called &lt;a href=&quot;http://www.amazon.com/gp/product/0307463745?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0307463745&quot;&gt;Rework&lt;/a&gt;&lt;img src=&quot;http://www.assoc-amazon.com/e/ir?t=jotwa-20&amp;l=as2&amp;o=1&amp;a=0307463745&quot;/&gt;. It's a business book on how they run their company and business.&lt;/p&gt;


&lt;!--more--&gt;


&lt;p&gt;REWORK is a brilliant book. Check out the &lt;a href=&quot;http://37signals.com/rework/&quot;&gt;book's website&lt;/a&gt;. The website contains videos and sample images of the contents.&lt;/p&gt;




&lt;h3&gt;Why You Should Read REWORK&lt;/h3&gt;


&lt;p&gt;The book is dirty cheap. It's under $10 on the Amazon Kindle and just over $12 in hardcover on Amazon. It's also an extremely short book coming in at just under 300 pages. I finished reading it less than 3 hours. All of the principles detailed in the book are brilliantly worded to the point that they'll feel like common sense. The principles are also nice and short so that you can actually remember and apply them. Jason and David don't throw a bunch of mumbo jumbo and useless buzz words.&lt;/p&gt;




&lt;p&gt;This is a quick but very powerful read and definitely recommended for everyone. It's not a book just for business owners, CEOs or the cubicle workers. REWORK is a book that everyone at every level should read.&lt;/p&gt;




&lt;h3&gt;What's Next?&lt;/h3&gt;


&lt;p&gt;Head on over to the &lt;a href=&quot;http://37signals.com/rework/&quot;&gt;book's website&lt;/a&gt; and check out the PDF excerpt for a sample or just go straight to Amazon and order the &lt;a href=&quot;http://www.amazon.com/Rework-ebook/dp/B002MUAJ2A/ref=tmm_kin_title_0?ie=UTF8&amp;m=AG56TWVU5XWC2&quot;&gt;Kindle version&lt;/a&gt; or &lt;a href=&quot;http://www.amazon.com/gp/product/0307463745?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0307463745&quot;&gt;Hardcover version&lt;/a&gt;&lt;img src=&quot;http://www.assoc-amazon.com/e/ir?t=jotwa-20&amp;l=as2&amp;o=1&amp;a=0307463745&quot;/&gt;.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Where I Am and Where I Want to Be</title>
   <link href="/blog/2010/01/28/where-i-am-and-where-i-want-to-be/"/>
   <updated>2010-01-28T00:00:00-08:00</updated>
   <id>/blog/2010/01/28/where-i-am-and-where-i-want-to-be</id>
   <content type="html">&lt;p&gt;I recently &lt;a href=&quot;http://www.johntwang.com/blog/2009/12/14/introducing-fresh-blocks/&quot;&gt;introduced my new venture called Fresh Blocks&lt;/a&gt;. A self-owned business of mine for web design and iPhone Apps. I've also recently become interested in documenting an actual process of things. Partly due to both &lt;a href=&quot;http://john.onolan.org/&quot;&gt;John O'Nolan&lt;/a&gt;'s &lt;a href=&quot;http://john.onolan.org/starting-a-business-a-year-in-review/&quot;&gt;monthly business reviews&lt;/a&gt; and also &lt;a href=&quot;http://www.thisisaaronslife.com/&quot;&gt;Aaron Irizarry&lt;/a&gt;'s recent &lt;a href=&quot;http://www.thisisaaronslife.com/category/freelance/&quot;&gt;videocast series about Making the Transition&lt;/a&gt;.&lt;/p&gt;


&lt;!--more--&gt;


&lt;h3&gt;So What Does This All Mean?&lt;/h3&gt;


&lt;p&gt;For starters, It means that I'm going to be attempting to move all technical related posts (maybe just the future ones) to the &lt;a href=&quot;http://www.freshblocks.com/blog&quot;&gt;Fresh Blocks Blog&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Secondly, I'm going to do monthly and yearly goals for both &lt;a href=&quot;http://www.freshblocks.com&quot;&gt;Fresh Blocks&lt;/a&gt; and myself. Of which, I will be using the blog to document my progress, successes and failures similar to John O'Nolan's concept.&lt;/p&gt;


&lt;p&gt;I plan on separating content into a few broader categories, such as following my Thoughts and my Learnings. I'll likely keep this page more personal and the Fresh Blocks page more professional.&lt;/p&gt;




&lt;h3&gt;Hello World&lt;/h3&gt;


&lt;p&gt;It seems appropriate in a way to start anew. But as we all know, Google never forgets. Some of the things that I am looking to document will be highly related to personal development. Of course, it will also overlap with what Fresh Blocks does, simply because Fresh Blocks is a large part of my development.&lt;/p&gt;


&lt;p&gt;I'm going to be going over goals and what was achieved, what was not and why not. I will also go into noting special blog posts from around the web that have in some way contributed to my personal development.&lt;/p&gt;




&lt;h3&gt;The Year That Was 2009&lt;/h3&gt;


&lt;p&gt;Last year brought a bunch of changes. In the beginning of the year, I started up a company called &lt;a href=&quot;http://www.freshblocks.com&quot;&gt;Fresh Blocks&lt;/a&gt;. It was created to transition my freelance work from my personal name to a more distinguishable brand. The creation of &lt;a href=&quot;http://www.freshblocks.com&quot;&gt;Fresh Blocks&lt;/a&gt; also allowed me to learn what it takes to run a business and be a freelancer. I quickly became involved in social media networks such as &lt;a href=&quot;http://www.twitter.com/jwang392&quot;&gt;Twitter&lt;/a&gt; and &lt;a href=&quot;http://www.friendfeed.com/johnwang&quot;&gt;Friendfeed&lt;/a&gt; to connect to others in the fields and learn from them.&lt;/p&gt;


&lt;p&gt;Another by product of Fresh Blocks was getting into iPhone app development. This of course meant learning a complete new programming language (Objective C) and framework of Cocoa (Touch.) I signed up for a developer's account and began reading through tons of Apple Documentation, Dave Mark's Beginning iPhone SDK Development book, and following along with Stanford's CS193P iTunesU iPhone Programming Course. I also joined various Google Groups, the &lt;a href=&quot;http://www.iphonedevsdk.com/forum/iphone-sdk-development/&quot;&gt;iPhone Dev SDK forum&lt;/a&gt; and Apple's own Beta forum. I quickly developed 2 internal iPhone apps and 1 that was rejected by Apple's App Store due to being a purely self-marketing app. All in all, I learned a great deal and am still thoroughly excited about iPhone programming.&lt;/p&gt;


&lt;p&gt;On the web design and development end of things, I got my feet wet with some jQuery, seeing as I haven't done much Javascript since back in 1999, it was quite a breath of fresh air. I also got started with some frameworks such as 960.gs and BlueprintCSS. I started getting down to learning Ruby on Rails and Python. I also introduced myself to Git towards the middle of the year and been working on transitioning from SubVersion over to Git.&lt;/p&gt;


&lt;p&gt;And quite possibly, the biggest accomplishment of last year, was my engagement. One that I'm quite proud of and very excited about.&lt;/p&gt;


&lt;h4&gt;The Books&lt;/h4&gt;


&lt;p&gt;The following is the list of books that I read as part of my personal development last year.&lt;/p&gt;


&lt;ul class=&quot;styled&quot;&gt;
&lt;li&gt;The Principles of Successful Freelancing&lt;/li&gt;
&lt;li&gt;Good to Great&lt;/li&gt;
&lt;li&gt;Escape from Cubicle Nation: From Corporate Prisoner to Thriving Entrepreneur&lt;/li&gt;
&lt;li&gt;Web Standards Solutions: The Markup and Style Handbook (Pioneering Series)&lt;/li&gt;
&lt;li&gt;Bulletproof Web Design: Improving flexibility and protecting against worst-case scenarios with XHTML and CSS (2nd Edition)&lt;/li&gt;
&lt;li&gt;Don't Make Me Think: A Common Sense Approach to Web Usability, 2nd Edition&lt;/li&gt;
&lt;li&gt;Beginning iPhone SDK Development&lt;/li&gt;
&lt;li&gt;The Principles of Beautiful Web Design&lt;/li&gt;
&lt;li&gt;Learning jQuery: Better Interaction Design and Web Development with Simple JavaScript Techniques&lt;/li&gt;
&lt;li&gt;Designing with Web Standards (2nd Edition)&lt;/li&gt;
&lt;li&gt;CSS Mastery: Advanced Web Standards Solutions&lt;/li&gt;
&lt;li&gt;iPhone SDK Development (The Pragmatic Programmers)&lt;/li&gt;
&lt;li&gt;Adobe Illustrator CS4 Classroom in a Book&lt;/li&gt;
&lt;li&gt;Free&lt;/li&gt;
&lt;li&gt;Unclutter Your Life in One Week&lt;/li&gt;
&lt;li&gt;The Complete Graphic Designer: A Guide to Understanding Graphics and Visual Communication&lt;/li&gt;
&lt;li&gt;A Designer's Research Manual: Succeed in Design by Knowing Your Clients and What They Really Need&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;Where I Am Now&lt;/h3&gt;


&lt;p&gt;I've started my Mobile Programming course at Hawaii Pacific University. The course is centered around Google Android and iPhone OS programming. The class runs until the middle of May. I've also got an iPhone app I've been working on that I plan on finishing up and submitting it for an Apple Design Award. Hopefully winning one as well. I have a Magento project that I'm also working on.&lt;/p&gt;


&lt;p&gt;I'm also in the process of re-arranging content and the overall design of this site. Primarily making it easier for future clients and employers to find information about me and at the same time documenting my personal development growth.&lt;/p&gt;


&lt;h3&gt;What's on Deck for 2010&lt;/h3&gt;


&lt;p&gt;I currently have the following upcoming for the remainder of the year:&lt;/p&gt;


&lt;ol&gt;
&lt;li&gt;Getting deeper into Android Development&lt;/li&gt;
&lt;li&gt;Starting up on iPad SDK Programming and releasing some Beta apps&lt;/li&gt;
&lt;li&gt;Finishing up some iPhone apps and getting them published on the App Store&lt;/li&gt;
&lt;li&gt;Getting back into Ruby on Rails and Python/Google App Engine&lt;/li&gt;
&lt;li&gt;Learning more about ExpressionEngine 2.0&lt;/li&gt;
&lt;li&gt;Finishing up a Magento eCommerce site client project&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;And I'm fairly sure I'll come up with some more goals and such along the way.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Introducing Fresh Blocks</title>
   <link href="/blog/2009/12/14/introducing-fresh-blocks/"/>
   <updated>2009-12-14T00:00:00-08:00</updated>
   <id>/blog/2009/12/14/introducing-fresh-blocks</id>
   <content type="html">&lt;p&gt;&lt;img src=&quot;http://www.johntwang.com/blogturbo.paulstamatiou.com/uploads/2009/12/Fresh_Blocks_Logo-300x93.png&quot; alt=&quot;Fresh Blocks Logo&quot; title=&quot;Fresh Blocks Logo&quot; width=&quot;300&quot; height=&quot;93&quot; class=&quot;aligncenter size-medium wp-image-844&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;It's Official&lt;/h3&gt;


&lt;p&gt;I've started a web and mobile design/development company called &lt;a href=&quot;http://www.freshblocks.com&quot; title=&quot;Fresh Blocks LLC&quot;&gt;Fresh Blocks&lt;/a&gt;. The focus is on creating either website design and web apps or iPhone and Android apps. I've been working under the name since earlier this year, and the the small site launched for the company.&lt;/p&gt;




&lt;p&gt;The idea of Fresh Blocks came around during a moment of &quot;Designer's &lt;em&gt;Block&lt;/em&gt;.&quot; Where I was looking for &lt;em&gt;fresh&lt;/em&gt; ideas to work with. Hence the name of the company being born. A lot of work went into making sure the name was viable as a brand. ThinkVitamin has a great article about choosing a name: &lt;a href=&quot;http://carsonified.com/blog/business/whats-in-a-name/&quot;&gt;What's in a Name?&lt;/a&gt; What we're trying to do is help individuals and businesses grow their online presence through the web and mobile web.&lt;/p&gt;




&lt;p&gt;Here's to new beginnings! Head on over and say hello to &lt;a href=&quot;http://www.freshblocks.com&quot;&gt;Fresh Blocks&lt;/a&gt;. Alternatively &lt;a href=&quot;http://www.twitter.com/freshblocks&quot;&gt;follow Fresh Blocks on Twitter&lt;/a&gt; or &lt;a href=&quot;http://www.facebook.com/pages/Fresh-Blocks/142486677566&quot;&gt;become a fan on Facebook&lt;/a&gt;.&lt;/p&gt;


&lt;!--more--&gt;


&lt;h3&gt;Further Education&lt;/h3&gt;


&lt;p&gt;I've also registered as a Special Status Student at &lt;a href=&quot;http://www.hpu.edu/&quot;&gt;Hawaii Pacific University&lt;/a&gt; for the &lt;a href=&quot;http://www.hpu.edu/index.cfm?action=search.displaySearchCourseDetails&amp;courseID=1715&quot;&gt;Mobile Application Development course&lt;/a&gt;. This course will be focusing on teaching both iPhone and Android Application Development. I'm looking forward to enhancing my knowledge of both the iPhone and Android SDK.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Review: Kapsoft's iPhone Stencil</title>
   <link href="/blog/2009/11/10/review-kapsofts-iphone-stencil/"/>
   <updated>2009-11-10T00:00:00-08:00</updated>
   <id>/blog/2009/11/10/review-kapsofts-iphone-stencil</id>
   <content type="html">&lt;h4&gt;Overview&lt;/h4&gt;


&lt;p&gt;Hot off the trails of the news that &lt;a href=&quot;http://deanonsoftware.com/?p=89&quot;&gt;Apress acquired the publishing rights to Kapsoft's iPhone Application Sketch Book&lt;/a&gt;, comes the new &lt;a href=&quot;http://www.mobilesketchbook.com/&quot;&gt;iPhone Stencil&lt;/a&gt;.&lt;/p&gt;


&lt;!--more--&gt;


&lt;br /&gt;


&lt;h4&gt;In Detail&lt;/h4&gt;


&lt;p&gt;The new Apress Book is has been improved. A new cover. It's now 1.5x scale (150% of actual size iPhone). Pages have been increased by 25 - that's 50 more templates. And the pages have been perforated for easy tear out.&lt;/p&gt;


&lt;p&gt;The Stencil is also 1.5x scale but includes a 1.0x scale iPhone should you need it. It is made of green plastic, much the same as most stencils you buy at a design store. It also features a nice little ruler on the side. Something extra that I had not anticipated, but find very handy. The stencil itself, features the majority of UIKit elements you will use in sketch design and comes in very handy. While, it is a bit on the larger end, it does fit nicely within the new sketchbook pages for carrying.&lt;/p&gt;




&lt;p&gt;The Stencil will cost you $9.99 while the new Apress version of the Sketchbook comes in at $14.99.&lt;/p&gt;


&lt;br /&gt;


&lt;h4&gt;Compared against &lt;a href=&quot;http://www.uistencils.com/iphone-stencil-kit.html&quot;&gt;Design Commission's Stencil&lt;/a&gt;&lt;/h4&gt;


&lt;p&gt;While both stencils are larger scale than the actual iPhone size, the new Kapsoft one is a tad bit bigger. 1.5x the size of the iPhone. Design Commission's stencil seems to be roughly 1.25x scale.&lt;/p&gt;




&lt;p&gt;Kapsoft's stencil is also cheaper in cost. $9.99 vs $17.95. Though, I'm sure that the material cost plays quite a role in this. Plastic against Stainless Steel.&lt;/p&gt;




&lt;p&gt;I do find the Design Commission's Stencil to be much more portable due to it's smaller footprint. And the stainless steel material feels a bit more Apple-like and sturdier. Plastic can break easily.&lt;/p&gt;


&lt;h4&gt;Overall&lt;/h4&gt;


&lt;p&gt;You really can't go wrong with either Stencil kit. And you definitely should be sketching designs before jumping into XCode. If you are planning to use the Apress Sketchbook, you'll want to get the new Kapsoft Stencil due to the matching iPhone scale. Similarly, Design Commission offers both a downloadable PDF template and now a &lt;a href=&quot;http://www.uistencils.com/iphone-sketch-pad.html&quot;&gt;Sketchpad&lt;/a&gt; for $7.95 to go with their own Stencil Kit.&lt;/p&gt;


&lt;h4&gt;Gallery&lt;/h4&gt;


&lt;p&gt;[nggallery id=18]&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>For the Love of the Game: The Importance of Passion</title>
   <link href="/blog/2009/11/09/for-the-love-of-the-game-the-importance-of-passion/"/>
   <updated>2009-11-09T00:00:00-08:00</updated>
   <id>/blog/2009/11/09/for-the-love-of-the-game-the-importance-of-passion</id>
   <content type="html">&lt;p&gt;I just started getting caught up with all the podcasts I regularly listen to again. I got pulled away due to a recent project deployment that required long working days. The two podcasts I was working on are &lt;a href=&quot;http://boagworld.com&quot;&gt;Boagworld&lt;/a&gt; and &lt;a href=&quot;http://itc.conversationsnetwork.org/series/stackoverflow.html&quot;&gt;StackOverflow&lt;/a&gt;. More specifically, the same issue came up in &lt;a href=&quot;http://boagworld.com/podcast/188&quot;&gt;episode 188 - Clearspace or Headleft?&lt;/a&gt; of Boagworld and &lt;a href=&quot;http://itc.conversationsnetwork.org/shows/detail4291.html&quot;&gt;episode 73&lt;/a&gt; of StackOverflow.&lt;/p&gt;


&lt;!--more--&gt;


&lt;h4&gt;The general questions were centered around: The importance of passion.&lt;/h4&gt;


&lt;p&gt;In the Boagworld podcast, there were quite a few thoughts and options to the questions since it was an interview with the &lt;a href=&quot;http://clearleft.com&quot;&gt;Clearleft&lt;/a&gt; crew. So, you got the perspective of not only Paul Boag and Marcus Lillington from &lt;a href=&quot;http://headscape.co.uk/&quot;&gt;Headscape&lt;/a&gt;, but also Andy Budd and Jeremy Keith. The discussion centered mostly on how one finds the time to keep up with new trends, technologies, etc in the web design industry. The general consensus being that there's a very blurry line between the work-life balance when it comes to this kind of thing. One of the important takeaways from listening to Andy talk about it, was that if it's not making you all jumpy and gitty to want to know what's changing, what the new hot trend is, or what new technologies are coming out, that it raises a red flag and you should really take a step back and re-evaluate if this is really your passion. Of course, you could just be burnt out. As Paul mentioned that he does the majority of his RSS feeds reading in bed on his own time, it's important to remember, most of us would be doing this anyway because it's what we love to do.&lt;/p&gt;




&lt;p&gt;Although, not exactly the same question, the same topic was brought up in a different manner on the StackOverflow podcast. This time in regards to what technology to choose to learn for future profit. Specifically, the listener was not interested in coding in Objective-C for the rest of his life, yet concerned if Ruby on Rails would still be a viable way to make a living in the area he currently lives in. To this question, both Jeff Atwood and Joel Spolsky answered similarly with:&lt;/p&gt;


&lt;p&gt;&lt;em&gt;&lt;ul&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;li&amp;gt;&quot;Joel and I concur: it probably doesn't matter what language and toolchain you use, as long as it has a certain level of critical mass. What you should be more concerned about is the product you're creating.&amp;lt;/li&amp;gt;&amp;lt;br /&amp;gt;
&amp;lt;li&amp;gt;If you're happy with your current tool chain, then there's no reason you need to switch. However, if you can't list five things you hate about your favorite programming language, then I argue you don't know it well enough yet to judge. It's good to be aware of the alternatives, and have a healthy critical eye for whatever it is you're using.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/li&gt;&lt;br /&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;li&amp;gt;Most programming languages don't evolve particularly well over time. They're usually replaced by other languages rather than new iterations of themselves. Why? What languages would you point to as the best example of growing and evolving in useful, relevant ways?&quot;&amp;lt;/li&amp;gt;&amp;lt;br /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/ul&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;While neither Joel or Jeff mentioned anything along the lines of picking something because it'll make you a lot of money. I can't imagine either of them would even come close to making any suggestion like that to anyone. Picking something just because it's the new &quot;money pot&quot; or pot of gold at the end of the rainbow, is just asking for short term gain and potentially, long term unhappiness.&lt;/p&gt;




&lt;h4&gt;In the End&lt;/h4&gt;


&lt;p&gt;It's my own opinion that you should not do or choose a path just because it has the potential to make you a lot of money if it doesn't interest you at all. More so, if you have some inner hatred for Objective-C and think you should just suck it up and make something for the iPhone because it can net you a lot money. It's not my recommendation, but do as you will.&lt;/p&gt;




&lt;h4&gt;What are your thoughts on Doing for the Money vs Doing for the Love?&lt;/h4&gt;

</content>
 </entry>
 
 <entry>
   <title>Review: Wacom Intuos4 Art Pen</title>
   <link href="/blog/2009/09/28/review-wacom-intuos4-art-pen/"/>
   <updated>2009-09-28T00:00:00-07:00</updated>
   <id>/blog/2009/09/28/review-wacom-intuos4-art-pen</id>
   <content type="html">&lt;p&gt;Wacom's new &lt;a href=&quot;https://direct.wacom.com/stores/5/product1.cfm?SID=5&amp;Product_ID=1333&amp;Category_ID=95&quot;&gt;Intuos4 Art Pen&lt;/a&gt; just finally began shipping last week. Previously, it had be on back-order since the release of the Intuos4 Tablet. I just got my hands on both the Intuos4 Art Pen and the &lt;a href=&quot;https://direct.wacom.com/stores/5/Intuos_4_Professional_Accessor_P1450C65.cfm&quot;&gt;Intuos4 Professional Kit&lt;/a&gt;. Originally, I had planned to just purchase the Art Pen, but after user &lt;a href=&quot;http://www.conceptart.org/forums/showthread.php?t=157928&quot;&gt;Featherbeard on the ConceptArt forums&lt;/a&gt; noted that it doesn't come with a Nib Extractor, I decided to just go ahead and get the Professional Kit as well. The Nib Extractor from the Professional Kit is the same as the one that comes with the &lt;a href=&quot;http://www.wacom.com/intuos/&quot;&gt;Intuos4 tablet&lt;/a&gt; itself. &lt;/p&gt;


&lt;!--more--&gt;


&lt;h4&gt;The Art Pen&lt;/h4&gt;


&lt;p&gt;The Art Pen itself has a much bigger tip area than the Grip Pen that comes with the tablet. The Art Pen's bigger tip area also doesn't have the user swap-able color rings. One thing to note, the nibs do only fit in one way and they will rotate a bit during use. The nib won't fall out, so you don't have to worry about that when swapping nibs.&lt;/p&gt;


&lt;p&gt;Even though the drivers for the Intuos4 are a bit old, they were able to successfully identify the Art Pen just fine from the start. Wacom just &lt;a href=&quot;http://twitter.com/wacom/status/4380151090&quot;&gt;updated drivers for the new Bamboo Touch series, Graphire and Cintiq tablets&lt;/a&gt; for &lt;a href=&quot;http://twitter.com/wacom/status/4378481905&quot;&gt;Windows&lt;/a&gt; and &lt;a href=&quot;http://twitter.com/wacom/status/4377856133&quot;&gt;Mac OSX&lt;/a&gt;, but the Intuos set hasn't been updated yet. As such, I still have to launch the 32-bit Settings for the tablet. Not a big deal.&lt;/p&gt;


&lt;p&gt;After using the Art Pen with Corel Painter 11, I have noticed that I don't have much of a tactile response from the pen during barrel rotation. As such, it's really useful to have the Enhanced Brush Ghosting setting enabled while you get used to the feeling. It's quite a bit different than the Grip Pen. After spending a bit of time getting used to it, I was able to turn off the ghosting setting again.&lt;/p&gt;


&lt;p&gt;&lt;/p&gt;&lt;/p&gt;

&lt;h4&gt;The Pen Stand&lt;/h4&gt;


&lt;p&gt;The Art Pen stand also has exactly enough slots for all of the Nibs that come with the Art Pen with one nib in the pen itself. It also fits the Professional Kit's Nib Extractor in the middle spot of the stand just like the one that comes with the tablet and grip pen.&lt;/p&gt;




&lt;h4&gt;The Nibs&lt;/h4&gt;


&lt;p&gt;The Art Pen comes with 11 nibs. 1 on the pen itself and 10 replacement nibs. The 10 replacement nibs fit in nicely into the new housing of the Pen stand. The nibs have 1 shaft, just like the ones for all the other pens. This is a change from the &lt;a href=&quot;https://direct.wacom.com/stores/5/Cintiq_21UX_6D_Art_Pen_P940C66.cfm&quot;&gt;Intuos3 Art Pen's&lt;/a&gt; nibs which previously had 2 shafts. The difference being that the 2 shafts on the Intuos3 version, prevented a rotation effect on the nib when rotating the Art Pen.&lt;/p&gt;




&lt;h4&gt;The Details&lt;/h4&gt;


&lt;p&gt;The following come in the box:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;2 Chisel POM Nibs&lt;/li&gt;
&lt;li&gt;2 Chisel Felt Nibs&lt;/li&gt;
&lt;li&gt;3 Bullet POM Nibs&lt;/li&gt;
&lt;li&gt;3 Bullet Felt Nibs&lt;/li&gt;
&lt;li&gt;1 Pen Stand&lt;/li&gt;
&lt;li&gt;1 Art Pen with 1 Bullet POM Nib inside&lt;/li&gt;
&lt;/ul&gt;
&lt;strong&gt;Model #:&lt;/strong&gt; KP701E&lt;br /&gt;
&lt;strong&gt;Price:&lt;/strong&gt; $99.95&lt;/p&gt;


&lt;h4&gt;Final Thoughts&lt;/h4&gt;


&lt;p&gt;Although &lt;a href=&quot;https://direct.wacom.com/stores/5/product1.cfm?SID=5&amp;Product_ID=1333&amp;Category_ID=95&quot;&gt;Wacom's eStore&lt;/a&gt; states: &quot;The Intuos4 Art Pen ships with the following accessories: 10 replacement nibs, &lt;strong&gt;a nib puller&lt;/strong&gt;, and a weighted pen stand.&quot; The package does &lt;strong&gt;NOT&lt;/strong&gt; come with a nib puller. There was not one anywhere in the packaging and others from the ConceptArt forums have had the same results.&lt;/p&gt;


&lt;p&gt;As for the Art Pen itself, I love it. Barrel rotation is definitely it's main feature and it does it extremely well. It's an amazing feature to have. Corel Painter 11 recognized the barrel rotation immediately, and it also works wonderfully with Illustrator using the 6D Art Brushes set or in Photoshop, by using the Wacom Brushes 3. All in all, it's the one additional pen for the tablet that I need. I have very little use for the classic pen, airbrush pen or inking pen.&lt;/p&gt;


&lt;h4&gt;The Pictures&lt;/h4&gt;


&lt;p&gt;[nggallery id=17]&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Review: Kapsoft's iPhone Application Sketch Book</title>
   <link href="/blog/2009/09/22/review-kapsofts-iphone-application-sketch-book/"/>
   <updated>2009-09-22T00:00:00-07:00</updated>
   <id>/blog/2009/09/22/review-kapsofts-iphone-application-sketch-book</id>
   <content type="html">&lt;p&gt;Designing an iPhone app? The concept isn't much different from designing a website. At least for me it's not. The primary process includes sketches that are used in meetings with either team members or clients before jumping into either OmniGraffle or Photoshop. The general idea is to stay away from the computer as much as possible in the initial design process to let creativity flow and not restrict yourself to the pixels on the screen.&lt;/p&gt;

&lt;p&gt;If you've either taken or watched the Stanford iPhone Dev course from iTunesU (&lt;a href=&quot;http://www.stanford.edu/class/cs193p/cgi-bin/index.php&quot; target=&quot;_blank&quot;&gt;CS193P&lt;/a&gt;), then you have heard them constantly enforce the idea of sketching out your app screens and functionality before coding. Those who do web design will likely vouch for the same process. This is where Dean Kaplan saw an opportunity. He has created an &lt;a href=&quot;http://mobilesketchbook.com/&quot; target=&quot;_blank&quot;&gt; iPhone Application Sketch Book&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;I happened to be auditing the Stanford iPhone Programming course, says Kaplan, and one of the guest speakers discussed how he went about creating his user interface designs. Paper was one option he mentioned. Almost instantly the notebook idea light bulb went off. Other options of various computer programs were mentioned, but it always got back to paper and pencil. Subsequently, I did my own online survey that revealed designers prefer paper 95% of the time. - &lt;a href=&quot;http://theappleblog.com/2009/08/19/sketch-book-makes-designing-iphone-apps-easier/&quot; target=&quot;_blank&quot;&gt;theAppleBlog&lt;/a&gt;&lt;/blockquote&gt;


&lt;p&gt;The sketchbook contains 100 grid pages with an iPhone designed to scale on it. Each page has it's own header that allows you to put in the name of the app and the name of the screen. The pages are big. There is ton of free space for taking side notes during group sessions and team meetings. The notebook itself is paperback, plastic spiral bound, and can be ordered from &lt;a href=&quot;http://www.amazon.com/gp/product/B002IE2ZK4?ie=UTF8&amp;amp;tag=jotwa-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B002IE2ZK4&quot; target=&quot;_blank&quot;&gt;Amazon.com for $14.99&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;Q &amp; A with Dean Kaplan&lt;/h4&gt;


&lt;ol&gt;
    &lt;li&gt; What are your plans for the future of the sketchbook?
&lt;em&gt;&quot;There will be a huge exciting announcement concerning the book next week. Stay tuned.&quot;&lt;/em&gt;&lt;br /&gt;&lt;/li&gt;
    &lt;li&gt; Do you plan on creating a Stencil Kit similar to The Design Commission's one? Or perhaps making the iPhone on the pages slightly larger to be more compatible with the Stencil Kit?
&lt;em&gt;&quot;LOL. Are you spying on me? As for size. I guess you are saying size matters. And I'm listening to feedback and it is likely that you might see a version that is 1.5X actual very soon. (DC's stencil is smaller then 1.5x and I don't think its very useable. )&quot;&lt;/em&gt;&lt;br /&gt;&lt;/li&gt;
    &lt;li&gt; Have you considered perforated pages for easier tear-off?
&lt;em&gt;&quot;I've heard the perforated request once before. Not likely on that one. As one reviewer told me he like to tear the pages right out of the book and paste them on the frig.)&quot;&lt;/em&gt;&lt;br /&gt;&lt;/li&gt;
    &lt;li&gt; A folder built-in either the front or back cover for keeping materials given from other team members or clients together?
&lt;em&gt;&quot;I love that idea. It crossed my mind a few months ago. Likely in a future UBER Sketch Book.&quot;&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;h4&gt;The Good&lt;/h4&gt;


&lt;ul&gt;
    &lt;li&gt;Keeps all your apps and screens together instead of having multiple pieces of paper that can get easily lost.&lt;/li&gt;
    &lt;li&gt;Grid pages are very handy for going from sketching to computer rendering.&lt;/li&gt;
    &lt;li&gt;To scale iPhone keeps you in the restriction of the small space while also reminding you to beware of your font sizes.&lt;/li&gt;
    &lt;li&gt;Cheap. $15! If you're just getting into iPhone app design, this can definitely help you on your way in keeping your ideas organized.&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;The Bad&lt;/h4&gt;


&lt;ul&gt;
    &lt;li&gt;Not compatible with The &lt;a href=&quot;http://www.designcommission.com/shop&quot;&gt;Design Commission&lt;/a&gt; has created an &lt;a href=&quot;http://www.designcommission.com/shop/iphone-stencil-kit/&quot; target=&quot;_blank&quot;&gt;iPhone Stencil Kit&lt;/a&gt;. Different companies, Can't really complain.&lt;/li&gt;
    &lt;li&gt;The to scale iPhone on the page is also a bit harder to draw stuff inside it.&lt;/li&gt;
    &lt;li&gt;Since there's no stencil, you need to keep in mind what you get with the SDK and what needs to be custom made. Thought it's not that big of a deal.&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;The Pictures&lt;/h4&gt;


&lt;p&gt;[nggallery id=16]&lt;/p&gt;

&lt;h4&gt;Final Thoughts&lt;/h4&gt;


&lt;p&gt;Right now, I'm using a &lt;a href=&quot;http://www.amazon.com/gp/product/8883701135?ie=UTF8&amp;amp;tag=jotwa-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=8883701135&quot; target=&quot;_blank&quot;&gt;Moleskine Squared Notebook&lt;/a&gt; to do my sketches for iPhone apps and other web related work. It's much smaller than the iPhone sketchbook, but it does allow me to put other thoughts and ideas inside. For what the purpose it was designed for, the iPhone sketchbook delivers and does so very well. Compatibility with the Stencil Kit would definitely put it over the top. The last things that I would like included in the sketchbook, would be a small folder built in and perforated pages. Those are some very small personal requests though.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Special Note:&lt;/strong&gt; If you order between September 10th and  October 10th you'll be entered to win ONE free ticket to the &lt;strong&gt;&lt;em&gt;Voices That Matter iPhone Developers Conference 2009.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>More iPhone App Developing Resources</title>
   <link href="/blog/2009/09/17/more-iphone-app-developing-resources/"/>
   <updated>2009-09-17T00:00:00-07:00</updated>
   <id>/blog/2009/09/17/more-iphone-app-developing-resources</id>
   <content type="html">&lt;p&gt;The folks over at Fuel Your Apps have created a nice post titled: &lt;a href=&quot;http://www.fuelyourapps.com/an-ever-growing-iphone-resource-thread/&quot; target=&quot;_blank&quot;&gt;An Ever Growing iPhone Resource Thread&lt;/a&gt;. It's worth checking out as it will likely be constantly updated to add new content.&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;Also of interest is the a new sketchbook from Kapsoft called &lt;a href=&quot;http://mobilesketchbook.com/&quot; target=&quot;_blank&quot;&gt;The iPhone Application Sketch Book&lt;/a&gt;. I'm currently waiting for my copy of it to come in and then will have a complete review of it.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Sneak Peak: SitePoint&#039;s CodeBurner for FireFox</title>
   <link href="/blog/2009/07/21/sneak-peak-sitepoints-codeburner-for-firefox/"/>
   <updated>2009-07-21T00:00:00-07:00</updated>
   <id>/blog/2009/07/21/sneak-peak-sitepoints-codeburner-for-firefox</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://tools.sitepoint.com/codeburner/&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-714&quot; title=&quot;codeburner-logo&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/07/codeburner-logo1.png&quot; alt=&quot;codeburner-logo&quot; width=&quot;300&quot; height=&quot;83&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SitePoint's amazing reference add-on &lt;a title=&quot;CodeBurner&quot; href=&quot;http://tools.sitepoint.com/codeburner/&quot;&gt;CodeBurner&lt;/a&gt; is breaking free from FireBug and later this week, it will become a full-fledged FireFox add-on. CodeBurner provides reference material for &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; and &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; such as  syntax, code samples, live demos, and browser compatibility information all in a handy dock at the bottom of the browser and can also be a window on it's own.&lt;/p&gt;

&lt;p&gt;[caption id=&quot;attachment_717&quot; align=&quot;alignnone&quot; width=&quot;718&quot; caption=&quot;The new main window&quot;]&lt;a rel=&quot;lightbox&quot; href=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/07/main-window1.png&quot;&gt;&lt;img class=&quot;size-large wp-image-717&quot; title=&quot;main window&quot; src=&quot;http://www.johntwang.com/blogturbo.paulstamatiou.com/uploads/2009/07/main-window-1024x243.png&quot; alt=&quot;main window&quot; width=&quot;718&quot; height=&quot;170&quot; /&gt;&lt;/a&gt;[/caption]&lt;/p&gt;

&lt;p&gt;The reference material is linked to &lt;a href=&quot;http://reference.sitepoint.com&quot;&gt;SitePoint's Reference&lt;/a&gt; page. Clicking on a more link will open up a new browser window/tab for that item.&lt;/p&gt;

&lt;p&gt;[caption id=&quot;attachment_715&quot; align=&quot;alignnone&quot; width=&quot;150&quot; caption=&quot;The Reference Page&quot;]&lt;a rel=&quot;lightbox&quot; href=&quot;http://johntwang.com/turbo.paulstamatiou.com/uploads/2009/07/more-link1.png&quot;&gt;&lt;img class=&quot;size-thumbnail wp-image-715&quot; title=&quot;more-link&quot; src=&quot;http://www.johntwang.com/blogturbo.paulstamatiou.com/uploads/2009/07/more-link-150x150.png&quot; alt=&quot;more-link&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;[/caption]&lt;/p&gt;

&lt;p&gt;The new plug-in will continue to hook into the DOM crumbtrail, adding options to look up a selected item                (ie. search for it in the Reference panel) or to view a sample code example.&lt;/p&gt;

&lt;p&gt;[caption id=&quot;attachment_716&quot; align=&quot;alignnone&quot; width=&quot;150&quot; caption=&quot;The new DOM view&quot;]&lt;a rel=&quot;lightbox&quot; href=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/07/nofollow1.png&quot;&gt;&lt;img class=&quot;size-thumbnail wp-image-716  &quot; title=&quot;nofollow&quot; src=&quot;http://www.johntwang.com/blogturbo.paulstamatiou.com/uploads/2009/07/nofollow-150x150.png&quot; alt=&quot;nofollow&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;[/caption]&lt;/p&gt;

&lt;h4&gt;Advantages over the &lt;a href=&quot;http://tools.sitepoint.com/codeburner/firebug&quot;&gt;FireBug version&lt;/a&gt;&lt;/h4&gt;


&lt;ul&gt;
    &lt;li&gt;Specialized interface gives more room for the reference information&lt;/li&gt;
    &lt;li&gt;works in Firefox 2 and has no other dependencies&lt;/li&gt;
    &lt;li&gt;The new DOM can load any web site for referencing. Not just the current site. You don't have to leave your current site to do your research.&lt;/li&gt;
    &lt;li&gt;No longer requires you to have FireBug installed.&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Disadvantages over the &lt;a href=&quot;http://tools.sitepoint.com/codeburner/firebug&quot;&gt;FireBug version&lt;/a&gt;&lt;/h4&gt;


&lt;ul&gt;
    &lt;li&gt;No longer follows the FireBug inspector.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The new FireFox plug-in is much easier to launch. Instead of going to FireBug then selecting the Reference Tab, now you can just simply click on the CodeBurner icon.&lt;/p&gt;

&lt;h4&gt;Final Thoughts&lt;/h4&gt;


&lt;p&gt;With the FireBug version recently selected as one of the &lt;a href=&quot;http://www.sitepoint.com/blogs/2009/07/21/13-firefox-add-ons-for-web-development/&quot;&gt;13 Firefox Add-ons For Web Development&lt;/a&gt;, and the new FireFox version will be no exception. A web development reference resource just got better. There's absolutely no need for those HTML and CSS Cheatsheets with CodeBurner at your fingertips. Searching through a PDF or printout takes so much longer than simply opening up CodeBurner and using it's brilliant search capabilities. Be sure to catch the new FireFox edition of the CodeBurner and get a free eBook &lt;em&gt;Build Your Own Firefox  Add-on&lt;/em&gt; later this week!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>5 More Free iPhone App Development Resources</title>
   <link href="/blog/2009/07/17/5-more-free-iphone-app-development-resources/"/>
   <updated>2009-07-17T00:00:00-07:00</updated>
   <id>/blog/2009/07/17/5-more-free-iphone-app-development-resources</id>
   <content type="html">&lt;p&gt;In continuing with the post &lt;a href=&quot;http://www.johntwang.com/blog/2009/06/09/5-free-resources-for-iphone-app-development/&quot;&gt;5 Free Resources for iPhone App Development&lt;/a&gt;, here are some more resources for iPhone Development.&lt;/p&gt;

&lt;!--more--&gt;


&lt;ol&gt;
    &lt;li&gt;
&lt;h3&gt;&lt;a href=&quot;http://code.google.com/p/iphone-exif/&quot;&gt;iphone-exif&lt;/a&gt;&lt;/h3&gt;
An Exif Tag library editor that enables direct viewing and editing of EXIF Meta Data tags in Jpeg files on the iPhone. The most obvious use is to manage Geo location tags into the image. However, it is also possible to edit any of the Exif tags or add your own that are not in the spec.
This is really useful for image uploads from the phone for sites like Picasa and Flickr.&lt;/li&gt;
    &lt;li&gt;
&lt;h3&gt;&lt;a href=&quot;http://code.google.com/p/json-framework/&quot;&gt;json-framework&lt;/a&gt;&lt;/h3&gt;
This framework implements a strict &lt;a rel=&quot;nofollow&quot; href=&quot;http://json.org/&quot;&gt;JSON&lt;/a&gt; parser and generator in Objective-C. You get free XML parsing support from the official iPhone SDK, but not JSON support. This is a way to add it.&lt;/li&gt;
    &lt;li&gt;
&lt;h3&gt;&lt;a href=&quot;http://github.com/sjlombardo/openssl-xcode/tree/master&quot;&gt;openssl framework&lt;/a&gt;&lt;/h3&gt;
&lt;a href=&quot;http://github.com/sjlombardo/openssl-xcode/tree/master&quot;&gt; &lt;/a&gt;It is specifically intended for use in building secure iPhone
applications alongside SQLCipher (http://www.zetetic.net/software/sqlcipher).&lt;/li&gt;
    &lt;li&gt;
&lt;h3&gt;&lt;a href=&quot;http://github.com/kailoa/iphone-smtp/tree/master&quot;&gt;iphone-smtp&lt;/a&gt;&lt;/h3&gt;
This code implements a quick class for sending one off messages via SMTP on the iPhone.&lt;/li&gt;
    &lt;li&gt;
&lt;h3&gt;&lt;a href=&quot;http://www.cocos2d-iphone.org/&quot;&gt;cocos2d&lt;/a&gt;&lt;/h3&gt;
&lt;a href=&quot;http://www.cocos2d-iphone.org/&quot;&gt; &lt;/a&gt;framework for building 2D games, demos, and other graphical/interactive applications. It is based on the cocos2d design: it uses the same API, but instead of using python it uses objective-c.&lt;/li&gt;
&lt;/ol&gt;

</content>
 </entry>
 
 <entry>
   <title>Review: Design Commission&#039;s iPhone Stencil Kit</title>
   <link href="/blog/2009/06/25/review-design-commissions-iphone-stencil-kit/"/>
   <updated>2009-06-25T00:00:00-07:00</updated>
   <id>/blog/2009/06/25/review-design-commissions-iphone-stencil-kit</id>
   <content type="html">&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;size-full wp-image-693 aligncenter&quot; title=&quot;iphone_stencil&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/06/iphone_stencil.png&quot; alt=&quot;iphone_stencil&quot; width=&quot;504&quot; height=&quot;354&quot; /&gt;&lt;/p&gt;


&lt;p style=&quot;text-align: left;&quot;&gt;The guys over at the Design Commission [&lt;a href=&quot;http://twitter.com/designcom&quot;&gt;@designcom&lt;/a&gt; on Twitter] have gone and made an &lt;a href=&quot;http://www.designcommission.com/shop/iphone-stencil-kit/&quot;&gt;iPhone Stencil Kit&lt;/a&gt; as a follow up to their popular &lt;a href=&quot;http://www.designcommission.com/shop/dc-website-stencil-kit/&quot;&gt;Website Stencil Kit&lt;/a&gt;. Initially they had 1,000 stencils made for sale, but due to popular demand, have since made many many more. I received mine on Monday and have started using it for an iPhone App that I am currently developing.&lt;/p&gt;




&lt;h3&gt;The details:&lt;/h3&gt;


&lt;p&gt;The kit costs $16.95 + shipping&amp;amp;handling [Domestic shipping is $4.95 and international is $15] and includes:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt; One iPhone UI Stencil&lt;/li&gt;
    &lt;li&gt; Zebra mechanical pencil&lt;/li&gt;
    &lt;li&gt; 2 Design Commission stickers&lt;/li&gt;
    &lt;li&gt; Downloadable .PDF letter-sized paper template&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Using the kit&lt;/h3&gt;


&lt;p&gt;The kit is really created with the intended use of the printable PDF templates. It doesn't have a full iPhone body stencil to draw your iPhone on a separate paper. It does do a decent job at half-skeleton of one though. You'll have to fill in some missing lines yourself. The notable missing seems to be status bar, the section with the wifi, 3G, and battery icon area, not being stenciled. The other small problem I ran into so far is that it's made of stainless steel. I can't see what's under the stencil as I try to approximate the needed spacing between Tab Bar icons. Although, I do need to keep in mind that it's made of stainless steel to be more durable than plastic and also that I'm making prototype designs to show clients, not finalized work.&lt;/p&gt;

&lt;p&gt;Overall, the only real downside I can see, is that you really do have to use a mechanical pencil. The one provided by Design Commission, is a Zebra, which are extremely good. But, if you use a regular #2 pencil, you will likely run into some trouble on some of the smaller stencil bits, requiring you to constantly sharpen your pencil tip. Other than that, it's a really great addition to any iPhone developer's arsenal.&lt;/p&gt;

&lt;p&gt;Now of course, this is all for paper prototyping. And if you have been following&lt;a href=&quot;http://www.stanford.edu/class/cs193p/cgi-bin/index.php&quot;&gt; Stanford's CS193P iPhone Programming&lt;/a&gt; class on &lt;a href=&quot;http://deimos3.apple.com/WebObjects/Core.woa/Browse/itunes.stanford.edu.2024353965.02024353968&quot;&gt;iTunes&lt;/a&gt;, Steve Marmon discussed the importance of paper prototyping for iPhone App design in his lecture &lt;em&gt;How to Build an iPhone App that Doesn't Suck&lt;/em&gt; [&lt;a href=&quot;http://deimos3.apple.com/WebObjects/Core.woa/Browse/itunes.stanford.edu.2024353965.02024353968.2117035884?i=1947006292&quot;&gt;iTunes link&lt;/a&gt;.]&lt;/p&gt;

&lt;p&gt;If you prefer digital prototyping, &lt;a href=&quot;http://www.balsamiq.com&quot;&gt;Balsamiq&lt;/a&gt; has &lt;a href=&quot;http://www.balsamiq.com/blog/2009/03/01/iphone-controls-new-icons-and-much-more/&quot;&gt;updated their software to include iPhone designing&lt;/a&gt;, and in my previous post: &lt;a href=&quot;http://www.johntwang.com/blog/2009/06/09/5-free-resources-for-iphone-app-development/&quot;&gt;5 Free iPhone Resources&lt;/a&gt;, I have links to Omnigraffle, Adobe Fireworks, Photoshop, and Illustrator stencil kits.&lt;/p&gt;

&lt;p&gt;[nggallery id=15]&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>5 Free Resources for iPhone App Development</title>
   <link href="/blog/2009/06/09/5-free-resources-for-iphone-app-development/"/>
   <updated>2009-06-09T00:00:00-07:00</updated>
   <id>/blog/2009/06/09/5-free-resources-for-iphone-app-development</id>
   <content type="html">&lt;p&gt;[caption id=&quot;attachment_681&quot; align=&quot;aligncenter&quot; width=&quot;738&quot; caption=&quot;Joe Hewitt&amp;#39;s Three20 Project&quot;]&lt;a href=&quot;http://github.com/joehewitt/three20/tree/master&quot;&gt;&lt;img class=&quot;size-full wp-image-681&quot; title=&quot;320&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/06/3201.jpg&quot; alt=&quot;Joe Hewitt's Three20 Project&quot; width=&quot;738&quot; height=&quot;239&quot; /&gt;&lt;/a&gt;[/caption]&lt;/p&gt;

&lt;p&gt;With &lt;a title=&quot;WWDC&quot; href=&quot;http://developer.apple.com/wwdc/&quot;&gt;Apple's WWDC&lt;/a&gt; currently going on and the upcoming &lt;a title=&quot;iPhone 3.0&quot; href=&quot;http://www.apple.com/iphone/preview-iphone-os/&quot;&gt;3.0 iPhone OS&lt;/a&gt; getting closer to release, there are tons of new developers jumping onto the platform. Whether you're a new developer or have been developing for a while, here are some great free resources for designing and developing your iPhone Apps.&lt;/p&gt;

&lt;ol&gt;
    &lt;li&gt;
&lt;h3&gt;&lt;a title=&quot;Google Code Objective-C&quot; href=&quot;http://code.google.com/p/gdata-objectivec-client/&quot;&gt;Google Objective-C Data APIs&lt;/a&gt;&lt;/h3&gt;
Google generously provides a large set of their APIs in Objective-C for both Mac and iPhone development. These APIs include:
&lt;ul&gt;
    &lt;li&gt;&lt;a onclick=&quot;javascript:pageTracker._trackPageview('/outbound/article/code.google.com');&quot; rel=&quot;nofollow&quot; href=&quot;http://code.google.com/apis/base/&quot;&gt;Google Base&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a title=&quot;Analytics&quot; onclick=&quot;javascript:pageTracker._trackPageview('/outbound/article/code.google.com');&quot; href=&quot;http://code.google.com/apis/analytics/&quot;&gt;Analytics&lt;/a&gt;&lt;a title=&quot;Analytics&quot; href=&quot;http://code.google.com/apis/analytics/&quot;&gt;
&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/blogger/&quot;&gt;Blogger&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/books/&quot;&gt;Book Search&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/calendar/&quot;&gt;Calendar&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/codesearch/&quot;&gt;Code Search&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/contacts/&quot;&gt;Contacts&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/documents/overview.html&quot;&gt;Documents List&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/finance/&quot;&gt;Finance&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/health/&quot;&gt;Health&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/picasaweb/&quot;&gt;Picasa Web Albums&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/spreadsheets/&quot;&gt;Spreadsheets&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/webmastertools/&quot;&gt;Webmaster Tools&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/youtube/&quot;&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
Check out my previous post on &lt;a title=&quot;how to use google apis with iphone sdk&quot; href=&quot;http://www.johntwang.com/blog/2009/06/08/how-to-use-google-apis-with-iphone-sdk/&quot;&gt;How to add the Google APIs to your iPhone App project&lt;/a&gt;.&lt;/li&gt;
    &lt;li&gt;
&lt;h3&gt;&lt;a href=&quot;http://github.com/joehewitt/three20/tree/master&quot;&gt;Joe Hewitt's Three20 Project&lt;/a&gt;&lt;/h3&gt;
Joe Hewitt is the developer behind the popular &lt;a title=&quot;Facebook iphone app&quot; href=&quot;http://www.facebook.com/apps/application.php?id=6628568379&quot;&gt;Facebook iPhone App&lt;/a&gt; and the Mozilla Firefox plugin &lt;a title=&quot;Firebug Plug-in&quot; href=&quot;http://www.getfirebug.com/&quot;&gt;Firebug&lt;/a&gt;. He's created a new projected called &lt;a title=&quot;The Three20 Project&quot; href=&quot;http://joehewitt.com/post/the-three20-project/&quot;&gt;Three20&lt;/a&gt;, which is a collection of iPhone UI classes, like a photo viewer, and general utilities, like an HTTP disk cache. The project and instructions on getting it into your iPhone App project are hosted up on &lt;a href=&quot;http://github.com/joehewitt/three20/tree/master&quot;&gt;GitHub&lt;/a&gt;.&lt;/li&gt;
    &lt;li&gt;
&lt;h3&gt;iPhone Photoshop PSDs&lt;/h3&gt;
It's always a good idea to start with a design before you start developing your iPhone App. It's also easier to show a potential client a PSD mock-up of the app before doing actual development even though Interface Builder makes it an easy process. Here are a few Photoshop PSDs to get you going.
&lt;ul&gt;
    &lt;li&gt;&lt;a title=&quot;iPhone GUI PSD&quot; href=&quot;http://www.teehanlax.com/blog/?p=447&quot;&gt;Smashing Magazine's iPhone PSD Vector Kit&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a title=&quot;iPhone GUI PSD&quot; href=&quot;http://www.teehanlax.com/blog/?p=447&quot;&gt; teehan+lax's iPhone GUI PSD&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a title=&quot;iPhone Interface PSD&quot; href=&quot;http://320480.com/&quot;&gt;320480's iPhone Interface PSD&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a title=&quot;FreshBooks GUI PSD&quot; href=&quot;http://www.freshbooks.com/blog/2009/02/03/freshbooks-iphone-application-gui/&quot;&gt;FreshBooks iPhone GUI PSD&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;strong&gt;Note&lt;/strong&gt;: If you are planning on using these for making an iPhone Apps website, make sure either you or your client has gone through Apple's &lt;em&gt;Available on the iPhone App Store logo license program&lt;/em&gt; to avoid any legal issues. This can be found in your Apple Developer Connection Program Portal's Distribution -&amp;gt; App Store tab.&lt;/li&gt;
    &lt;li&gt;
&lt;h3&gt;OmniGraffle Stencil Kits&lt;/h3&gt;
If you're on a Mac and use &lt;a title=&quot;OmniGraffle&quot; href=&quot;http://www.omnigroup.com/applications/omnigraffle/&quot;&gt;Omni Group's OmniGraffle&lt;/a&gt; for wireframing or mindmapping web design, you can do the same with iPhone apps.Here are 3 iPhone Stencil sets for OmniGraffle. Also, Yahoo!'s set can be found on the &lt;a title=&quot;Yahoo! Stencils&quot; href=&quot;http://developer.yahoo.com/ypatterns/wireframes/&quot;&gt;Yahoo! Developer site&lt;/a&gt; with stencils for many other things and also in makes them available in Photoshop PSD format.
&lt;ul&gt;
    &lt;li&gt;&lt;a title=&quot;iPhone Wire Frames&quot; href=&quot;http://graffletopia.com/stencils/358&quot;&gt;Theresa Neil's iPhone Wire Frames&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a title=&quot;Ultimate iPhone Stencil&quot; href=&quot;http://graffletopia.com/stencils/413&quot;&gt;Patrick Crowley's Ultimate iPhone Stencil&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a title=&quot;mobile iPhone&quot; href=&quot;http://www.graffletopia.com/stencils/392&quot;&gt;Yahoo!'s Mobile - iPhone&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
    &lt;li&gt;
&lt;h3&gt;&lt;a title=&quot;iPhone Toolbar Icons&quot; href=&quot;http://glyphish.com/&quot;&gt;Glyphish - iPhone Toolbar Icons&lt;/a&gt;&lt;/h3&gt;
The Glyphish designer has generously put out 80 free icons for use in your iPhone App's toolbar. These are all free and licensed under Creative Commons.&lt;/li&gt;
&lt;/ol&gt;


&lt;h3&gt;3 Bonus Resources&lt;/h3&gt;


&lt;ol&gt;
    &lt;li&gt;
&lt;h4&gt;Mercury Intermedia's &lt;a title=&quot;iphone ui vector elements&quot; href=&quot;http://www.mercuryintermedia.com/blog/index.php/2009/03/iphone-ui-vector-elements/&quot;&gt;iPhone UI Vector Elements&lt;/a&gt; for Adobe Illustrator.&lt;/h4&gt;
Working in Illustrator instead of Photoshop? These free vector elements great for designing.&lt;/li&gt;
    &lt;li&gt;
&lt;h4&gt;eddit's 120 iPhone Toolbar Icons&lt;/h4&gt;
While this one isn't free, it is a really good and worthwhile one. Eddie Wilson over at &lt;a title=&quot;eddit&quot; href=&quot;http://www.eddit.com&quot;&gt;eddit&lt;/a&gt; has created &lt;a title=&quot;iphone ui icon set&quot; href=&quot;http://www.eddit.com/shop/iphone_ui_icon_set/&quot;&gt;120 iPhone Toolbar Icons&lt;/a&gt; for sale at $69. If you want the vector format, it'll cost you a pretty &lt;a title=&quot;vector set&quot; href=&quot;http://www.eddit.com/shop/iphone_ui_icon_set_vectors/&quot;&gt;$189 for the PSDs&lt;/a&gt;.&lt;/li&gt;
    &lt;li&gt;
&lt;h4&gt;Open Source iPhone Apps&lt;/h4&gt;
&lt;/li&gt;
&lt;/ol&gt;


&lt;blockquote&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a title=&quot;WordPress iPhone APP&quot; href=&quot;http://iphone.wordpress.org/development/&quot;&gt;WordPress iPhone App&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a title=&quot;FreshBooks iPhone App&quot; href=&quot;http://www.freshbooks.com/blog/2009/01/05/were-open-sourcing-our-iphone-time-tracking-app-for-macworld/&quot;&gt;FreshBooks iPhone App&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;


&lt;h3&gt;Have I missed any others? Do you have any more free resources? Please feel free to share them in the comments!&lt;/h3&gt;


&lt;h3&gt;Edit 6/23/09:&lt;/h3&gt;


&lt;p&gt;An additional Adobe Fireworks set of UI elements has been found thanks to Building43.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://blog.metaspark.com/2009/02/fireworks-toolkit-for-creating-iphone-ui-mockups/&quot;&gt;Fireworks toolkit for creating iPhone UI mockups by MetaSpark&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also check out &lt;a href=&quot;http://www.building43.com/videos/2009/06/23/mockup-iphone-app-adobe-fireworks/&quot;&gt;Building43's video on designing iPhone Apps with Adobe Fireworks&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>How To Use Google APIs with iPhone SDK</title>
   <link href="/blog/2009/06/08/how-to-use-google-apis-with-iphone-sdk/"/>
   <updated>2009-06-08T00:00:00-07:00</updated>
   <id>/blog/2009/06/08/how-to-use-google-apis-with-iphone-sdk</id>
   <content type="html">&lt;p&gt;Adding Google API support to your iPhone App could not be any easier. Google provides Objective-C APIs for:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/base/&quot;&gt;Google Base&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a title=&quot;Analytics&quot; href=&quot;http://code.google.com/apis/analytics/&quot;&gt;Analytics&lt;/a&gt; - (Only available via SVN Trunk or manual download)&lt;a title=&quot;Analytics&quot; href=&quot;http://code.google.com/apis/analytics/&quot;&gt;
&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/blogger/&quot;&gt;Blogger&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/books/&quot;&gt;Book Search&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/calendar/&quot;&gt;Calendar&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/codesearch/&quot;&gt;Code Search&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/contacts/&quot;&gt;Contacts&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/documents/overview.html&quot;&gt;Documents List&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/finance/&quot;&gt;Finance&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/health/&quot;&gt;Health&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/picasaweb/&quot;&gt;Picasa Web Albums&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/spreadsheets/&quot;&gt;Spreadsheets&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/webmastertools/&quot;&gt;Webmaster Tools&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/youtube/&quot;&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;Step 1&lt;/h3&gt;


&lt;p&gt;The first step, is to head on over to the &lt;a title=&quot;Google Code Objective-C&quot; href=&quot;http://code.google.com/p/gdata-objectivec-client/&quot;&gt;Google Code website for the Objective-C Client&lt;/a&gt;, &lt;a title=&quot;Download link&quot; href=&quot;http://code.google.com/p/gdata-objectivec-client/downloads/list&quot;&gt;download&lt;/a&gt; and extract the zip file source code. Alternatively, you can get the latest and greatest version via Subversion using:&lt;/p&gt;

&lt;pre class=&quot;box-inner&quot;&gt; &lt;tt id=&quot;checkoutcmd&quot;&gt;svn checkout http://gdata-objectivec-client.googlecode.com/svn/trunk/gdata-objectivec-client-read-only&lt;/tt&gt;&lt;/pre&gt;


&lt;p&gt;If you downloaded the zip file from the website, you'll have version 1.7.0, and if you used the svn code you'll have a -read-only folder.&lt;/p&gt;

&lt;h3&gt;Step 2&lt;/h3&gt;


&lt;p&gt;Open up the GData XCode Project from your downloaded folder as well as your iPhone App XCode project.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;alignnone size-full wp-image-655&quot; title=&quot;extracted&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/06/extracted1.jpg&quot; alt=&quot;extracted&quot; width=&quot;286&quot; height=&quot;490&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Step 3&lt;/h3&gt;


&lt;p&gt;Drag over the GData Sources Folder from the GData project to your iPhone App project and add it as reference. Don't check the box for &lt;em&gt;Copy items into destination group's folder (if needed)&lt;/em&gt;. You do not need to copy over all the files into your project. You can, but it's not required.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;alignnone size-full wp-image-656&quot; title=&quot;to_drag&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/06/to_drag1.png&quot; alt=&quot;to_drag&quot; width=&quot;186&quot; height=&quot;67&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;alignnone size-full wp-image-657&quot; title=&quot;copy_reference&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/06/copy_reference1.jpg&quot; alt=&quot;copy_reference&quot; width=&quot;403&quot; height=&quot;375&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This will add a ton of files to your project. You may delete the APIs you are not planning on using, but make sure that the files &lt;em&gt;GDataXMLNode.m&lt;/em&gt; and &lt;em&gt;GDataXMLNode.h&lt;/em&gt; in the &lt;em&gt;Common/Optional/XMLSupport&lt;/em&gt; group are &lt;strong&gt;not&lt;/strong&gt; removed from your project as they are required for iPhone builds.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;alignnone size-full wp-image-658&quot; title=&quot;files&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/06/files1.jpg&quot; alt=&quot;files&quot; width=&quot;258&quot; height=&quot;345&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Step 4&lt;/h3&gt;


&lt;p&gt;Open up the build settings for &lt;strong&gt;your&lt;/strong&gt; iPhone App project. Located and set the following settings.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Header Search Paths: /usr/include/libxml2&lt;/li&gt;
    &lt;li&gt;Other Linker Flags: -lxml2&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;For the &lt;em&gt;Debug&lt;/em&gt; build configuration only, add the Other C Flags setting so that the library's debug-only code is included:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Other C Flags: -DDEBUG=1&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;img class=&quot;alignnone size-full wp-image-660&quot; title=&quot;build&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/06/build1.gif&quot; alt=&quot;build&quot; width=&quot;603&quot; height=&quot;743&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Step 5 (Optional for iPhone 3.0 Beta SDK)&lt;/h3&gt;


&lt;p&gt;If you downloaded the zip file version (1.7.0) of the API, you will also run into &lt;a title=&quot;NSTask SDK Issue 24&quot; href=&quot;http://code.google.com/p/gdata-objectivec-client/issues/detail?id=24&quot;&gt;this error message&lt;/a&gt; when you attempt to first build your iPhone App project:&lt;/p&gt;

&lt;blockquote&gt;
&lt;pre&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;...Source/Networking/GDataHTTPFetcherLogging.m:224: error: 'NSTask' undeclared (first use in
...Source/Networking/GDataHTTPFetcherLogging.m:224: error: 'task' undeclared (first use in this
function)
&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;


&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;size-full wp-image-651 aligncenter&quot; title=&quot;Error Message&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/06/error11.png&quot; alt=&quot;Error Message&quot; width=&quot;342&quot; height=&quot;72&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Apple has removed the NSTask from the Foundations Framework in the iPhone 3.0 SDK. In order to fix this, simply open up the &lt;em&gt;GDataDefines.h&lt;/em&gt; file, find the developer section and add:&lt;/p&gt;

&lt;pre&gt;#define GDATA_SKIP_LOG_XMLFORMAT 1&lt;/pre&gt;


&lt;p&gt;&lt;img class=&quot;alignnone size-full wp-image-659&quot; title=&quot;gdefine&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/06/gdefine1.png&quot; alt=&quot;gdefine&quot; width=&quot;801&quot; height=&quot;256&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This fix is only needed if you downloaded version 1.7.0 of the GData Objective-C API and are using iPhone 3.0 Beta SDK. If you downloaded the latest Subversion read-only trunk of the code or are using iPhone 2.2.1 SDK, you do not need to do this.&lt;/p&gt;

&lt;h3&gt;Step 6&lt;/h3&gt;


&lt;p&gt;At this point, your iPhone XCode project should build successfully and you can begin using the Google APIs by simply importing the appropriate header files. i.e.&lt;/p&gt;

&lt;pre&gt;#import &quot;GDataAnalytics.h&quot;&lt;/pre&gt;




&lt;h3&gt;Step 7 (Optional if downloaded GData version 1.7.0 Zip file)&lt;/h3&gt;


&lt;p&gt;If you downloaded the zip file version (1.7.0) of the API, you will be missing the Analytics API. That has not yet been zipped up for the download. You may want to download those separately.&lt;/p&gt;

&lt;h3&gt;Additional Resources:&lt;/h3&gt;


&lt;ul&gt;
    &lt;li&gt;&lt;a title=&quot;Using Google APIs in an iPhone App&quot; href=&quot;http://googlemac.blogspot.com/2009/03/using-google-apis-in-iphone-app.html&quot;&gt;Official Google Mac Blog: Using Google APIs in an iPhone App&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a title=&quot;gdata-objectivec-client&quot; href=&quot;http://code.google.com/p/gdata-objectivec-client/&quot;&gt;gdata-objectivec-client - Google Code&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a title=&quot;NSTask SDK Issue 24&quot; href=&quot;http://code.google.com/p/gdata-objectivec-client/issues/detail?id=24&quot;&gt;Issue 24 - gdata-objectivec-client - Build failure due to removal of NSTask from IPhone SDK 3.0 - Google Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Google Releases Page Speed</title>
   <link href="/blog/2009/06/05/google-releases-page-speed/"/>
   <updated>2009-06-05T00:00:00-07:00</updated>
   <id>/blog/2009/06/05/google-releases-page-speed</id>
   <content type="html">&lt;p&gt;Google just released &lt;a title=&quot;Google Page Speed&quot; href=&quot;http://code.google.com/speed/page-speed/&quot;&gt;Page Speed&lt;/a&gt;, their competitor to &lt;a title=&quot;Yahoo! YSlow&quot; href=&quot;http://developer.yahoo.com/yslow/&quot;&gt;Yahoo! YSlow&lt;/a&gt;. Both plug-ins for Firebug. Obvious requirements include &lt;a title=&quot;Mozilla Firefox&quot; href=&quot;http://www.mozilla.com/en-US/&quot;&gt;Mozilla Firefox&lt;/a&gt; and &lt;a title=&quot;Firebug Plug-in&quot; href=&quot;http://www.getfirebug.com/&quot;&gt;Firebug plug-in&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So far it's been pretty to look at. There's 2 tabs instead of YSlow's 1 tab. You can also Record Activity and measure page loading speed as well.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;alignnone size-full wp-image-636&quot; title=&quot;firebug&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/06/firebug1.png&quot; alt=&quot;firebug&quot; width=&quot;707&quot; height=&quot;541&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The one thing I do not like right now is that Page Speed creates 2 folders in my home directory on the Mac OSX. I'm not sure where the folders go in Windows systems yet. These folders just hold some cached items when you run the Page Speed to analyze performance.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;alignnone size-full wp-image-635&quot; title=&quot;page_speed_folders&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/06/page_speed_folders1.png&quot; alt=&quot;page_speed_folders&quot; width=&quot;456&quot; height=&quot;35&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Google's Page Speed results are a bit different than Yahoo! YSlow. YSlow gives you &quot;grades&quot; and Page Speed just gives you green, red, or yellow signs. It also gives you an explanation of what you can do to make your pages load faster. Page Speed also does not give you the little icon next to Firebug that tells you how long it took to load the initial page. Something I actually like to know even if I'm not performance tuning my own website.&lt;/p&gt;

&lt;p&gt;So far, Page Speed is a welcomed addition to the Firebug arsenal. Also check out &lt;a title=&quot;SitePoint CodeBurner&quot; href=&quot;http://tools.sitepoint.com/codeburner/&quot;&gt;SitePoint's CodeBurner&lt;/a&gt; Firebug plug-in. It's a great little reference for HTML and CSS. And &lt;a title=&quot;Firefinder&quot; href=&quot;http://robertnyman.com/firefinder/&quot;&gt;Robert Nyman's FireFinder&lt;/a&gt; for Firebug is handy search for Firebug.&lt;/p&gt;

&lt;h3&gt;What are your thoughts on Google Page Speed? Are you using both Yahoo! YSlow and Google Page Speed?&lt;/h3&gt;


&lt;p&gt;&lt;a title=&quot;Introducing Page Speed&quot; href=&quot;http://google-code-updates.blogspot.com/2009/06/introducing-page-speed.html&quot;&gt;Introducing Page Speed - Google Code Blog&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>The Legal Minefield</title>
   <link href="/blog/2009/06/04/the-legal-minefield/"/>
   <updated>2009-06-04T00:00:00-07:00</updated>
   <id>/blog/2009/06/04/the-legal-minefield</id>
   <content type="html">&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: I am not a lawyer, law student or anything remotely close and/or in any way related to the law field.&lt;/p&gt;

&lt;p&gt;That said, I do still have my own legal issues to be aware of. Recently, I have started up my own company, which brings even more legal nightmares. As for my design and development work, there are quite a bit of legal things that I needed to be aware of.&lt;/p&gt;

&lt;h3&gt;Copyright&lt;/h3&gt;


&lt;p&gt;These are pretty easy to register. At least in the U.S. it is. I'm not so sure about how other countries work. For the U.S. head on over to the &lt;a title=&quot;U.S. Copyright Office Website&quot; href=&quot;http://www.copyright.gov/&quot;&gt;U.S. Copyright Office's website&lt;/a&gt; and do the online registration. It costs about $35 per copyright. This is good for just about all design work and also includes the programming code.&lt;/p&gt;

&lt;h3&gt;Licenses&lt;/h3&gt;


&lt;p&gt;These are the ones that have most recently driven me crazy. You can license your code, design work, photos, etc with various different licenses such as &lt;a title=&quot;Creative Commons&quot; href=&quot;http://creativecommons.org/about/licenses/meet-the-licenses&quot;&gt;Creative Commons&lt;/a&gt;, &lt;a title=&quot;Open Source Licenses&quot; href=&quot;http://www.opensource.org/licenses/alphabetical&quot;&gt;MIT, GNU and many more&lt;/a&gt;. There are a lot of resources available online for these and &lt;a title=&quot;Creative Commons&quot; href=&quot;http://creativecommons.org/about/licenses/meet-the-licenses&quot;&gt;Creative Commons&lt;/a&gt; helps you pick the license you want to use. My confusion comes from having both a Copyright and License on the same material. As a general understanding, everything I write and put on my website is Copyrighted. But at the same time, I have some code that is freely available for downloading and modification under MIT license both on my website and also on &lt;a title=&quot;GitHub&quot; href=&quot;http://www.github.com&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Another issue I am working on figuring out all the legalities of, is how to properly license out work to a client. I have seen quite a few articles online and even some books stating that it's best to retain the Copyright for the websites I design and build, while licensing out the design to the client. That's a great idea, but there's no legal paperwork or explanation on how this whole process works. &lt;a title=&quot;AIGA&quot; href=&quot;http://cpm.aiga.org/content.cfm/copyright-basics-for-graphic-designers&quot;&gt;AIGA&lt;/a&gt; has a pretty good write-up for designers.&lt;/p&gt;

&lt;p&gt;I'm still trying to figure this all out, but I have run into some good resources.&lt;/p&gt;

&lt;h3&gt;Additional Resources&lt;/h3&gt;


&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http://cpm.aiga.org/content.cfm/copyright-basics-for-graphic-designers&quot;&gt;Copyright Basics for Graphic Designers - AIGA&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.copyright.gov/&quot;&gt;U.S. Copyright Office&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://creativecommons.org/about/licenses/meet-the-licenses&quot;&gt;Creative Commons Licenses&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.opensource.org/licenses/alphabetical&quot;&gt;Open Source Licenses - Open Source Initiative&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.netmag.co.uk/zine/discover-culture/the-legal-guide-for-designers&quot;&gt;The legal guide for designers - .Net Magazine&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.sitepoint.com/blogs/2005/07/10/legal-issues-in-starting-up-a-primer/&quot;&gt;Legal issues in starting up - a primer - SitePoint&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.sitepoint.com/article/legal-issues-developers/&quot;&gt;Logic Sold Separately - Legal Issues for Developers - SitePoint&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.netmag.co.uk/zine/discover-culture/thwart-the-design-thieves&quot;&gt;Thwart the design thieves - .Net Magazine&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.freelanceswitch.com/freelancing-essentials/what-to-do-when-someone-steals-your-work/&quot;&gt;What to Do When Someone Steals Your Work - FreelanceSwitch&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://freelancefolder.com/the-uncomfortable-facts-about-plagiarism/&quot;&gt;The Uncomfortable Facts About Plagiarism - Freelance Folder&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://freelancefolder.com/fyi-do-you-know-your-freelancing-rights/&quot;&gt;FYI: Do You Know Your Freelancing Rights? - Freelance Folder&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.startupcompanylawyer.com/&quot;&gt;Startup Company Lawyer Blog&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://onstartups.com/home/tabid/3339/bid/3214/Startup-Lawyers-When-Can-You-Do-It-Yourself.aspx&quot;&gt;Startup Lawyers: When Can You Do It Yourself? - OnStartups&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Disney Goes Green</title>
   <link href="/2009/04/22/disney-goes-green/"/>
   <updated>2009-04-22T00:00:00-07:00</updated>
   <id>/2009/04/22/disney-goes-green</id>
   <content type="html">&lt;p&gt;&lt;img class=&quot;aligncenter size-medium wp-image-326&quot; title=&quot;Disney Nature&quot; src=&quot;http://www.johntwang.com/blogturbo.paulstamatiou.com/uploads/2009/01/disneynature-300x71.jpg&quot; alt=&quot;Disney Nature&quot; width=&quot;300&quot; height=&quot;71&quot; /&gt;&lt;/p&gt;

&lt;h2&gt;&lt;span style=&quot;color: #99cc00;&quot;&gt;Happy Earth Day!&lt;/span&gt;&lt;/h2&gt;


&lt;p&gt;Disney has gone green and launched &lt;a href=&quot;http://disney.go.com/disneynature/&quot;&gt;Disney Nature&lt;/a&gt; (on April 21, 2008). Today is the release of the much anticipated movie &lt;a href=&quot;http://www.apple.com/trailers/disney/earth/&quot;&gt;Earth&lt;/a&gt;. The movie is narrated by &lt;a href=&quot;http://www.imdb.com/name/nm0000469/&quot;&gt;James Earl Jones&lt;/a&gt; and Produced by &lt;a title=&quot;Alastair Fothergill&quot; href=&quot;http://en.wikipedia.org/wiki/Alastair_Fothergill&quot;&gt;Alastair Fothergill&lt;/a&gt; of Planet Earth and Blue Planet fame.&lt;/p&gt;

&lt;p&gt;Disney Nature has 6 more projects lined up for release through 2012.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;em&gt;The Crimson Wing: Mystery of the Flamingos&lt;/em&gt; Co-directed by &lt;a class=&quot;new&quot; title=&quot;Matthew Aeberhard (page does not exist)&quot; href=&quot;http://en.wikipedia.org/w/index.php?title=Matthew_Aeberhard&amp;amp;action=edit&amp;amp;redlink=1&quot;&gt;Matthew Aeberhard&lt;/a&gt; and &lt;a class=&quot;new&quot; title=&quot;Leander Ward (page does not exist)&quot; href=&quot;http://en.wikipedia.org/w/index.php?title=Leander_Ward&amp;amp;action=edit&amp;amp;redlink=1&quot;&gt;Leander Ward&lt;/a&gt;, and produced by &lt;a title=&quot;Paul Webster (producer)&quot; href=&quot;http://en.wikipedia.org/wiki/Paul_Webster_%28producer%29&quot;&gt;Paul Webster&lt;/a&gt; (Kudos Pictures), this film will take viewers to mysterious lives of flamingos. Worldwide roll-out begins &lt;strong&gt;December 2008&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
    &lt;li&gt;&lt;em&gt;Oceans&lt;/em&gt; -- Nearly three-quarters of the earth's surface is covered by oceans. French co-directors &lt;a title=&quot;Jacques Perrin&quot; href=&quot;http://en.wikipedia.org/wiki/Jacques_Perrin&quot;&gt;Jacques Perrin&lt;/a&gt; and &lt;a class=&quot;new&quot; title=&quot;Jacques Cluzaud (page does not exist)&quot; href=&quot;http://en.wikipedia.org/w/index.php?title=Jacques_Cluzaud&amp;amp;action=edit&amp;amp;redlink=1&quot;&gt;Jacques Cluzaud&lt;/a&gt; have set out to capture the full expanse of these waters that have played such a crucial and constant role in the history and sustenance of man. The deep and abundant oceans are places of great mysteries and dangers that this film will dare to explore. Domestic release &lt;strong&gt;2010&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
    &lt;li&gt;&lt;em&gt;Orangutans: One Minute to Midnight&lt;/em&gt; - Directed by &lt;a class=&quot;new&quot; title=&quot;Charlie Hamilton James (page does not exist)&quot; href=&quot;http://en.wikipedia.org/w/index.php?title=Charlie_Hamilton_James&amp;amp;action=edit&amp;amp;redlink=1&quot;&gt;Charlie Hamilton James&lt;/a&gt; and produced by &lt;a class=&quot;new&quot; title=&quot;Frederic Fougea (page does not exist)&quot; href=&quot;http://en.wikipedia.org/w/index.php?title=Fr%C3%A9d%C3%A9ric_Fougea&amp;amp;action=edit&amp;amp;redlink=1&quot;&gt;Frederic Fougea&lt;/a&gt;, this film tells the true story of a six-year-old male orangutan and his little sister, who must take an incredible journey to find a home and a family. Worldwide release &lt;strong&gt;2010&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
    &lt;li&gt;&lt;em&gt;Big Cats&lt;/em&gt; - Audiences will get to meet three mothers - a lioness, a leopard and a cheetah - as they explore their world on the great plains of Africa. Co-directed by &lt;a class=&quot;new&quot; title=&quot;Keith Scholey&quot; href=&quot;http://en.wikipedia.org/w/index.php?title=Keith_Scholey&amp;amp;action=edit&amp;amp;redlink=1&quot;&gt;Keith Scholey&lt;/a&gt; and &lt;a title=&quot;Alastair Fothergill&quot; href=&quot;http://en.wikipedia.org/wiki/Alastair_Fothergill&quot;&gt;Alastair Fothergill&lt;/a&gt; and produced by &lt;a class=&quot;new&quot; title=&quot;Alix Tidmarsh (page does not exist)&quot; href=&quot;http://en.wikipedia.org/w/index.php?title=Alix_Tidmarsh&amp;amp;action=edit&amp;amp;redlink=1&quot;&gt;Alix Tidmarsh&lt;/a&gt;, this film will show how these magnificent animals survive on their power and their cunning, while they protect and teach their cubs the ways of the wild. Worldwide release &lt;strong&gt;2011&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
    &lt;li&gt;&lt;em&gt;Naked Beauty: A Love Story that Feeds the Earth&lt;/em&gt; - In this film, nature is ready for its close-up, a very close-up, as exacting &lt;a title=&quot;Macro photography&quot; href=&quot;http://en.wikipedia.org/wiki/Macro_photography&quot;&gt;macro photography&lt;/a&gt; takes us to the realm of flowers and their pollinators. Acclaimed filmmaker &lt;a class=&quot;new&quot; title=&quot;Louie Schwartzberg&quot; href=&quot;http://en.wikipedia.org/w/index.php?title=Louie_Schwartzberg&quot;&gt;Louie Schwartzberg&lt;/a&gt; introduces us to a bat, a hummingbird, a butterfly and a bumblebee, demonstrating their intricate interdependence and how life on earth depends on the success of these determined, diminutive creatures. &lt;em&gt;Naked Beauty&lt;/em&gt; is produced by &lt;a class=&quot;new&quot; title=&quot;Blacklight Films (page does not exist)&quot; href=&quot;http://en.wikipedia.org/w/index.php?title=Blacklight_Films&quot;&gt;Blacklight Films&lt;/a&gt; and &lt;a class=&quot;new&quot; title=&quot;Alix Tidmarsh (page does not exist)&quot; href=&quot;http://en.wikipedia.org/w/index.php?title=Alix_Tidmarsh&quot;&gt;Alix Tidmarsh&lt;/a&gt;. Worldwide release &lt;strong&gt;2011&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
    &lt;li&gt;&lt;em&gt;Chimpanzee&lt;/em&gt; - &lt;a title=&quot;Alastair Fothergill&quot; href=&quot;http://en.wikipedia.org/wiki/Alastair_Fothergill&quot;&gt;Alastair Fothergill&lt;/a&gt; and &lt;a class=&quot;new&quot; title=&quot;Mark Linfield&quot; href=&quot;http://en.wikipedia.org/w/index.php?title=Mark_Linfield&quot;&gt;Mark Linfield&lt;/a&gt; co-direct this intimate look at the world of chimpanzees, with &lt;a title=&quot;Christophe Boesch&quot; href=&quot;http://en.wikipedia.org/wiki/Christophe_Boesch&quot;&gt;Christophe Boesch&lt;/a&gt;, head of the &lt;a class=&quot;new&quot; title=&quot;Wild Chimpanzee Foundation (page does not exist)&quot; href=&quot;http://en.wikipedia.org/w/index.php?title=Wild_Chimpanzee_Foundation&quot;&gt;Wild Chimpanzee Foundation&lt;/a&gt;, serving as principal consultant and &lt;a class=&quot;new&quot; title=&quot;Alix Tidmarsh&quot; href=&quot;http://en.wikipedia.org/w/index.php?title=Alix_Tidmarsh&quot;&gt;Alix Tidmarshas&lt;/a&gt; producer. To be shot over three years in the tropical jungles of the Ivory Coast and Uganda, &lt;em&gt;Chimpanzee&lt;/em&gt; will help us better understand this exceptionally intelligent species. Worldwide release &lt;strong&gt;2012&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;a href=&quot;http://disney.go.com/disneynature/medias/img/Disneynature_Press_Release_08.pdf&quot; target=&quot;_blank&quot;&gt;Press Release in PDF&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Are you going to see the film?&lt;/h3&gt;

</content>
 </entry>
 
 <entry>
   <title>Review: Apress Beginning iPhone Development</title>
   <link href="/blog/2009/04/07/review-apress-beginning-iphone-development/"/>
   <updated>2009-04-07T00:00:00-07:00</updated>
   <id>/blog/2009/04/07/review-apress-beginning-iphone-development</id>
   <content type="html">&lt;p&gt;&lt;img class=&quot;size-full wp-image-619 alignleft&quot; title=&quot;beginning iphone development&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/04/97814302162611.gif&quot; alt=&quot;beginning iphone development&quot; width=&quot;125&quot; height=&quot;164&quot; /&gt;I've been working through &lt;a href=&quot;http://apress.com/&quot; target=&quot;_blank&quot;&gt;Apress&lt;/a&gt;'s&lt;a href=&quot;http://www.amazon.com/gp/product/1430216263?ie=UTF8&amp;amp;tag=jotwa-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1430216263&quot;&gt;Beginning iPhone Development: Exploring the iPhone SDK&lt;/a&gt;&lt;img style=&quot;border:none !important; margin:0px !important;&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=jotwa-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=1430216263&quot; border=&quot;0&quot; alt=&quot;&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;. The has it's own &lt;a href=&quot;http://iphonedevbook.com/&quot; target=&quot;_blank&quot;&gt;website&lt;/a&gt; where the writers host a forum and source code samples. It's a great book to get you started with iPhone App Development. The authors do a great job walking you through the steps and explaining the lines of code you're writing. They also keep updated source code and &lt;a href=&quot;http://www.apress.com/book/errata/1069&quot; target=&quot;_blank&quot;&gt;Errata&lt;/a&gt;. This book is for the SDK 2.0 and not the newly released iPhone 3.0 OS and SDK. It's also important to note that book emphasis that you have some knowledge of C, Objective-C or at least pick up the &lt;a href=&quot;http://www.amazon.com/gp/product/1430218150?ie=UTF8&amp;amp;tag=jotwa-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1430218150&quot;&gt;Learn Objective-C on the Mac (Learn Series)&lt;/a&gt;&lt;img style=&quot;border:none !important; margin:0px !important;&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=jotwa-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=1430218150&quot; border=&quot;0&quot; alt=&quot;&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt; book and work through that first. This is an introductory book. It is by no means a cookbook or a book on advanced topics for iPhone development. What the book does do really well, is give you a great foundation to build on. Instead of hacking together code and seeing what it does, the book shows you how to do things in ways minimize your future headaches and also give you some standard process of development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Great introduction to the SDK&lt;/li&gt;
    &lt;li&gt;Up to date Source Code for the book on the website&lt;/li&gt;
    &lt;li&gt;Book forums for asking questions and interacting&lt;/li&gt;
    &lt;li&gt;Great way to get started in iPhone development&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Cons:&lt;/h4&gt;


&lt;ul&gt;
    &lt;li&gt;No sounds API examples or chapter&lt;/li&gt;
    &lt;li&gt;Needs some more XCode help as most developers are learning XCode for the first time.&lt;/li&gt;
    &lt;li&gt;Needs a bit more help on debugging iPhone code&lt;/li&gt;
    &lt;li&gt;More on device development&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;strong&gt;Upcoming Apress iPhone Development Books&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/1430224037?ie=UTF8&amp;amp;tag=jotwa-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1430224037&quot;&gt;iPhone Advanced Projects&lt;/a&gt;&lt;img style=&quot;border:none !important; margin:0px !important;&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=jotwa-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=1430224037&quot; border=&quot;0&quot; alt=&quot;&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/143022357X?ie=UTF8&amp;amp;tag=jotwa-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=143022357X&quot;&gt;iPhone Cool Projects: Ten Great Development Projects for Your iPhone&lt;/a&gt;&lt;img style=&quot;border:none !important; margin:0px !important;&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=jotwa-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=143022357X&quot; border=&quot;0&quot; alt=&quot;&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/1430223596?ie=UTF8&amp;amp;tag=jotwa-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1430223596&quot;&gt;iPhone User Interface Design Projects&lt;/a&gt;&lt;img style=&quot;border:none !important; margin:0px !important;&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=jotwa-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=1430223596&quot; border=&quot;0&quot; alt=&quot;&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/1430219688?ie=UTF8&amp;amp;tag=jotwa-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1430219688&quot;&gt;iPhone Games Projects&lt;/a&gt;&lt;img style=&quot;border:none !important; margin:0px !important;&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=jotwa-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=1430219688&quot; border=&quot;0&quot; alt=&quot;&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Other Resources:&lt;/h3&gt;


&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http://twitter.com/ApressBerkeley&quot; target=&quot;_blank&quot;&gt;Follow Apress on Twitter&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://developer.apple.com/iphone/&quot; target=&quot;_blank&quot;&gt;Apple iPhone Dev Center&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.stanford.edu/class/cs193p/cgi-bin/index.php&quot; target=&quot;_blank&quot;&gt;Stanford's CSP193P iPhone Dev Course&lt;/a&gt; - Available on &lt;a href=&quot;http://itunes.stanford.edu/&quot; target=&quot;_blank&quot;&gt;iTunesU&lt;/a&gt; podcast.&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Amazon Kindle 2 for Web Design and Development?</title>
   <link href="/blog/2009/03/11/amazon-kindle-2-for-web-design-and-development/"/>
   <updated>2009-03-11T00:00:00-07:00</updated>
   <id>/blog/2009/03/11/amazon-kindle-2-for-web-design-and-development</id>
   <content type="html">&lt;p&gt;Over the past couple weeks, I have been testing out the new Amazon Kindle2 for reference use on Web Design and Development. I went through the Amazon.com Kindle Store to see what books were available to get on the Kindle. I also looked at all the books to see if eBook PDF versions were available so that I could convert them to the Kindle. I was able to find a few Print books to compare with the Kindle and also some PDF books too. Here are some pictures comparing the same section of the books.&lt;/p&gt;

&lt;h3&gt;Kindle vs Print&lt;/h3&gt;


&lt;pre&gt;&lt;code&gt;I used 2 separate books for comparing Print to Kindle formatted books. Jeffrey Zeldman's &amp;lt;em&amp;gt;Designing with Web Standards&amp;lt;/em&amp;gt; and Andy Budd's &amp;lt;em&amp;gt;CSS Mastery&amp;lt;/em&amp;gt;. They are both available on the Kindle Store and in Print format. The Kindle version of the book compared very well to the Print version. The only real difference I noticed was the loss of color pages if the Print version had them. Other than that, reading was very easy and comfortable. Images were the only concern, and Amazon managed to do a pretty good job at having it scale properly. You can change the size of the images that show up throughout the book if you want to see it bigger. The text formatting was interesting, as it's fixed-width font and center-aligned. So every now and then you may only see 3-4 words per line depending on your font size choice. Overall, I am enjoying the experience so far.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;[nggallery id=12]&lt;/p&gt;

&lt;h3&gt;Print vs PDF Converted&lt;/h3&gt;


&lt;pre&gt;&lt;code&gt;The book used for this comparison is Jason Baird's &amp;lt;em&amp;gt;The Principles of Beautiful Web Design&amp;lt;/em&amp;gt;. The book is published by Sitepoint and available in Print and PDF eBook format. I converted the PDF version of the book using &amp;lt;a href=&quot;http://www.mobipocket.com/en/DownloadSoft/ProductDetailsCreator.asp&quot;&amp;gt;Mobipocket Creator 4.2 Publisher Edition&amp;lt;/a&amp;gt;. It's a free Windows ONLY application. The process is quite simple. Select the PDF, import it, fill out the required metadata, build the PRC file and copy it over to the Kindle via the USB cable. Once that's done, you can begin reading your book.
Comparing the 2. The converted PDF did have some issues with images and their sizes. Not really all too surprising. The main part where it seemed to have issues, was with text inside of a box. The converted software takes the text out of the text box and creates an image for the text box. As for regular images. It's mostly random. The screenshot of the Website in the book converted fairly well. However, as you will see in the next section, some images were not resized as expected. It doesn't cause too much of a problem for reading the actual text though.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;[nggallery id=13]&lt;/p&gt;

&lt;h3&gt;Kindle vs PDF Converted&lt;/h3&gt;


&lt;pre&gt;&lt;code&gt;For this comparison, I chose to use Jeff Croft's &amp;lt;em&amp;gt;Pro CSS Techniques&amp;lt;/em&amp;gt; book. It's published by Apress and available on the Amazon.com Kindle Store. The Converted PDF actually reads very well. As I said before, the images sometimes tend to have resizing/scaling issues. One thing that the converted PDF does have issues with, is sidebar-type quotes or text. It tends to incorporate them into the book based on it's location on the page instead of keeping them separate. So, that does take some getting used to. For standard plain text PDF books, it works wonderfully. I have not yet tried sending Amazon a PDF to convert and see if their results match up. I also haven't tested other means of converting the PDF such as using &amp;lt;a href=&quot;http://www.lexcycle.com/&quot;&amp;gt;Stanza&amp;lt;/a&amp;gt;. For the Apress books, since every one that I've gotten from them are all in grayscale anyways, there isn't any issue of loss of color. For Sitepoint books though, I can see loss of color as an issue. If there is color-coded code in the books, I can see it become an issue. Since most of the Web Development books I found available are Apress books, I haven't run into that issue.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;[nggallery id=14]&lt;/p&gt;

&lt;h3&gt;iPhone App&lt;/h3&gt;


&lt;pre&gt;&lt;code&gt;The &amp;lt;a href=&quot;http://www.amazon.com/gp/feature.html/ref=amb_link_83811991_2?ie=UTF8&amp;amp;docId=1000301301&amp;amp;pf_rd_m=ATVPDKIKX0DER&amp;amp;pf_rd_s=right-1&amp;amp;pf_rd_r=0174MN67FSHSXA06B61H&amp;amp;pf_rd_t=101&amp;amp;pf_rd_p=471118251&amp;amp;pf_rd_i=133141011&quot;&amp;gt;Kindle iPhone App&amp;lt;/a&amp;gt; is freely available on the Apple iTunes App Store. You can only read the books you purchase through the Kindle Store. As of right now, converting PDF files to Kindle format cannot be read on the iPhone. Here are some screenshots of CSS Mastery and Designing with Web Standards on the Kindle iPhone App.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;[nggallery id=9]
[nggallery id=10]&lt;/p&gt;

&lt;h3&gt;A Small sampling of books available in the Kindle Store&lt;/h3&gt;


&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/B000SEHEFM?ie=UTF8&amp;ref_=sr_1_3&amp;s=digital-text&amp;qid=1236281670&amp;sr=1-3&quot;&gt;CSS Mastery: Advanced Web Standards Solutions&lt;/a&gt; (Kindle Edition) by Andy Budd&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Designing-the-Obvious/dp/B000SEI12C/ref=pd_sim_kinc_1&quot;&gt;Designing the Obvious&lt;/a&gt; (Kindle Edition) by Robert Hoekman&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Communicating-Design-Developing-Documentation-Planning/dp/B000P28WIA/ref=pd_sim_kinc_1&quot;&gt;Communicating Design: Developing Web Site Documentation for Design and Planning&lt;/a&gt; (Kindle Edition) by Dan Brow&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Beginning-CSS-Web-Development-Professional/dp/B001NCDFTM/ref=sr_1_30?ie=UTF8&amp;s=digital-text&amp;qid=1236281890&amp;sr=1-30&quot;&gt;Beginning CSS Web Development: From Novice to Professional&lt;/a&gt; (Kindle Edition) by Simon Collison&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Beginning-Google-Maps-Applications-Ajax/dp/B001D4SE00/ref=sr_1_39?ie=UTF8&amp;s=digital-text&amp;qid=1236281904&amp;sr=1-39&quot;&gt;Beginning Google Maps Applications with PHP and Ajax: From Novice to Professional&lt;/a&gt; (Kindle Edition)
by Michael Purvis (Author), Jeffrey Sambells (Author), Cameron Turner (Author)&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Pro-CSS-Techniques/dp/B001DA0FII/ref=sr_1_54?ie=UTF8&amp;s=digital-text&amp;qid=1236281921&amp;sr=1-54&quot;&gt;Pro CSS Techniques&lt;/a&gt; (Kindle Edition) by Jeff Croft (Author), Ian Lloyd (Author), Dan Rubin (Author)&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Pro-JavaScript-Techniques/dp/B0015R3OHI/ref=pd_sim_kinc_2&quot;&gt;Pro JavaScript Techniques&lt;/a&gt; (Kindle Edition) by John Resig (Author) &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Bulletproof-Ajax/dp/B000SEGF7U/ref=pd_sim_kinc_5&quot;&gt;Bulletproof Ajax&lt;/a&gt; (Kindle Edition) by Jeremy Keith&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Designing-Web-Standards-Second/dp/B000P28WI0/ref=pd_sim_kinc_8&quot;&gt;Designing with Web Standards, Second Edition&lt;/a&gt; (Kindle Edition) by Jeffrey Zeldman&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;Conclusion&lt;/h3&gt;


&lt;p&gt;Overall, I am enjoying using the Kindle as a reference material for Web Design books and Web Development books. I have converted all of the Sitepoint PDF eBooks that I have bought and also the vast majority of the Apress eBooks as well. Having them all readily available and search-able is really convenient. Also, the note-taking and highlighting capabilities of the Kindle are very easy-to-use and helpful.
[nggallery id=11]&lt;/p&gt;

&lt;h3&gt;Your Thoughts and Comments?&lt;/h3&gt;


&lt;p&gt;What do you think of the Kindle as a viable replacement for Print books, Textbooks or reference books?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>How to change com.yourcompany in Xcode for iPhone Applications</title>
   <link href="/blog/2009/03/10/how-to-change-comyourcompany-in-xcode-for-iphone-applications/"/>
   <updated>2009-03-10T00:00:00-07:00</updated>
   <id>/blog/2009/03/10/how-to-change-comyourcompany-in-xcode-for-iphone-applications</id>
   <content type="html">&lt;p&gt;Having been doing some iPhone App development lately, I've run into one of the little issues abound. In order to test your application on an iPhone and also deploy it to the Apple iTunes App Store, you need to properly configure your application's Bundle Identifier in your Info.plist file. All the books tell you this. And Apple makes it a point to tell you how to do this before you try to deploy on the App Store.&lt;/p&gt;

&lt;p&gt;After creating App after App though, it becomes a very tedious task. I've searched far and wide online and couldn't find anything that pointed me to how to change it. I did manage to find information on how to change it for developing Mac Desktop Applications. Didn't really help my case too much.&lt;/p&gt;

&lt;p&gt;In any case, what you're looking for is in the directory path:
&lt;em&gt;/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Project Templates/Application&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In there, you'll find directories for each type of iPhone Application template that you can create from Xcode.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Navigation-Based Application&lt;/li&gt;
    &lt;li&gt;OpenGL ES Application&lt;/li&gt;
    &lt;li&gt;Tab Bar Application&lt;/li&gt;
    &lt;li&gt;Utility Application&lt;/li&gt;
    &lt;li&gt;View-Based Application&lt;/li&gt;
    &lt;li&gt;Window-Based Application&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;In each directory, there is a file called: &lt;em&gt;Info.plist&lt;/em&gt;
Here you can change your default Bundle Identifier by finding the Key String pair.
[sourcecode language='xml'] &lt;key&gt;CFBundleIdentifier&lt;/key&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;string&amp;gt;com.yourcompany.${PRODUCT_NAME:identifier}&amp;lt;/string&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;[/sourcecode]
Simply change yourcompany to your new default save. Once you've done that. Any new iPhone App you create from Xcode's iPhone Application templates will be pre-filled with your new identifier.&lt;/p&gt;

&lt;p&gt;Much easier than fixing it for each new iPhone App you make. Hope this helps!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Personal MBA Kindle Books Availability List</title>
   <link href="/blog/2009/03/04/personal-mba-kindle-books-availability-list/"/>
   <updated>2009-03-04T00:00:00-08:00</updated>
   <id>/blog/2009/03/04/personal-mba-kindle-books-availability-list</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://www.johntwang.com/blog/2009/03/03/amazon-kindle-2-and-the-personal-mba/&quot;&gt;Yesterday I introduced the idea&lt;/a&gt; of using &lt;a href=&quot;http://www.amazon.com&quot;&gt;Amazon.com&lt;/a&gt;'s newly released &lt;a href=&quot;http://www.amazon.com/gp/product/B00154JDAI?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B00154JDAI&quot;&gt;Kindle 2&lt;/a&gt; as a tool for the &lt;a href=&quot;http://www.personalmba.com&quot;&gt;Personal MBA program&lt;/a&gt;. We saw that there was a large number of the &lt;a href=&quot;http://personalmba.com/best-business-books/&quot;&gt;Personal MBA's 77 Recommended Books List&lt;/a&gt; available in Kindle format.&lt;/p&gt;

&lt;h3&gt;Price Comparisons&lt;/h3&gt;


&lt;table class=&quot;stats&quot; cellspacing=&quot;0&quot;&gt;
&lt;thead class=&quot;hed&quot;&gt;
&lt;tr&gt;
&lt;th&gt;Core Print Total&lt;/th&gt;
&lt;th&gt;Core Kindle Total&lt;/th&gt;
&lt;th&gt;Supplement Print Total&lt;/th&gt;
&lt;th&gt;Supplement Kindle Total&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;$542.09&lt;/td&gt;
&lt;td&gt;$406.52&lt;/td&gt;
&lt;td&gt;$130.53&lt;/td&gt;
&lt;td&gt;$111.02&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;For the 77 Core Books the total savings if you buy all the Kindle versions instead of the Print version is &lt;strong&gt;$135.57&lt;/strong&gt;. As for the Supplemental books, your savings would be &lt;strong&gt;$19.51&lt;/strong&gt;. It is important to note that there is actually one book currently available in Kindle format which would be cheaper to purchase the Print version. That book is &lt;em&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/B001BSSI3Q?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B001BSSI3Q&quot;&gt;Judgment&lt;/a&gt; by Noel Tichy &amp;amp; Warren Bennis&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Below you will find the same list found on The Personal MBA Book list page, but with the additions of whether or not the book is available in Kindle format and if so, the corresponding prices in Print and Kindle formats.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclaimer:&lt;/em&gt; Prices subject to change per &lt;a href=&quot;http://amazon.com&quot;&gt;Amazon.com&lt;/a&gt; decisions and book list subject to change per &lt;a href=&quot;http://personalmba.com&quot;&gt;The Personal MBA's&lt;/a&gt; decision.&lt;/p&gt;

&lt;h3&gt;Getting Started&lt;/h3&gt;


&lt;table class=&quot;stats&quot; cellspacing=&quot;0&quot;&gt;
  &lt;thead class=&quot;hed&quot;&gt;
    &lt;tr&gt;
      &lt;th&gt;Book&lt;/th&gt;
      &lt;th&gt;Kindle Format&lt;/th&gt;
      &lt;th&gt;Book Price&lt;/th&gt;
      &lt;th&gt;Kindle Price&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0446676675?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0446676675&quot;&gt;10 Days to Faster Reading&lt;/a&gt; by Abby Marks-Beale&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/159562015X?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=159562015X&quot;&gt;StrengthsFinder 2.0&lt;/a&gt; by Tom Rath&lt;/td&gt;
      &lt;td&gt;yes&lt;/td&gt;
      &lt;td&gt;$13.17&lt;/td&gt;
      &lt;td&gt;$9.99&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/9562915999?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=9562915999&quot;&gt;Lead the Field&lt;/a&gt; by Earl Nightingale&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0743529065?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0743529065&quot;&gt;The Art of Exceptional Living&lt;/a&gt; by Jim Rohn&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;




&lt;h3&gt;Productivity &amp; Effectiveness&lt;/h3&gt;


&lt;table class=&quot;stats&quot; cellspacing=&quot;0&quot;&gt;
  &lt;thead class=&quot;hed&quot;&gt;
    &lt;tr&gt;
      &lt;th&gt;Book&lt;/th&gt;
      &lt;th&gt;Kindle Format&lt;/th&gt;
      &lt;th&gt;Book Price&lt;/th&gt;
      &lt;th&gt;Kindle Price&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0060833459?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0060833459&quot;&gt;The Effective Executive&lt;/a&gt; by Peter Drucker&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$11.55&lt;/td&gt;
      &lt;td&gt;$9.99&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0142000280?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0142000280&quot;&gt;Getting Things Done&lt;/a&gt; by David Allen&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$9.43&lt;/td&gt;
      &lt;td&gt;$9.43&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0979368103?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0979368103&quot;&gt;Bit Literacy&lt;/a&gt; by Mark Hurst&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$15.63&lt;/td&gt;
      &lt;td&gt;$3.99&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0743235274?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0743235274&quot;&gt;The Creative Habit&lt;/a&gt; by Twyla Tharp&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0449903370?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0449903370&quot;&gt;The Path of Least Resistance&lt;/a&gt; by Robert Fritz&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0738209120?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0738209120&quot;&gt;The Simplicity Survival Handbook&lt;/a&gt; by Bill Jensen&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$13.11&lt;/td&gt;
      &lt;td&gt;$9.99&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0385516207?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0385516207&quot;&gt;Cut to the Chase&lt;/a&gt; by Stuart Levine&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$13.57&lt;/td&gt;
      &lt;td&gt;$9.99&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/038552126X?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=038552126X&quot;&gt;The Unwritten Laws of Business&lt;/a&gt; by W.J. King&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0596517718?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0596517718&quot;&gt;Making Things Happen&lt;/a&gt; by Scott Berkun&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0814473431?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0814473431&quot;&gt;Results Without Authority&lt;/a&gt; by Tom Kendrick&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$13.57&lt;/td&gt;
      &lt;td&gt;$9.99&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;




&lt;h3&gt;Psychology &amp; Communication&lt;/h3&gt;


&lt;table class=&quot;stats&quot; cellspacing=&quot;0&quot;&gt;
  &lt;thead class=&quot;hed&quot;&gt;
    &lt;tr&gt;
      &lt;th&gt;Book&lt;/th&gt;
      &lt;th&gt;Kindle Format&lt;/th&gt;
      &lt;th&gt;Book Price&lt;/th&gt;
      &lt;th&gt;Kindle Price&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0671027034?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0671027034&quot;&gt;How to Win Friends and Influence People&lt;/a&gt; by Dale Carnegie&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$9.00&lt;/td&gt;
      &lt;td&gt;$4.80&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0071401946?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0071401946&quot;&gt;Crucial Conversations&lt;/a&gt; by Kerry Patterson, Joseph Grenny, Ron McMillan, and Al Switzler&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
     &lt;td&gt;$10.67&lt;/td&gt;
     &lt;td&gt;$9.99&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0060891548?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0060891548&quot;&gt;On Writing Well&lt;/a&gt; by William Zinsser&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0321525655?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0321525655&quot;&gt;Presentation Zen&lt;/a&gt; by Garr Reynolds&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$19.79&lt;/td&gt;
      &lt;td&gt;$16.49&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/1400064287?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1400064287&quot;&gt;Made to Stick&lt;/a&gt; by Chip and Dan Heath&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$16.50&lt;/td&gt;
      &lt;td&gt;$14.85&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/006124189X?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=006124189X&quot;&gt;Influence: The Psychology of Persuasion&lt;/a&gt; by Robert B. Cialdini&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0262611465?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0262611465&quot;&gt;Sources of Power: How People Make Decisions&lt;/a&gt; by Gary Klein&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0932633013?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0932633013&quot;&gt;Secrets of Consulting&lt;/a&gt; by Gerald M. Weinberg&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0393326152?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0393326152&quot;&gt;Deep Survival&lt;/a&gt; by Laurence Gonzales&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;




&lt;h3&gt;Design &amp; Production&lt;/h3&gt;


&lt;table class=&quot;stats&quot; cellspacing=&quot;0&quot;&gt;
  &lt;thead class=&quot;hed&quot;&gt;
    &lt;tr&gt;
      &lt;th&gt;Book&lt;/th&gt;
      &lt;th&gt;Kindle Format&lt;/th&gt;
      &lt;th&gt;Book Price&lt;/th&gt;
      &lt;th&gt;Kindle Price&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0073101427?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0073101427&quot;&gt;Product Design and Development&lt;/a&gt; by Karl Ulrich and Steven Eppinger&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0465067107?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0465067107&quot;&gt;The Design of Everyday Things&lt;/a&gt; by Donald Norman&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$11.53&lt;/td&gt;
      &lt;td&gt;$9.99&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/1592530079?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1592530079&quot;&gt;Universal Principles of Design&lt;/a&gt; by William Lidwell, Kritina Holden, and Jill Butler&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://gettingreal.37signals.com/&quot;&gt;Getting Real&lt;/a&gt; by 37signals&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0884271781?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0884271781&quot;&gt;The Goal&lt;/a&gt; by Eliyahu Goldratt&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0743249275?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0743249275&quot;&gt;Lean Thinking&lt;/a&gt; by James Womack and Daniel Jones&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;




&lt;h3&gt;Marketing, Sales, &amp; Negotiation&lt;/h3&gt;


&lt;table class=&quot;stats&quot; cellspacing=&quot;0&quot;&gt;
  &lt;thead class=&quot;hed&quot;&gt;
    &lt;tr&gt;
      &lt;th&gt;Book&lt;/th&gt;
      &lt;th&gt;Kindle Format&lt;/th&gt;
      &lt;th&gt;Book Price&lt;/th&gt;
      &lt;th&gt;Kindle Price&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/1591841003?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1591841003&quot;&gt;All Marketers Are Liars&lt;/a&gt; by Seth Godin&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$16.29&lt;/td&gt;
      &lt;td&gt;$14.27&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0471703087?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0471703087&quot;&gt;Indispensable&lt;/a&gt; by Joe Calloway&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$18.45&lt;/td&gt;
      &lt;td&gt;$9.99&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0312284543?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0312284543&quot;&gt;Getting Everything You Can Out of All You've Got&lt;/a&gt; by Jay Abraham&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0061379409?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0061379409&quot;&gt;The Sales Bible&lt;/a&gt; by Jeffrey Gitomer&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/1591841607?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1591841607&quot;&gt;The Ultimate Sales Machine&lt;/a&gt; by Chet Holmes&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$16.47&lt;/td&gt;
      &lt;td&gt;$8.75&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0070511136?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0070511136&quot;&gt;SPIN Selling&lt;/a&gt; by Neil Rackham&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0143036971?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0143036971&quot;&gt;Bargaining For Advantage&lt;/a&gt; by G. Richard Shell&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$9.59&lt;/td&gt;
      &lt;td&gt;$9.59&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/1591397995?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1591397995&quot;&gt;3-D Negotiation&lt;/a&gt; by David A. Lax and James K. Sebenius&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;




&lt;h3&gt;Entrepreneurship&lt;/h3&gt;


&lt;table class=&quot;stats&quot; cellspacing=&quot;0&quot;&gt;
  &lt;thead class=&quot;hed&quot;&gt;
    &lt;tr&gt;
      &lt;th&gt;Book&lt;/th&gt;
      &lt;th&gt;Kindle Format&lt;/th&gt;
      &lt;th&gt;Book Price&lt;/th&gt;
      &lt;th&gt;Kindle Price&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0273708058?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0273708058&quot;&gt;The New Business Road Test&lt;/a&gt; by John Mullins&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0979152208?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0979152208&quot;&gt;Bankable Business Plans&lt;/a&gt; by Edward Rogoff&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$16.47&lt;/td&gt;
      &lt;td&gt;$9.99&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0470182024?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0470182024&quot;&gt;Ready, Fire, Aim&lt;/a&gt; by Michael Masterson&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0307353133?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0307353133&quot;&gt;The 4-Hour Workweek&lt;/a&gt; by Timothy Ferriss&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$13.57&lt;/td&gt;
      &lt;td&gt;$9.99&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/1591840562?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1591840562&quot;&gt;The Art of the Start&lt;/a&gt; by Guy Kawasaki&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$16.89&lt;/td&gt;
      &lt;td&gt;$14.82&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0452273161?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0452273161&quot;&gt;How to Make Millions with Your Ideas&lt;/a&gt; by Dan Kennedy&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0471479691?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0471479691&quot;&gt;Getting Started in Consulting&lt;/a&gt; by Alan Weiss&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$13.57&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;




&lt;h3&gt;Management &amp; Leadership&lt;/h3&gt;


&lt;table class=&quot;stats&quot; cellspacing=&quot;0&quot;&gt;
  &lt;thead class=&quot;hed&quot;&gt;
    &lt;tr&gt;
      &lt;th&gt;Book&lt;/th&gt;
      &lt;th&gt;Kindle Format&lt;/th&gt;
      &lt;th&gt;Book Price&lt;/th&gt;
      &lt;th&gt;Kindle Price&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0684852861?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0684852861&quot;&gt;First, Break All The Rules&lt;/a&gt; by Marcus Buckingham &amp; Curt Coffman&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/159562998X?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=159562998X&quot;&gt;12: The Elements of Great Managing&lt;/a&gt; by Rodd Wagner &amp; James Harter&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$17.13&lt;/td&gt;
      &lt;td&gt;$14.27&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/1401301304?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1401301304&quot;&gt;What Got You Here Won't Get You There&lt;/a&gt; by Marshall Goldsmith&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$15.71&lt;/td&gt;
      &lt;td&gt;$9.99&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/B000X1N3O6?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B000X1N3O6&quot;&gt;Growing Great Employees&lt;/a&gt; by Erika Andersen&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$11.25&lt;/td&gt;
      &lt;td&gt;$10.13&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/1580085148?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1580085148&quot;&gt;Hiring Smart&lt;/a&gt; by Pierre Mornell&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/B001BSSI3Q?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B001BSSI3Q&quot;&gt;Judgment&lt;/a&gt; by Noel Tichy &amp; Warren Bennis&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$7.99&lt;/td&gt;
      &lt;td&gt;$14.82&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0471789771?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0471789771&quot;&gt;The New Leader's 100-Day Action Plan&lt;/a&gt; by George Bradt, Jayme Check, &amp; Jorge Pedraza&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$17.13&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0743291255?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0743291255&quot;&gt;The Halo Effect&lt;/a&gt; by Phil Rosenzweig&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$18.46&lt;/td&gt;
      &lt;td&gt;$9.79&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0061345016?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0061345016&quot;&gt;The Essential Drucker&lt;/a&gt; by Peter F. Drucker&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$12.21&lt;/td&gt;
      &lt;td&gt;$9.99&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/1422121062?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1422121062&quot;&gt;Ethics for the Real World&lt;/a&gt; by Ronald Howard &amp; Clinton Korver&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$16.47&lt;/td&gt;
      &lt;td&gt;$9.99&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;




&lt;h3&gt;Strategy &amp; Innovation&lt;/h3&gt;


&lt;table class=&quot;stats&quot; cellspacing=&quot;0&quot;&gt;
  &lt;thead class=&quot;hed&quot;&gt;
    &lt;tr&gt;
      &lt;th&gt;Book&lt;/th&gt;
      &lt;th&gt;Kindle Format&lt;/th&gt;
      &lt;th&gt;Book Price&lt;/th&gt;
      &lt;th&gt;Kindle Price&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/1403975817?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1403975817&quot;&gt;Purpose: The Starting Point of Great Companies&lt;/a&gt; by Nikos Mourkogiannis&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0684841487?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0684841487&quot;&gt;Competitive Strategy&lt;/a&gt; by Michael Porter&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$26.40&lt;/td&gt;
      &lt;td&gt;$15.00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/1591396190?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1591396190&quot;&gt;Blue Ocean Strategy&lt;/a&gt; by W. Chan Kim and Ren&amp;#233;e Mauborgne&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$20.75&lt;/td&gt;
      &lt;td&gt;$16.47&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/1591391857?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1591391857&quot;&gt;Seeing What's Next&lt;/a&gt; by Clayton M. Christensen, Erik A. Roth, Scott D. Anthony&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0471303526?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0471303526&quot;&gt;Learning from the Future&lt;/a&gt; by Liam Fahey &amp; Robert Randall&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0060851139?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0060851139&quot;&gt;Innovation and Entrepreneurship&lt;/a&gt; by Peter F. Drucker&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0596527055?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0596527055&quot;&gt;Myths of Innovation&lt;/a&gt; by Scott Berkun&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0300119976?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0300119976&quot;&gt;Green to Gold&lt;/a&gt; by Daniel Esty &amp; Andrew Winston&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$18.15&lt;/td&gt;
      &lt;td&gt;$12.21&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;




&lt;h3&gt;Finance &amp; Analysis&lt;/h3&gt;


&lt;table class=&quot;stats&quot; cellspacing=&quot;0&quot;&gt;
  &lt;thead class=&quot;hed&quot;&gt;
    &lt;tr&gt;
      &lt;th&gt;Book&lt;/th&gt;
      &lt;th&gt;Kindle Format&lt;/th&gt;
      &lt;th&gt;Book Price&lt;/th&gt;
      &lt;th&gt;Kindle Price&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/013149693X?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=013149693X&quot;&gt;Essentials of Accounting (9th Edition)&lt;/a&gt; by Robert N. Anthony and Leslie K. Breitner&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0071425462?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0071425462&quot;&gt;The McGraw-Hill 36-Hour Course in Finance&lt;/a&gt; by Robert A. Cooke&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0471478679?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0471478679&quot;&gt;How to Read a Financial Report&lt;/a&gt; by John A. Tracy&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$13.57&lt;/td&gt;
      &lt;td&gt;$9.99&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0970601921?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0970601921&quot;&gt;Turning Numbers Into Knowledge&lt;/a&gt; by Jonathan Koomey&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0970601999?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0970601999&quot;&gt;Show Me The Numbers&lt;/a&gt; by Stephen Few&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0131873709?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0131873709&quot;&gt;Marketing Metrics&lt;/a&gt; by Paul W. Farris, Neil T. Bendle, Phillip E. Pfeifer, and David J. Reibstein&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$26.39&lt;/td&gt;
      &lt;td&gt;$17.59&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0470130652?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0470130652&quot;&gt;Web Analytics: An Hour a Day&lt;/a&gt; by Avinash Kaushik&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0385491743?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0385491743&quot;&gt;The 80/20 Principle&lt;/a&gt; by Richard Koch&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$10.85&lt;/td&gt;
      &lt;td&gt;$9.99&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0393310728?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0393310728&quot;&gt;How to Lie with Statistics&lt;/a&gt; by Darrell Huff&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;




&lt;h3&gt;Personal Finance&lt;/h3&gt;


&lt;table class=&quot;stats&quot; cellspacing=&quot;0&quot;&gt;
  &lt;thead class=&quot;hed&quot;&gt;
    &lt;tr&gt;
      &lt;th&gt;Book&lt;/th&gt;
      &lt;th&gt;Kindle Format&lt;/th&gt;
      &lt;th&gt;Book Price&lt;/th&gt;
      &lt;th&gt;Kindle Price&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0140286780?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0140286780&quot;&gt;Your Money or Your Life&lt;/a&gt; by Joel Dominguez &amp; Vicki Robin&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$9.75&lt;/td&gt;
      &lt;td&gt;$9.75&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0671015206?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0671015206&quot;&gt;The Millionaire Next Door&lt;/a&gt; by Thomas Stanley &amp; William Danko&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0446693871?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0446693871&quot;&gt;The Lazy Person's Guide&lt;/a&gt; to Investing by Paul Farrell&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$10.17&lt;/td&gt;
      &lt;td&gt;$9.99&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0470067365?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0470067365&quot;&gt;The Boglehead's Guide to Investing&lt;/a&gt; by Taylor Larimore et al&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$12.89&lt;/td&gt;
      &lt;td&gt;$9.99&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/1413307051?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1413307051&quot;&gt;Work Less, Live More&lt;/a&gt; by Bob Clyatt&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$12.23&lt;/td&gt;
      &lt;td&gt;$9.78&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0061234060?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0061234060&quot;&gt;It's Not About The Money&lt;/a&gt; by Brent Kessel&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$16.47&lt;/td&gt;
      &lt;td&gt;$9.99&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;




&lt;h3&gt;SUPPLEMENT: Business History&lt;/h3&gt;


&lt;table class=&quot;stats&quot; cellspacing=&quot;0&quot;&gt;
  &lt;thead class=&quot;hed&quot;&gt;
    &lt;tr&gt;
      &lt;th&gt;Book&lt;/th&gt;
      &lt;th&gt;Kindle Format&lt;/th&gt;
      &lt;th&gt;Book Price&lt;/th&gt;
      &lt;th&gt;Kindle Price&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0471216526?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0471216526&quot;&gt;Money and Power: The History of Business&lt;/a&gt; by Howard Means&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$21.15&lt;/td&gt;
      &lt;td&gt;$19.04&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/1578512212?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1578512212&quot;&gt;Brand New&lt;/a&gt; by Nancy F. Koehn&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/1590597141?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1590597141&quot;&gt;Founders at Work&lt;/a&gt; by Jessica Livingston&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$17.15&lt;/td&gt;
      &lt;td&gt;$11.01&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/1419596063?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1419596063&quot;&gt;Citizen Marketers&lt;/a&gt; by Ben McConnell &amp; Jackie Huba&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$16.50&lt;/td&gt;
      &lt;td&gt;$14.85&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0471165123?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0471165123&quot;&gt;The Book of Business Wisdom&lt;/a&gt; by Peter Krass&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0471294551?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0471294551&quot;&gt;The Book of Leadership Wisdom&lt;/a&gt; by Peter Krass&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$34.16&lt;/td&gt;
      &lt;td&gt;$30.74&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0471354872?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0471354872&quot;&gt;The Book of Management Wisdom&lt;/a&gt; by Peter Krass&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0471345091?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0471345091&quot;&gt;The Book of Entrepreneurs' Wisdom&lt;/a&gt; by Peter Krass&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;




&lt;h3&gt;SUPPLEMENT: Business Reference&lt;/h3&gt;


&lt;table class=&quot;stats&quot; cellspacing=&quot;0&quot;&gt;
  &lt;thead class=&quot;hed&quot;&gt;
    &lt;tr&gt;
      &lt;th&gt;Book&lt;/th&gt;
      &lt;th&gt;Kindle Format&lt;/th&gt;
      &lt;th&gt;Book Price&lt;/th&gt;
      &lt;th&gt;Kindle Price&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0465008305?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0465008305&quot;&gt;Business: The Ultimate Resource from Basic Books&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/1593376847?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1593376847&quot;&gt;The Streetwise Small Business Book of Lists&lt;/a&gt; edited by Gene Marks&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0028642686?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0028642686&quot;&gt;Every Manager's Desk Reference&lt;/a&gt; from Alpha Books&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0071413774?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0071413774&quot;&gt;Finance for the Non-Financial Manager&lt;/a&gt; by Gene Siciliano&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$10.85&lt;/td&gt;
      &lt;td&gt;$9.99&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0805078045?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0805078045&quot;&gt;The Copywriter's Handbook&lt;/a&gt; by Robert Bly&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$12.24&lt;/td&gt;
      &lt;td&gt;$9.99&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0486637603?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0486637603&quot;&gt;Principles of Statistics&lt;/a&gt; by M.G. Bulmer&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0195179579?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0195179579&quot;&gt;Law 101&lt;/a&gt; by Jay M. Feinman&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;$18.48&lt;/td&gt;
      &lt;td&gt;$15.40&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/097485185X?ie=UTF8&amp;tag=jotwa-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=097485185X&quot;&gt;2008 Business Reference Guide&lt;/a&gt; by Tom West&lt;/td&gt;
      &lt;td&gt;X&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;




&lt;h3&gt;What are you thoughts?&lt;/h3&gt;

</content>
 </entry>
 
 <entry>
   <title>Amazon Kindle 2 and The Personal MBA</title>
   <link href="/2009/03/03/amazon-kindle-2-and-the-personal-mba/"/>
   <updated>2009-03-03T00:00:00-08:00</updated>
   <id>/2009/03/03/amazon-kindle-2-and-the-personal-mba</id>
   <content type="html">&lt;p&gt;First of all, let's get the disclaimer out. I am in not saying in any way shape or form that &lt;a href=&quot;http://personalmba.com/&quot;&gt;The Personal MBA&lt;/a&gt; is a replacement for an accredited MBA University program. Ok. Now with that out of the way, I pre-ordered the&lt;a href=&quot;http://www.amazon.com/Kindle-Amazons-Wireless-Reading-Generation/dp/B00154JDAI/ref=amb_link_83624371_1?pf_rd_m=ATVPDKIKX0DER&amp;amp;pf_rd_s=center-1&amp;amp;pf_rd_r=072G0X2N0792H3S10H2T&amp;amp;pf_rd_t=101&amp;amp;pf_rd_p=469942651&amp;amp;pf_rd_i=507846&quot;&gt; Amazon Kindle 2&lt;/a&gt; shortly after it was announced on February 9th. I did receive it on February 24th and was able to queue up books to be delivered on first activation of the Kindle. I'm not going to review the Kindle 2 itself. For that you can read &lt;a href=&quot;http://www.engadget.com/2009/02/26/amazon-kindle-2-review/&quot;&gt;Engadget's review&lt;/a&gt; or &lt;a href=&quot;http://gizmodo.com/5159749/gizmodos-amazon-kindle-2-review-matrix&quot;&gt;Gizmodo's review&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;The Personal MBA&lt;/h3&gt;


&lt;p&gt;The Personal MBA has a list of&lt;a href=&quot;http://personalmba.com/best-business-books/&quot;&gt; 77 recommended books&lt;/a&gt;. And that's what I am going to go through. As a freelancer and entrepreneur, Business Management is something of extreme value to me. And going to Business School for an MBA right now is not an option. Even so, I am one of those people who like to consistently be learning something new. And with the Personal MBA, I am learning how to better run my Freelance business.&lt;/p&gt;

&lt;h3&gt;A Kindle?&lt;/h3&gt;


&lt;p&gt;I originally wanted to get the Kindle for a few other reasons. These reasons are:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Being &quot;green&quot; or &quot;environmentally friendly&quot;&lt;/li&gt;
    &lt;li&gt;Ability to carry multiple books without the added weight.&lt;/li&gt;
    &lt;li&gt;Taking notes and wireless downloading&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;When researching if the Kindle would be a good fit for the Personal MBA, the main concept was the availability of the 77 Books in Kindle format. After going through the list, I found that 39 of the 77 books are available in Kindle format. Which means that 38 books are &lt;em&gt;not&lt;/em&gt;. That's 1 book over half. 2 if you count that one of the books is &lt;a href=&quot;http://gettingreal.37signals.com/&quot;&gt;37 Signals' Getting Real&lt;/a&gt;, which is available for free reading online.&lt;/p&gt;

&lt;h3&gt;Cost&lt;/h3&gt;


&lt;p&gt;The cost of the Kindle version of the books are not considerably cheaper than the paperback versions. If you are looking at hardcover books though, then it is a pretty penny. While, the cost is a pretty big deal for me as a freelancer, space was more of an issue. I have a fairly small office and having 77 books in addition to Web Design and Development books can get a bit out of control. It is important to remember that the &lt;a href=&quot;http://www.amazon.com/Kindle-Amazons-Wireless-Reading-Generation/dp/B00154JDAI/ref=amb_link_83624371_1?pf_rd_m=ATVPDKIKX0DER&amp;amp;pf_rd_s=center-1&amp;amp;pf_rd_r=072G0X2N0792H3S10H2T&amp;amp;pf_rd_t=101&amp;amp;pf_rd_p=469942651&amp;amp;pf_rd_i=507846&quot;&gt;Kindle&lt;/a&gt; itself costs $359 alone.&lt;/p&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;


&lt;p&gt;Overall, I am very happy to see that a large portion of the Personal MBA's recommended books are available in Kindle format and have found reading on the Kindle to be very comfortable and easy use. I have also managed to convert a few PDF books to Kindle format and will discuss those in a future entry related to using the Kindle 2 as a Web Designer and Developer's research tool.&lt;/p&gt;

&lt;h3&gt;What are your thoughts on the Kindle as a Freelance tool?&lt;/h3&gt;

</content>
 </entry>
 
 <entry>
   <title>Environmentally Friendly Programming</title>
   <link href="/blog/2009/02/23/environmentally-friendly-programming/"/>
   <updated>2009-02-23T00:00:00-08:00</updated>
   <id>/blog/2009/02/23/environmentally-friendly-programming</id>
   <content type="html">&lt;p&gt;[caption id=&quot;attachment_546&quot; align=&quot;alignright&quot; width=&quot;289&quot; caption=&quot;Flickr photo from kimberlyfaye&quot;]&lt;a href=&quot;http://www.flickr.com/photos/kimberlyfaye/2628819393/&quot;&gt;&lt;img class=&quot;size-medium wp-image-546&quot; title=&quot;Reduce, Reuse, Recycle&quot; src=&quot;http://www.johntwang.com/blogturbo.paulstamatiou.com/uploads/2009/02/2628819393_6d7eb82ec4-289x300.jpg&quot; alt=&quot;Flickr photo from kimberlyfaye&quot; width=&quot;289&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;[/caption]&lt;/p&gt;

&lt;p&gt;Environmentally Friendly thinking can apply to Programming. We're not talking about your programming environments here. What we are talking about is using the 3 R's, Reduce, Reuse, and Recycle as part of your Coding Practices. These principles are taught at most schools. At least it was at mine. However, when you start off on your own with no formal education, you can run into some problems. Let's take a look at these basic principles.&lt;/p&gt;

&lt;h2&gt;Reduce&lt;/h2&gt;


&lt;p&gt;Reducing code is fairly simple. Quite frequently used as part of defining &quot;Beautiful Code,&quot; using the least amount of code to accomplish the task at hand. Since that's the case, it's also usually the hardest to accomplish. Minimizing processing time and file loading size. You can do even some small things to reduce your coding efforts. Such as using CMS plugins already written instead of writing your own, or even modifying existing plugins to do your bidding. Here's a very simple C example in reducing lines of code via initialization.
[sourcecode language='c']
void foo() {&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Complex c;
c = (Complex)5;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;void foo_optimized() {&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Complex c = 5;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;}
[/sourcecode]&lt;/p&gt;

&lt;h2&gt;Reuse&lt;/h2&gt;


&lt;p&gt;How do we reuse code? Very simply, we use functions. Instead of copying the same code in various places, functions allow us to reuse the same code again. Similarly, using a global Debug boolean to turn on/off debugging is another way to save some time. Here is a small piece of code not performing reuse.
[sourcecode language='c']
unsigned int random_number1;
unsigned int random_number2;
rand_seed = rand_seed * 1103515245 +12345;
random_number1 = (unsigned int)(rand_seed / 65536) % 32768;
[/sourcecode]
And the same performing reuse.
[sourcecode language='c']
int rand()
{
rand_seed = rand_seed * 1103515245 +12345;
return (unsigned int)(rand_seed / 65536) % 32768;
}
int main() {
random_number1 = rand();
random_number2 = rand();
return 0;
}
[/sourcecode]&lt;/p&gt;

&lt;p&gt;Simple and elegant. This also allows us to make changes to the function and having it take effect in all the places the function is called. Whereas, the opposite, would require us to go and make the changes in all of the places we used the same code.&lt;/p&gt;

&lt;h2&gt;Recycle&lt;/h2&gt;


&lt;p&gt;Recycling code can be fairly easy. Creating code clips/snippets that you frequently use and having them readily accessible is a great way to recycle code. Panic's Coda helps you do this via their &quot;Clips&quot; tool. Another way is to create general use codes such as reset.css, typography.css, etc. A sandbox starter theme for your CMS of choice is yet another way to recycle code. Recycling can cut down on the development time you need to do things significantly.&lt;/p&gt;

&lt;h3&gt;How do you use the 3R's in your programming practices?&lt;/h3&gt;

</content>
 </entry>
 
 <entry>
   <title>6 iPhone Apps and their Mac Desktop Parents</title>
   <link href="/blog/2009/02/12/6-iphone-apps-and-their-mac-desktop-parents/"/>
   <updated>2009-02-12T00:00:00-08:00</updated>
   <id>/blog/2009/02/12/6-iphone-apps-and-their-mac-desktop-parents</id>
   <content type="html">&lt;p&gt;There are way too many Apps on the App Store to go through. It is also harder to find applications that integrate to desktop applications. Here are 6 iPhone Apps that add some value to their Mac Desktop App counterparts.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;size-full wp-image-527 alignleft&quot; title=&quot;evernote&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/02/evernote1.png&quot; alt=&quot;evernote&quot; width=&quot;59&quot; height=&quot;60&quot; /&gt;&lt;a href=&quot;http://www.evernote.com/&quot;&gt;Evernote&lt;/a&gt; - a note capturing application that uses a cloud. Your notes everywhere. The &lt;a href=&quot;http://www.evernote.com/about/download/#a-macwin&quot;&gt;desktop application&lt;/a&gt; allows you to easily take both full and partial screenshots, text notes, and even some OCR. On the &lt;a href=&quot;http://www.evernote.com/about/download/iphone/&quot;&gt;iPhone app&lt;/a&gt;, you can take a photo note using the iPhone camera or manually type out some text notes. Everything syncs up to the cloud and is available to you online at any internet accessible computer, your phones or desktop app.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;size-thumbnail wp-image-528 alignleft&quot; title=&quot;things&quot; src=&quot;http://www.johntwang.com/blogturbo.paulstamatiou.com/uploads/2009/02/things-150x150.png&quot; alt=&quot;things&quot; width=&quot;59&quot; height=&quot;60&quot; /&gt;&lt;a href=&quot;http://culturedcode.com/things/&quot;&gt;Things&lt;/a&gt; - Things is a task management program from CulturedCode. Providing a beautiful and easy to use interface, Things has elements of David Allen's Getting Things Done, but does not force you to use the system. The &lt;a href=&quot;http://culturedcode.com/things/&quot;&gt;Desktop Application&lt;/a&gt; has a quick entry form that is easy and simple to fill out. You can have recurring/scheduled tasks, tags, and even sync with your iCal to-dos. The &lt;a href=&quot;http://culturedcode.com/things/iphone/&quot;&gt;Things iPhone app&lt;/a&gt; has a similar interface to the Desktop App, making it easy to use both. Providing sync capabilities with the Desktop App allows you to add/complete/delete your tasks on either platform and have everything sync up. The iPhone App currently does not allow you to add recurring/scheduled tasks, but the folks over at CulturedCode have been working hard at it.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;size-full wp-image-529 alignleft&quot; title=&quot;omnifocus&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/02/omnifocus1.png&quot; alt=&quot;omnifocus&quot; width=&quot;59&quot; height=&quot;60&quot; /&gt;&lt;a href=&quot;http://www.omnigroup.com/applications/omnifocus/&quot;&gt;Omnifocus&lt;/a&gt; - Omnifocus is another task management application. This one comes from the &lt;a href=&quot;http://www.omnigroup.com&quot;&gt;Omni Group&lt;/a&gt;. Omnifocus is a complete Getting Things Done system. This is not just a to do list of any sort. The Desktop Application very flexible and fast. Omnifocus does expect you to use the GTD system. It is a bit harder to get started if you're not familiar with GTD. Omnifocus is a great application for those using GTD. I've found it to be a little bit too involved and require a bit too many steps. The &lt;a href=&quot;http://www.omnigroup.com/applications/omnifocus/iphone&quot;&gt;iPhone App for Omnifocus&lt;/a&gt; adds Sync supports for tasks, task creation/editing, and organization. One feature that Omnifocus has that Things does not, is Location-Aware. The Omnifocus iPhone App will use the GPS of the iPhone and tell you which tasks you have to complete in the nearby area.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;size-thumbnail wp-image-530 alignleft&quot; title=&quot;1pass&quot; src=&quot;http://www.johntwang.com/blogturbo.paulstamatiou.com/uploads/2009/02/1pass-150x150.png&quot; alt=&quot;1pass&quot; width=&quot;59&quot; height=&quot;60&quot; /&gt;&lt;a href=&quot;http://agilewebsolutions.com/products/1Password&quot;&gt;1Password&lt;/a&gt; - 1Password is a Password Manager from &lt;a href=&quot;http://agilewebsolutions.com/&quot;&gt;Agile Web Solutions&lt;/a&gt;. 1Password does much more than just Password Management. The Desktop App has integration with Safari, Firefox, Flock, Camino, OmniWeb, DEVONagent, Fluid, and NetNewsWire. It can auto-fill usernames/passwords, Credit Card info and Demographic Info such as addresses. 1Password can also significantly shrink your wallet with their Wallet group where you can save information like credit cards, bank accounts, memberships and reward programs, etc. And of course, this all syncs with the free iPhone App. Although, I haven't tried this myself, 1Password on the iPhone also has the ability to auto-login from the app if you tap a saved login.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;size-full wp-image-532 alignleft&quot; title=&quot;keynote&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/02/keynote1.png&quot; alt=&quot;keynote&quot; width=&quot;59&quot; height=&quot;60&quot; /&gt;&lt;a href=&quot;http://www.apple.com/iwork/keynote/#remote&quot;&gt;Keynote Remote&lt;/a&gt; - Keynote Remote is a remote control app for Apple's Keynote 09. It does require you to have Keynote 09. Does not work with Keynote 08. The App costs $0.99 on the App Store. The Keynote Remote lets you use your iPhone or iPod touch to control your presentation from anywhere in the room using Wi-Fi. See your slide with notes or both the current slide and the next slide in the palm of your hand. Just swipe to advance.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;size-full wp-image-531 alignleft&quot; title=&quot;remote&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/02/remote1.png&quot; alt=&quot;remote&quot; width=&quot;53&quot; height=&quot;48&quot; /&gt;&lt;a href=&quot;http://www.apple.com/itunes/remote/&quot;&gt;Apple iTunes Remote&lt;/a&gt; - The iTunes Remote App from Apple allows you to control your iTunes/AppleTV/AirTunes library from your iPhone. You can edit playlists, search, and of course play, pause and volume control. It does require iTunes 8.0 and iTunes to be actively running. Also does work with the Windows version of iTunes 8.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>How To: Add an external link image via CSS</title>
   <link href="/blog/2009/01/30/how-to-add-an-external-link-image-via-css/"/>
   <updated>2009-01-30T00:00:00-08:00</updated>
   <id>/blog/2009/01/30/how-to-add-an-external-link-image-via-css</id>
   <content type="html">&lt;p&gt;Pop up links suck. The twitterverse also responded when asked: &lt;a href=&quot;http://www.johntwang.com/blog/2009/01/22/should-links-open-in-a-new-window-twitter-web-designers-voice-in/&quot;&gt;Should Links Open in a New Window? Twitter Web Designers Voice In&lt;/a&gt;. But sometimes you need to use them. Sometimes you are required by your clients to use them. Or sometimes it is best to use them. It would be nice to at least let the person know that clicking on the link will open a new window/tab. Here's an easy way to add a little image to the external links using CSS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The CSS&lt;/strong&gt;
[sourcecode language='css']
a[rel=&quot;external&quot;], a.external {
white-space: nowrap;
padding-right: 15px;
background: url(/images/external.gif) no-repeat 100% 50%;
zoom: 1;
}
[/sourcecode]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The HTML&lt;/strong&gt;
To use the CSS, you would add the rel=&amp;quot;external&amp;quot; to your html link like so:
[sourcecode language='html']
&lt;a href=&quot;http://www.google.com&quot; rel=&quot;external&quot; target=&quot;_blank&quot;&gt;External link&lt;/a&gt;
[/sourcecode]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Result&lt;/strong&gt;
Here's what the final result looks like after using the CSS and HTML. &lt;em&gt;(This is an image! Not a real link.)&lt;/em&gt;
&lt;a href=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/01/ext-link-example1.png&quot;&gt;&lt;img src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/01/ext-link-example1.png&quot; alt=&quot;External Link CSS Example&quot; title=&quot;External Link CSS Example&quot; width=&quot;104&quot; height=&quot;28&quot; class=&quot;alignnone size-full wp-image-520&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Do you do this differently? Have a better solution? Please feel free share thoughts, feedback and comments.&lt;/h3&gt;

</content>
 </entry>
 
 <entry>
   <title>Should Links Open in a New Window? Twitter Web Designers Voice In</title>
   <link href="/blog/2009/01/22/should-links-open-in-a-new-window-twitter-web-designers-voice-in/"/>
   <updated>2009-01-22T00:00:00-08:00</updated>
   <id>/blog/2009/01/22/should-links-open-in-a-new-window-twitter-web-designers-voice-in</id>
   <content type="html">&lt;p&gt;Yesterday I asked the Twitterverse the question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;?php get_quotes(&quot;1137228323&quot;) ?&gt;
&lt;/blockquote&gt;


&lt;p&gt;Here are their responses:&lt;/p&gt;

&lt;!--more--&gt;


&lt;blockquote&gt;
&lt;?php get_quotes(&quot;1137232876,1137234516,1137235495,1137374258,1137399206&quot;) ?&gt;
&lt;/blockquote&gt;




&lt;h3&gt;Further Reading:&lt;/h3&gt;


&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.davidairey.com/should-links-open-in-a-new-window/&quot;&gt;Should links open in a new window? | David Airey&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.problogger.net/archives/2007/06/26/should-links-open-in-a-new-window/&quot;&gt;Should Links Open in a New Window? | ProBlogger&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.smashingmagazine.com/2008/07/01/should-links-open-in-new-windows/&quot;&gt;Should Links Open In New Windows? | Smashing Magazine&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.sitepoint.com/article/beware-opening-links-new-window/&quot;&gt;Beware of Opening Links in a New Window | SitePoint&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.alistapart.com/articles/popuplinks&quot;&gt;Accessible Pop-up Links | A List Apart&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Readers Voice Your Thoughts! &lt;code&gt;target = _blank&lt;/code&gt; friend or foe?&lt;/h3&gt;

</content>
 </entry>
 
 <entry>
   <title>Disqus Custom Author CSS WordPress Hack</title>
   <link href="/blog/2009/01/21/disqus-custom-author-css-wordpress-hack/"/>
   <updated>2009-01-21T00:00:00-08:00</updated>
   <id>/blog/2009/01/21/disqus-custom-author-css-wordpress-hack</id>
   <content type="html">&lt;p&gt;&lt;img src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/01/wordpress-disqus1.jpg&quot; alt=&quot;wordpress-disqus&quot; title=&quot;wordpress-disqus&quot; width=&quot;499&quot; height=&quot;113&quot; class=&quot;aligncenter size-full wp-image-481&quot; /&gt;
Custom CSS Styling for Post Authors are really nice. It's a great way to differentiate the author's comments from other readers' comments, in addition to threaded comments. The problem with the threaded comments, is that other readers may also write response comments which should be threaded to maintain conversational aspect. So styling helps much more.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.disqus.com&quot;&gt;Disqus&lt;/a&gt; is a wonderful commenting system. I was introduced to it by reading &lt;a href=&quot;http://www.louisgray.com/live/labels/disqus.html&quot;&gt;Louis Gray's blog&lt;/a&gt; from &lt;a href=&quot;http://friendfeed.com/louisgray&quot;&gt;FriendFeed&lt;/a&gt;. Since using Disqus, I have found it to be a very great network. Disqus provides many features including:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Threaded comments and comment ratings&lt;/li&gt;
    &lt;li&gt;moderation and admin tools&lt;/li&gt;
    &lt;li&gt;spam filters&lt;/li&gt;
&lt;/ul&gt;


&lt;!--more--&gt;


&lt;p&gt;There are tons of &lt;a href=&quot;http://www.wordpress.org&quot;&gt;WordPress&lt;/a&gt; comment hacks to do custom CSS styling for Author's comments. I have listed some at the bottom of the post. There's even plug-ins that will style author comments. Unfortunately, &lt;a href=&quot;http://www.disqus.com&quot;&gt;Disqus&lt;/a&gt; does not offer up any solution to this. And after posting on the &lt;a href=&quot;http://disqus.disqus.com/&quot;&gt;Disqus forums&lt;/a&gt;, I got no response for this feature. But, Disqus does offer some &lt;a href=&quot;http://disqus.com/docs/css/&quot;&gt;Custom CSS&lt;/a&gt; for comments.&lt;/p&gt;

&lt;h3&gt;Out of the Box&lt;/h3&gt;


&lt;p&gt;Disqus actually does give us quite a bit of customization options. We are able to customize:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;The box where a post is typed into&lt;/li&gt;
    &lt;li&gt;The form elements (Name, Email, Website).&lt;/li&gt;
    &lt;li&gt;The submit button &quot;Post&quot;.&lt;/li&gt;
    &lt;li&gt;The main wrapper for the comment system.&lt;/li&gt;
    &lt;li&gt;&quot;Add New Comment&quot; and &quot;# Comments&quot; are enclosed in &amp;lt;h3&amp;gt; tags.&lt;/li&gt;
    &lt;li&gt;The toggle button for the thread options.&lt;/li&gt;
    &lt;li&gt;The links within the thread Options&lt;/li&gt;
    &lt;li&gt;The entire comment thread list.&lt;/li&gt;
    &lt;li&gt;A single comment in the thread.&lt;/li&gt;
    &lt;li&gt;The comment rating arrows for posts.&lt;/li&gt;
    &lt;li&gt;The header at the top of comment posts.&lt;/li&gt;
    &lt;li&gt;The avatar image for the registered user.&lt;/li&gt;
    &lt;li&gt;This is the meta information about the post (time stamp and points).&lt;/li&gt;
    &lt;li&gt;The message body of a single comment post.&lt;/li&gt;
    &lt;li&gt;The footer contains the link to &quot;reply.&quot;&lt;/li&gt;
    &lt;li&gt;This contains and determines the style for the pagination links.&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;The Problem&lt;/h4&gt;


&lt;p&gt;As you can see, this is a lot of customizing power. Unfortunately, none of them is related to the &lt;em&gt;blog post's author&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;The Solution: Hack the Planet!&lt;/h3&gt;


&lt;p&gt;We are going to modify the &lt;a href=&quot;http://wordpress.org/extend/plugins/disqus-comment-system/&quot;&gt;official Disqus WordPress Plug-in&lt;/a&gt;. The files being modified are: &lt;em&gt;comments.php&lt;/em&gt; and &lt;em&gt;disqus.php&lt;/em&gt; &lt;strong&gt;Note:&lt;/strong&gt; We are also making the assumption that authors will use the same e-mail address to write posts and comments. This is generally true for most users.&lt;/p&gt;

&lt;h4&gt;Identifying the Post Author&lt;/h4&gt;


&lt;p&gt;First we need to find the post's author. We could just hardcode the email address, but this does not help multi-author websites. To find the author's email address we need to go into &lt;em&gt;diqus.php&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Inside &lt;em&gt;disqus.php&lt;/em&gt; there is a function called: &lt;em&gt;dsq_comments_template&lt;/em&gt;
Here we are going to add a global variable called &lt;em&gt;$author_email&lt;/em&gt; and set it to &lt;em&gt;$author_email = get_the_author_email();
&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here's the full function code:
[sourcecode language='php']function dsq_comments_template($value) {
global $dsq_response;
global $dsq_sort;
global $dsq_api;
global $post;
global $author_email; // Added by John Wang&lt;/p&gt;

&lt;p&gt;if ( ! (is_single() || is_page() || $withcomments) ) {
return;
}&lt;/p&gt;

&lt;p&gt;if ( !dsq_can_replace() ) {
return $value;
}&lt;/p&gt;

&lt;p&gt;if ( dsq_legacy_mode() ) {
return dirname(&lt;strong&gt;FILE&lt;/strong&gt;) . '/comments-legacy.php';
}&lt;/p&gt;

&lt;p&gt;$author_email = get_the_author_email(); // Added by John Wang&lt;/p&gt;

&lt;p&gt;$permalink = get_permalink();
$title = get_the_title();
$excerpt = get_the_excerpt();&lt;/p&gt;

&lt;p&gt;$dsq_sort = get_option('disqus_sort');
if ( is_numeric($&lt;em&gt;COOKIE['disqus_sort']) ) {
$dsq_sort = $&lt;/em&gt;COOKIE['disqus_sort'];
}
if ( is_numeric($&lt;em&gt;GET['dsq_sort']) ) {
setcookie('disqus_sort', $&lt;/em&gt;GET['dsq_sort']);
$dsq_sort = $_GET['dsq_sort'];
}&lt;/p&gt;

&lt;p&gt;// Call &quot;get_thread&quot; API method.
$dsq_response = $dsq_api-&gt;get_thread($post, $permalink, $title, $excerpt);
if( $dsq_response &amp;lt; 0 ) {
return false;
}
// Sync comments with database.
dsq_sync_comments($post, $dsq_response['posts']);&lt;/p&gt;

&lt;p&gt;// TODO: If a disqus-comments.php is found in the current template's
// path, use that instead of the default bundled comments.php
//return TEMPLATEPATH . '/disqus-comments.php';&lt;/p&gt;

&lt;p&gt;return dirname(&lt;strong&gt;FILE&lt;/strong&gt;) . '/comments.php';&lt;/p&gt;

&lt;p&gt;}[/sourcecode]&lt;/p&gt;

&lt;h4&gt;Identifying the Author's Comments&lt;/h4&gt;


&lt;p&gt;Now we know the blog post's author. Off to &lt;em&gt;comments.php&lt;/em&gt;
Inside of &lt;em&gt;comments.php&lt;/em&gt;, the first thing we need to do is add &lt;em&gt;$author_email&lt;/em&gt; to the list of globals.&lt;/p&gt;

&lt;p&gt;[sourcecode language='php']&amp;lt;?php echo(&quot;&amp;lt;?php&quot; ); ?&gt;
global $dsq_response, $dsq_sort,$author_email; // Added author_email variable!
$site_url = get_option('siteurl');
?&gt;
[/sourcecode]&lt;/p&gt;

&lt;p&gt;Once that's done, we need to find the comments and figure out if any of the comments were written by the &lt;em&gt;post author&lt;/em&gt;. To do this, we'll be using the Disqus array &lt;em&gt;$comment['user']['email']&lt;/em&gt;. This gives us the current comment's author's email address. We'll be comparing that to our global variable &lt;em&gt;$author_email&lt;/em&gt;. On line 131 of &lt;em&gt;comments.php&lt;/em&gt; we add the PHP if condition: &lt;em&gt;if ($comment['user']['email'] == $author_email ).&lt;/em&gt;The complete line now looks like this:&lt;/p&gt;

&lt;p&gt;[sourcecode language='php']&lt;div class=&quot;dsq-comment-body &lt;?php echo(&quot;&lt;?php&quot; ); ?&gt; if ($comment['user']['email'] == $author_email ) echo (&quot;-author&quot;&quot;)?&gt; &quot;&gt;[/sourcecode]&lt;/p&gt;

&lt;p&gt;The same change can be made for the class &lt;em&gt;dsq-comment-header&lt;/em&gt; on line 82, &lt;em&gt;dsq-header-avatar&lt;/em&gt; on line 83, and &lt;em&gt;dsq-comment-footer&lt;/em&gt; on line 154.&lt;/p&gt;

&lt;h3&gt;It's Styling Time!&lt;/h3&gt;


&lt;h4&gt;Styling author's comments&lt;/h4&gt;


&lt;p&gt;Here's the easy part. All you need to do now is add the CSS code to &lt;em&gt;your&lt;/em&gt; WordPress Theme for the appropriate classes. For example. This would change the background color for the author's comment.&lt;/p&gt;

&lt;p&gt;[sourcecode language='css']
/&lt;em&gt;    Disqus CSS for Author Comments. Margin and Padding is set to be the same as other comments    &lt;/em&gt;/&lt;/p&gt;

&lt;h1&gt;dsq-content #dsq-comments .dsq-comment-body-author {&lt;/h1&gt;

&lt;pre&gt;&lt;code&gt;margin-left: 20px;
padding-top: 5px;
background: #e2fddc;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;[/sourcecode]&lt;/p&gt;

&lt;h4&gt;The Results&lt;/h4&gt;


&lt;p&gt;Here's what an author's comment would look like now with a reader's comment.
&lt;img src='http://www.johntwang.com/blog/wp-content/gallery/disqus/untitled.png' alt='Disqus' class='ngg-singlepic ngg-none' /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href='http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/01/disqus-comment-system1.zip'&gt;Download the complete modified plug-in.&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Further Reading:&lt;/h3&gt;


&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http://nettuts.com/working-with-cmss/weekend-tip-author-comment-styling-in-wordpress/&quot;&gt;Weekend Tip: Author Comment Styling In WordPress - NETTUTS&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://5thirtyone.com/archives/774&quot;&gt;How-to style WordPress author comments - Derek Punsalan - 5ThirtyOne&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.spoonfeddesign.com/wordpress-how-to-styling-author-comments&quot;&gt;WordPress How-To: Styling Author Comments | Spoonfed Design&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.disqus.com/docs/css/&quot;&gt;DISQUS | Custom CSS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Do you style your author's comments? Do you use something other than Disqus? Any feedback?&lt;/h3&gt;




&lt;h3&gt;Update from Disqus.com&lt;/h3&gt;


&lt;blockquote&gt;
&lt;?php get_quotes(&quot;1138088841,1138091278&quot;) ?&gt;
&lt;/blockquote&gt;

</content>
 </entry>
 
 <entry>
   <title>Recap: Design Community Twitter Hours 1/15/09</title>
   <link href="/blog/2009/01/16/recap-design-community-twitter-hours-11509/"/>
   <updated>2009-01-16T00:00:00-08:00</updated>
   <id>/blog/2009/01/16/recap-design-community-twitter-hours-11509</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://ceaweed.com/ramble/&quot;&gt;
Chad Engle&lt;/a&gt; (&lt;a href=&quot;http://twitter.com/ChadEngle&quot;&gt;@ChadEngle&lt;/a&gt;) hosts &lt;a href=&quot;http://ceaweed.com/ramble/2008/12/design-community-twitter-hours/&quot;&gt;Design Community Twitter Hours&lt;/a&gt; every Thursday 6-8PM EST. To join in, just use #DCTH and others will respond to questions. Chad will also respond via &lt;a href=&quot;http://twitter.com/DCTH&quot;&gt;@DCTH&lt;/a&gt;. You can follow the live tweets via &lt;a href=&quot;http://search.twitter.com/search?q=DCTH&quot;&gt;search.twitter.com&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Yesterday's Topics Discussed:&lt;/h3&gt;


&lt;ul&gt;
    &lt;li&gt;The best file format for a illustration being used in a book to be posted online&lt;/li&gt;
    &lt;li&gt;Tips on how to start freelancing&lt;/li&gt;
    &lt;li&gt;How to best follow live updates of DCTH&lt;/li&gt;
    &lt;li&gt;Adobe InDesign vs QuarksXPress&lt;/li&gt;
    &lt;li&gt;Design books recommendations&lt;/li&gt;
    &lt;li&gt;PHP SQL Injection protection&lt;/li&gt;
    &lt;li&gt;Time restrictions on clients. Dealing with difficult clients.&lt;/li&gt;
    &lt;li&gt;What a corporate blog should look like? Similarities to the website?&lt;/li&gt;
    &lt;li&gt;Suggestions for a &quot;cutesy&quot; font&lt;/li&gt;
    &lt;li&gt;Steve Jobs' illness&lt;/li&gt;
    &lt;li&gt;Whether or not to back up your clients data/websites&lt;/li&gt;
    &lt;li&gt;What can make DCTH better&lt;/li&gt;
    &lt;li&gt;What app do you code in?&lt;/li&gt;
    &lt;li&gt;know of a good video podcast for CS4?&lt;/li&gt;
    &lt;li&gt;What is your favorite font currently?&lt;/li&gt;
    &lt;li&gt;Web standard resolution? 800x600?&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;The actual tweets:&lt;/h3&gt;


&lt;p&gt;&amp;lt;?php quote_search(&quot;DCTH&quot;,&quot;2009-01-15&quot;,&quot;2009-01-16&quot;) ?&gt;&lt;/p&gt;

&lt;h3&gt;Share your thoughts and comments on DCTH.&lt;/h3&gt;

</content>
 </entry>
 
 <entry>
   <title>Upcoming Books Release List</title>
   <link href="/2009/01/15/upcoming-books-release-list/"/>
   <updated>2009-01-15T00:00:00-08:00</updated>
   <id>/2009/01/15/upcoming-books-release-list</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://freelancefolder.com&quot;&gt;Freelance Folder&lt;/a&gt; just released their ebook &lt;a href=&quot;http://freelancefolder.com/the-unlimited-freelancer-is-on-sale-now/&quot;&gt;The Unlimited Freelancer&lt;/a&gt; and &lt;a href=&quot;http://www.envato.com&quot;&gt;Envato's&lt;/a&gt; Collis Ta'eed just released &lt;a href=&quot;http://rockablepress.com/books/rockstar-wordpress-designer/&quot;&gt;How to be a Rockstar WordPress Designer&lt;/a&gt;. And since I just finished reading Miles Burke's &lt;a href=&quot;http://www.principlesofsuccessfulfreelancing.com/&quot;&gt;The Principles of Successful Freelancing&lt;/a&gt;, it seemed like a good time to see what else is coming down to a bookstore near you. Here are some of the books I'm looking forward to their release this year.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/01/ruby31.jpg&quot; alt=&quot;ruby3&quot; title=&quot;ruby3&quot; width=&quot;190&quot; height=&quot;228&quot; class=&quot;alignnone size-full wp-image-384&quot; /&gt;
&lt;a href=&quot;http://www.pragprog.com/titles/ruby3/programming-ruby-1-9&quot;&gt;Programming Ruby 1.9: The Pragmatic Programmers' Guide by Dave Thomas, with Chad Fowler and Andy Hunt&lt;/a&gt;
&lt;em&gt;Available March 2009&lt;/em&gt;
This is the Pickaxe book, named for the tool on the cover. The original PickAxe was the first English-language book on Ruby. Each edition of the book tracks the latest Ruby release, and each is the definitive reference to Ruby. This time we've broken with tradition. This isn't a third edition. It's technically a separate book. That's because it reflects all the new features of Ruby 1.9, and we want both it and the second edition (which covers 1.8) to be available at the same time.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/01/rails31.jpg&quot; alt=&quot;rails3&quot; title=&quot;rails3&quot; width=&quot;190&quot; height=&quot;228&quot; class=&quot;alignnone size-full wp-image-385&quot; /&gt;
&lt;a href=&quot;http://www.pragprog.com/titles/rails3/agile-web-development-with-rails-third-edition&quot;&gt;Agile Web Development with Rails, Third Edition by Sam Ruby, Dave Thomas, David Heinemeier Hansson&lt;/a&gt;
&lt;em&gt;Available March 2009&lt;/em&gt;
The Third Edition of the Jolt Award winning book that shows you a new approach to web development, updated for Rails 2. Sam Ruby joins the team to add his world-class knowledge of web application development, making this the most up-to-date and authoritative Rails book out there.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/01/amiphd1.jpg&quot; alt=&quot;amiphd&quot; title=&quot;amiphd&quot; width=&quot;190&quot; height=&quot;228&quot; class=&quot;alignnone size-full wp-image-386&quot; /&gt;
&lt;a href=&quot;http://www.amazon.com/exec/obidos/tg/detail/-/1934356255/ref=ord_cart_shr?_encoding=UTF8&amp;m=ATVPDKIKX0DER&amp;v=glance&quot;&gt;iPhone SDK Development  by Bill Dudney, Chris Adamson, and Marcel Molina&lt;/a&gt;
&lt;em&gt;Available April 2009&lt;/em&gt;
Jump into application development for today's most remarkable mobile communications platform, the Pragmatic way, with iPhone SDK Development. This Pragmatic guide takes you through the tools and APIs, the same ones Apple uses for its applications, that you can use to create your own software for the iPhone and iPod touch. Packed with useful examples, this book will give you both the big-picture concepts and the everyday &lt;em&gt;gotcha&lt;/em&gt; details that developers need to make the most of the beauty and power of the iPhone OS platform.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/01/bookcover1.gif&quot; alt=&quot;bookcover&quot; title=&quot;bookcover&quot; width=&quot;225&quot; height=&quot;281&quot; class=&quot;alignnone size-full wp-image-388&quot; /&gt;
&lt;a href=&quot;http://www.boagworld.com/websiteownersmanual/&quot;&gt;Website Owner's Manual by Paul Boag&lt;/a&gt; of Boagworld.
&lt;em&gt;Available March 2009&lt;/em&gt;
Website Owner's Manual helps you form a vision for your site, guides you through the process of selecting a web design agency, and gives you enough background information to make intelligent decisions throughout the development process. This book provides a jargon-free overview of web design, including accessibility, usability, online marketing, and web development techniques. You'll gain a practical understanding of the technologies, processes, and ideas that drive a successful site.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/01/bhgwad1.jpg&quot; alt=&quot;bhgwad&quot; title=&quot;bhgwad&quot; width=&quot;190&quot; height=&quot;228&quot; class=&quot;alignnone size-full wp-image-387&quot; /&gt;
&lt;a href=&quot;http://www.pragprog.com/titles/bhgwad/web-design-for-developers&quot;&gt;Web Design for Developers: A Programmer's Guide to Design Tools and Techniques by Brian Hogan&lt;/a&gt;
&lt;em&gt;Available May 2009&lt;/em&gt;
Web Design for Developers will show you how to make your web-based application look professionally designed. We'll help you learn how to pick the right colors and fonts, avoid costly interface and accessibility mistakes your application will really come alive. We'll also walk you through some common Photoshop and CSS techniques and work through a web site redesign, taking a new design from concept all the way to implementation.&lt;/p&gt;

&lt;h3&gt;What's on your to read list? Any suggestions for our readers on upcoming books to read?&lt;/h3&gt;

</content>
 </entry>
 
 <entry>
   <title>How to Add DesignBump, Vot.eti.me, and FriendFeed to WordPress plugin Sociable</title>
   <link href="/blog/2009/01/14/how-to-add-designbump-votetime-and-friendfeed-to-wordpress-plugin-sociable/"/>
   <updated>2009-01-14T00:00:00-08:00</updated>
   <id>/blog/2009/01/14/how-to-add-designbump-votetime-and-friendfeed-to-wordpress-plugin-sociable</id>
   <content type="html">&lt;p&gt;&lt;img src=&quot;http://www.johntwang.com/blogturbo.paulstamatiou.com/uploads/2009/01/wplogo-stacked-rgb-300x186.png&quot; alt=&quot;wplogo-stacked-rgb&quot; title=&quot;wplogo-stacked-rgb&quot; width=&quot;300&quot; height=&quot;186&quot; class=&quot;aligncenter size-medium wp-image-366&quot; /&gt;
Since I tend to write mostly about web design and development, sometimes people like to &quot;bump&quot; or &quot;vote&quot; for articles. &lt;a href=&quot;http://yoast.com/wordpress/sociable/&quot;&gt;Sociable&lt;/a&gt; currently only has the &lt;a href=&quot;http://www.dzone.com/&quot;&gt;DZone&lt;/a&gt; and &lt;a href=&quot;http://www.designfloat.com&quot;&gt;DesignFloat&lt;/a&gt; links by default. So here's how you can add &lt;a href=&quot;http://www.designbump.com&quot;&gt;DesignBump&lt;/a&gt;, &lt;a href=&quot;http://vot.eti.me&quot;&gt;Vot.eti.me&lt;/a&gt;, and &lt;a href=&quot;http://www.friendfeed.com&quot;&gt;FriendFeed&lt;/a&gt; links and icons to Sociable.&lt;/p&gt;

&lt;h3&gt;DesignBump&lt;/h3&gt;


&lt;ol&gt;
    &lt;li&gt;Save the icon: &lt;img class=&quot;alignnone size-full wp-image-337&quot; title=&quot;design bump&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/01/designbump1.png&quot; alt=&quot;design bump&quot; /&gt; and copy it to &lt;code&gt;sociable/images/&lt;/code&gt;directory.&lt;/li&gt;
    &lt;li&gt;Open &lt;code&gt;sociable.php&lt;/code&gt;.&lt;/li&gt;
    &lt;li&gt;Find the array called &lt;code&gt;$sociable_known_sites&lt;/code&gt;.&lt;/li&gt;
    &lt;li&gt;Copy / paste the code below
[sourcecode language='php'] 'Design Bump' =&gt; Array(
'favicon' =&gt; 'designbump.png',
'url' =&gt; 'http://designbump.com/node/add/drigg?url=PERMALINK&amp;amp;amp;title=TITLE',
),[/sourcecode]&lt;/li&gt;
    &lt;li&gt;Save the file.&lt;/li&gt;
&lt;/ol&gt;


&lt;h3&gt;Vot.eti.me&lt;/h3&gt;


&lt;ol&gt;
    &lt;li&gt;Save the icon: &lt;img class=&quot;alignnone size-full wp-image-338&quot; title=&quot;votetime&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/01/votetime1.gif&quot; alt=&quot;votetime&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt; and copy it to &lt;code&gt;sociable/images/&lt;/code&gt;directory.&lt;/li&gt;
    &lt;li&gt;Open &lt;code&gt;sociable.php&lt;/code&gt;.&lt;/li&gt;
    &lt;li&gt;Find the array called &lt;code&gt;$sociable_known_sites&lt;/code&gt;.&lt;/li&gt;
    &lt;li&gt;Copy / paste the code below:
[sourcecode language='php'] 'Votetime' =&gt; Array(
'favicon' =&gt; 'votetime.gif',
'url' =&gt; 'http://vot.eti.me/login.php?return=/submit.php?url=PERMALINK&amp;amp;amp;title=TITLE',
), [/sourcecode]&lt;/li&gt;
    &lt;li&gt;Save the file.&lt;/li&gt;
&lt;/ol&gt;


&lt;h3&gt;FriendFeed&lt;/h3&gt;


&lt;ol&gt;
    &lt;li&gt;Save the icon: &lt;img class=&quot;alignnone size-full wp-image-338&quot; title=&quot;votetime&quot; src=&quot;http://www.johntwang.com/blogturbo.paulstamatiou.com/uploads/2009/01/friendfeed.png&quot; alt=&quot;friendfeed&quot; width=&quot;16&quot; height=&quot;16&quot; /&gt; and copy it to &lt;code&gt;sociable/images/&lt;/code&gt;directory.&lt;/li&gt;
    &lt;li&gt;Open &lt;code&gt;sociable.php&lt;/code&gt;.&lt;/li&gt;
    &lt;li&gt;Find the array called &lt;code&gt;$sociable_known_sites&lt;/code&gt;.&lt;/li&gt;
    &lt;li&gt;Copy / paste the code below:
[sourcecode language='php'] 'FriendFeed' =&gt; Array(
'favicon' =&gt; 'friendfeed.png',
'url' =&gt; 'http://friendfeed.com/?url=PERMALINK&amp;amp;amp;title=TITLE',
), [/sourcecode]&lt;/li&gt;
    &lt;li&gt;Save the file and reactivate the plug-in.&lt;/li&gt;
&lt;/ol&gt;


&lt;h3&gt;Results&lt;/h3&gt;


&lt;p&gt;This is what the finished version looks like with the 2 services enabled through Sociable Options.
&lt;img src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/01/sociable_bump_vote1.png&quot; alt=&quot;sociable bump and vote&quot; title=&quot;sociable bump and vote&quot; width=&quot;250&quot; height=&quot;49&quot; class=&quot;alignnone size-full wp-image-357&quot; /&gt;
And working version of the icons are used in this website. See below for an example.&lt;/p&gt;

&lt;h3&gt;Final Thoughts&lt;/h3&gt;


&lt;p&gt;I have also submitted the code to &lt;a href=&quot;http://wordpress.org/extend/plugins/profile/joostdevalk&quot;&gt;Joost de Valk&lt;/a&gt;,the author of the &lt;a href=&quot;http://wordpress.org/extend/plugins/sociable/&quot;&gt;Sociable Plug-in&lt;/a&gt;, in hopes that he adds them for everyone's use.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.johntwang.com/sociable.zip&quot;&gt;Download the complete code here&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Review: The Principles Of Successful Freelancing</title>
   <link href="/blog/2009/01/13/review-the-principles-of-successful-freelancing/"/>
   <updated>2009-01-13T00:00:00-08:00</updated>
   <id>/blog/2009/01/13/review-the-principles-of-successful-freelancing</id>
   <content type="html">&lt;p&gt;&lt;img class=&quot;aligncenter size-full wp-image-321&quot; title=&quot;The Principles of Successful Freelancing&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2009/01/cover1.png&quot; alt=&quot;The Principles of Successful Freelancing&quot; width=&quot;167&quot; height=&quot;209&quot; /&gt;&lt;/p&gt;

&lt;p&gt;After reading &lt;a href=&quot;http://adellecharles.com&quot;&gt;Adelle Charles&lt;/a&gt; ( &lt;a href=&quot;http://twitter.com/adellecharles&quot;&gt;@adellecharles&lt;/a&gt; ) review [&lt;a href=&quot;http://www.fuelyourcreativity.com/are-you-freelance-material/&quot;&gt;Are You Freelance Material?&lt;/a&gt;] of &lt;a href=&quot;http://www.principlesofsuccessfulfreelancing.com/&quot;&gt;The Principles of Successful Freelancing&lt;/a&gt; by Miles Burke ( &lt;a href=&quot;http://twitter.com/milesb&quot;&gt;@milesb&lt;/a&gt; ), I decided to get the book as a Christmas present to myself.&lt;/p&gt;

&lt;h3&gt;Initial Impressions:&lt;/h3&gt;


&lt;p&gt;The book seemed very light and small. It has the traditional Sitepoint look and feel to it.&lt;/p&gt;

&lt;h3&gt;Finished Reading Impressions:&lt;/h3&gt;


&lt;p&gt;Miles does an excellent job with the many aspects to consider prior to starting freelancing. Even more so, he talks about his experiences and failures in embarking into freelancing. The book's chapters are very nicely broken down into well manageable sections. And the book is short enough to read on a long flight. Similar to the length of Steve Krug's &lt;em&gt;Don't Make Me Think!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Miles takes us through the freelancing journey of 2 fictional individuals. At the end of each chapter, explaining their decisions on the principle emphasized in the chapter. And also provides various links to resources discussed in the chapters. Such as finance software examples and start-up cost examples.&lt;/p&gt;

&lt;p&gt;I also liked that the book did not end with the completion of the first year, but also provide advice on where to go and what to do after success has come. Miles did an amazing job bringing out the hidden costs and fees that a lot of potential freelancers come across in their first year as a surprise. There is a lot of emphasis on proper planning before you leap into the sea. And rightfully so. Planning is by far one of the most important principles of success in any field. He goes through the do's and don't's for success very nicely.&lt;/p&gt;

&lt;p&gt;While the book does center a bit around a web design freelancing aspect as that is Miles Burke's specialty, it is a very informative resource for anyone considering freelancing in any industry.&lt;/p&gt;

&lt;p&gt;The book's &lt;a href=&quot;http://www.sitepoint.com/books/freelancer1/&quot;&gt;Sitepoint website&lt;/a&gt; provides an in-depth list of the chapters and descriptions as well as a free sample chapter to read before you decide if you want to purchase it.&lt;/p&gt;

&lt;h3&gt;Final Thoughts:&lt;/h3&gt;


&lt;p&gt;I thoroughly enjoyed reading the book. The material was very well written and did not overwhelm. I highly recommend it to anyone considering freelancing as a career and even those who have already taken the leap.&lt;/p&gt;

&lt;h3&gt;Your Thoughts?&lt;/h3&gt;


&lt;p&gt;Have you read the book? What did you think? Will you read the book?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Simple WordPress Security Measures?</title>
   <link href="/blog/2009/01/08/simple-wordpress-security-measures/"/>
   <updated>2009-01-08T00:00:00-08:00</updated>
   <id>/blog/2009/01/08/simple-wordpress-security-measures</id>
   <content type="html">&lt;p&gt;With the recent &lt;a href=&quot;http://blog.wired.com/27bstroke6/2009/01/professed-twitt.html&quot;&gt;Twitter hacking fiasco&lt;/a&gt;, web designer &lt;a href=&quot;http://webdazzling.com/about/&quot;&gt;Chris Herbert&lt;/a&gt; (&lt;a href=&quot;http://www.twitter.com/ChrisHebert&quot;&gt;@ChrisHerbert&lt;/a&gt;) provided us with &lt;a href=&quot;http://webdazzling.com/can-you-be-hacked/&quot;&gt;some helpful tips for securing WordPress&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;One of the tips is regarding security measures. These tips come from &lt;a href=&quot;http://www.mattcutts.com/&quot;&gt;head of Google's Webspam team, Matt Cutts&lt;/a&gt;. Matt talks about &lt;a href=&quot;http://www.mattcutts.com/blog/three-tips-to-protect-your-wordpress-installation/&quot;&gt;securing your wp-admin directory, creating a wp-content/plugins/index.html, and subscribing to the WordPress development blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The one tip I have for securing your WordPress instance is:&lt;/p&gt;

&lt;h3&gt;Don't use the &lt;em&gt;admin&lt;/em&gt; account&lt;/h3&gt;


&lt;p&gt;Using the default &lt;em&gt;admin&lt;/em&gt; account normally leaves you open to &lt;a href=&quot;http://www.codinghorror.com/blog/archives/001206.html&quot;&gt;Dictionary attacks&lt;/a&gt; depending on your password. Instead, create a very strong password for the &lt;em&gt;admin&lt;/em&gt; account and create a separate administrator account of your own. See &lt;a href=&quot;http://www.uxbooth.com/&quot;&gt;UX Booth&lt;/a&gt;'s &lt;a href=&quot;http://www.uxbooth.com/blog/password-usability/&quot;&gt;How To Pick Passwords That Protect Your Online Experience&lt;/a&gt;. You can also downgrade the authority level of the &lt;em&gt;admin&lt;/em&gt; account if you so chose.&lt;/p&gt;

&lt;p&gt;I would also recommend regularly using an &lt;em&gt;author&lt;/em&gt; or &lt;em&gt;editor&lt;/em&gt; account if you don't need any of the administrative power.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Got any WordPress security tips? Please share them in the comments.&lt;/strong&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Moleskine - 960 Grid System, Divine Proportion, Rules of Thirds</title>
   <link href="/blog/2009/01/05/moleskine-960-grid-system-divine-proportion-rules-of-thirds/"/>
   <updated>2009-01-05T00:00:00-08:00</updated>
   <id>/blog/2009/01/05/moleskine-960-grid-system-divine-proportion-rules-of-thirds</id>
   <content type="html">&lt;p&gt;&lt;img class=&quot;aligncenter size-medium wp-image-264&quot; title=&quot;moleskine&quot; src=&quot;http://www.johntwang.com/blogturbo.paulstamatiou.com/uploads/2008/12/moleskine_2029_16939658-300x300.jpg&quot; alt=&quot;moleskine&quot; width=&quot;300&quot; height=&quot;300&quot; /&gt;&lt;/p&gt;

&lt;p&gt;People are always talking about the importance of sketching as part of a process in web, logo, or graphic design. For example: &lt;a href=&quot;http://www.alistapart.com/articles/sketchingincode&quot;&gt;A List Apart&lt;/a&gt;, &lt;a href=&quot;http://www.davidairey.com/my-logo-design-process/&quot;&gt;David Airey&lt;/a&gt;, and &lt;a href=&quot;http://psdtuts.com/drawing/the-role-of-sketching-in-the-design-process/&quot;&gt;PSDTuts&lt;/a&gt; all have an article putting some sort of emphasis on it. &lt;a href=&quot;http://www.jasongraphix.com/about&quot;&gt;Jason Beiard&lt;/a&gt; also touches on it as part of his layout chapter in his book &lt;a href=&quot;http://www.sitepoint.com/article/principles-beautiful-web-design/3/&quot;&gt;The Principles of Beautiful Web Design&lt;/a&gt;. And even &lt;a href=&quot;http://www.johntwang.com/blog/2008/12/18/to-sketch-or-not-to-sketch-that-is-the-twitter-question/&quot;&gt;the Twitterverse of Web Designers gave an overwhelming response when asked about sketching&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I can understand why people will bypass the sketching process in favor of jumping straight into Fireworks, Photoshop, or Illustrator as it does add a step and slow you down a bit. Even more so if you have access to a graphic tablet such as the &lt;a href=&quot;http://www.wacom.com/intuos/index.php&quot;&gt;Wacom Intuos&lt;/a&gt; or &lt;a href=&quot;http://www.wacom.com/cintiq/index.php&quot;&gt;Cintiq&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Personally, I don't mind the slow down and find it more helpful to do the sketching. I use a&lt;a href=&quot;http://www.moleskine.com/eng/_interni/catalogo/Cat_int/catalogo_notebooks.htm&quot;&gt; Moleskine Large Squared Notebook&lt;/a&gt;. It's a small grid notebook (13 x 21 cm) with 240 pages. Recently, I have been trying to incorporate the concepts of &lt;a href=&quot;http://en.wikipedia.org/wiki/Golden_ratio&quot;&gt;The Divine Proportion&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Rule_of_thirds&quot;&gt;Rule of Thirds&lt;/a&gt;, and &lt;a href=&quot;http://960.gs/&quot;&gt;960 Grid System&lt;/a&gt; into some designs. But first, I needed to find a way to incorporate them into the Moleskine for sketching. Unfortunately for me, a few Google searches came back with empty results and I was left to do them myself.&lt;/p&gt;

&lt;h3&gt;The Divine Proportion&lt;/h3&gt;


&lt;p&gt;The magical irrational number 1.61803 (&lt;a href=&quot;http://en.wikipedia.org/wiki/Phi_(letter)&quot;&gt;phi&lt;/a&gt;) that makes all things proportioned to it, aesthetically pleasing. I mostly just use this to separate content in website design. Divinely proportioning the Moleskine should be easy as it's dimensions of 13 x 21cm are within 0.2% of said &lt;a href=&quot;http://en.wikipedia.org/wiki/Golden_ratio&quot;&gt;Golden Ratio&lt;/a&gt;. Anyways, the math comes out like this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Horizontal format&lt;/strong&gt;: 20/1.618 = 12.97 cm ~ 13cm (25 boxes.) That leaves us with 8cm (15 boxes) on the other side.&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;thickbox&quot; title=&quot;Divine Proportion - Horizontally&quot; href=&quot;http://www.johntwang.com/blog/wp-content/gallery/moleskine/golden_horiz.jpg&quot;&gt;&lt;img class=&quot;ngg-singlepic ngg-none&quot; src=&quot;http://www.johntwang.com/blog/wp-content/gallery/moleskine/thumbs/thumbs_golden_horiz.jpg&quot; alt=&quot;golden_horiz.jpg&quot; /&gt;&lt;/a&gt;
&lt;strong&gt;Vertical format:&lt;/strong&gt; 13/1.618 = 8 cm (16 boxes) by 5 cm (10 boxes.)&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;thickbox&quot; title=&quot;Divine Proportion - Vertically&quot; href=&quot;http://www.johntwang.com/blog/wp-content/gallery/moleskine/golden_vertical.jpg&quot;&gt;&lt;img class=&quot;ngg-singlepic ngg-none&quot; src=&quot;http://www.johntwang.com/blog/wp-content/gallery/moleskine/thumbs/thumbs_golden_vertical.jpg&quot; alt=&quot;golden_vertical.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;The Rule of Thirds&lt;/h3&gt;


&lt;p&gt;A simplified version of the Divine Proportion. And much easier to do without doing math. This was also the easiest to implement with the Squared Moleskine. The dimensions of the notebook I gave you previously (13 x 21 cm) does not really lend itself to making this easy. But, having painfully counted the number of actual squares and measuring them I found the notebook is also 25 x 41 boxes. So, I gave myself a rectangle with 1 box border on the right, 2 box border on the top, 3 box border on the bottom and half a box on the left. Making an internal box dimension of 36 x 24, which is easily divisible by 3.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vertical format&lt;/strong&gt;: 6 x 4&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;thickbox&quot; title=&quot;Rule of Thirds - Vertically&quot; href=&quot;http://www.johntwang.com/blog/wp-content/gallery/moleskine/rule_of_thirds.jpg&quot;&gt;&lt;img class=&quot;ngg-singlepic ngg-none&quot; src=&quot;http://www.johntwang.com/blog/wp-content/gallery/moleskine/thumbs/thumbs_rule_of_thirds.jpg&quot; alt=&quot;rule_of_thirds.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;The 960 Grid System&lt;/h3&gt;


&lt;p&gt;&lt;a href=&quot;http://960.gs/&quot;&gt;The 960 Grid System&lt;/a&gt; provides downloadable templates for PDF grid paper, Fireworks, OmniGraffle, Photoshop &amp;amp; Visio, and CSS framework with demo HTML. That's pretty wonderful considering it's all free. The problem for me was, the PDF is not in my Moleskine and not the size of a Moleskine page. So it was back to doing more math. The 960 Grid System uses a 12 column or 16 column format. This was a bit more complicated. Probably the most complicated of all. Anyways, &lt;a href=&quot;http://sonspring.com/&quot;&gt;Nathan Smith&lt;/a&gt; does a great job at explaining everything on the website. Of particular interest to me was the &lt;em&gt;Dimensions &lt;/em&gt;section where I found the needed numbers to incorporate the columns into the notebook. Unfortunately, it was too difficult to incorporate it in a vertical format. At least for now. I may revisit it later. Below are the results.&lt;/p&gt;

&lt;h4&gt;12 Column - 0.5 box margins, 2.5 box column width&lt;/h4&gt;


&lt;p&gt;&lt;a class=&quot;thickbox&quot; title=&quot;960 Grid System - 12 columns&quot; href=&quot;http://www.johntwang.com/blog/wp-content/gallery/moleskine/12_col.jpg&quot;&gt;&lt;img class=&quot;ngg-singlepic ngg-none&quot; src=&quot;http://www.johntwang.com/blog/wp-content/gallery/moleskine/thumbs/thumbs_12_col.jpg&quot; alt=&quot;12_col.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;16 Column - 0.5 box margins, 1.5 box column width&lt;/h4&gt;


&lt;p&gt;&lt;a class=&quot;thickbox&quot; title=&quot;960 Grid System - 16 columns&quot; href=&quot;http://www.johntwang.com/blog/wp-content/gallery/moleskine/16_col.jpg&quot;&gt;&lt;img class=&quot;ngg-singlepic ngg-none&quot; src=&quot;http://www.johntwang.com/blog/wp-content/gallery/moleskine/thumbs/thumbs_16_col.jpg&quot; alt=&quot;16_col.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Further Reading&lt;/h3&gt;


&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.cameronmoll.com/archives/2006/12/gridding_the_960/&quot;&gt;Cameron Moll - Gridding the 960&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://nettuts.com/tutorials/html-css-techniques/prototyping-with-the-grid-960-css-framework/&quot;&gt;Prototyping With The Grid 960 CSS Framework - NETTUTS&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.smashingmagazine.com/2008/05/29/applying-divine-proportion-to-web-design/&quot;&gt;Applying Divine Proportion To Your Web Designs | How-To | Smashing Magazine&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.sitepoint.com/article/principles-beautiful-web-design/3/&quot;&gt;The Principles of Beautiful Web Design [Design Principles] - Grid Theory&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://freelanceswitch.com/productivity/the-monster-collection-of-moleskine-tips-tricks-and-hacks/&quot;&gt;The Monster Collection of Moleskine Tips, Tricks and Hacks - FreelanceSwitch - The Freelance Blog&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.moleskinerie.com/2005/09/the_divine_mole.html&quot;&gt;moleskinerie: The Divine Moleskine&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://nettuts.com/tutorials/other/the-golden-ratio-in-web-design&quot;&gt;The Golden Ratio in Web Design - NETTUTS&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://cssglobe.com/post/3117/golden-ratio-in-modern-css&quot;&gt;Golden Ratio in modern CSS&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.divitodesign.com/2008/12/960-css-framework-learn-basics/&quot;&gt;960 CSS Framework - Learn the Basics &amp;raquo; DivitoDesign&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.divitodesign.com/2009/01/tricks-to-solve-960-css-framework-problems/&quot;&gt;Tricks to Solve 960 CSS Framework Problems &amp;raquo; DivitoDesign&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://nettuts.com/videos/screencasts/a-detailed-look-at-the-960-css-framework/&quot;&gt;A Detailed Look at the 960 CSS Framework - NETTUTS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;Looking for feedback. Do you sketch out designs? Do you use any of these concepts in designs? What do you use?&lt;/h3&gt;

</content>
 </entry>
 
 <entry>
   <title>Completed the Honolulu Marathon 2008</title>
   <link href="/blog/2008/12/22/completed-the-honolulu-marathon-2008/"/>
   <updated>2008-12-22T00:00:00-08:00</updated>
   <id>/blog/2008/12/22/completed-the-honolulu-marathon-2008</id>
   <content type="html">&lt;p&gt;&lt;img class=&quot;ngg-singlepic ngg-center&quot; src=&quot;http://www.johntwang.com/blog/wp-content/gallery/honolulu_marathon/poster2.png&quot; alt=&quot;Honolulu Marathon 2008&quot; /&gt;
I participated in the &lt;a href=&quot;http://www.honolulumarathon.org/&quot;&gt;Honolulu Marathon&lt;/a&gt; on December 14, 2008. The race started off with a bang. Actually a series of bangs. Prior to starting, there is a fireworks presentation for all the participants. 20,302 people started the race this year. And 20,058 finished. Starting off with pouring rain for the first 2 hours and 30 minutes. Later the weather started to clear up and the sun came out as the vast majority of people passed Kahala Mall and headed towards the halfway point in Aina Haina. It was a great to see the various costumed runners as well. There was a Pikachu, Yoda, &lt;a href=&quot;http://cmsimg.honoluluadvertiser.com/apps/pbcsi.dll/bilde?Site=M1&amp;amp;Date=20081215&amp;amp;Category=NEWS01&amp;amp;ArtNo=812150334&amp;amp;Ref=V2&amp;amp;Profile=1002&amp;amp;MaxW=550&amp;amp;MaxH=650&amp;amp;Q=90&amp;amp;title=0&quot;&gt;Darth Vader&lt;/a&gt;, many a santa hats and costumes, maids, brides, grooms, and many many more. It was definitely a great part of the event fun. Though, I did feel bad for them when the race started with pouring rain.&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;Once getting into Hawaii Kai, it was a very beautiful way to see the scenery and the overlook of the Hawaii Kai marina. Coming into the end of the run, it was very nice to see the sun overlooking the Waialea Beach Park from the top of the mountain hill. Around the half mile left mark, you can start to see the Finish line.&lt;/p&gt;

&lt;p&gt;Unfortunately, I injured my right foot around the 11 mile marker and was forced to limp the remaining part of the marathon. While it was disheartening, I did finish and have fun participating in the event. I completed both of my goals for this marathon. Perhaps next time I will be able to run the entire marathon and post a better time.&lt;/p&gt;

&lt;p&gt;My official results can be seen at the &lt;a href=&quot;http://www.sportstats.ca/display-results.php?lang=eng&amp;amp;racecode=44452&amp;amp;first=John&amp;amp;last=Wang&amp;amp;page=&amp;amp;sortby=place&amp;amp;city=&amp;amp;sizeofpage=200&amp;amp;limit=2000&quot;&gt;Honolulu Marathon website&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;aligncenter size-full wp-image-285&quot; title=&quot;results&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2008/12/results1.png&quot; alt=&quot;results&quot; width=&quot;605&quot; height=&quot;47&quot; /&gt;&lt;/p&gt;

&lt;p&gt;[nggallery id=5]&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>To Sketch Or Not to Sketch? That is the Twitter Question.</title>
   <link href="/blog/2008/12/18/to-sketch-or-not-to-sketch-that-is-the-twitter-question/"/>
   <updated>2008-12-18T00:00:00-08:00</updated>
   <id>/blog/2008/12/18/to-sketch-or-not-to-sketch-that-is-the-twitter-question</id>
   <content type="html">&lt;p&gt;I am sketcher. I like to draw out preliminary designs as much as possible. Even if it's just a layout or something relatively quick. I also use a Moleskine notebook to do all my sketches in. Yesterday, I posed a question to the Web Design community on Twitter. The responses were overwhelming. So overwhelming that it required me to break it out of it's original intention. Thanks everyone! Greatly appreciated!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Question to all web designers:&lt;/em&gt; Do you sketch/draw out your preliminary designs on paper first or just jump into Photoshop?&lt;/p&gt;

&lt;blockquote&gt;
&lt;?php get_quotes(&quot;1064054305,1064059138,1064092261,1064144695,1064295305,1064297093,1064309090,1064338138,1064341467,1064344361,1064355154,1064365061,1064365860,1064386854,1064388411,1064394987,1064395647,1064549315&quot;) ?&gt;
&lt;/blockquote&gt;


&lt;p&gt;Thank you all so much for your insights. They were all greatly appreciated and helpful.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How about the readers? Do you sketch or jump straight into Photoshop?&lt;/strong&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>The Honolulu Marathon 2008</title>
   <link href="/blog/2008/12/12/the-honolulu-marathon-2008/"/>
   <updated>2008-12-12T00:00:00-08:00</updated>
   <id>/blog/2008/12/12/the-honolulu-marathon-2008</id>
   <content type="html">&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;size-full wp-image-245 aligncenter&quot; title=&quot;Honolulu Marathon&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2008/12/header_1_0011.jpg&quot; alt=&quot;Honolulu Marathon&quot; width=&quot;730&quot; height=&quot;232&quot; /&gt;&lt;/p&gt;


&lt;p&gt;I've always had goals. And one of them happen to be running in a marathon. I'll be doing that this Sunday, December 14th. It's going to be my first marathon. And I won't be alone. &lt;a href=&quot;http://zenhabits.net/2008/12/im-running-the-marathon-this-weekend/&quot;&gt;Zen Habit's Leo Babauta&lt;/a&gt; is also running the same exact marathon, as is&lt;a href=&quot;http://www.starbulletin.com/news/breaking/35928954.html&quot;&gt; Boston Red Sox Pitcher Hideki Okajima&lt;/a&gt;. As the title says, we'll be doing the 36th Annual &lt;a href=&quot;http://www.honolulumarathon.org&quot;&gt;Honolulu Marathon&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can track our progress online at the &lt;a href=&quot;http://www.sportstats.ca/liveresults/l.php&quot;&gt;Sportstats website&lt;/a&gt;. I am runner #9061, Leo is runner #8482, and Okajima is #37. The race starts at 5:00AM Hawaii Time. There will be just shy of 27,000 participants.&lt;/p&gt;

&lt;p&gt;I have been following a&lt;a href=&quot;http://www.runnersworld.com/article/0,7120,s6-238-244-255-11937-0,00.html&quot;&gt; Runner's World&lt;/a&gt; training routine as I needed to train on my own time. Others have been following the &lt;a href=&quot;http://honolulumarathonclinic.org/&quot;&gt;Honolulu Marathon Clinic&lt;/a&gt;. A free clinic that gets together on Sunday mornings. Highly recommended if you're interesting in pursuing running the Honolulu Marathon.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I have 2 goals for this weekend's marathon.&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
    &lt;li&gt;Have fun&lt;/li&gt;
    &lt;li&gt;Finish&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;I'm very excited for it and I'm feeling very good. I believe I will be able to accomplish both of those goals. I have set aside all of my running items (ipod, shirt, shorts, shoes, socks, gels, powerbars, water bottle, etc.) I have no completion time goal and that should make it easier to take it easy if I need to.&lt;/p&gt;

&lt;p&gt;I am also planning on stopping at every water aid station (every 2-3 miles) to drink water/gatorade slowly and walk a little bit after taking the water before running again.&lt;/p&gt;

&lt;p&gt;While Leo won't be carrying a cell phone during the race, I will be. Would there be any interest in getting Twitter updates as I get past checkpoints? I had wanted to carry a small camera to take pictures as I went along, but that doesn't seem like a good idea anymore. Although, I will write a follow-up post with my experience running the race.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Have you run a marathon? Got any last minute advice? Good luck wishes?&lt;/strong&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Product Review: Tom Bihn&#039;s 4Z Brain Cell for Late 2008 MacBook Pro</title>
   <link href="/blog/2008/12/04/product-review-tom-bihns-4z-brain-cell-for-late-2008-macbook-pro/"/>
   <updated>2008-12-04T00:00:00-08:00</updated>
   <id>/blog/2008/12/04/product-review-tom-bihns-4z-brain-cell-for-late-2008-macbook-pro</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2008/12/untitled-21.png&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-214&quot; title=&quot;Tom Bihn Brain Cell&quot; src=&quot;http://www.johntwang.com/blogturbo.paulstamatiou.com/uploads/2008/12/untitled-2-300x90.png&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;90&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I recently purchased the new unibody Apple MacBook Pro. I also commute to various places at times. So I wanted something to protect my laptop while I carry it. It only seemed fitting that I get a &lt;a href=&quot;http://www.tombihn.com/page/001/PROD/300/TB0390&quot;&gt;Tom Bihn Vertical Brain Cell&lt;/a&gt; since I use a &lt;a href=&quot;http://www.tombihn.com/page/001/PROD/100/TB0104&quot;&gt;Tom Bihn Brain Bag&lt;/a&gt; to carry all my stuff in anyways. Though, just about any other laptop sleeve would probably do the job just fine. And there are quite a few good ones out there. For example, &lt;a href=&quot;http://www.booqbags.com/Compact-Cases-Laptop-Sleeves&quot;&gt;Booq&lt;/a&gt; and &lt;a href=&quot;http://www.sfbags.com/&quot;&gt;Waterfield&lt;/a&gt;. Anyways, it arrived last week and I have been testing it out with the bag and as a case on it's own. Here's my experience with it so far.&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;&lt;strong&gt;The Packaging&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;First thing I noticed right away was the packaging. Kind of obvious I get. The box it comes in has a nice &lt;a href=&quot;http://www.tombihn.com&quot;&gt;Tom Bihn&lt;/a&gt; logo. USPS must have had a blast with my package because this is what it looked like when I got it.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;alignnone&quot; title=&quot;Box 1&quot; src=&quot;http://i434.photobucket.com/albums/qq64/jwang392/IMG_1953.jpg&quot; alt=&quot;&quot; width=&quot;331&quot; height=&quot;249&quot; /&gt;&lt;img class=&quot;alignnone&quot; title=&quot;Tom Bihn USPS Box&quot; src=&quot;http://i434.photobucket.com/albums/qq64/jwang392/IMG_1954.jpg&quot; alt=&quot;&quot; width=&quot;331&quot; height=&quot;249&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Though, I wasn't too concerned with it as it's a bag inside the box, it was a bit disheartening. Inside the box was also a Tom Bihn sticker. I'm not quite sure why they come with them, but I always welcome stickers. The last one ended up on one of my Moleskine notebooks. Free advertising for them I suppose. But hey, I like their products so it's a decent way to recommend them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Brain Cell&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Brain Cell I ordered is the Vertical model. This was because the &lt;a href=&quot;http://www.tombihn.com/page/001/PROD/300/TB0300&quot;&gt;Horizontal version&lt;/a&gt; does not fit in the Brain Bag. Oops, let's restate that. The Horizontal does fit, just not in the way it's intended to protect your laptop. I'll trust their judgment. They designed it of course. I do also have a Horizontal Brain Cell that houses my Lenovo T61 laptop that I use that to do my .Net coding.&lt;/p&gt;

&lt;p&gt;The case does a great job at protecting the laptop. There is a lot of protection for the top and bottom of the laptop. I wish the sides and bottom of the Brain Cell had a bit more cushion to protect it, but that's also carried over from all Brain Cells. It does fit like a glove around the laptop, so it doesn't move around inside of the Brain Cell. That's definitely a plus. I have found it to fit inside very nicely and completely safe. Here's a picture of that.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2008/12/img_2114.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-235&quot; title=&quot;with MBP inside&quot; src=&quot;http://www.johntwang.com/blogturbo.paulstamatiou.com/uploads/2008/12/img_2114-225x300.jpg&quot; alt=&quot;&quot; width=&quot;225&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;


&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Vertical vs Horizontal&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Vertical Brain Cell has 2 pockets compared to the Horizontal version having 1 large pocket with 2 buttons. Also, using the Vertical version, I cannot fit the &lt;a href=&quot;http://www.tombihn.com/page/001/PROD/ACC/TB0302&quot;&gt;Snake Charmer&lt;/a&gt; on top of the Brain Cell, which I can with the Horizontal. Can't really complain about that as the MacBook Pro is quite a bit bigger than the T61. Another plus of the Brain Cells, they give you the option of adding a &lt;a href=&quot;http://www.tombihn.com/page/001/CTGY/ACC&quot;&gt;Shoulder Strap&lt;/a&gt; to carry them on their own. As I mentioned before, it does close via Velcro. And Velcro is quite noisy. It doesn't bother me, but it does bother some. Those who prefer zipper closure, sorry.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Overall, I am really enjoying the Brain Cell and highly recommend it. It does a great job at what it's for and complements the Brain Bag very well. If you're using the &lt;a href=&quot;http://www.tombihn.com/page/001/PROD/300/TB0730&quot;&gt;Empire Builder&lt;/a&gt;, I believe the Horizontal is the way to go.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What do you use to carry your MacBook Pro or other laptop?&lt;/strong&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>WordPress Sharing Plugins: Sociable and ShareThis</title>
   <link href="/blog/2008/12/02/wordpress-sharing-plugins-sociable-and-sharethis/"/>
   <updated>2008-12-02T00:00:00-08:00</updated>
   <id>/blog/2008/12/02/wordpress-sharing-plugins-sociable-and-sharethis</id>
   <content type="html">&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-230&quot; title=&quot;share&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2008/12/share1.png&quot; alt=&quot;&quot; width=&quot;330&quot; height=&quot;100&quot; /&gt;&lt;/p&gt;


&lt;p&gt;There are to 2 very popular Wordpress plugins for catch-all content sharing: &lt;a href=&quot;http://yoast.com/wordpress/sociable/&quot;&gt;Sociable&lt;/a&gt; and &lt;a href=&quot;http://sharethis.com/wordpress&quot;&gt;ShareThis&lt;/a&gt;. They are both very good. And they each come with their associated pros and cons. Here's a quick look at them in terms of a web designer's blog use.&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;&lt;strong&gt;What Both Have and Don't Have&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Together they provide sharing capabilities to the large major sharing services such as Digg, Reddit, StumbleUpon, Delicious, Twitter, etc. They also both provide sharing capability through email and printing. They are also both customizable to some extent. You can choose which services are available to be shared to. Sociable provides 98 services and ShareThis provides 36. Also, noteworthy for designers, neither plugins offer &lt;a href=&quot;http://www.designbump.com&quot;&gt;DesignBump&lt;/a&gt; as an option.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Individually&lt;/strong&gt;&lt;/p&gt;

&lt;table border=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sociable&lt;/strong&gt;
&lt;strong&gt;Pros:&lt;/strong&gt;
&lt;ul&gt;
    &lt;li&gt;DesignFloat available&lt;/li&gt;
    &lt;li&gt;DZone available&lt;/li&gt;
    &lt;li&gt;98 services to choose from&lt;/li&gt;
    &lt;li&gt;logos are easily recognizable&lt;/li&gt;
    &lt;li&gt;Can be included in RSS feed&lt;/li&gt;
&lt;/ul&gt;
&lt;strong&gt;Cons:&lt;/strong&gt;
&lt;ul&gt;
    &lt;li&gt;Larger footprint - Multiple logo images on your posts&lt;/li&gt;
    &lt;li&gt;No FriendFeed&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;ShareThis&lt;/strong&gt;
&lt;strong&gt;Pros:&lt;/strong&gt;
&lt;ul&gt;
    &lt;li&gt;FriendFeed available&lt;/li&gt;
    &lt;li&gt;Small footprint - Just 1 small image&lt;/li&gt;
    &lt;li&gt;Reporting on Click-through (If you register)&lt;/li&gt;
    &lt;li&gt;Post to Blog option&lt;/li&gt;
&lt;/ul&gt;
&lt;strong&gt;Cons:&lt;/strong&gt;
&lt;ul&gt;
    &lt;li&gt;no DesignFloat&lt;/li&gt;
    &lt;li style=&quot;text-align: left;&quot;&gt;&lt;em&gt;Only &lt;/em&gt;36 services to choose from.&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;


&lt;p style=&quot;text-align: left;&quot;&gt;&lt;strong&gt;Overall Conclusion&lt;/strong&gt;&lt;/p&gt;


&lt;p style=&quot;text-align: left;&quot;&gt;They're both great. You can't really go wrong with either of them. I tend to favor Sociable more since it includes some designer-specific social sharing sites (DesignFloat and DZine.) At the same time, I very much like the small footprint of ShareThis.&lt;/p&gt;


&lt;p style=&quot;text-align: left;&quot;&gt;&lt;strong&gt;Which one do you use? Why?&lt;/strong&gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>When NOT to Use Flash</title>
   <link href="/blog/2008/12/01/when-not-to-use-flash/"/>
   <updated>2008-12-01T00:00:00-08:00</updated>
   <id>/blog/2008/12/01/when-not-to-use-flash</id>
   <content type="html">&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2008/12/flash1.png&quot;&gt;&lt;img class=&quot;size-medium wp-image-196 aligncenter&quot; title=&quot;Adobe Flash&quot; src=&quot;http://www.johntwang.com/blogturbo.paulstamatiou.com/uploads/2008/12/flash-300x76.png&quot; alt=&quot;Please Install Adobe Flash Player&quot; width=&quot;300&quot; height=&quot;76&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;I'll admit it. I hate Flash. That's not right. Let's rephrase. I dislike improper use of Flash. And it's not Adobe's fault. Flash is definitely a great tool for the web. It's just not used properly and most of the time quite overused. I have seen some really terrific websites using Flash, but at the same time, I've seen at least twice as many making terrible use of it. Here's some advice regarding your use of Flash.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't use Flash as your ENTIRE website!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You're website shouldn't be built completely as a .swf Flash file. Why? Here's a few reasons:&lt;/p&gt;

&lt;ol&gt;
    &lt;li&gt;Not everyone has the Flash plugin installed on their computers. And they may not be able to install it.&lt;/li&gt;
    &lt;li&gt;It's not SEO friendly. Google has a decently hard time searching through Flash content.&lt;/li&gt;
    &lt;li&gt;Or Analytical friendly for that matter. Sure, Google Analytics recently added Flash tracking, but it's not perfected.&lt;/li&gt;
    &lt;li&gt;It's hard to bookmark a specific &quot;page&quot; of your Flash file for the user. Users don't want to bookmark your &quot;Main&quot; page and have to navigate to the content they want every time they need to get there.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;&lt;strong&gt;For your Navigation Menu&lt;/strong&gt;&lt;/p&gt;

&lt;p style=&quot;padding-left: 30px;&quot;&gt;Seriously? This also isn't SEO friendly and it's rather annoying as a user to have to wait for your animated navigation menu to load each time I go to a different page. Just use AJAX please.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;As a container for your content&lt;/strong&gt;&lt;/p&gt;

&lt;p style=&quot;padding-left: 30px;&quot;&gt;Okay. Now this one I really don't understand. You made an HTML page and then put your content in Flash. Why?! This makes no sense if all your content is text and links. And I've seen quite a few of these. Please don't do this.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;To protect your pictures from being &quot;stolen&quot; or hot-linked&lt;/strong&gt;&lt;/p&gt;

&lt;p style=&quot;padding-left: 30px;&quot;&gt;Yes. Putting all your images in a Flash file will stop someone from hot-linking. But that doesn't mean you should use it for that. There are other ways around it. And if they really want the picture, they will find a way. As for stealing them, not so much. There are various screen capturing programs out there. And the ever so popular, Print Screen button. I always hear this as the reasoning. Especially for Photographers. It's stupid. Don't use it as an excuse for poorly made Flash use.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;For your Intro Page&lt;/strong&gt;&lt;/p&gt;

&lt;p style=&quot;padding-left: 30px;&quot;&gt;Ok. I hate Intro pages. They're dumb. But people (usually movie-based websites) make and use them. I still haven't quite grasped the reasoning behind making the consumer wait to get to your content, but whatever. That's a different topic for a different day. As for using Flash in your Intro Page. Go ahead, just make sure you have a &quot;Skip Intro&quot; button. And trust me, I will always press that button.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Where do you not like seeing Flash? What are your pet peeves regarding Flash use? Please share your experiences.&lt;/strong&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Commenting System Battle: IntenseDebate vs Disqus</title>
   <link href="/blog/2008/11/24/commenting-system-battle-intensedebate-vs-disqus/"/>
   <updated>2008-11-24T00:00:00-08:00</updated>
   <id>/blog/2008/11/24/commenting-system-battle-intensedebate-vs-disqus</id>
   <content type="html">&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;size-medium wp-image-180 aligncenter&quot; title=&quot;debate&quot; src=&quot;http://www.johntwang.com/blogturbo.paulstamatiou.com/uploads/2008/11/debate-300x90.png&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;90&quot; /&gt;&lt;/p&gt;


&lt;p style=&quot;text-align: left;&quot;&gt;Recently, there's been quite an up stir on commenting systems. And rightfully so, as comments are very important to bloggers. Since we're in the times of &quot;following&quot; others online in any social network available, it only seemed inevitable that social commenting systems would come. Welcome &lt;a href=&quot;http://wwww.disqus.com&quot;&gt;Disqus&lt;/a&gt; and &lt;a href=&quot;http://www.intensedebate.com&quot;&gt;IntenseDebate&lt;/a&gt;.&lt;/p&gt;


&lt;p style=&quot;text-align: left;&quot;&gt;&lt;em&gt;What they provide:&lt;/em&gt;&lt;/p&gt;




&lt;ul style=&quot;text-align: left;&quot;&gt;
    &lt;li&gt;Comment Threading&lt;/li&gt;
    &lt;li&gt;Comment Tracking&lt;/li&gt;
    &lt;li&gt;Comment Ranking/Rating&lt;/li&gt;
    &lt;li&gt;Posting to Twitter&lt;/li&gt;
    &lt;li&gt;Commenter User Profile&lt;/li&gt;
    &lt;li&gt;e-mail Replies&lt;/li&gt;
    &lt;li&gt;Comment Spam blocking&lt;/li&gt;
    &lt;li&gt;FriendFeed integration&lt;/li&gt;
&lt;/ul&gt;


&lt;p style=&quot;text-align: left;&quot;&gt;&lt;!--more--&gt;These services provide a nice and easy way for you to manage your commenting on other blogs. So you can just log into the system and comment without having to fill out the normally required form fields.&lt;/p&gt;


&lt;p style=&quot;text-align: left;&quot;&gt;&lt;em&gt;Supported platforms include:&lt;/em&gt;&lt;/p&gt;




&lt;ul style=&quot;text-align: left;&quot;&gt;
    &lt;li&gt;WordPress&lt;/li&gt;
    &lt;li&gt;Blogger&lt;/li&gt;
    &lt;li&gt;Tumblr&lt;/li&gt;
    &lt;li&gt;Movable Type&lt;/li&gt;
    &lt;li&gt;TypePad&lt;/li&gt;
    &lt;li&gt;Drupal&lt;/li&gt;
    &lt;li&gt;b2evolution&lt;/li&gt;
    &lt;li&gt;Graffiti&lt;/li&gt;
    &lt;li&gt;Joomla&lt;/li&gt;
    &lt;li&gt;RubyGem&lt;/li&gt;
&lt;/ul&gt;


&lt;p style=&quot;text-align: left;&quot;&gt;&lt;strong&gt;Does this sound too good to be true?&lt;/strong&gt;&lt;/p&gt;


&lt;p style=&quot;text-align: left;&quot;&gt;As with all things, there's always some negatives. In these cases, in order for you to use your Commenter Profile, the blog you're posting on has to have the system installed on it. And with that comes a price. And that price is Styling. Or to be more specific, lack of full CSS customizability. Disqus does offer some &lt;a href=&quot;http://disqus.com/docs/css/&quot;&gt;custom CSS&lt;/a&gt;, but no where near as customizable as your traditional blog comments. You're pretty much stuck with the style that they come with. For better or worse. &lt;a href=&quot;http://chriscoyier.net/&quot;&gt;Chris Coyier&lt;/a&gt; of &lt;a href=&quot;http://css-tricks.com/&quot;&gt;CSS Tricks&lt;/a&gt; touches on this in his &lt;a href=&quot;http://css-tricks.com/thoughts-on-intensedebate-so-far/&quot;&gt;1 week review of IntenseDebate&lt;/a&gt;. Another problem is that there isn't a standard choice for the platform. While this isn't really a problem. It means, as a commenter you may need to have an account on both commenting systems. If you so choose of course.&lt;/p&gt;


&lt;p style=&quot;text-align: left;&quot;&gt;It is also important to note that commenters may still leave comments without having an IntenseDebate or Disqus account. It's merely another option for them.&lt;/p&gt;


&lt;p style=&quot;text-align: left;&quot;&gt;&lt;strong&gt;Enter the Dark Horse&lt;/strong&gt;&lt;/p&gt;


&lt;p style=&quot;text-align: left;&quot;&gt;While not a direct competitor to Disqus and IntenseDebate, &lt;a href=&quot;http://www.backtype.com&quot;&gt;BackType&lt;/a&gt; is another system that has recently picked up some steam. There was a rather length &lt;a href=&quot;http://friendfeed.com/e/0c1a44c1-40dd-077c-1ecd-f09387fc8685/Just-added-BackType-to-my-FriendFeed-An/&quot;&gt;debate on FriendFeed&lt;/a&gt; as to where BackType fits in. The main reason as to why BackType doesn't fit into direct competition is because it does not require you to install anything into your blog. Instead, it searches and aggregates all your comments into one place for you to share and view. It does this by searching the &quot;Website&quot; optional field when you submit a comment to another website. BackType also allows you to have a Commenter profile and &quot;follow&quot; other commenters. It does not have a login capability so that you don't have to fill out the required and optional fields. And you must fill out the &quot;website&quot; field accordingly in order for it to attribute the comment to your profile. &lt;a href=&quot;http://louisgray.com/live/about.html&quot;&gt;Louis Gray&lt;/a&gt; has quite a &lt;a href=&quot;http://www.louisgray.com/live/labels/BackType.html&quot;&gt;few write-ups on BackType on his Disqus-powered blog&lt;/a&gt;.&lt;/p&gt;


&lt;p style=&quot;text-align: left;&quot;&gt;&lt;strong&gt;Okay. This is great and all, but which one do I choose?&lt;/strong&gt;&lt;/p&gt;


&lt;p style=&quot;text-align: left;&quot;&gt;Well, the answer to that is of course. It depends. If you use &lt;a href=&quot;http://www.friendfeed.com&quot;&gt;FriendFeed&lt;/a&gt;, all 3 of these are supported and can be imported into your feed. If you're searching for a system for your WordPress blog, I would probably choose IntenseDebate as it was recently purchased by WordPress's parent company, &lt;a href=&quot;http://automattic.com/&quot;&gt;Automattic&lt;/a&gt;. Disqus does currently offer more platforms support. In case your platform is not supported by IntenseDebate. I'm looking at you Drupal and Joomla. Disqus also seems to be a more widely-chosen system. In case that matters to you.&lt;/p&gt;


&lt;p style=&quot;text-align: left;&quot;&gt;Also, if you're looking for reasons to use Disqus, Venture Capitalist, Fred Wilson offers you &lt;a href=&quot;http://www.avc.com/a_vc/2008/05/three-reasons-t.html&quot;&gt;his 3 reasons&lt;/a&gt;. While &lt;a href=&quot;http://scobleizer.com/&quot;&gt;Robert Scoble&lt;/a&gt; points you towards &lt;a href=&quot;http://scobleizer.com/2008/05/14/seesmic-disqus-add-up-to-video-comments-and-more/&quot;&gt;some Disqus enabled blogs and on the Disqus-only feature of Seesmic video comments&lt;/a&gt;. Keep in mind that version 2.7 of WordPress is just around the corner. And if you're only looking into these systems for threaded comments, the new version of WordPress will have that built-in.&lt;/p&gt;


&lt;p style=&quot;text-align: left;&quot;&gt;As for my recommendation. I say, as a commenter having a profile in each can't hurt. But if you need to chose just one, I'd go with BackType. It supports both IntenseDebate and Disqus comments along with the blogs with neither of these.&lt;/p&gt;


&lt;p style=&quot;text-align: left;&quot;&gt;What about you? What did you chose? What do you recommend? Are there other options out there?&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Beginner Web Design Resources</title>
   <link href="/blog/2008/11/21/beginner-web-design-resources/"/>
   <updated>2008-11-21T00:00:00-08:00</updated>
   <id>/blog/2008/11/21/beginner-web-design-resources</id>
   <content type="html">&lt;p&gt;Having been in Web Design for such a long time, I frequently get asked &quot;Where/How do I start?&quot; After thinking about it. It's a pretty hard question to answer. I needed to probe further and ask follow-up questions to fully understand what they were asking. It's easy to just point someone to Google and tell them to search for Web Design. They'll get a lot of information that way. Unfortunately, there's way too much information out there. Books, websites, magazines, blogs. It's &lt;em&gt;very&lt;/em&gt; easy to get information overload and confused. It's also very easy to start off and go completely the wrong way and get discouraged. So I've compiled a small list of books and websites to help get you started. The vast majority of these did not exist when I started and I wish they had been.&lt;/p&gt;

&lt;!--more--&gt;


&lt;p&gt;As a beginner, there are a few key concepts that you should understand before hopping into your favorite text editor and hacking away. These concepts are: &lt;em&gt;Standards &lt;/em&gt;and &lt;em&gt;Usability&lt;/em&gt;. And these are the building blocks upon which your foundation is built. Just like a building with a bad foundation will collapse, so will a website. These resources are specifically aimed at giving you a clear and stable foundation to build on.&lt;/p&gt;

&lt;h3&gt;Books&lt;/h3&gt;


&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0321344758?ie=UTF8&amp;amp;tag=jotwa-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0321344758&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-160&quot; src=&quot;http://www.johntwang.com/blogturbo.paulstamatiou.com/uploads/2008/11/51w8l2zy3wl_sl160_-125x150.jpg&quot; alt=&quot;&quot; width=&quot;125&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0321344758?ie=UTF8&amp;amp;tag=jotwa-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0321344758&quot; target=&quot;_blank&quot;&gt;Don't Make Me Think: A Common Sense Approach to Web Usability by Steve Krug&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/1590593812?ie=UTF8&amp;amp;tag=jotwa-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1590593812&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-158&quot; src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2008/11/11kwrcbea1l_sl160_1.jpg&quot; alt=&quot;&quot; width=&quot;117&quot; height=&quot;140&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/1590593812?ie=UTF8&amp;amp;tag=jotwa-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1590593812&quot; target=&quot;_blank&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/1590593812?ie=UTF8&amp;amp;tag=jotwa-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1590593812&quot; target=&quot;_blank&quot;&gt;Web Standards Solutions: The Markup and Style Handbook by Dan Cederholm&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0321385551?ie=UTF8&amp;amp;tag=jotwa-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0321385551&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-159&quot; src=&quot;http://www.johntwang.com/blogturbo.paulstamatiou.com/uploads/2008/11/41wtqiateyl_sl160_-131x150.jpg&quot; alt=&quot;&quot; width=&quot;131&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0321385551?ie=UTF8&amp;amp;tag=jotwa-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0321385551&quot; target=&quot;_blank&quot;&gt;Designing with Web Standards by Jeffrey Zeldman&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0321509021?ie=UTF8&amp;amp;tag=jotwa-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0321509021&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-161&quot; src=&quot;http://www.johntwang.com/blogturbo.paulstamatiou.com/uploads/2008/11/512trq74cnl_sl160_-134x150.jpg&quot; alt=&quot;&quot; width=&quot;134&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0321509021?ie=UTF8&amp;amp;tag=jotwa-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0321509021&quot; target=&quot;_blank&quot;&gt;Bulletproof Web Design: Improving flexibility and protecting against worst-case scenarios with XHTML and CSS by Dan Cederholm&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Web Resources&lt;/h3&gt;


&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.w3schools.com/&quot; target=&quot;_blank&quot;&gt;W3 School&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.alistapart.com/&quot; target=&quot;_blank&quot;&gt;A List Apart&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://960.gs/&quot; target=&quot;_blank&quot;&gt;960 Grid System&lt;/a&gt; and &lt;a href=&quot;http://www.smashingmagazine.com/2008/05/29/applying-divine-proportion-to-web-design/&quot; target=&quot;_blank&quot;&gt;Smashing Magazine's - Applying Divine Proportion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Please keep in mind that this list is merely to help you get started on the right foot. It is by no means an end-all list to how to become a great web designer or provide you with advanced information. We are only just setting the groundwork here.&lt;/p&gt;

&lt;p&gt;Please feel free to share your beginner resources. And correct anything I may have missed.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Web Design History: Oh, How Far We&#039;ve Come</title>
   <link href="/blog/2008/11/18/web-design-history-oh-how-far-weve-come/"/>
   <updated>2008-11-18T00:00:00-08:00</updated>
   <id>/blog/2008/11/18/web-design-history-oh-how-far-weve-come</id>
   <content type="html">&lt;p&gt;Once upon a time (1994), free web hosting was available with no advertisements. Your web host limited you to a size of 2 MB. And URLs were even more obscure. These were the days of GeoCities, Tripod, and Angelfire. It was hard to tell someone to visit your website when your URL was in the form of http://www.geocities.com/tokyo/temple/4460. Enter the social web of the 90s, &lt;a href=&quot;http://en.wikipedia.org/wiki/Web_rings&quot;&gt;Web Rings&lt;/a&gt;. The SEO technique of submitting your website to a circular network of similar subject websites that required a small badge on your website.&lt;/p&gt;

&lt;p&gt;This was were my adventures in web design started. I began with GeoCities in 1996. Having to own an entire block of a neighborhood to host images due to the 2MB limit, which was later raised to 5MB then 10MB, etc. Joined Web Rings to promote my websites. Stuffing as much keyword meta tags as possible. And submiting them of the search engines of the world. Search Engines before Google exists. AltaVista, Excite, Lycos, DogPile, MetaCrawler, InfoSeek, Northen Light, WebCrawler, HotBot, and Yahoo.&lt;/p&gt;

&lt;p&gt;Back then, there was no CSS to style your site. People had to used HTML Tables instead of Divs. Animated Gifs and background Midi music ruled the web. These were the days of Netscape Navigator, where you needed to use a text editor or Dreamweaver to code a website.&lt;/p&gt;

&lt;p&gt;Enter the era of &lt;a href=&quot;http://en.wikipedia.org/wiki/Microsoft_FrontPage&quot; target=&quot;_blank&quot;&gt;Microsoft FrontPage,&lt;/a&gt; &lt;a href=&quot;http://en.wikipedia.org/wiki/HomeSite&quot; target=&quot;_blank&quot;&gt;HomeSite&lt;/a&gt;, and &lt;a href=&quot;http://en.wikipedia.org/wiki/Adobe_GoLive&quot; target=&quot;_blank&quot;&gt;Adobe Go-Live&lt;/a&gt;. Now anyone can create a website if they know how to use Microsoft Word. And everyone did just that. WYSIWYG allowed anyone to put up a website. Failure to have valid code never mattered. W3C had no impact on anyone. And FrontPage extensions to boot.&lt;/p&gt;

&lt;p&gt;The new century quickly brought us the world of blogging through Blogger, MovableType and LiveJournal. I first started a LiveJournal blog thanks to &lt;a href=&quot;http://en.wikipedia.org/wiki/TechTV&quot; target=&quot;_blank&quot;&gt;TechTV&lt;/a&gt;'s &lt;a href=&quot;http://en.wikipedia.org/wiki/Megan_Morrone&quot; target=&quot;_blank&quot;&gt;Megan Morrone&lt;/a&gt; providing me an invite. It was the beginning of many things to come. In a world now dominated by WordPress, TypePad, MovableType, and Blogger.&lt;/p&gt;

&lt;p&gt;Not much later, in 2002, Friendster came out. The beginning of Social Networks. Quickly following suit were MySpace, Bebo and Facebook. The current state of the web now dominated by Blogs, Facebook, Twitter, FriendFeed and many other Social Networks. Web 2.0 has taken the world by storm and it's showing no signs of letting go.&lt;/p&gt;

&lt;p&gt;Care to share you history of web design? How did you get started in this business?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Product Review: 2008 Dahon Speed D7 Folding Bike</title>
   <link href="/blog/2008/10/30/product-review-2008-dahon-speed-d7-folding-bike/"/>
   <updated>2008-10-30T00:00:00-07:00</updated>
   <id>/blog/2008/10/30/product-review-2008-dahon-speed-d7-folding-bike</id>
   <content type="html">&lt;p&gt;I have been riding the &lt;a href=&quot;http://www.dahon.com/us/speedd7.htm&quot; target=&quot;_blank&quot;&gt;Dahon Speed D7&lt;/a&gt; folding bike for a little over a month now. In that time, I have put in just shy of 130 miles on it. Dahon has been in the business of folding bikes for 25 years now. And the Speed D7 model is their best-selling folding bike. It was also awarded BusinessWeek's Best Value Folder Award.&lt;br /&gt;&lt;/p&gt;


&lt;div style=&quot;center;&quot;&gt;
  &lt;img src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2008/10/speedd7-us2.jpg&quot; width=&quot;384&quot; height=&quot;263&quot; alt=&quot;Dahon Speed D7&quot; /&gt;&lt;br /&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;The Bike Specs:&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Weight&lt;/strong&gt;: 25.74 lbs.&lt;br /&gt;
&lt;strong&gt;Speeds&lt;/strong&gt;: 7&lt;br /&gt;
&lt;strong&gt;Folded Size&lt;/strong&gt;: 33 x 64 x 81 cm (13&quot; x 25&quot; x 32&quot;)&lt;br /&gt;
&lt;strong&gt;Tire Size&lt;/strong&gt;: 20&quot;&lt;/p&gt;


&lt;p&gt;I have been commuting about 3 miles during weekdays. I have taken the bike out for a longer run of 8 miles and the ride was still quite comfortable. It is a bit challenging on the steep hills when compared to a standard 26&quot; mountain bike.&lt;/p&gt;


&lt;div style=&quot;center;&quot;&gt;
  &lt;img src=&quot;http://johntwang.local:8888turbo.paulstamatiou.com/uploads/2008/10/speedd7-us11.jpg&quot; width=&quot;384&quot; height=&quot;263&quot; alt=&quot;Dahon Speed D7 Folded&quot; /&gt;&lt;br /&gt;
&lt;/div&gt;


&lt;p&gt;In the past month, I have run into a few problems with the bike.&lt;/p&gt;


&lt;ul&gt;
  &lt;li&gt;Every now and then, the quick-release for the handle-bar will loosen.&lt;/li&gt;

  &lt;li&gt;In addition to that, the handle-bar post loosened as well. The latter is much harder to adjust without the appropriate tools. The quick-releases are quite easy to tighten, so that's not too bad.&lt;/li&gt;

  &lt;li&gt;There is a wheel magnet that aids in holding the bike together when folded. The magnet sometimes would either fall out or come out when unfolding the bike. Again, this can be remedied by applying superglue.&lt;/li&gt;

  &lt;li&gt;The elastic bands on the back rack lose stretchiness fairly quick. It can be adjusted, but replacements cannot be purchased.&lt;/li&gt;

  &lt;li&gt;It is very hard to mount a water bottle on the bike. But it can be done.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;All said, there is quite a list of great things to say about the bike.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The bike folds very small. It's small enough to fit under my cubicle desk at work.&lt;/li&gt;

  &lt;li&gt;The bike is fairly light. You can carry it on the bus if you'd like. Dahon does have other lighter bikes also.&lt;/li&gt;

  &lt;li&gt;The small wheels allow you to accelerate fairly quickly.&lt;/li&gt;

  &lt;li&gt;The rack on the back of the bike is very handy. (Some models do not come with this. It is a separate accessory.)&lt;/li&gt;

  &lt;li&gt;It is a great conversation starter. You will get a lot of people inquiring about it.&lt;/li&gt;
&lt;/ul&gt;


&lt;br /&gt;


&lt;p&gt;Dahon has a &lt;a href=&quot;http://www.flickr.com/groups/dahonbikes/&quot;&gt;Flickr group&lt;/a&gt; where you can meet other Dahon bike owners and also see various pictures. On their own website, Dahon has a &lt;a href=&quot;http://www.dahon.com/forum/index.php&quot; target=&quot;_blank&quot;&gt;forum&lt;/a&gt; and &lt;a href=&quot;http://www.dahon.com/community/gallery.htm&quot; target=&quot;_blank&quot;&gt;picture gallery&lt;/a&gt; which you can contribute to.&lt;/p&gt;

&lt;p&gt;This is a wonderful bike to start commuting to work and zipping around town. There are special baskets that fit perfectly on the front of the bike for going to a farmer's market. I highly reccommend this bike. If you're looking for something a little lighter, I would take a look at the Mariner. It's essentially the same bike as the Speed D7, but comes with a tire pump built into the seat and is made of Aluminum (making the bike rust-resistant NOT rust-proof!!!)&lt;/p&gt;


&lt;!--more--&gt;


&lt;div style=&quot;center;&quot;&gt;
  &lt;br /&gt;
&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>5 Things That Annoy the Mac Switchers</title>
   <link href="/blog/2008/10/21/5-things-that-annoy-the-mac-switchers/"/>
   <updated>2008-10-21T00:00:00-07:00</updated>
   <id>/blog/2008/10/21/5-things-that-annoy-the-mac-switchers</id>
   <content type="html">&lt;p&gt;Moving to a new OS is never an easy task. You have to get all new applications that are compatible with the new OS. You probably want to transfer all your data from the old one to the new one. And you may even need new hardware if your old one isn't compatible with the new OS (ie. wifi cards, keyboards, webcams, etc.)&lt;/p&gt;

&lt;p&gt;After observing some PC switchers at a local Apple Store,  there are a bunch of things that I noticed bugged the average PC (Windows) user trying to switch to a Mac to no end.&lt;/p&gt;

&lt;ol&gt;
    &lt;li&gt;No &quot;Home, End, Pg Up, Pg Down&quot; buttons. Not sure why this is, but that's the way it was designed for better or worse.&lt;/li&gt;
    &lt;li&gt;No &quot;Delete&quot; button - ok, ok. Technically there is a &quot;Delete&quot; button, but to a Windows user, that translates to &quot;Backspace.&quot;&lt;/li&gt;
    &lt;li&gt;No &quot;Insert&quot; button - I haven't figured this one out myself yet.&lt;/li&gt;
    &lt;li&gt;Tapping the trackpad does nothing! This seemed to be a big one. Especially with the new MacBooks and MacBook Pros. You have to physically press down on the trackpad to click a link in Safari. This seemed to drive some of the users nuts. Go figure.&lt;/li&gt;
    &lt;li&gt;No &quot;Right-Click&quot; button. Simple enough to understand that a PC user is used to having a 2-button trackpad. As soon as the Apple Genius told them that they needed to just press with 2 fingers, the users seemed ok. Though, still confused as to why not just put 2 buttons there.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Of course, these annoyances are easily overcome once the user has gone through the learning curve or a workshop.&lt;/p&gt;

&lt;p&gt;Were you a switcher? What growing pains did you go through?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>5 Easy Ways to Lose Great Designers and Developers</title>
   <link href="/blog/2008/10/02/5-easy-ways-to-lose-great-designers-and-developers/"/>
   <updated>2008-10-02T00:00:00-07:00</updated>
   <id>/blog/2008/10/02/5-easy-ways-to-lose-great-designers-and-developers</id>
   <content type="html">&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;As managers, team leads, project managers, and supervisors, we have a responsibility to those we lead. And most often than not, the reason we lose them is our own fault. It's a very hard realization to learn that you are the problem and not them. That's not to say that there aren't cases where they are the problem. There's plenty of those too. From my past experience as a developer, leader, co-worker, and designer, here are the biggest reasons that I've seen cause either myself or another great person to leave.&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;




&lt;ol&gt;
    &lt;li&gt;&lt;strong&gt;Recognition&lt;/strong&gt;
&lt;p&gt;Not recognizing that the person has done outstanding work is a big turn-off. Especially if you have &lt;em&gt;never&lt;/em&gt; recognized their work. Worse yet, taking credit for their work. Just because the project was a huge hit and you were the Project Manager or Team Lead, does not mean that you don't give credit where credit is due. The person definitely feels betrayed, un-important and unmotivated to perform at a high level.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Loyalty&lt;/strong&gt;
&lt;p&gt;Being loyal to your employees is huge. Sticking up for them definitely makes them feel important. And to put yourself on the line for them will make them go the extra mile to thank you. &lt;a href=&quot;http://www.cs.cmu.edu/~pausch/&quot;&gt;Randy Pausch &lt;/a&gt;touched on this during his &lt;a href=&quot;http://www.cmu.edu/randyslecture/index.shtml&quot;&gt;Last Lecture&lt;/a&gt; and explains it much better than I ever could.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Over-supervision&lt;/strong&gt;
&lt;p&gt;This one is easy. Telling an expert developer/coder how to do their job definitely puts them off. They're already good at their job. Probably better than you. They don't need you to tell them how to write a &quot;for&quot; loop. Don't undermine their intelligence. They may need some encouragement, praise, or rewards.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Passion&lt;/strong&gt;
&lt;p&gt;Don't kill their passion. You can't teach someone to be passionate about something. But you can teach them the right techniques and skills. If they're passionate about doing Web Design, making them write Requirements documentation or putting them on Tech Support duty, which they hate, does not make you look good. No matter how great they are at those. If they can't do what they're passionate about for you, they're going to go do it for someone else who does let them do it. Don't lose a great talent to that. Help them get to where they want to be.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Tools&lt;/strong&gt;
&lt;p&gt;This is perhaps the easiest one of all. Try as hard as possible to give them the tools and resources they need to get the job done. I have had several face-palm moments in regards to this one. Simply because the Lead or Manager doesn't have any experience in the field and believes he or she does. Some examples are:
&lt;ul&gt;
    &lt;li&gt;&amp;bull; Not updating the Designer's software. Using Adobe Photoshop 7 right now seems a bit strange when CS4 has just been announced. And there are plenty of new features that make it a more powerful and valuable tool.&lt;/li&gt;
    &lt;li&gt;&amp;bull; Not giving them the right tools. Oh boy. Someone once told me that I didn't need Adobe Photoshop or Fireworks because Windows comes with MS Paint and that's how they do all their web graphics. Don't do this!&lt;/li&gt;
    &lt;li&gt;&amp;bull; Giving them the wrong tools. Another person who had &quot;built&quot; websites told us to use Dreamweaver to do our websites. Sure that doesn't sound all bad right? Well, it is when we're a .Net shop. Dreamweaver over Visual Studio. Which would you want to use?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;&lt;/p&gt;
&lt;/ol&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;If this all sounds like common sense to you, it's because it is. But sometimes we lose track of common sense and do the wrong things because we're seeing everything from a different point of view.&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;What issues have you run across that have caused you to either leave or become un-motivated because of your leadership team?&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Review: Yahoo! oneConnect for iPhone</title>
   <link href="/blog/2008/09/29/review-yahoo-oneconnect-for-iphone/"/>
   <updated>2008-09-29T00:00:00-07:00</updated>
   <id>/blog/2008/09/29/review-yahoo-oneconnect-for-iphone</id>
   <content type="html">&lt;p&gt;Ever since the iPhone 3G came out, I've been looking for the perfect Twitter iPhone app. I've tried Twitterific, Twinkle, Twittelator,TwitterFon, Twittervision, and Twitxr.&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;Some of them are actually good and have some really interesting features. Such as: attaching pictures to a tweet (Twitxr), GPS location posting and seeing if anyone is near-by (Twinkle), and searching + add to following list (Twittelator).&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;&lt;img class=&quot;hello&quot; src=&quot;http://www.johntwang.com/images/oc_iphone.jpg&quot; alt=&quot;&quot; width=&quot;56&quot; height=&quot;55&quot; /&gt;But all that said, I've found my favorite Twitter app for the iPhone in &lt;a href=&quot;http://mobile.yahoo.com/oneconnect/iphone&quot;&gt;Yahoo's oneConnect&lt;/a&gt;. It's a free app and it has a nice UI that is very user friendly.&lt;/p&gt;




&lt;!--more--&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;Yahoo! oneConnect doesn't currently allow you to search for new people and &quot;follow&quot; them, yet. Nor does it the location-aware features of the iPhone just yet. This is of course, a preview version of the application. So it's still in beta. Then again, just about all of Google is in Beta forever.&lt;/p&gt;


&lt;p style=&quot;center;&quot;&gt;&lt;img class=&quot;aligncenter&quot; src=&quot;http://www.johntwang.com/images/entry.jpg&quot; alt=&quot;The Update Status Screen&quot; width=&quot;320&quot; height=&quot;480&quot; /&gt;&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;It does have some other features which won me over as well. Particularly, it's integration with Flickr. Being able to quickly see any new Flickr uploads of my Flickr friends is just great. I don't have to wonder if anyone posted new pictures.&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;&lt;img class=&quot;aligncenter&quot; src=&quot;http://www.johntwang.com/images/status.jpg&quot; alt=&quot;&quot; width=&quot;320&quot; height=&quot;480&quot; /&gt;&lt;img class=&quot;aligncenter&quot; src=&quot;http://www.johntwang.com/images/photos.jpg&quot; alt=&quot;&quot; width=&quot;320&quot; height=&quot;480&quot; /&gt;&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;oneConnect also ties into Facebook, which is just perfect since I have friends who don't use Twitter, but do use Facebook to update their status, pictures, etc.&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;oneConnect can also tie into your Bebo, Dopplr, Last.fm, MySpace and Youtube. I don't have accounts on those yet, but it's nice to have 1 app for all these.&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;&lt;img class=&quot;aligncenter&quot; src=&quot;http://www.johntwang.com/images/account.jpg&quot; alt=&quot;&quot; width=&quot;320&quot; height=&quot;480&quot; /&gt;&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;Of course there are some cons of oneConnect.
&lt;ol&gt;
    &lt;li&gt; You have to have a Yahoo account. (Accounts are free. And most people have one anyways. Plus, Yahoo has push mail for the iPhone, so why not?)&lt;/li&gt;
    &lt;li&gt; The Contacts tab of the application does not tie into the iPhone's address book. Instead it uses the Yahoo's contacts from your mail account. Albeit this doesn't really bother or impact me at all.&lt;/li&gt;
&lt;/ol&gt;
Not to say this doesn't change. And Yahoo has stated that they are going to be adding in new application tie-ins also.&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;Here's the &lt;a href=&quot;http://us.lrd.yahoo.com/_ylt=Apa9VtDQeLW8i4TbY9aixL0DtgcJ;_ylv=0/SIG=12ph6c28o/**http%3A//phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware%3Fid=281970154%26mt=8&quot;&gt;phobos (iTunes) link&lt;/a&gt; to download the app.&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;So, what's your favorite Twitter iPhone app? Why?&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Great Free Tools for the Web Designer on the Cheap</title>
   <link href="/blog/2008/09/25/great-free-tools-for-the-web-designer-on-the-cheap/"/>
   <updated>2008-09-25T00:00:00-07:00</updated>
   <id>/blog/2008/09/25/great-free-tools-for-the-web-designer-on-the-cheap</id>
   <content type="html">&lt;p&gt;There are some wonderful and useful free tools available for Web Designers and Developers. Here's a small taste of some.&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;The Google Suite: Google has created an entire set of tools for free.&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://docs.google.com&quot;&gt;Google Docs&lt;/a&gt; - A great replacement or addition to Microsoft Office or an alternative to OpenOffice.&lt;/p&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.grandcentral.com&quot;&gt;GrandCentral&lt;/a&gt; - This is great for freelancers abound. The greatest feature for them is the ability to automatically send calls to voicemail during specific time periods. It helps a lot when you have clients in different timezones and you're trying to sleep.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.google.com/analytics/&quot;&gt;Google Analytics&lt;/a&gt; - A great way to see statistics on your websites.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.google.com/webmasters&quot;&gt;Google Webmaster Central&lt;/a&gt; - Another way to see statistics and errors on your websites.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://appengine.google.com/&quot;&gt;Google App Engine&lt;/a&gt; - Although you're currently limited to 3 applications, it's a free way to play or host your Python projects on Google's servers.&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.skype.com&quot;&gt;Skype&lt;/a&gt; - Free internet calling, also available on the Sony PSP for those who actually own a PSP mic. Supposedly, they are considering an iPhone application.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.evernote.com&quot;&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.evernote.com&quot;&gt;Evernote&lt;/a&gt; - a wonderful tool for taking screenshots, pictures, notes and having them synchronize to all your computers and even the free iPhone application. Definitely handy for having your notes everywhere.&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.rememberthemilk.com&quot;&gt;Remember the Milk&lt;/a&gt; - A wonderful to-do list application. Also has a mobile version with a 15-day trial. You need to sign up for their Pro services to continue use of it afterwards.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.tadalist.com&quot;&gt;Tada List&lt;/a&gt; - Another great to-do list written with Ruby on Rails.&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://notepad-plus.sourceforge.net/&quot;&gt;Notepad++&lt;/a&gt; - A super-powered version of Notepad. Has a massive plug-ins community base.&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;What tools do you use? What did I miss? Any suggestions for alternatives?&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>The Web and the Sensory System. Where is the Web Going?</title>
   <link href="/blog/2008/09/24/the-web-and-the-sensory-system-where-is-the-web-going/"/>
   <updated>2008-09-24T00:00:00-07:00</updated>
   <id>/blog/2008/09/24/the-web-and-the-sensory-system-where-is-the-web-going</id>
   <content type="html">&lt;h3&gt;Sight&lt;/h3&gt;

&lt;p&gt;Web Interaction started out purely visual, obviously being the sense of Sight. This still is and will remain the most compelling and important aspect of the web. Where is Sight going? It's staying put on your monitors, but also going mobile. The iPhone has recently obtained 0.87% of the web browser market. This is without having &lt;em&gt;any&lt;/em&gt; Flash support. With the newly announced Google Android phone, &lt;a href=&quot;http://www.t-mobileg1.com/g1-announcement.aspx&quot;&gt;T-Mobile's G-1&lt;/a&gt;, along with RIM's Blackberries getting better support, the web is sure to be going mobile.&lt;/p&gt;

&lt;h3&gt;Hearing&lt;/h3&gt;

&lt;p&gt;Sound interaction of web design started well over 10 years ago with embedded midi and wav files. The main use was background music for users while browsing websites. At the time, this was very innovated, though very annoying when there was no option to turn off the background music. Now, the use of Mp3s are primarily used on musician websites to showcase their latest records, songs, or promote purchases. Sound effects are also present in just about every single Motion Picture website out there. Primarily embedded in Flash for user interaction of opening doors, drawers, or anything else Flash designers can think of. Where is Sound going? It may go mobile, it may not. It all depends on how well Flash mobile gets adopted, if at all. The large bandwidth required is a limitation that cell phone companies don't really want in their cell network. Remember, it's &quot;unlimited&quot; data, which isn't really &quot;unlimited.&quot; Sound will not disappear, as it's the main way for bands, musicians and the like to showcase their hard work.&lt;/p&gt;

&lt;h3&gt;Touch&lt;/h3&gt;

&lt;p&gt;&lt;img title=&quot;adobe&quot; src=&quot;http://www.johntwang.com/images/touch-adobe.png&quot; alt=&quot;Photoshop Multi-Touch&quot; width=&quot;355&quot; height=&quot;103&quot; class=&quot;hello&quot; /&gt;Welcome to the new world. Since Apple's introduction of the iPhone, the mobile and touch interaction has taken the world by storm. And Apple isn't the only one pushing Touch. Microsoft has their &lt;a href=&quot;http://www.microsoft.com/surface/index.html&quot;&gt;Surface&lt;/a&gt; interface technology out and showcasing in some exclusive locations. Let's not forget HP just recently released their &lt;a href=&quot;http://www.hp.com/united-states/campaigns/touchsmart/&quot;&gt;TouchSmart PC&lt;/a&gt;. Touch is also one of the most touted features of the new Windows 7 Operating System set to debut Summer of next year. Adobe has also hinted at the rise of the Touch generation in a slightly hidden new feature of their newly announced Photoshop CS4. The feature is currently Mac specific as Windows does not support Multi-touch. Where is Touch going? It's coming and coming strong. It'll be interesting to see how Adobe moves forward with Flash for touch and also how web designers and developers are going to create websites for the future.&lt;/p&gt;

&lt;h3&gt;Taste and Smell&lt;/h3&gt;

&lt;p&gt;Taste and smell aren't here. And it's going to be a scary world if and when they do come.&lt;/p&gt;

&lt;p&gt;Where do you all see the Web going forward?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Adobe's CS4 Event</title>
   <link href="/blog/2008/09/23/adobes-cs4-event/"/>
   <updated>2008-09-23T00:00:00-07:00</updated>
   <id>/blog/2008/09/23/adobes-cs4-event</id>
   <content type="html">&lt;p&gt;Today, Adobe held their web broadcast announcing the 4th version of their Creative Suite. It was an hour long session and definitely did not cover a lot of the new features and changes.&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;Gizmodo has already written up a &lt;a href=&quot;http://gizmodo.com/5053419/adobe-creative-suite-4-massive-upgrade-including-new-photoshop-premiere-and-more&quot;&gt;brief summary&lt;/a&gt; listing PDFs of &quot;What's New&quot; for each application along with the Press Release from Adobe.&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://vectips.com/tips/illustrator-cs4-announcment-round-up/&quot;&gt;VectorTips&lt;/a&gt; and &lt;a href=&quot;http://www.gomediazine.com/design-tip/product-tip-review/adobe-illustrator-cs4-preview/&quot;&gt;GoMediaZine&lt;/a&gt; have taken a quick round-up of the new features of Illustrator.&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;Some things to note, a slightly cheaper version of the Web Design Suite (&lt;a href=&quot;http://www.adobe.com/products/creativesuite/webstandard/&quot;&gt;Web Standard&lt;/a&gt;) is available, which does not include Adobe's Photoshop. It's basically Macromedia's old suite of Dreamweaver + Fireworks. Similarly, there's also a &lt;a href=&quot;http://www.adobe.com/products/creativesuite/designstandard/&quot;&gt;Design Standard edition&lt;/a&gt;, which loses Dreamweaver, Fireworks and Flash, along with the &quot;Extended&quot; version of Photoshop.&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;




&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;aligncenter&quot; title=&quot;Dreamweaver New Interface&quot; src=&quot;http://www.johntwang.com/images/d-ui.jpg&quot; alt=&quot;&quot; width=&quot;591&quot; height=&quot;294&quot; /&gt;&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;Dreamweaver has gotten a new user interface (as have all of the applications.) More importantly, it has now gained support for &lt;a href=&quot;http://subversion.tigris.org/&quot;&gt;Subversion&lt;/a&gt;. Definitely something useful for developers on the cheap.&lt;/p&gt;


&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;aligncenter&quot; title=&quot;Subversion Support&quot; src=&quot;http://www.johntwang.com/images/subversion.JPG&quot; alt=&quot;&quot; width=&quot;380&quot; height=&quot;105&quot; /&gt;&lt;/p&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p style=&quot;text-align: left;&quot;&gt;Other nice things that were added:&lt;/p&gt;




&lt;ul&gt;
    &lt;li&gt;Live View - Integrated browser-like viewing mode for testing out interaction.&lt;/li&gt;
    &lt;li&gt;Code Navigator - Live code highlighting during interactions to see what code is getting executed.&lt;/li&gt;
    &lt;li&gt;Javascript framework support for JQuery.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p style=&quot;text-align: left;&quot;&gt;Some things that I would have liked to see:&lt;/p&gt;




&lt;ul&gt;
    &lt;li&gt;Some API support for MoveableType, TypePad and/or WordPress.&lt;/li&gt;
    &lt;li&gt;Support for Application Platforms like Google App Engine, Amazon's S3.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;That said, it seems as though Dreamweaver will remain the standard solution for most PHP, ColdFusion, and XHTML/HMTL designers/developers. Pre-ordering is available through &lt;a href=&quot;http://www.amazon.com/b/ref=amb_link_7541242_2?ie=UTF8&amp;amp;node=341028011&amp;amp;pf_rd_m=ATVPDKIKX0DER&amp;amp;pf_rd_s=top-1&amp;amp;pf_rd_r=0WQMCD4SH8RCNHXR9WPS&amp;amp;pf_rd_t=301&amp;amp;pf_rd_p=440783601&amp;amp;pf_rd_i=cs4&quot;&gt;Amazon.com&lt;/a&gt; with an estimated release date of November 14th. Though, the Press Release states late October.&lt;/p&gt;

</content>
 </entry>
 
 
</feed>
