<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Hot Koehl &#187; For techies</title>
	<atom:link href="http://frankkoehl.com/category/for-techies/feed/" rel="self" type="application/rss+xml" />
	<link>http://frankkoehl.com</link>
	<description>The more you know, the more you don't know</description>
	<lastBuildDate>Fri, 06 Aug 2010 19:49:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Require site visitors to enable Javascript</title>
		<link>http://frankkoehl.com/2010/04/require-site-visitors-to-enable-javascript/</link>
		<comments>http://frankkoehl.com/2010/04/require-site-visitors-to-enable-javascript/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 17:05:56 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[For techies]]></category>

		<guid isPermaLink="false">http://frankkoehl.com/?p=1231</guid>
		<description><![CDATA[This one has dogged me for quite some time, but I finally figured out how to force users to turn on Javascript when using sites with a lot of mission critical Javascript logic. Let me first begin by acknowledging that, yes, requiring Javascript flies in the face of site accessibility. Policy wonks for this sort [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffrankkoehl.com%2F2010%2F04%2Frequire-site-visitors-to-enable-javascript%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffrankkoehl.com%2F2010%2F04%2Frequire-site-visitors-to-enable-javascript%2F&amp;source=fwdvault&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>This one has dogged me for quite some time, but I finally figured out how to force users to turn on Javascript when using sites with a lot of mission critical Javascript logic.</p>
<p>Let me first begin by acknowledging that, yes, requiring Javascript flies in the face of site accessibility. Policy wonks for this sort of thing will tell you that Javascript should never be a necessity, that a page should &#8220;degrade gracefully&#8221; when Javascript isn&#8217;t enabled. This mindset is complete crap, in my opinion. Every site has a minimum browser requirement, and Javascript is built into every modern browser. I fail to see why we are still separating the two, and can make a darn good case for expecting Javascript on the user&#8217;s end. But that argument&#8217;s for another day. If you agree with me, read on.</p>
<p><strong>The example</strong><br />
This example assumes you understand HTML, CSS, and Javascript, and makes use of <a href="http://jquery.com">jQuery</a>, so you may have to adapt it to fit your Javascript framework of choice.</p>
<p>This technique could be applied across the board to an entire site, but let&#8217;s start with a single page. A login or account registration is a great choice, since they are already gateway pages to your site. Start by adding the following CSS definition to your page or stylesheet:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">.enable-javascript<span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span><span style="color: #993333;">none</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Next, open the HTML for your page and add the <code>enable-javascript</code> CSS class to the top level container containing the <strong>body</strong> of your page. You should try to leave the header and footer (and their accompanying navigation links) visible and accessible. For example, after my header DIV, the body of my pages are typically wrapped in something like this:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;div id=&quot;content&quot; class=&quot;enable-javascript&quot;&gt;
  [...]
  &lt;div class=&quot;base&quot;&gt;&lt;/div&gt;
&lt;/div&gt;</pre></div></div>

<p>At this point, you&#8217;re looking at a blank page. Now let&#8217;s give our non-JS users something to look at. Place a <a href="http://www.w3schools.com/tags/tag_noscript.asp"><code>&lt;noscript&gt;</code></a> code block <strong>outside</strong> and <strong>above</strong> the body that you just hid. You can use CSS and elaborate HTML inside a <code>&lt;noscript&gt;</code> block, so feel free to make it look good. I actually duplicate my body wrap HTML so the look is similar:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;noscript&gt;
  &lt;div id=&quot;content&quot; class=&quot;enable-javascript&quot;&gt;
    Javascript is not currently enabled in your browser. &lt;a href=&quot;http://www.google.com/support/bin/answer.py?answer=23852&quot;&gt;You must enable Javascript&lt;/a&gt; in order for this site to work properly.
    &lt;div class=&quot;base&quot;&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/noscript&gt;</pre></div></div>

<p>Finally, make sure the jQuery library is loaded, and add this bit of code to the Javascript for your page:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.enable-javascript'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">show</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><strong>What&#8217;s happening</strong><br />
We&#8217;re using the <strong>absence</strong> of Javascript to halt the user&#8217;s access to a page. By default, page content is hidden via CSS, and we use Javascript to reveal it. If the user&#8217;s browser does not have Javascript enabled, the reveal never happens. Visibility for the <code>&lt;noscript&gt;</code> block is handled automatically by the browser, depending on whether Javascript is running or not.</p>
<p><strong>A live example</strong><br />
I&#8217;m using this technique on the <a href="https://fwdvault.com/signin">Fwd:Vault login page</a>. In order to see it in action, you obviously have to disable Javascript. You can use the <a href="http://www.google.com/support/bin/answer.py?answer=23852">Google support link to turn Javascript on</a>, and Firefox users can use the <a href="https://addons.mozilla.org/en-US/firefox/addon/60">Web Developer toolbar add-on</a> to do this a little more efficiently.</p>
<p><strong>A couple caveats</strong><br />
Javascript is a client-side language; it actually lives inside the user&#8217;s browser, and runs from the user&#8217;s machine. Javascript code essentially tells the browser to manipulate the static HTML of the page, and the server isn&#8217;t involved in the process at all (AJAX is something of an exception). This means that there is absolutely no way for us to look for Javascript on the server side using PHP or other server-side technologies.</p>
<p>In addition, since Javascript control is firmly in the hands of the user, you cannot trust Javascript for security. Your average user will be stopped dead with this technique, but hackers and code monkeys can easily circumvent it. This is the case with all Javascript effects, and all have the same countermeasure: scrub all incoming data regardless of Javascript rules enforcement.</p>
<p>Feel free to post comments or questions, and please link your own examples if you put this technique to use!</p>
<p><a href="http://frankkoehl.com/?ibsa=share&id=1231" id="share-link-">Share</a></p>]]></content:encoded>
			<wfw:commentRss>http://frankkoehl.com/2010/04/require-site-visitors-to-enable-javascript/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Building a complex system? Take easy steps.</title>
		<link>http://frankkoehl.com/2010/03/building-complex-system-take-easy-steps/</link>
		<comments>http://frankkoehl.com/2010/03/building-complex-system-take-easy-steps/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 20:28:08 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[For techies]]></category>
		<category><![CDATA[coding theory]]></category>
		<category><![CDATA[crappy coding]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[standards]]></category>

		<guid isPermaLink="false">http://frankkoehl.com/?p=1192</guid>
		<description><![CDATA[After launching Fwd:Vault last month, it&#8217;s been a race to add the necessary features and functions to take the service broader. First on the list was more subscription tiers. I launched with just two: free and &#8220;unlimited everything.&#8221; I did this because, well, it was easy. Your instinct may be to dismiss my decision as [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffrankkoehl.com%2F2010%2F03%2Fbuilding-complex-system-take-easy-steps%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffrankkoehl.com%2F2010%2F03%2Fbuilding-complex-system-take-easy-steps%2F&amp;source=fwdvault&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>After <a href="http://frankkoehl.com/2010/02/celebrate-the-little-victories">launching Fwd:Vault last month</a>, it&#8217;s been a race to add the necessary features and functions to take the service broader. First on the list was more subscription tiers. I launched with just two: free and &#8220;unlimited everything.&#8221; I did this because, well, it was easy.</p>
<p>Your instinct may be to dismiss my decision as laziness, but hear me out. I built most of the base site with just 1 state: free (remember that unlimited free beta period last year?). That allowed me to &mdash; rightly &mdash; focus purely on features, functions, bugs, etc. Dealing with subscription tiers at the same time would have clouded everything, slowing everything down and likely leading to more rewriting. Staying focused allowed me to get the cornerstone stuff right before building on top of it. </p>
<p>I applied the same thought process when it came time to offer paid options. The game plan has always been to have three paid options, plus the free account. However instead of initially coding four possible user states, I started with just two: free or paid.</p>
<p>This makes my job as a developer much more focused. There&#8217;s a LOT of logic in a service like Fwd:Vault focused explicitly on subscriptions: access permissions, showing/hiding upgrade options, setting quota restrictions, security checks to prevent hackarounds from unscrupulous users. The functionality of almost every page is affected by the user&#8217;s free/paying status, and don&#8217;t even get me started on the work it takes to process credit cards. You have to be <del>doubly</del> triply careful when dealing with people&#8217;s personal data like that. On and on. Getting the basics in place takes a lot of forethought and coding.</p>
<p>So instead of thinking about all this stuff in four dimensions &mdash; free, option 1, option 2, option 3 &mdash; I can cover most everything in just two &mdash; free or paid &mdash; and then come back later to fill in the holes for the other tiers.</p>
<p>Complexity is your enemy as a developer. Each task must be as tightly focused as possible. The tighter your focus, the less chance you&#8217;ll have to introduce bugs. Adding more later may require rewrites, but they are far far easier than rewriting the big sloppy mess you get when biting off more than you can chew.</p>
<p>With the basic subscription and tier logic in place, it&#8217;s a far simpler matter to expand the options out to infinity (though we&#8217;ll start with four). Expect to see the new pricing options in a few weeks.</p>
<p>Looking for more to read? There&#8217;s a new post on the Fwd:Vault Blog that details the <a href="http://blog.fwdvault.com/2010/03/always-forgetting-to-defrag-use-your-screensaver/">most unobtrusive disk defragmenting process</a> I&#8217;ve seen (that I also use for my own systems).</p>
<p><a href="http://frankkoehl.com/?ibsa=share&id=1192" id="share-link-">Share</a></p>]]></content:encoded>
			<wfw:commentRss>http://frankkoehl.com/2010/03/building-complex-system-take-easy-steps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Toyota&#8217;s new logo</title>
		<link>http://frankkoehl.com/2010/03/toyotas-new-logo/</link>
		<comments>http://frankkoehl.com/2010/03/toyotas-new-logo/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 21:03:12 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[For entrepreneurs]]></category>
		<category><![CDATA[For everyone]]></category>
		<category><![CDATA[For techies]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[usability fail]]></category>

		<guid isPermaLink="false">http://frankkoehl.com/?p=1183</guid>
		<description><![CDATA[I hear Toyota is contemplating a quick makeover to their current logo and tagline&#8230; Wish I could take credit for it, but at least it comes complements of fellow PSL member Eight Eleven. Update: I complimented the author Aaron, and the following conversation ensued&#8230; Aaron: I&#8217;m going to end up in a lawsuit with Toyota [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffrankkoehl.com%2F2010%2F03%2Ftoyotas-new-logo%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffrankkoehl.com%2F2010%2F03%2Ftoyotas-new-logo%2F&amp;source=fwdvault&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>I hear Toyota is contemplating a quick makeover to their current logo and tagline&#8230;</p>
<p><a href="http://twitpic.com/17ye23"><img src="http://frankkoehl.com/wp-content/uploads/toyota_logo.jpg" alt="moving forward unexpectedly" title="Toyota logo" width="336" height="114" class="alignnone size-full wp-image-1184" /></a></p>
<p>Wish I could take credit for it, but at least it comes complements of fellow <a href="http://phillystartupleaders.org/">PSL</a> member <a href="http://twitter.com/eighteleveninc">Eight Eleven</a>.</p>
<p><strong>Update:</strong> I complimented the author Aaron, and the following conversation ensued&#8230;</p>
<blockquote><p><strong>Aaron:</strong><br />
I&#8217;m going to end up in a lawsuit with Toyota for sure on this one.</p>
<p><strong>Frank:</strong><br />
As a design firm, what a boon for business THAT would be!</p>
<p><strong>Aaron:</strong><br />
Yeah, I can see the headlines already: &#8220;Japanese automaker Toyota files lawsuit against New Jersey based Advertising and Marketing Agency, Eight Eleven Inc., then mid-suit, hires them to execute a new branding campaign.&#8221;
</p></blockquote>
<p>Fantastic.</p>
<p><a href="http://frankkoehl.com/?ibsa=share&id=1183" id="share-link-">Share</a></p>]]></content:encoded>
			<wfw:commentRss>http://frankkoehl.com/2010/03/toyotas-new-logo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Running the show: A day in the life</title>
		<link>http://frankkoehl.com/2010/02/running-the-show-a-day-in-the-life/</link>
		<comments>http://frankkoehl.com/2010/02/running-the-show-a-day-in-the-life/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 21:03:46 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[For entrepreneurs]]></category>
		<category><![CDATA[For everyone]]></category>
		<category><![CDATA[For techies]]></category>
		<category><![CDATA[Academia]]></category>
		<category><![CDATA[business support]]></category>
		<category><![CDATA[customer service]]></category>
		<category><![CDATA[entrepreneur]]></category>

		<guid isPermaLink="false">http://frankkoehl.com/?p=1167</guid>
		<description><![CDATA[We all know most TV is pretty banal, but every now and then something comes along that provides insight, makes you think. So if you ever wondered what it&#8217;s really like to be the boss, you need to watch the latest episode of House. They&#8217;ve done an excellent job (based on my experience, anyway) capturing [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffrankkoehl.com%2F2010%2F02%2Frunning-the-show-a-day-in-the-life%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffrankkoehl.com%2F2010%2F02%2Frunning-the-show-a-day-in-the-life%2F&amp;source=fwdvault&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>We all know most TV is pretty banal, but every now and then something comes along that provides insight, makes you think. So if you ever wondered what it&#8217;s <strong>really</strong> like to be the boss, you need to watch the latest episode of House. They&#8217;ve done an excellent job (based on my experience, anyway) capturing the reality of being in charge. Everyone looks to you to fix problems they can&#8217;t handle, and everything that goes wrong is ultimately your fault. It also gets really lonely at times. If you&#8217;re one of those people who think that the boss just sits at his/her desk and collects a big paycheck, this is a must-see.</p>
<p>The show&#8217;s writers and producers get extra bonus points from me for taking on the issue of healthcare, and having the stones to come right and say, &#8220;This is a business, and we need to make money.&#8221; They even couch the message in a scenario that most people should be able to appreciate from both sides. Very timely given all the discourse surrounding healthcare reform.</p>
<p>44 minutes, well worth it.</p>
<p><object width="512" height="296 "><param name="movie" value="http://www.hulu.com/embed/C9j6xa2eBAuhqoD0k_syPw"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.hulu.com/embed/C9j6xa2eBAuhqoD0k_syPw" type="application/x-shockwave-flash" allowFullScreen="true"  width="512" height="296"></embed></object></p>
<p><a href="http://frankkoehl.com/?ibsa=share&id=1167" id="share-link-">Share</a></p>]]></content:encoded>
			<wfw:commentRss>http://frankkoehl.com/2010/02/running-the-show-a-day-in-the-life/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Preventing Firefox memory, processor bloat</title>
		<link>http://frankkoehl.com/2010/02/preventing-firefox-memory-processor-bloat/</link>
		<comments>http://frankkoehl.com/2010/02/preventing-firefox-memory-processor-bloat/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 20:03:13 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[For techies]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[desktop tips]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://frankkoehl.com/?p=1159</guid>
		<description><![CDATA[If you&#8217;ve read this blog before, you know I&#8217;m a big Firefox fan. But the one problem that has dogged me is the inevitable bloat that Firefox suffers when open for long periods of time. I work in my browser all day, and after 8 hours it has usually gobbled up all the available RAM, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffrankkoehl.com%2F2010%2F02%2Fpreventing-firefox-memory-processor-bloat%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffrankkoehl.com%2F2010%2F02%2Fpreventing-firefox-memory-processor-bloat%2F&amp;source=fwdvault&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>If you&#8217;ve read this blog before, you know I&#8217;m a big Firefox fan. But the one problem that has dogged me is the inevitable bloat that Firefox suffers when open for long periods of time. I work in my browser all day, and after 8 hours it has usually gobbled up all the available RAM, and sucks processor cycles like a Dyson. Fortunately I&#8217;ve finally pinpointed the cause and several solutions.</p>
<p>Let&#8217;s start at the source. The Firefox team made a crucial usability decision, which is at the heart of the problem. They wanted to allow the user to recover any page that may have recently opened. So by default, Firefox keeps navigation history for all your open tabs, plus the last 10 tabs that you closed. The navigation history for each of those tabs &mdash; both open and closed &mdash; can hold up to a maximum of 50 pages (i.e. the number of URLs you can traverse purely through the Back/Forward buttons)</p>
<p>With no limit to the number of open tabs, plus the high limit on the Back/Forward navigation, it&#8217;s easy to see why Firefox slows to a crawl. If you do a lot of browsing in a lot of tabs, your memory disappears in a hurry. Managing all that extra memory causes the processor to work overtime to keep Fire<del>fox</del> hippo moving.</p>
<p>There are two ways to fix this issue in a pinch. First you can simply restart the browser, making sure that it doesn&#8217;t save your tabs (you are prompted to save tabs at close by default). Second, you can clear the Recently Closed Tabs to eliminate a portion of the tab history bloat (History > Recently Closed Tabs > Clear Closed Tabs List).</p>
<p>For a more long-term solution, we need to mess with the system settings. Type <code>about:config</code> in the address bar to bring up Firefox&#8217;s complete configurations list. The latest Firefox versions present you with a warning before opening the page.</p>
<p>A warning: this page handles everything in your browser. Everything. Don&#8217;t mess with stuff if you don&#8217;t know what you&#8217;re doing.</p>
<p>In the &#8220;Filter&#8221; textbox at the top, enter </p>
<pre>browser.sessionstore.max_tabs_undo</pre>
<p>This setting controls how many closed tabs to track. Less old tabs =  less memory usage. Double click the lone entry in the list and change the value from &#8220;10&#8243; to &#8220;5.&#8221;</p>
<p>Back to the filter box, enter </p>
<pre>browser.sessionhistory.max_entries</pre>
<p>This setting controls the navigation history limit. Double click the entry and drop the value from &#8220;50&#8243; down to &#8220;25&#8243;.</p>
<p>Close the <code>about:config</code> tab and restart your browser.</p>
<p>Your mileage on these tweaks will vary depending on your system specs. If you can go a day of heavy browsing without hitting the creep, slowly increment the settings back up, until you hit the sweet spot.</p>
<p><a href="http://frankkoehl.com/?ibsa=share&id=1159" id="share-link-">Share</a></p>]]></content:encoded>
			<wfw:commentRss>http://frankkoehl.com/2010/02/preventing-firefox-memory-processor-bloat/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>iPad Flash decision: bad blast from the past</title>
		<link>http://frankkoehl.com/2010/02/ipad-flash-decision-bad-blast-from-the-past/</link>
		<comments>http://frankkoehl.com/2010/02/ipad-flash-decision-bad-blast-from-the-past/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 16:12:35 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[For techies]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[usability fail]]></category>

		<guid isPermaLink="false">http://frankkoehl.com/?p=1153</guid>
		<description><![CDATA[Reviews for Apple&#8217;s iPad are all over the place. Personally, I feel that tablets have tried and failed enough times in the general consumer market to call the concept dead. iPad will likely find adoption in the same niche&#8217;s as its predecessors: hospitals and other similar venues where it can effectively replace a manilla folder [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffrankkoehl.com%2F2010%2F02%2Fipad-flash-decision-bad-blast-from-the-past%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffrankkoehl.com%2F2010%2F02%2Fipad-flash-decision-bad-blast-from-the-past%2F&amp;source=fwdvault&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Reviews for Apple&#8217;s iPad are all over the place. Personally, I feel that tablets have tried and failed enough times in the general consumer market to call the concept dead. iPad will likely find adoption in the same niche&#8217;s as its predecessors: hospitals and other similar venues where it can effectively replace a manilla folder of documents.</p>
<p>Instead, I find the lack of Flash support more interesting to consider. This seems like a terrible omission for a device that Jobs touts as &#8220;<a href="http://www.youtube.com/watch?v=OBhYxj2SvRI">the best browsing experience you&#8217;ve ever had</a>&#8221; (around 3:10). I don&#8217;t know about you, but <strong>*my*</strong> browsing experience would be far less than perfect without access to the de facto standard video streaming technology.</p>
<p>The decision was apparently made due to <a href="http://www.macrumors.com/2010/01/31/steve-jobs-at-apple-town-hall-meeting-google-adobe-next-iphone-2010-macs-and-more">compatibility problems</a>&#8230;</p>
<blockquote><p>Apple does not support Flash because it is so buggy. Whenever a Mac crashes more often than not it&#8217;s because of Flash. No one will be using Flash. The world is moving to HTML5.</p></blockquote>
<p>That may be where the web world is headed, but the iPad is entering a market nowhere near that reality. This just screams classic Apple mindset. They may share the mantra &#8220;Everyone else&#8217;s stuff is crap&#8221; with Microsoft, but Apple tacks the phrase &#8220;and that&#8217;s why you can&#8217;t use it,&#8221; onto the end.</p>
<p>I thought that Apple had figured out the market, how to balance a closed platform in order to maintain stability and skyrocket profitability. The Flash decision definitely throws that balance off kilter, and now I&#8217;m curious to see if they&#8217;ll fall back into the decision-making style of the PC wars in the late 80&#8242;s and early 90&#8242;s (Note to the kiddies: Mac wasn&#8217;t always &#8220;cool.&#8221; They lost a lot of weight and their acne cleared up just as you entered buying age).</p>
<p>They can get away with dictatorial control over platforms like the iPod and iPhone because they are very focused devices. However iPad is a closer technical cousin to the laptop than the smartphone, and the last few years of App Store and iTunes revenue may be skewing their vision on this one.</p>
<p>My gut tells me they are using iPad to push public perception away from Flash and toward HTML5. There&#8217;s no way they&#8217;ll make such a play on the Mac platform, but the iPad offers very controlled environment to test the waters. If people (continue to) complain, they&#8217;ll publish the iPad Flash patch that they&#8217;ve already got sitting on the shelf. Trust me, it&#8217;s there.</p>
<p><strong>Update:</strong> This image sums up the problem for me quite nicely.<br />
<a href="http://www.blameitonthevoices.com/2010/02/ipad-vs-notebook.html"><img src="http://frankkoehl.com/wp-content/uploads/ipad_vs_notebook.jpg" alt="ipad vs netbook bullet list" title="ipad vs notebook" width="400" height="692" class="alignnone size-full wp-image-1164" /></a></p>
<p><a href="http://frankkoehl.com/?ibsa=share&id=1153" id="share-link-">Share</a></p>]]></content:encoded>
			<wfw:commentRss>http://frankkoehl.com/2010/02/ipad-flash-decision-bad-blast-from-the-past/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>If you haven&#8217;t checked out Fwd:Vault yet&#8230;</title>
		<link>http://frankkoehl.com/2010/02/if-you-havent-checked-out-fwdvault-yet/</link>
		<comments>http://frankkoehl.com/2010/02/if-you-havent-checked-out-fwdvault-yet/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 16:39:32 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[For entrepreneurs]]></category>
		<category><![CDATA[For everyone]]></category>
		<category><![CDATA[For techies]]></category>
		<category><![CDATA[fwdvault]]></category>

		<guid isPermaLink="false">http://frankkoehl.com/?p=1143</guid>
		<description><![CDATA[&#8230;I suggest you do so immediately. We&#8217;ll have a major announcement by the end of the day, and the perks that come with signing up beforehand will go away at that time. Basically this is your last chance to get into the Fwd:Vault Beta, and enjoy the perks we have planned for our beloved early [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffrankkoehl.com%2F2010%2F02%2Fif-you-havent-checked-out-fwdvault-yet%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffrankkoehl.com%2F2010%2F02%2Fif-you-havent-checked-out-fwdvault-yet%2F&amp;source=fwdvault&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>&#8230;I suggest you <a href="https://fwdvault.com/">do so immediately</a>. We&#8217;ll have a major announcement by the end of the day, and the perks that come with signing up beforehand will go away at that time. Basically this is your last chance to get into the Fwd:Vault Beta, and enjoy the perks we have planned for our beloved early adopters. </p>
<p>Not-so-subtle hint: Beta users will have the chance to enjoy a serious <strong>lifetime</strong> discount.</p>
<p><a href="http://frankkoehl.com/?ibsa=share&id=1143" id="share-link-">Share</a></p>]]></content:encoded>
			<wfw:commentRss>http://frankkoehl.com/2010/02/if-you-havent-checked-out-fwdvault-yet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>For fun: &#8220;Invisible cursor&#8221; game</title>
		<link>http://frankkoehl.com/2010/01/for-fun-invisible-cursor-game/</link>
		<comments>http://frankkoehl.com/2010/01/for-fun-invisible-cursor-game/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 23:07:47 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[For techies]]></category>
		<category><![CDATA[for fun]]></category>
		<category><![CDATA[gaming]]></category>

		<guid isPermaLink="false">http://frankkoehl.com/?p=1140</guid>
		<description><![CDATA[I typically hate the random flash games that go around the web, but I stumbled on one today that&#8217;s actually pretty fun, if only because of the mechanic at work. It&#8217;s called Invisible Cursor. The game randomly spawns targets for you to click, but you can&#8217;t see the mouse cursor, forcing you to &#8220;feel&#8221; your [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffrankkoehl.com%2F2010%2F01%2Ffor-fun-invisible-cursor-game%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffrankkoehl.com%2F2010%2F01%2Ffor-fun-invisible-cursor-game%2F&amp;source=fwdvault&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>I typically hate the random flash games that go around the web, but I stumbled on one today that&#8217;s actually pretty fun, if only because of the mechanic at work. It&#8217;s called <a href="http://addictordie.com/games/cursorinvisible.php?fullscreen=1">Invisible Cursor</a>.</p>
<p>The game randomly spawns targets for you to click, but you can&#8217;t see the mouse cursor, forcing you to &#8220;feel&#8221; your way to each target. You do get a quick highlight of the cursor location each time you click, but it&#8217;s really brief and is accompanied by a screen flash and the target shattering. Oh and you only have a few seconds to shoot your next target.</p>
<p>It&#8217;s got all the depth of most web games (i.e. none), but the effect of trying to hit targets without seeing your cursor is very similar to playing a first person shooter. Lots of motion on the screen and you need to be accurate, thus demanding fast response times and a lot of eye-hand coordination. If you suck a sniping, I suggest you play this for a while to improve your aiming skills.</p>
<p>My top score right now is <del datetime="2010-02-03T13:48:03+00:00">164</del> 408. Feel free to brag in the comments if you beat me.</p>
<p><a href="http://frankkoehl.com/?ibsa=share&id=1140" id="share-link-">Share</a></p>]]></content:encoded>
			<wfw:commentRss>http://frankkoehl.com/2010/01/for-fun-invisible-cursor-game/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Reminder Fwd:Vault Fishbowl tonight!</title>
		<link>http://frankkoehl.com/2010/01/reminder-fwdvault-fishbowl-tonight/</link>
		<comments>http://frankkoehl.com/2010/01/reminder-fwdvault-fishbowl-tonight/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 19:08:41 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[For entrepreneurs]]></category>
		<category><![CDATA[For everyone]]></category>
		<category><![CDATA[For techies]]></category>

		<guid isPermaLink="false">http://frankkoehl.com/?p=1120</guid>
		<description><![CDATA[If you still don&#8217;t have any plans this evening and will be in the downtown Philadelphia area, you&#8217;re welcome to come out and meet me at the Philly Startup Leaders next Fishbowl event. We&#8217;ll be having a roundtable discussion of sales and marketing, with Fwd:Vault as the focus. Totally free to attend, light refreshments and [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffrankkoehl.com%2F2010%2F01%2Freminder-fwdvault-fishbowl-tonight%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffrankkoehl.com%2F2010%2F01%2Freminder-fwdvault-fishbowl-tonight%2F&amp;source=fwdvault&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>If you still don&#8217;t have any plans this evening and will be in the downtown Philadelphia area, you&#8217;re welcome to come out and meet me at the <a href="http://phillystartupleaders.org/news/september-psl-fishbowl-hosted-by-fwdvault/">Philly Startup Leaders next Fishbowl event</a>. We&#8217;ll be having a roundtable discussion of sales and marketing, with Fwd:Vault as the focus. Totally free to attend, light refreshments and snacks will be provided.</p>
<p><a href="https://nicolas-warren.ticketleap.com/buy-tickets/workshops/fishbowl-with-fwdvault/philadelphia/B9BC6AB1-287E-4E4F-917C-6E41D3675A2">Registrations are still open</a>, but you can make a last minute appearance if that&#8217;s what works for you.</p>
<p><strong>PSL Fishbowl w/ Fwd:Vault<br />
Wednesday, January 20th @ 7:00 pm<br />
Terra Building, Room 1107<br />
<a href="http://maps.google.com/maps?f=q&#038;source=s_q&#038;hl=en&#038;geocode=&#038;q=211+South+Broad+St+Philadelphia+PA&#038;sll=39.938674,-75.285702&#038;sspn=0.011072,0.02665&#038;ie=UTF8&#038;hq=&#038;hnear=211+S+Broad+St,+Philadelphia,+Pennsylvania+19107&#038;z=16">211 South Broad St., Philadelphia, PA</a></strong></p>
<p><iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=211+South+Broad+St+Philadelphia+PA&amp;sll=39.938674,-75.285702&amp;sspn=0.011072,0.02665&amp;ie=UTF8&amp;hq=&amp;hnear=211+S+Broad+St,+Philadelphia,+Pennsylvania+19107&amp;z=16&amp;ll=39.948887,-75.16426&amp;output=embed"></iframe><br /><small><a href="http://maps.google.com/maps?f=q&amp;source=embed&amp;hl=en&amp;geocode=&amp;q=211+South+Broad+St+Philadelphia+PA&amp;sll=39.938674,-75.285702&amp;sspn=0.011072,0.02665&amp;ie=UTF8&amp;hq=&amp;hnear=211+S+Broad+St,+Philadelphia,+Pennsylvania+19107&amp;z=16&amp;ll=39.948887,-75.16426" style="color:#0000FF;text-align:left">View Larger Map</a></small></p>
<p><a href="http://frankkoehl.com/?ibsa=share&id=1120" id="share-link-">Share</a></p>]]></content:encoded>
			<wfw:commentRss>http://frankkoehl.com/2010/01/reminder-fwdvault-fishbowl-tonight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery 1.4 released</title>
		<link>http://frankkoehl.com/2010/01/jquery-14-released/</link>
		<comments>http://frankkoehl.com/2010/01/jquery-14-released/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 16:33:14 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[For techies]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[handy functions]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://frankkoehl.com/?p=1118</guid>
		<description><![CDATA[The latest and greatest version of jQuery, version 1.4, was released on January 14, the birthday of jQuery&#8217;s original launch. Bugfixes and improvements abound! The jQuery team has put together a site devoted to the new version, called the 14 days of jQuery, covering the major version changes as well as infrastructure updates coinciding with [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffrankkoehl.com%2F2010%2F01%2Fjquery-14-released%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffrankkoehl.com%2F2010%2F01%2Fjquery-14-released%2F&amp;source=fwdvault&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>The latest and greatest version of jQuery, version 1.4, was released on January 14, the birthday of jQuery&#8217;s original launch. <a href="http://jquery14.com/day-01/jquery-14">Bugfixes and improvements abound!</a></p>
<p>The jQuery team has put together a site devoted to the new version, called the <a href="http://jquery14.com">14 days of jQuery</a>, covering the major version changes as well as infrastructure updates coinciding with the new release. For example, the documentation site has been completely redesigned, and been moved to it&#8217;s own subdomain home, <a href="http://api.jquery.com">api.jquery.com</a>. Links from the primary jquery.com site should be updated within the next week. With video demos of new features, Q&#038;A&#8217;s with the core team (including founder John Resig), it&#8217;s well-worth checking out for every jQuery developer.</p>
<p><a href="http://frankkoehl.com/?ibsa=share&id=1118" id="share-link-">Share</a></p>]]></content:encoded>
			<wfw:commentRss>http://frankkoehl.com/2010/01/jquery-14-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
