<?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>firsttube.com &#187; Technology</title>
	<atom:link href="http://www.firsttube.com/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.firsttube.com</link>
	<description>crunchy nuggets, served semi-daily</description>
	<lastBuildDate>Tue, 03 Jan 2012 00:14:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Marco.org &#8211; Top 10 Tech Failures of 2010</title>
		<link>http://www.firsttube.com/read/marco-org-top-10-tech-failures-of-2010/</link>
		<comments>http://www.firsttube.com/read/marco-org-top-10-tech-failures-of-2010/#comments</comments>
		<pubDate>Thu, 30 Dec 2010 15:41:24 +0000</pubDate>
		<dc:creator>Adam S</dc:creator>
				<category><![CDATA[Funny]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.firsttube.com/?p=1898</guid>
		<description><![CDATA[Top 10 Tech Failures of 2010 Something from Apple that everyone loves Something else from Apple that everyone loves Your favorite cellular telephone Something Facebook did Something Google launched A crappy tablet nobody has ever heard of Microsoft’s latest initiative &#8230; <a href="http://www.firsttube.com/read/marco-org-top-10-tech-failures-of-2010/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<blockquote><p>Top 10 Tech Failures of 2010</p>
<ol>
<li>Something from Apple that everyone loves</li>
<li>Something else from Apple that everyone loves</li>
<li>Your favorite cellular telephone</li>
<li>Something Facebook did</li>
<li>Something Google launched</li>
<li>A crappy tablet nobody has ever heard of</li>
<li>Microsoft’s latest initiative</li>
<li>Desktop Linux</li>
<li>Michael Arrington</li>
<li>Ping</li>
</ol>
</blockquote>
<p>via <a href="http://www.marco.org/2518329798">Marco.org &#8211; Top 10 Tech Failures of 2010</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.firsttube.com/read/marco-org-top-10-tech-failures-of-2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Creating a JSON API</title>
		<link>http://www.firsttube.com/read/creating-a-json-api/</link>
		<comments>http://www.firsttube.com/read/creating-a-json-api/#comments</comments>
		<pubDate>Tue, 09 Nov 2010 19:22:37 +0000</pubDate>
		<dc:creator>Adam S</dc:creator>
				<category><![CDATA[Phish]]></category>
		<category><![CDATA[Social Networking]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://firsttube.com/?p=1887</guid>
		<description><![CDATA[I was assisting someone recently in building an API for their website and it occurred to me that while the current trend is generally using XML/REST/SOAP for APIs, there is quite a bit of benefit to using plain old Javascript &#8230; <a href="http://www.firsttube.com/read/creating-a-json-api/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was assisting someone recently in building an API for their website and it occurred to me that while the current trend is generally using XML/REST/SOAP for APIs, there is quite a bit of benefit to using plain old Javascript and JSON.  Most users won&#8217;t venture into API territory, so if your goal is to make your API accessible &#8211; and this goes double if your primary purpose is embedding content in a third party site &#8211; it&#8217;s hard to argue with Javascript.</p>
<p>The <a href="http://api.phish.net">Phish.net API</a>, for example, is a simple HTTP request to an endpoint that returns JSON.  If you provide a callback function name as an argument, and then pre-define that function, it will return the contents wrapped in a function call.  In short, if you define a function called &#8220;example()&#8221; that accepts JSON an array/object as an argument, then by requesting the API with a callback of &#8220;example&#8221;, the response will be returned like so:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">example<span style="color: #009900;">&#40;</span>json response<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>The benefit, of course, is that it allows a user to embed your code easily.  If you host your own callback functions, you can very easily walk a user through a data embed.  For example, on Phish.net, we offer the band&#8217;s latest setlist.  So we host a callback called pnet3setlist().  Then we offer the API response.  Embedding the setlist is literally as easy as this:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;http://api.phish.net/callbacks/pnet3-setlist.js&quot;</span> type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>script src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;https://api.phish.net/api.json?method=pnet.shows.setlist.recent&amp;amp;amp;callback=pnet3setlist&quot;</span> type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></div></div>

<p>I&#8217;m going to dig more into this later, but the gist of this is that the API can be constructed in a way that allows novice users to interact with it in their WordPress- or Blogger-blogs with little to no modification, it allows semi-skilled users to modify it slightly and tweak it for display purposes, and it allows advanced users to control virtually all aspects.  Since virtually every major web language can encode and decode JSON (Javascript, PHP, Ruby, ASP, etc), it&#8217;s a near-universal way to exchange data.  It doesn&#8217;t carry the overhead or complexity of XML, nor does it have the limited scope of something like serialized PHP.</p>
<p>Javascript-based APIs may not be the ultimate solution to a fully interconnected web, but they&#8217;re certainly going to be one of the best and simplest methods of data exchange for the foreseeable future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.firsttube.com/read/creating-a-json-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Guide to Base Changing For Short URLs</title>
		<link>http://www.firsttube.com/read/a-guide-to-base-changing-for-short-urls/</link>
		<comments>http://www.firsttube.com/read/a-guide-to-base-changing-for-short-urls/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 19:09:56 +0000</pubDate>
		<dc:creator>Adam S</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Nerd]]></category>

		<guid isPermaLink="false">http://firsttube.com/?p=1670</guid>
		<description><![CDATA[Some time ago, I developed a VERY simple way to fake a bit.ly-style short URL. On any server that uses any form of an integer to identify an article (either in the database or the URL), on an Apache server &#8230; <a href="http://www.firsttube.com/read/a-guide-to-base-changing-for-short-urls/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Some time ago, I developed a VERY simple way to fake a bit.ly-style short URL.  On any server that uses any form of an integer to identify an article (either in the database or the URL), on an Apache server that supports mod_rewrite, you edit your .htaccess file like so:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">RewriteEngine Off
<span style="color: #000000; font-weight: bold;">&lt;</span>ifmodule mod_rewrite.c<span style="color: #000000; font-weight: bold;">&gt;</span>
RewriteEngine On
RewriteBase <span style="color: #000000; font-weight: bold;">/</span>
RewriteCond <span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>REQUEST_FILENAME<span style="color: #7a0874; font-weight: bold;">&#125;</span> <span style="color: #000000; font-weight: bold;">!</span>-f
RewriteCond <span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>REQUEST_FILENAME<span style="color: #7a0874; font-weight: bold;">&#125;</span> <span style="color: #000000; font-weight: bold;">!</span>-d
RewriteCond <span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>REQUEST_URI<span style="color: #7a0874; font-weight: bold;">&#125;</span> <span style="color: #000000; font-weight: bold;">!</span>^index.php$
RewriteRule . index.php <span style="color: #7a0874; font-weight: bold;">&#91;</span>NC,L<span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">&lt;/</span>ifmodule<span style="color: #000000; font-weight: bold;">&gt;</span></pre></div></div>

<p>This essentially tells your server to redirect anything that isn&#8217;t a file or directory to index.php.</p>
<p>Then index.php looks like this:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REQUEST_URI'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">!=</span><span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$id</span> <span style="color: #339933;">=</span> <span style="color: #990000;">base_convert</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">36</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//this is where you either query your database for a slug or build the URL</span>
<span style="color: #000088;">$uri</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'http://your-site-goes-here.com/path/to/article'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$uri</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTTP/1.1 301 Moved Permanently'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Link: &lt; '</span><span style="color: #339933;">.</span><span style="color: #000088;">$uri</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&gt;; rel=shortlink&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Location: '</span><span style="color: #339933;">.</span><span style="color: #000088;">$uri</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">exit</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Location: http://your-site-goes-here.com/&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #990000;">exit</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>How do you get your short links? That&#8217;s easy.  Just run this function:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$shorturl</span> <span style="color: #339933;">=</span> <span style="color: #990000;">base_convert</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">10</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">36</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>However, this isn&#8217;t the most compact way to condense.  Obviously, this is base36, the highest PHP can go.  But what about uppercase letters? And other characters?</p>
<p>So I set out, for some reason, to build a better condenser.</p>
<p>This is the result of several hours of work, mostly wasted, on some intellectual pursuit that was more a case of simply not letting it defeat me.  A few notes: I&#8217;m quite confident that given enough time, and if I cared, I could make the code cleaner and more efficient in some places. I&#8217;m also aware that on 32 bit machines, it maxes out at the integer limit. I does support signed integers though, from min to max.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$ft_str</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'0123456789abcdefghijklmnopqrstuvqwxyzABCDEFGHIJKLMNOPQRSTUVQWXYZ'</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;"># uncomment the next line if you prefer to use potentially non-URL-safe base96
</span><span style="color: #666666; font-style: italic;"># $ft_str .= '0123456789abcdefghijklmnopqrstuvqwxyzABCDEFGHIJKLMNOPQRSTUVQWXYZ_@$!#%^&amp;*()=+\|}{][,;:~'; }
</span>
<span style="color: #000088;">$powers</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$p</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><span style="color: #000088;">$p</span><span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;=</span><span style="color: #cc66cc;">10</span><span style="color: #339933;">;</span><span style="color: #000088;">$p</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$powers</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$p</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #990000;">pow</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ft_str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #000088;">$p</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> ft_unconvert<span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span><span style="color: #0000ff;">'-'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000088;">$pfx</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'-'</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span> <span style="color: #000088;">$pfx</span><span style="color: #339933;">=</span><span style="color: #0000ff;">''</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$ft_str</span><span style="color: #339933;">,</span><span style="color: #000088;">$powers</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$base</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ft_str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000088;">$q</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$s</span> <span style="color: #339933;">=</span> <span style="color: #990000;">str_split</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">strrev</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000088;">$len</span> <span style="color: #339933;">=</span> <span style="color: #990000;">sizeof</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$k</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$sp</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strpos</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ft_str</span><span style="color: #339933;">,</span><span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$decimal</span> <span style="color: #339933;">+=</span> <span style="color: #990000;">pow</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$base</span><span style="color: #339933;">,</span><span style="color: #000088;">$k</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #000088;">$sp</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">return</span> <span style="color: #000088;">$pfx</span><span style="color: #339933;">.</span><span style="color: #000088;">$decimal</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> ft_converter<span style="color: #009900;">&#40;</span><span style="color: #000088;">$int</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$int</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000088;">$pfx</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'-'</span><span style="color: #339933;">;</span> <span style="color: #000088;">$int</span><span style="color: #339933;">=</span><span style="color: #990000;">abs</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$int</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span> <span style="color: #000088;">$pfx</span><span style="color: #339933;">=</span><span style="color: #0000ff;">''</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$ft_str</span><span style="color: #339933;">,</span><span style="color: #000088;">$powers</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$base</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ft_str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000088;">$q</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$p</span> <span style="color: #339933;">=</span> <span style="color: #990000;">str_split</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">krsort</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$powers</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$powers</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$k</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$int</span><span style="color: #339933;">&gt;=</span><span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$timesinto</span> <span style="color: #339933;">=</span> <span style="color: #990000;">floor</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$int</span><span style="color: #339933;">/</span><span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$digit</span> <span style="color: #339933;">.=</span> <span style="color: #000088;">$ft_str</span><span style="color: #009900;">&#123;</span><span style="color: #000088;">$timesinto</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$int</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$int</span> <span style="color: #339933;">%</span> <span style="color: #000088;">$v</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$int</span><span style="color: #339933;">&gt;</span><span style="color: #cc66cc;">0</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$k</span><span style="color: #339933;">==</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$digit</span> <span style="color: #339933;">.=</span> <span style="color: #000088;">$ft_str</span><span style="color: #009900;">&#123;</span><span style="color: #000088;">$int</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$int</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$int</span> <span style="color: #339933;">%</span> <span style="color: #000088;">$v</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">return</span> <span style="color: #000088;">$pfx</span><span style="color: #339933;">.</span><span style="color: #000088;">$digit</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> ft_convert_demo<span style="color: #009900;">&#40;</span><span style="color: #000088;">$num</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$ft_str</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$ftc</span> <span style="color: #339933;">=</span> ft_converter<span style="color: #009900;">&#40;</span><span style="color: #000088;">$num</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">return</span> <span style="color: #0000ff;">&quot;Converting &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$num</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; into base &quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ft_str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;: &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$ftc</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&lt;br /&gt;Unconverting &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$ftc</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; to base 10: &quot;</span><span style="color: #339933;">.</span>ft_unconvert<span style="color: #009900;">&#40;</span><span style="color: #000088;">$ftc</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">echo</span> ft_convert_demo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'50687'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.firsttube.com/read/a-guide-to-base-changing-for-short-urls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apple&#039;s Future is Exciting</title>
		<link>http://www.firsttube.com/read/apples-future-is-exciting-2/</link>
		<comments>http://www.firsttube.com/read/apples-future-is-exciting-2/#comments</comments>
		<pubDate>Sat, 10 Apr 2010 16:09:05 +0000</pubDate>
		<dc:creator>Adam S</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Thoughts]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://firsttube.com/?p=1616</guid>
		<description><![CDATA[Sayeth Steve Jobs: You know, there’s a porn store for Android. Anyone can download them. You can, your kids can. That’s just not a place we want to go. But then, there&#8217;s this: What is that? It&#8217;s the Porn Store &#8230; <a href="http://www.firsttube.com/read/apples-future-is-exciting-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Sayeth Steve Jobs:</p>
<blockquote><p>You know, there’s a porn store for Android. Anyone can download them. You can, your kids can. That’s just not a place we want to go.</p></blockquote>
<p>But then, there&#8217;s this:<br />
<img class="aligncenter" title="Porn Store for iPhone" src="http://firsttube.com/uploads/2010/04/photo-1.jpg" alt="" width="320" height="480" /><br />
What is that? It&#8217;s the Porn Store for iPhone, aka &#8220;The App Store.&#8221;  Get real. Apples doesn&#8217;t want you to run Apps because they want full control of the revenue the iPhone generates downstream.  That&#8217;s it.  It&#8217;s not about privacy, it&#8217;s not about children, it&#8217;s not about anything other than <strong><em>corporate strategy</em></strong>.  And I predict it WILL come back to bite Apple in the butt.</p>
<p>Then there&#8217;s <a href="http://daringfireball.net/2010/04/iphone_agreement_bans_flash_compiler">the now infamous section of the iPhone 4.0 SDK that bans the use of non-native apps on the iPhone</a>.  But let&#8217;s get real, shall we? As Gruber said, this is about only one thing: once the apps are portable, the device lock-in is compromised.  It&#8217;s not about multi-tasking, although, there&#8217;s probably truth in that, it&#8217;s not about new APIs, although, there&#8217;s probably truth in that too.  But it&#8217;s about <strong><em>corporate strategy</em></strong>: keep people on Apple products in the Apple ecosystem.</p>
<p>Let&#8217;s not forget that Adobe has built its CS5 master suite with a new feature it&#8217;s been proudly touting: the ability to compile Flash apps as iPhone binaries.  So they are the ones with egg on their face since that feature is simply pointless now.</p>
<p>If I were Adobe, after the peak of sales after the release of CS5, I&#8217;d announce that it&#8217;s the last Adobe suite to be released for Mac.  No more Photoshop, no more Lightroom, no more Illustrator.  Maybe even cut off Adobe Air.  You could pretty rapidly destroy the enterprise presence for Apple, as people decide if they want to keep working on Macs, given the lack of true enterprise quality tools.   It would be an interesting <strong><em>corporate strategy</em></strong>. (Update: <a href="http://theflashblog.com/?p=1888">They say nope</a>.)</p>
<p>If I were Apple, I wouldn&#8217;t worry too much.  Businesses are now a small subset of Apple users, who are, more and more, college students and home users.  And those users would rather buy iWork, and maybe a few more apps Apple wasn&#8217;t producing (such as Office or Pixelmator).  No big loss, right? Or is it&#8230;?</p>
<p>Once Apple loses the &#8220;it&#8217;s better for graphics&#8221; thing, then it might be labelled &#8220;not for serious work.&#8221;  Microsoft runs some ads pushing a new image: Macs are okay for home use, but you need Windows to do any real work.  And then &#8220;real workers&#8221; start switching back to Windows at home.  Maybe.  But it would make for a grand <strong><em>corporate strategy</em></strong>.</p>
<p>It&#8217;s interesting that once again, the computing landscape is full of action.  I can&#8217;t wait to see how Apple behaves in the next few years.  It may well deliver some of the best software ever.  Then again, soon enough, I might be using Windows 8, an Android phone, and an HP Slate. Either way, the future is exciting.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.firsttube.com/read/apples-future-is-exciting-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>I&#8217;ve Been Hacked! WP-Lytebox Sucks</title>
		<link>http://www.firsttube.com/read/ive-been-hacked-wp-lytebox-sucks/</link>
		<comments>http://www.firsttube.com/read/ive-been-hacked-wp-lytebox-sucks/#comments</comments>
		<pubDate>Sat, 03 Apr 2010 21:36:16 +0000</pubDate>
		<dc:creator>Adam S</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://firsttube.com/?p=1600</guid>
		<description><![CDATA[This is the third time I&#8217;ve had to spent serious time &#8220;fixing&#8221; WordPress.  Say what you will about my old &#8220;Small Axe&#8221; or &#8220;Flip&#8221; solutions, but I never had a problem.  With WordPress, I have found regular issues. This time, &#8230; <a href="http://www.firsttube.com/read/ive-been-hacked-wp-lytebox-sucks/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img style="width: 150px; height: 150px; padding: 5px; float: right;" src="http://firsttube.com/uploads/2010/04/wordpress-hack-150x150.jpg" alt="Hacking WordPress" />This is the third time I&#8217;ve had to spent serious time &#8220;fixing&#8221; WordPress.  Say what you will about my old &#8220;Small Axe&#8221; or &#8220;Flip&#8221; solutions, but I never had a problem.  With WordPress, I have found regular issues.</p>
<p>This time, I traced the problem back to wp-lytebox, and I&#8217;m ashamed to say I&#8217;ve had to fix the same problem before.  It all started when I couldn&#8217;t load the post page in the backend of <a href='http://firsttube.com'>firsttube.com</a>.  Digging in, I eventually found a file called sys.php in the root of the site, and it listed the contents of my site and had a form that allowed someone to add a page, chmod a page, or delete a page.  Killer!</p>
<p>I found that it was defaulting to <em>/path/to/WP/wp-includes/plugins/wp-lytebo</em>x, and sure enough, digging into that directory revealed several other fun scripts, all of which gave someone the ability to access all the files on my site.  Fun!</p>
<p>I found that I already had replaced this plugin before, so I decided to get rid of it altogether, this now proving it wasn&#8217;t a misconfiguration, but rather, <a href="http://www.f-secure.com/vulnerabilities/SA200902421">a problem with the wp-lytebox itself</a>.</p>
<p>In this process, however, I was unable to fix my issue.  Visiting <em>/wp-admin/post-new.php</em> still rendered only a page footer, and nothing more.</p>
<p>So I starting fooling around in my directories looking for files that had been modified more recently than when I did my 2.9.2 upgrade.  One of the files? My <em>.htaccess</em> file.</p>
<p>&#8220;<em>This be odd,</em>&#8221; I thought to myself, &#8220;<em>I&#8217;ve changed this not, methinks.</em>&#8221;</p>
<p>Sure enough, there was a rogue line within: RewriteCond ^/default/$ /wp-admin/includes Huh?</p>
<p>I dug into that folder, and the .htaccess file there was recent too? It&#8217;s contents? <em>DefaultIndex users.php</em></p>
<p>Of course, I immediately opened users.php and found, as you might have guessed, a bunch of Russian crap. Savvy WP hackers will know, it&#8217;s not a real file, there is no users.php in the real wp-admin/includes directory.</p>
<p>I also found a folder that had two large files, both named core.XXXX where XXXX was a 4 digit number, and a massive 40 MB error_log.  Yikes.</p>
<p>I thought I had everything cleaned out, and I truly believed that the way in was wp-lytebox.  Then <a href="http://wordpress.org/support/topic/379659">I found this</a>.  And sure enough, all of the listed files were compromised.  So I nuked all the files, and replaced them all.  D&#8217;oh!</p>
<p>So, if you&#8217;re arriving via Google or Bing or Yahoo!, do NOT use wp-lytebox.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.firsttube.com/read/ive-been-hacked-wp-lytebox-sucks/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>AT&amp;T Suckage</title>
		<link>http://www.firsttube.com/read/att-suckage/</link>
		<comments>http://www.firsttube.com/read/att-suckage/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 14:56:13 +0000</pubDate>
		<dc:creator>Adam S</dc:creator>
				<category><![CDATA[Rant]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[AT&T]]></category>
		<category><![CDATA[Cell Phones]]></category>

		<guid isPermaLink="false">http://firsttube.com/?p=1595</guid>
		<description><![CDATA[AT&#38;T&#8217;s network has improved dramatically in the last year or so.  I&#8217;ve been really happy with them lately.  So it pissed me off a little extra today when I called to get a number blocked and got this nonsense for &#8230; <a href="http://www.firsttube.com/read/att-suckage/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>AT&amp;T&#8217;s network has improved <em>dramatically</em> in the last year or so.  I&#8217;ve been really happy with them lately.  So it pissed me off a little extra today when I called to get a number blocked and got this nonsense for a response: a non-English speaking person with a phone number <em>one digit off</em> from me continues to call and leave me long rambling voice mails, over and over and over.  So I called and asked to have the number blocked, and you know what they told me? They can&#8217;t do it.  They can&#8217;t block a number.</p>
<p>Except, they can. They can block the number, but only for $4.99 a month.</p>
<p>So I&#8217;m forced to have the phone ring endlessly or take their &#8220;recommended resolution.&#8221;  You know what that is? I can change my number.</p>
<p>Hey, AT&amp;T? Unacceptable.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.firsttube.com/read/att-suckage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dragon Dictation</title>
		<link>http://www.firsttube.com/read/dragon-dictation/</link>
		<comments>http://www.firsttube.com/read/dragon-dictation/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 18:09:06 +0000</pubDate>
		<dc:creator>Adam S</dc:creator>
				<category><![CDATA[Funny]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Applications]]></category>
		<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://firsttube.com/?p=1574</guid>
		<description><![CDATA[Dragon Dictation for the iPhone is spectacular.  It works so well it constantly amazes me.  Even when I dictated my wife&#8217;s name &#8211; Jenn &#8211; it suggested &#8220;Jenn&#8221; as a possible alternative for &#8220;Jen.&#8221;  It frequently gets what I say &#8230; <a href="http://www.firsttube.com/read/dragon-dictation/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img style="float: right; padding: 5px;" title="dragon dictation" src="http://firsttube.com/uploads/2010/02/dragon-dictation.jpg" alt="" height="250" />Dragon Dictation for the iPhone is spectacular.  It works so well it constantly amazes me.  Even when I dictated my wife&#8217;s name &#8211; Jenn &#8211; it suggested &#8220;Jenn&#8221; as a possible alternative for &#8220;Jen.&#8221;  It frequently gets what I say right the first time, and often catches the wrong words in the tap-to-correct mode when it makes a mistake.</p>
<p>So I decided to sing into it and give it a run for its money.  I was singing Trey Anastasio&#8217;s &#8220;Host Across the Potomac,&#8221; whose chorus is &#8220;<em>The time has come for desks and chairs to be elevated.</em>&#8220;  I sang the line several times, annunciating a bit more with each line, and here are the results:</p>
<ul>
<li>The time has come for desk send JS to be a little David</li>
<li>The time has come by best chance to be added day babe</li>
<li>The time has come for dad send chance to be added day again</li>
<li>The time has come for desk and chairs to be inundated</li>
</ul>
<p>Gotta love it; four times sung, four totally different results.</p>
<p>The moral of the story is: Dragon is great for dictation, but not so much for transcribing singing.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.firsttube.com/read/dragon-dictation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>First Thoughts on the iPad</title>
		<link>http://www.firsttube.com/read/first-thoughts-on-the-ipad/</link>
		<comments>http://www.firsttube.com/read/first-thoughts-on-the-ipad/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 15:10:40 +0000</pubDate>
		<dc:creator>Adam S</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPad]]></category>

		<guid isPermaLink="false">http://firsttube.com/?p=1564</guid>
		<description><![CDATA[Yesterday, after the Apple presentation &#8220;Come See Our Latest Creation,&#8221; geeks and bloggers worldwide took to their medium of choice to complain about the underwhelming iPad and its impending failure. I&#8217;ve seen all sorts of arguments for why this device &#8230; <a href="http://www.firsttube.com/read/first-thoughts-on-the-ipad/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday, after the Apple presentation &#8220;<a href="http://www.engadget.com/2010/01/18/its-on-apple-holding-january-27th-event-to-show-off-its-lates/">Come See Our Latest Creation</a>,&#8221; geeks and bloggers worldwide took to their medium of choice to complain about the underwhelming <a href="http://apple.com/ipad">iPad</a> and its impending failure.  I&#8217;ve seen all sorts of arguments for why this device will fail, but I&#8217;m convinced that this device is going to make them all red in the face, and soon.</p>
<p><img style="float: right; padding: 5px;" title="iPad" src="http://firsttube.com/uploads/2010/01/ipad0.png" alt="" width="326" height="202" />The problem here, as is often the case, is that this device is not built for geeks.  In truth, the iPhone isn&#8217;t either.  But it&#8217;s an undeniable success, largely because it solves most of the problems people have with computing interfaces: single vs double click, right click vs left click, app install, the HFS, etc.  And the iPad will be a huge success too.  Let&#8217;s take a deeper look.</p>
<p>The biggest complaint heard round the world is the lack of multi-tasking.  Let&#8217;s be straight about this: that&#8217;s a friggin&#8217; <strong><em>software</em></strong> issue! It&#8217;s widely rumored that some sort of light multi-tasking is part of iPhone OS 4.0, we know the demo&#8217;ed iPad was running 3.2 beta.  So it&#8217;s fair to expect that this could come in a future update.  But if it doesn&#8217;t, it&#8217;s still fixable if Apple determines that lack thereof is a major weakness.</p>
<p>I&#8217;ve heard people complain about lack of Flash.  I couldn&#8217;t care less about Flash. Flash is a total monkey on the shoulder of the internet. I have an iPhone, I pretty much never miss it.  Every site that relies on Flash is a poorly designed site I don&#8217;t want to visit.  Flash is NOT coming to iPhone OS.  Here&#8217;s why, in a nutshell: there are no runtimes on the iPhone, Flash is a runtime; Apple supports only one  native platform &#8211; through their own SDK; Flash is the most unstable part of OS X; and most importantly, Flash is quickly gaining the reputation of being the #1 source of vulnerabilities, which Apple does NOT want to inherit.  Since it&#8217;s closed source and controlled by another company, it ain&#8217;t happening, and not only don&#8217;t I care,  I bet most others don&#8217;t either. And the proof? Literally millions of sites have built iPhone specific versions of their sites.  With Android and WebOS both sporting compatible Webkit-based browsers, those sites are getting to be &#8220;smartphone&#8221; type sites, but people are clearly hearing the word of the future: you can&#8217;t depend on a plugin for the core of your site.</p>
<p><img style="float: left; padding: 5px;" title="ipad" src="http://firsttube.com/uploads/2010/01/ipad2-376x500.jpg" alt="" width="226" height="300" />Third largest complaint we hear is that people could just buy a laptop.  Sure, you <em>could</em>, but the iPad is a supplement.  I have a 24&#8243; iMac and it sits in my office.  I don&#8217;t always want to get up to check my email, browse Google Reader, or fool around on the web.  It&#8217;s a great lightweight extension of my Mac.  I don&#8217;t need a whole new desktop with a whole new library of data in iLife.  I don&#8217;t want a big old laptop.  With the laptop, I hold the keyboard portion, and inevitably, my kid comes up and pulls on the lid which bends back out of my way.  It gets 4 hours of life if we&#8217;re lucky, so it&#8217;s always plugged in.  It&#8217;s pretty hot, so it usually rests on a cushion or a laptop pillow.  The iPad is light, one piece that can be aligned to my liking, and has a much better battery.  It&#8217;s a near perfect supplement to my current computer, because it works as an EXTENSION of my current Mac, not in addition to.</p>
<p>Next up is the bezel.  Yes, people are complaining about the border around the screen.  Apparently, these ninnies would prefer to grip their movie player with their fingers overlapping the content.  This one is too stupid to address seriously.</p>
<p>I&#8217;m sad to say that the biggest yammering I&#8217;ve heard around town is that &#8220;Apple fanboys will slurp this up&#8221;, as if anyone who wants one is too lovedrunk to think clearly.  This arrogant tenant is especially silly given that the iPhone is pretty much an iPad nano plus a phone.  If you just wanted a phone, there are much better choices than the iPhone.  Flip phones last for days or weeks without a charge and certainly connect more reliably, but people wanted iPhones. Does this sentiment extend to ALL of them?  I suppose the 21 million active iPhone users are all blind Apple loyalists as well?</p>
<p>Some people have said, based on real experience, that this is a 1.0 product, they&#8217;ll wait for the revision.  But to me, this one is just ignoring history.  The old computer catch 22 is &#8220;this will be outdated in 6 months.&#8221;  That&#8217;s still true.  The next revision will always be better.  But the iPad is not a rev 1 product, it&#8217;s a rev 4 product.  It&#8217;s an evolution of the iPhone.  Yes, it has a new chip, but so did the 3Gs. The 3G had the first 3G antenna.  Every rev has a first generation of something, but this is obviously a revision (maybe a big one, but still a point release) of existing hardware.</p>
<p>HDMI out? Seriously? Is there ANY &#8220;average joe&#8221; who&#8217;s going to use this? I think a TV out connector is probably fine for most that require the iPad to be a portable movie player.  You have to remember that Apple doesn&#8217;t &#8211; and has no history of &#8211; catering to geeks when they can cater to the masses.  The device is a device &#8220;for everyone&#8221;, and that usually means leading edge technologies are not included and geeks are disappointed.</p>
<p>I&#8217;ve heard quite a few people sharing how a netbook is so much cheaper, yadda yadda yadda.  Puh-lease.  But these are facts: virtually every netbook I&#8217;ve used is SLOW SLOW SLOW.  They almost always run either XP &#8211; which is not only old and clumsy on a tiny screen, but has a sordid history of becoming slow and broken for most users, or Ubuntu, which is a total mystery to the average guy, and also has an even more complex install system.  Netbooks have tiny screens and ALL of the same problems and confusions that traditional computers have had when it comes to most users.   My mother still names documents with additional underscores so they move to the front of the folder list, and she has no idea where she saves anything&#8230; My Docs, Desktop, root of C, etc.  I see this all the time, people can&#8217;t manage a traditional install, that&#8217;s why they need geeks.  Except&#8230; they don&#8217;t with the iPhone, and they won&#8217;t with the iPad.  The netbook is a joke compared to an iPad.  You show me an HP Slate, I&#8217;ll show you an LG Voyager or some other would be &#8220;iPhone Killer&#8221;.  Almost everyone&#8217;s response to the iPad is <strong><em>already</em></strong> an also-ran, because it will most likely be based on Windows or Linux, and it will almost certainly fail where the iPhone OS has already succeeded.  I think the only hope here is that Android evolves over the next few years at this continued rapid pace.</p>
<p><img style="float: left; padding: 5px;" title="ipad" src="http://firsttube.com/uploads/2010/01/ipad1.jpg" alt="" width="328" height="176" />Another complaint being tossed around is the lack of a physical keyboard.  Are we seriously still addressing this? Did the lack of physical keyboard stop the iPhone from selling something like 75 million units? No.  Because this device is all about <em>touch</em>, and the virtual keyboard is going to be just fine, just like it is on the iPhone for the vast majority of people who use it.  After 20 minutes of using the iPhone keyboard, I was comfortable and much more accurate.  I&#8217;m sure the iPad will be the same way.  Yes, software like Pages seems odd without a keyboard.  I suspect it&#8217;s more for viewing and quick editing than it is for full creation.  It&#8217;s a supplementary device, not a full on computer.  Non-issue.</p>
<p>There are definitely some legitimate complaints against the iPad.</p>
<ol>
<li>At 1024&#215;768, the resolution, and aspect ratio, leave me wanting more.  Widescreen videos will require zoom or letterboxing, which means I lose content or real estate.  Boo.</li>
<li>The name iPad is horrible. If I have an accent, iPod and iPad might sound the same.</li>
<li>Still no wireless syncing!?</li>
<li>No SD slot for media? The &#8220;shared directory&#8221; is a nice concept, it could show up like the camera does as mountable file storage.  I hope it&#8217;s writable, but I bet it&#8217;s not.  Native SD slot would have been nice.</li>
<li>No camera.  I&#8217;m not sure I really care about a camera, per se, but I certainly think the ability to video chat would have been an <strong><em>incredible</em></strong> sales point for this device.</li>
<li>Lack of format variety.  I can&#8217;t believe Apple can&#8217;t add support for AVIs and MPGs to the iPhone, iPad, AppleTV, and iTunes. Also, I don&#8217;t get why Apple doesn&#8217;t just add FLAC support to iTunes.</li>
</ol>
<p>The biggest and most valid complaint is that once again, we&#8217;re locked into the arbitrary and closed App Store.   This is, by far and away, the most legitimate complaint.  But, we live in a capitalist world, and the best of breed will succeed.  People are generally okay with this.  Once again, the masses have accepted something less than stellar.  People will jailbreak their iPad the same way we&#8217;ve jailbroken our iPhones, and once again, we&#8217;ll be a small group in a large pool of users.  This practice by Apple is horrible, and I predict it will eventually lead to a Microsoft IE style lawsuit that requires Apple to open up not just the App Store, but maybe even the iTunes Store as a whole to competition (meaning a separate store on the device that can manage apps, or another way to get apps on the phone without going through Apple).</p>
<p>That said, I&#8217;ll likely be getting an iPad at some point.  It&#8217;s a fantastic complement to the big iMac in another room, an extension of my data, and a great surfing device.  The 16GB is plenty for me now (The 64 GB would cover my entire MP3 and iPhoto libraries, but not with enough growth space, so the 128 may be the magic point for me), but I&#8217;ll probably want the 3G just so the device isn&#8217;t confined to my living room 100% of the time.</p>
<p>This is all my opinion.  No question about that.  But some of it is steeped in fact.  Geeks looking for a geek friendly device were bound to be let down.  Those suggesting that the iPad can&#8217;t meet someone&#8217;s needs unless they are drinking the Apple Kool-Aid are high on their own pompousness.  And those who don&#8217;t want one, well.. they&#8217;re entitled to their own opinion and can pass on this device.  But those who suggest this is going to be a failure&#8230; check back with me in 18 months.  My money is that <em>I&#8217;ll </em>be the one saying  &#8220;Toldja so.&#8221; </p>
]]></content:encoded>
			<wfw:commentRss>http://www.firsttube.com/read/first-thoughts-on-the-ipad/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Rethinking Robocop</title>
		<link>http://www.firsttube.com/read/rethinking-robocop/</link>
		<comments>http://www.firsttube.com/read/rethinking-robocop/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 14:43:56 +0000</pubDate>
		<dc:creator>Adam S</dc:creator>
				<category><![CDATA[Movies]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://firsttube.com/?p=1557</guid>
		<description><![CDATA[Yesterday, during commercial breaks of the Saints/Vikings NFC championship game, I was flipping over to watch bits of Robocop 2. When I was younger, I remember my friends would gather to watch Robocop and were very excited when the sequel &#8230; <a href="http://www.firsttube.com/read/rethinking-robocop/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday, during commercial breaks of <a href="http://news.yahoo.com/s/ap/20100125/ap_on_sp_fo_ga_su/fbn_nfc_championship">the Saints/Vikings NFC championship game</a>, I was flipping over to watch bits of Robocop 2.  When I was younger, I remember my friends would gather to watch Robocop and were very excited when the sequel was announced.  Watching it now, however, I see how bad that movie was.  Or was it?</p>
<p>It struck me how old the entire thing felt, and how silly the technology was.  It got me thinking about a franchise reboot, and then it got me thinking about what Robocop would be today, if he were re-envisioned.</p>
<p>The first thing I noticed is that Robocop is slow and deliberate, and when his &#8220;joints&#8221; move, they produce a hydraulic buzzing sound.  So we&#8217;ll need him to be smoother in movement, and without announcing his presence.  He&#8217;ll need to be significantly lighter on his feet than the slow and heavy-stepping original.</p>
<p>The original sported an eye plate,  that stretched only a centimeter in height and a few inches in wrap.  That will need to change to be supplemented by smaller cameras that can give Robocop a 360 degree view of his surroundings.</p>
<p>Since Robocop was severely damaged after being caught in a magnet, we&#8217;ll need a better metal.  I propose new Robocop be constructed of a smarter, so-called &#8220;space age&#8221; metal such as titanium, tungsten, or magnesium.</p>
<p>The original Robocop recorded interaction on an in-body video camera, presumably storing it digitally, which was pretty amazing for the 1987.  New Robocop will not only record interaction to a bank of flash memory or some sort of SSD array, but he will be equipped with Wifi and some sort of cellular connection like LTE or WiMax (he&#8217;ll be in a big city, so we can presume coverage).  He will transmit all of his data periodically, so he won&#8217;t need to storage terabytes of memory in-body.</p>
<p>New Robocop will not have exposed skin (or internal mechanics).  Period.</p>
<p><img style="float: right; padding: 5px;" title="Robocop" src="http://firsttube.com/uploads/2010/01/robocop.jpg" alt="" width="260" height="361" />Original Robocop stored his gun <strong>in</strong> his leg.  This is an outdated concept based on a concept that looked cool in the 80&#8242;s.  Today&#8217;s Robocop will store multiple weapons throughout his body, small rubber-bullet-like projectiles perhaps in his forearm.  We can equip his chest or fingers with mace or tear gas.  If he requires an actual gun, it will be not be trigger deployed.  It will be activated only when connected to Robocop, and very likely controlled via WifiDirect or Bluetooth.  There&#8217;s simply no good reason to rely on old fashion triggers that can be exploited.  In the event of system malfunction, a manual weapon will be present, but since Robocop shouldn&#8217;t be relying on his gun most of the time, he will have a nightstick of some sort.</p>
<p>New Robocop should not have an over-synthesized voice.</p>
<p>One of the constant flaws we saw in Robocop 2, as they attempted to build a second Robocop, was the lack of control they had over the machine.  We fix this by running the Robocop program on a Linux-based system and jailing/chrooting it.  New Robocop can do what he wants,  but if he gets out of hand, we still have control.  We allow remote SSH logins from authorized IPs, and sudo up to root guaranteeing ourselves a remote shutdown option.  No sloppy infrared remote control here, just pure IP access.</p>
<p>Once Robocop is a computer, we&#8217;ll need a few more accommodations, because that becomes the chief point of vulnerability.  We&#8217;ll need pretty sophisticated software here to prevent someone from hacking into Robocop, but that&#8217;s of course the plot of the movie, I&#8217;d suggest: someone  hacks into Robocop remotely and alters the programming, and despite Robocop&#8217;s  knowledge that he&#8217;s been compromised, he&#8217;s unable to prevent his own actions since he&#8217;s jailed into a subdirectory.  The twist at the end, I&#8217;d suppose, is that some hot-shot teenage hacker finds an exploit and jailbreaks Robocop remotely, thereby giving Robocop the ability to control himself, at which point, he pretends to be following orders, but instead, tracks down the guy controlling him.  Right before his death, the guy should shout something like &#8220;<em>But&#8230; I&#8217;m your masterrrrrrrrrrrrrr&#8230;.!</em>&#8221;</p>
<p>One of the unaddressed issues I saw with the robotic cops in the movie was the perpetual need for a lubricant like oil.  It seems submersion in water would simply short out all of these solutions.  So I&#8217;ll reiterate the lack of exposed skin and mechanics, and we&#8217;ll spend some time making our Robocop water resistant and reuse some sort of internally stored WD-40-like fluid, which is also &#8220;green.&#8221;   It would be a shame to build a billion dollar robocop only to have him quashed by a bucket of water.</p>
<p><img style="float: left; padding: 5px;" title="Robocop Car" src="http://firsttube.com/uploads/2010/01/robo_main_f.jpg" alt="" width="350" />I&#8217;d like to see Robocop be a little less terrifying to the average citizen.  Robocop ought to represent something, and cops are supposed to be there to <em><strong>protect and serve</strong></em> the average citizen, not just to get the bad guys.   So Robocop ought not be stomping around the police station and calling people &#8220;punk,&#8221; nor should he be be marching into an arcade, smarmily offering &#8220;Isn&#8217;t today a school day?&#8221; <em>Nein</em>, Robocop should be there for citizens, first and foremost.  We&#8217;ll disable his sarcasm and &#8220;witty quip&#8221; programs.   Robocop should offer an air of protection, not a fear he&#8217;ll malfunction.</p>
<p>Lastly, if I&#8217;m going to invest a billion into a Robocop, I think I might put him in something a touch nicer than an old, banged up Ford Taurus.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.firsttube.com/read/rethinking-robocop/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Javascript Ninja!</title>
		<link>http://www.firsttube.com/read/javascript-ninja/</link>
		<comments>http://www.firsttube.com/read/javascript-ninja/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 18:48:56 +0000</pubDate>
		<dc:creator>Adam S</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://firsttube.com/?p=1531</guid>
		<description><![CDATA[Thank you, John Resig. Because of you, I&#8217;m learning about Javascript the way Andy Gadiel taught me HTML. In the days before server-side scripting, I learned my first bits of HTML largely by viewing the source of Andy Gadiel&#8217;s Phish &#8230; <a href="http://www.firsttube.com/read/javascript-ninja/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Thank you, <a href="http://ejohn.org">John Resig</a>. Because of you, I&#8217;m learning about Javascript the way <a href="http://gadiel.com">Andy Gadiel</a> taught me HTML. In the days before server-side scripting, I learned my first bits of HTML largely by viewing the source of <a href="http://gadiel.com/phish">Andy Gadiel&#8217;s Phish page</a> (which, for some reason, remains largely unchanged since ~1997).  By reading Gadiel&#8217;s HTML, I slowly pieced together my own understanding of HTML.  It was <a href="http://www.amazon.com/gp/product/0789720248?ie=UTF8&amp;tag=firsttubecom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0789720248">Joe Burns&#8217; fantastic Javascript Goodies</a> that first had me dipping my n00b fingers into client side active scripting.  I picked up CSS all over the web.</p>
<p>Resig&#8217;s jQuery is so powerful and so easy that even with basic knowledge of CSS and Javascript, anyone can be a virtual scripting master.  It&#8217;s so easy, that I&#8217;ve slacked on learning about javascript objects, inheritance, closures, anonymous functions, prototypes, and scores of  other Javascript staples that I should&#8217;ve long since mastered.   I just discovered John&#8217;s new web app, cleverly titled &#8220;<a href="http://ejohn.org/apps/learn/">Learning Advanced Javascript</a>&#8220;, and so far, so good!</p>
<p>I wrote this myself and understand why it works, which is much more than I could say yesterday.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> ninja <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
	walk<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>steps<span style="color: #339933;">,</span>turn<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		toDo <span style="color: #339933;">=</span> <span style="color: #3366CC;">'Walking '</span><span style="color: #339933;">+</span>steps<span style="color: #339933;">+</span><span style="color: #3366CC;">' steps forward, then turning '</span><span style="color: #339933;">+</span>turn<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
	  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	star<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>action<span style="color: #339933;">,</span>distance<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		toDo <span style="color: #339933;">=</span> toDo<span style="color: #339933;">+</span><span style="color: #3366CC;">' '</span><span style="color: #339933;">+</span>action<span style="color: #339933;">+</span><span style="color: #3366CC;">'ing star '</span><span style="color: #339933;">+</span>distance<span style="color: #339933;">+</span><span style="color: #3366CC;">' feet'</span><span style="color: #339933;">;</span> <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
	  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	then<span style="color: #339933;">:</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>
		toDo <span style="color: #339933;">=</span> toDo<span style="color: #339933;">+</span><span style="color: #3366CC;">', then '</span><span style="color: #339933;">;</span> <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	doIt<span style="color: #339933;">:</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>
		log<span style="color: #009900;">&#40;</span>toDo<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
ninja.<span style="color: #660066;">walk</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'7'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'south'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">then</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">star</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'throw'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'50'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">doIt</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Output:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">&gt; Walking 7 steps forward, then turning south, then throwing star 50 feet</pre></div></div>

<p>It&#8217;s clear to me &#8211; and has been for some time &#8211; that the future of the web, for better or for worse, rests heavily on the mighty shoulders of client side scripting.   Building on powerful, extensible frameworks like <a href="http://jquery.com">jQuery</a> and <a href="http://mootools.net">MooTools</a>, the next generation of web apps is sure to compete with the desktop.  The ability to understand how to utilize the frameworks when necessary and hack together powerful scriptlets for other purposes seems essential to success in the future web. I know I&#8217;ll be investing in &#8220;<a href="http://www.amazon.com/gp/product/193398869X?ie=UTF8&amp;tag=firsttubecom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=193398869X" target="_blank">Secrets of a Javascript Ninja</a>&#8221; just as a result of this tutorial.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.firsttube.com/read/javascript-ninja/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Vista&#8230;WTF?!</title>
		<link>http://www.firsttube.com/read/vista-wtf/</link>
		<comments>http://www.firsttube.com/read/vista-wtf/#comments</comments>
		<pubDate>Sat, 19 Sep 2009 13:37:12 +0000</pubDate>
		<dc:creator>Adam S</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Fail]]></category>
		<category><![CDATA[Operating Systems]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://firsttube.com/?p=1501</guid>
		<description><![CDATA[I&#8217;ve kind of come around on Vista.  Although it was SO VERY painful to set up and get everything installed, that was long ago, most programs are now compatible, and I&#8217;ve come to appreciate some of the subtleties of the &#8230; <a href="http://www.firsttube.com/read/vista-wtf/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve kind of come around on Vista.  Although it was SO VERY painful to set up and get everything installed, that was long ago, most programs are now compatible, and I&#8217;ve come to appreciate some of the subtleties of the OS.  While there are some pieces that are just the pinnacle of stupidity (like the file open dialog), most pieces just make XP look so aged and cartoony in comparison.  As a result, I&#8217;m on Vista at work until I have 7 in hand.  But this week, I received an error that just makes me laugh.  What&#8217;s worse is that this problem can found all over Google, lots of people get it, and no one has a definitive fix.  I rarely use this meme, but this is an <em><strong>OS #FAIL</strong></em>.</p>
<p><a href="http://firsttube.com/uploads/2009/09/Vista-Service-Pack.jpg"><br />
<img class="aligncenter size-medium wp-image-1502" title="Vista-Service-Pack" src="http://firsttube.com/uploads/2009/09/Vista-Service-Pack-500x246.jpg" alt="Vista-Service-Pack" width="500" height="246" /></a><br />
<small>click the picture for a larger version</small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.firsttube.com/read/vista-wtf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Message To Apple Fanboys From Jason Calacanis</title>
		<link>http://www.firsttube.com/read/message-to-apple-fanboys-from-jason-calacanis/</link>
		<comments>http://www.firsttube.com/read/message-to-apple-fanboys-from-jason-calacanis/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 11:13:01 +0000</pubDate>
		<dc:creator>Adam S</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://firsttube.com/?p=1495</guid>
		<description><![CDATA[[media id=1]]]></description>
			<content:encoded><![CDATA[<p>[media id=1]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.firsttube.com/read/message-to-apple-fanboys-from-jason-calacanis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>It&#8217;s MY iPhone, Apple!</title>
		<link>http://www.firsttube.com/read/its-my-iphone-apple/</link>
		<comments>http://www.firsttube.com/read/its-my-iphone-apple/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 12:47:32 +0000</pubDate>
		<dc:creator>Adam S</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://firsttube.com/?p=1483</guid>
		<description><![CDATA[Why is it that I can connect my iPhone to my work computer and stream music over the air from my home computer to my speakers at work and be legit, but I can&#8217;t have my iPhone look like this &#8230; <a href="http://www.firsttube.com/read/its-my-iphone-apple/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Why is it that I can connect my iPhone to my work computer and stream music over the air from my home computer to my speakers at work and be legit, but I can&#8217;t have my iPhone look like this without breaking the iPhone terms of service? It&#8217;s <strong>my </strong>phone, Apple. Let me control it.<br />
<a href="http://firsttube.com/uploads/2009/08/IMG_1080.PNG"><img class="aligncenter size-full wp-image-1484" style="margin:0 auto;" title="iPhone OS Snow Leopard Theme" src="http://firsttube.com/uploads/2009/08/IMG_1080.PNG" alt="iPhone OS Snow Leopard Theme" width="320" height="480" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.firsttube.com/read/its-my-iphone-apple/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How Apple Can Win Me Back</title>
		<link>http://www.firsttube.com/read/how-apple-can-win-me-back/</link>
		<comments>http://www.firsttube.com/read/how-apple-can-win-me-back/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 23:18:16 +0000</pubDate>
		<dc:creator>Adam S</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Thoughts]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://firsttube.com/?p=1478</guid>
		<description><![CDATA[At Kroc&#8217;s request, I&#8217;m compiling a list of what Apple will have to do to win me back.  It&#8217;s not a long list, and it may not be exhaustive (meaning I may arbitrarily add more to it), but here goes: &#8230; <a href="http://www.firsttube.com/read/how-apple-can-win-me-back/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://twitter.com/Kroc/status/2917128635">At Kroc&#8217;s request</a>, I&#8217;m compiling a list of what Apple will have to do to win me back.  It&#8217;s not a long list, and it may not be exhaustive (meaning I may arbitrarily add more to it), but here goes:</p>
<ol class="ol">
<li>It&#8217;s time to regulate App Store approval process.  Consistency and transparency needs to be key.  I&#8217;m a web developer and I participate in the tech community.  To see Cocoa developers get screwed after spending all their time, energy, and capital writing an app only to be unceremoniously, silently rejected with no explanation is to see pure evil.  This is pretty much my main request.</li>
<li>However, I&#8217;m tired of the iPhone being shackled.  Unlike Eugenia, I don&#8217;t have specific requests like enabling EDGE on Pay-As-You-Go phones, but I&#8217;m tired of the iPhone being a closed platform.  I do <strong>not </strong>believe in &#8220;it&#8217;s Apple&#8217;s playground, if you don&#8217;t like it, go somewhere else.&#8221;  It&#8217;s <strong>my</strong> device. I bought it, I own it.  I want to theme my phone.  I want to run background apps.  And I sure as hell don&#8217;t need Apple telling me which apps are not suitable for me to run (outside of those that actually do harm to my phone and/or me, e.g. malware, spyware). It&#8217;s time to open the private APIs to the public, duplicate functionality or not.</li>
</ol>
<p>That&#8217;s it.  I maintain that OS X is the best desktop environment today.  I *love* my Mac and I love how integrated and &#8220;at home&#8221; I feel with it.  I don&#8217;t want to give it up.  I certainly don&#8217;t want to go back to Vista (although 7 is nice so far) or start running Ubuntu or Fedora on my iMac.</p>
<p>I think OS X/iLife and the iTunes/iPhone combos are awesome.    I think the Cocoa frameworks are just genius, and they inspire programmers to write beautiful and slick applications rapidly.  I want Apple to do the right thing.</p>
<p>Just for comparison, I have nothing but warm feelings about <a href="http://www.google.com/search?q=amazon.com+rebate+problem">Amazon.com, despite some issues people have had with them</a>. See how <a href="http://technologizer.com/2009/07/23/jeff-bezos-amazons-1984-actions-were-stupid/">Jeff Bezos stepped up and took personal responsibility for a recent fiasco</a>.  That&#8217;s how a CEO should behave.  A big company I respect.  I trust and respect Google.  But Apple leaves me with a metallic taste in my mouth that I know isn&#8217;t good.</p>
<p>I hope things change, but I&#8217;m not holding my breath.  Then again, <a href="http://www.apple.com/hotnews/openiphoneletter/">stranger things have happened</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.firsttube.com/read/how-apple-can-win-me-back/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>I&#8217;m Kicking the Apple Habit</title>
		<link>http://www.firsttube.com/read/im-kicking-the-apple-habit/</link>
		<comments>http://www.firsttube.com/read/im-kicking-the-apple-habit/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 20:04:41 +0000</pubDate>
		<dc:creator>Adam S</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://firsttube.com/?p=1475</guid>
		<description><![CDATA[I just sent this letter to Apple via their feedback form. Those of you that know me know that this is a big deal for me. I am the owner of many generations of Apple products. From iBooks to Macbook &#8230; <a href="http://www.firsttube.com/read/im-kicking-the-apple-habit/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I just sent this letter to Apple via their feedback form. Those of you that know me know that this is a <strong>big deal</strong> for me.</p>
<blockquote><p>I am the owner of many generations of Apple products.  From iBooks to Macbook Pros, Macbooks to multiple iMacs, multiple Airport Extremes, Airport Express, AppleTV, every generation of iPhone, three iPods, iWork, iLife, OS X and much more, we&#8217;ve owned and paid for it all.    I also rely heavily on the incredibly applications that run on OS X, gorgeous and useful as ever.</p>
<p>I have personally convinced at least 10 people to switch to AT&amp;T to the iPhone. I&#8217;ve convinced dozens to switch from PC to Mac.  I can provide names if prompted.</p>
<p>However, given the treatment of iPhone app developers recently, from Darkslide<sup>[1]</sup> to Google<sup>[2]</sup> to the recent Google Voice fiasco<sup>[3][4]</sup>, and the unnecessary lockdown of all of your platforms, I was forced not only to advocate for the increasing wave of jailbreakers, but also to make a startling decision: I&#8217;m kicking the Apple habit.</p>
<p>Your treatment of developers sucks.  Your treatment of your users sucks.  Your treatment of the general public sucks.  I&#8217;m over it.  I&#8217;m not buying any more of your products until I see a change.  You don&#8217;t deserve your customers respect anymore.   You still make the best products, but I&#8217;m not spending, or encouraging anyone else to spend, another dime with your company until you respect your ecosystem.</p>
<p>OS X only exists because quality developers wrote XNU, Darwin, and BSD.  You benefit from that.  If those people were treated the way you treat your developers, you&#8217;d have no core platform.</p>
<p>I&#8217;m anxiously awaiting your next move.</p>
<p>[1] <a href="http://speirs.org/2008/09/12/app-store-im-out/">http://speirs.org/2008/09/12/app-store-im-out/</a><br />
[2] <a href="http://www.osnews.com/story/21903/Apple_Rejects_Official_Google_Voice_iPhone_App">http://www.osnews.com/story/21903/Apple_Rejects_Official_Google_Voice_iPhone_App</a><br />
[3] <a href="http://www.seankovacs.com/index.php/2009/07/gv-mobile-is-getting-pulled-from-app-store/">http://www.seankovacs.com/index.php/2009/07/gv-mobile-is-getting-pulled-from-app-store/</a><br />
[4] <a href="http://www.riverturn.com/blog/?p=455">http://www.riverturn.com/blog/?p=455</a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.firsttube.com/read/im-kicking-the-apple-habit/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

