<?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>tekphile &#187; technology</title>
	<atom:link href="http://www.tekphile.com/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tekphile.com</link>
	<description>where technology is headed</description>
	<lastBuildDate>Mon, 05 Dec 2011 05:48:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Beware gotcha when using HTML comments in Firefox</title>
		<link>http://www.tekphile.com/2011/12/beware-gotcha-when-using-html-comments-in-firefox/</link>
		<comments>http://www.tekphile.com/2011/12/beware-gotcha-when-using-html-comments-in-firefox/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 23:07:21 +0000</pubDate>
		<dc:creator>stantonk</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.tekphile.com/?p=483</guid>
		<description><![CDATA[TweetJust spent far too much time on this little gotcha, hopefully this saves someone a lot of frustration! Let&#8217;s say you have some markup, like so: &#60;div id="someContainer"&#62; &#60;span&#62;Some text&#60;/span&#62; &#60;/div&#62;&#60;!-- someContainer --&#62; It&#8217;s relatively common for people to put a closing comment to help match up closing tags. I personally don&#8217;t care for it [...]]]></description>
			<content:encoded><![CDATA[<div style="padding: 7px; float: right; margin: 10px; border-left: solid 1px #ddd; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px;"><a href="http://twitter.com/share?url=http://www.tekphile.com/2011/12/beware-gotcha-when-using-html-comments-in-firefox/&via=stantonk&text=Beware gotcha when using HTML comments in Firefox&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Just spent far too much time on this little gotcha, hopefully this saves someone a lot of frustration!</p>
<p>Let&#8217;s say you have some markup, like so:</p>
<pre class="brush:xml">&lt;div id="someContainer"&gt;
    &lt;span&gt;Some text&lt;/span&gt;
&lt;/div&gt;&lt;!-- someContainer --&gt;</pre>
<p>It&#8217;s relatively common for people to put a closing comment to help match up closing tags. I personally don&#8217;t care for it because it adds bytes to your HTML and a decent IDE should make it clear which opening and closing tags are paired together. Nevertheless, a lot of people do it, including some people I work with.</p>
<p class="brush:xml">Where you can get into trouble is if you decide you want to comment out that markup, like this:</p>
<pre class="brush:xml">&lt;!--
&lt;div id="someContainer"&gt;
    &lt;span&gt;Some text&lt;/span&gt;
&lt;/div&gt;&lt;!-- someContainer --&gt;</pre>
<p class="brush:xml">Both my <a title="Eclipse" href="http://eclipse.org" target="_blank">Eclipse IDE</a> and the Chrome and Safari (WebKit-based) browsers had absolutely no problem with this. But Firefox thinks that a comment open tag has been left open, and it produces mangled HTML as a result!</p>
<p class="brush:xml">If you are seeing weird behavior in Firefox, check your HTML comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tekphile.com/2011/12/beware-gotcha-when-using-html-comments-in-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learn to be an iOS Developer from the best, without paying tuition</title>
		<link>http://www.tekphile.com/2011/10/learn-to-be-an-ios-developer-from-the-best-without-paying-tuition/</link>
		<comments>http://www.tekphile.com/2011/10/learn-to-be-an-ios-developer-from-the-best-without-paying-tuition/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 22:46:33 +0000</pubDate>
		<dc:creator>stantonk</dc:creator>
				<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.tekphile.com/?p=465</guid>
		<description><![CDATA[TweetThere are some really great resources available if you want to learn to develop for the iOS platform (iPhones, iPod Touches, iPads). But perhaps the best resources out there, are free! Professor Paul Hegarty of Stanford teaches CS 193P &#8211; iPhone Application Development, and all of the lectures are available for free on iTunes U! Here&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<div style="padding: 7px; float: right; margin: 10px; border-left: solid 1px #ddd; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px;"><a href="http://twitter.com/share?url=http://www.tekphile.com/2011/10/learn-to-be-an-ios-developer-from-the-best-without-paying-tuition/&via=stantonk&text=Learn to be an iOS Developer from the best, without paying tuition&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>There are some really great resources available if you want to learn to develop for the iOS platform (iPhones, iPod Touches, iPads). But perhaps the best resources out there, are free! Professor Paul Hegarty of Stanford teaches CS 193P &#8211; iPhone Application Development, and all of the lectures are available for free on iTunes U!</p>
<p>Here&#8217;s everything you need to get started:</p>
<h4><strong>The Lectures</strong></h4>
<ul>
<li><a title="iPhone Development SD" href="http://itunes.apple.com/us/itunes-u/developing-apps-for-ios-sd/id395631522" target="_blank">Standard Definition</a></li>
<li><a href="http://itunes.apple.com/us/itunes-u/developing-apps-for-ios-hd/id395605774" target="_blank">High Definition</a> (Recommended, especially when Paul is showing code examples during lectures)</li>
</ul>
<h4>Xcode</h4>
<p><a href="http://developer.apple.com/technologies/" target="_blank">Xcode</a> is Apple&#8217;s comprehensive App development tool suite, including tools to write code, graphically build your app&#8217;s user interfaces, debug, and measure performance. It&#8217;s free if you&#8217;re already an Apple Developer, but if you&#8217;re not, you can buy it for $4.99 on the Mac App Store. (Note: it is a <strong><em>huge</em></strong> download, more than 4GB. Go do something else while it&#8217;s downloading!)</p>
<h4>Syllabus and Homework</h4>
<p>The course materials can be found <a href="http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-fall" target="_blank">here</a>.</p>
<p>One final note: these materials were produced before iOS5 and Xcode 4. However, the <a href="http://www.stanford.edu/class/cs193p/cgi-bin/drupal/" target="_blank">updated lectures</a> for these newer versions should be posted in early November, 2011 (soon!) That said, I&#8217;ve taken some of the classes already, and I haven&#8217;t had any issues even though I&#8217;m using the newer version of Xcode.</p>
<h4>Recommended Prerequisites</h4>
<p>You&#8217;ll be best prepared to dive right into iOS development if you have prior experience with:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Object-oriented_programming" target="_blank">Object-oriented programming</a>, in any language (i.e. Java, C++, PHP, Python, Ruby)</li>
<li><a href="http://en.wikipedia.org/wiki/Event-driven_programming" target="_blank">Event-driven programming</a></li>
</ul>
<div>However, if you&#8217;ve got enough drive, these deficits in experience are merely obstacles to overcome. Apple&#8217;s tools for iOS development amount to the most advanced and straightforward graphical application stack I&#8217;ve ever seen. An awful lot of the scary and complicated stuff is handled automatically for you, and you can mostly build your entire applications in Interface Builder by dragging and dropping the buttons, sliders, etc. that you need to make your app tick!</div>
]]></content:encoded>
			<wfw:commentRss>http://www.tekphile.com/2011/10/learn-to-be-an-ios-developer-from-the-best-without-paying-tuition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Disabling Chrome&#8217;s Obnoxious HTML5 Form Validation</title>
		<link>http://www.tekphile.com/2011/10/disabling-chromes-obnoxious-html5-form-validation/</link>
		<comments>http://www.tekphile.com/2011/10/disabling-chromes-obnoxious-html5-form-validation/#comments</comments>
		<pubDate>Wed, 05 Oct 2011 22:39:31 +0000</pubDate>
		<dc:creator>stantonk</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.tekphile.com/?p=434</guid>
		<description><![CDATA[TweetHas anyone else been bitten by this recently? You&#8217;re making a form for your website, and you need to collect the user&#8217;s email address. Rockstar web developer that you are, you use Google Chrome to test, and you&#8217;re using the fancy new HTML5 &#60;form&#62; tags. You maybe have something like: &#60;form id="signupForm" method="POST"&#62;&#60;code&#62; &#60;input id="email" [...]]]></description>
			<content:encoded><![CDATA[<div style="padding: 7px; float: right; margin: 10px; border-left: solid 1px #ddd; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px;"><a href="http://twitter.com/share?url=http://www.tekphile.com/2011/10/disabling-chromes-obnoxious-html5-form-validation/&via=stantonk&text=Disabling Chrome's Obnoxious HTML5 Form Validation&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Has anyone else been bitten by this recently? You&#8217;re making a form for your website, and you need to collect the user&#8217;s email address. Rockstar web developer that you are, you use Google Chrome to test, and you&#8217;re using the fancy new HTML5 &lt;form&gt; tags. You maybe have something like:</p>
<div id="_mcePaste">
<pre class="brush:xml">&lt;form id="signupForm" method="POST"&gt;&lt;code&gt;
&lt;input id="email" name="email" type="email" /&gt;
&lt;input id="passwd" name="passwd" type="password" /&gt;
&lt;input id="confirm" name="confirm" type="password" /&gt;
&lt;/form&gt;</pre>
</div>
<p>And then you go to test out your form in Chrome. You type in a bogus email address to test your server-side input validation.</p>
<p><img style="width: 300; height: 161;" title="Hosted by imgur.com" src="http://i.imgur.com/UHjDO.png" alt="" /></p>
<p>And when you hit enter to submit the form, you see this:</p>
<p><img style="width: 300; height: 174;" title="Hosted by imgur.com" src="http://i.imgur.com/94oml.png" alt="" /></p>
<p>Where did this come from!?! Chrome apparently tries to do its own form validation. Which is great I guess, but not when you want to do your own custom validation.</p>
<p>Luckily, this is easily disabled using the &#8220;novalidate&#8221; attribute in the &lt;form&gt; element, like so:</p>
<pre class="brush:xml">&lt;form id="signupForm" method="POST" novalidate&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.tekphile.com/2011/10/disabling-chromes-obnoxious-html5-form-validation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Finalist Investor Pitches At TechWeek Compete</title>
		<link>http://www.tekphile.com/2011/07/finalist-investor-pitches-at-techweek-compete/</link>
		<comments>http://www.tekphile.com/2011/07/finalist-investor-pitches-at-techweek-compete/#comments</comments>
		<pubDate>Fri, 29 Jul 2011 17:56:57 +0000</pubDate>
		<dc:creator>stantonk</dc:creator>
				<category><![CDATA[entrepreneurship]]></category>
		<category><![CDATA[startup]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.tekphile.com/?p=311</guid>
		<description><![CDATA[TweetNow that TechWeek Chicago, has come and gone, I wanted to share with everyone the presentations of the top five finalists of the midVenturesLAUNCH COMPETE competition. For those of you who weren&#8217;t able to attend, COMPETE is a competition between 35 startups, selected from a pool of applicants, for over $100,000 in cash and prizes. They [...]]]></description>
			<content:encoded><![CDATA[<div style="padding: 7px; float: right; margin: 10px; border-left: solid 1px #ddd; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px;"><a href="http://twitter.com/share?url=http://www.tekphile.com/2011/07/finalist-investor-pitches-at-techweek-compete/&via=stantonk&text=Finalist Investor Pitches At TechWeek Compete&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Now that <a title="TechWeek" href="http://techweek.com/" target="_blank">TechWeek</a> Chicago, has come and gone, I wanted to share with everyone the presentations of the top five finalists of the midVenturesLAUNCH COMPETE competition. For those of you who weren&#8217;t able to attend, COMPETE is a competition between 35 startups, selected from a pool of applicants, for over $100,000 in cash and prizes. They were judged by an expert panel, including Sam Yagan, Co-founder of <a title="OkCupid" href="http://okcupid.com" target="_blank">OkCupid</a>.</p>
<p>The finalists were:</p>
<ul>
<li><a href="http://new.babbaco.com/" target="_blank">BabbaCo</a>, an online store of great products for busy parents.</li>
<li><a title="Chute" href="http://getchute.com/" target="_blank">Chute</a>, a cloud-drive service for backing up, syncing and sharing your photos.</li>
<li><a title="Forecast" href="http://foreca.st/" target="_blank">Forecast</a>, a new app that lets you and your friends share where you&#8217;re <em>going</em> to be!</li>
<li><a title="gtrot" href="http://www.gtrot.com/" target="_blank">gtrot</a>, a social travel site for people to share travel plans and get advice from their friends on destinations.</li>
<li><a title="Safety Book" href="http://www.safetybook.org/" target="_blank">Safety Book</a>, a web-based home inventory tracker and safety recall monitor.</li>
</ul>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="390" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/Clca5OIaRxA?version=3&amp;hl=en_US" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="390" src="http://www.youtube.com/v/Clca5OIaRxA?version=3&amp;hl=en_US" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="390" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/57XC4bim9NE?version=3&amp;hl=en_US" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="390" src="http://www.youtube.com/v/57XC4bim9NE?version=3&amp;hl=en_US" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="390" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/zkRypYX0Gxc?version=3&amp;hl=en_US" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="390" src="http://www.youtube.com/v/zkRypYX0Gxc?version=3&amp;hl=en_US" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="390" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/bSgLlEOvrXQ?version=3&amp;hl=en_US" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="390" src="http://www.youtube.com/v/bSgLlEOvrXQ?version=3&amp;hl=en_US" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="390" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/IAhUWcNVqqI?version=3&amp;hl=en_US" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="390" src="http://www.youtube.com/v/IAhUWcNVqqI?version=3&amp;hl=en_US" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://new.babbaco.com/" target="_blank">BabbaCo</a> ended up winning COMPETE, congratulations to them, and to all of the finalists!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tekphile.com/2011/07/finalist-investor-pitches-at-techweek-compete/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Customize the default size of your Terminal in Ubuntu</title>
		<link>http://www.tekphile.com/2011/02/customize-the-default-size-of-your-terminal-in-ubuntu/</link>
		<comments>http://www.tekphile.com/2011/02/customize-the-default-size-of-your-terminal-in-ubuntu/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 18:27:27 +0000</pubDate>
		<dc:creator>stantonk</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[operating systems]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.tekphile.com/?p=280</guid>
		<description><![CDATA[TweetIf you&#8217;re like me, you can&#8217;t stand the default dimensions of the Terminal window in Ubuntu. Luckily, there&#8217;s an easy way to fix that for good! First, right-click on your Terminal shortcut, and select Properties from the context menu. Then modify the Command &#8220;gnome-terminal&#8221; (which is the executable name) to: gnome-terminal --geometry=150x30+600+600 The first two [...]]]></description>
			<content:encoded><![CDATA[<div style="padding: 7px; float: right; margin: 10px; border-left: solid 1px #ddd; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px;"><a href="http://twitter.com/share?url=http://www.tekphile.com/2011/02/customize-the-default-size-of-your-terminal-in-ubuntu/&via=stantonk&text=Customize the default size of your Terminal in Ubuntu&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>If you&#8217;re like me, you can&#8217;t stand the default dimensions of the Terminal window in Ubuntu. Luckily, there&#8217;s an easy way to fix that for good!</p>
<p>First, right-click on your Terminal shortcut, and select Properties from the context menu.<br />
<br />
<a href="http://www.tekphile.com/wp-content/uploads/2011/02/gnomeTerminalHOWTO1.jpg"><img src="http://www.tekphile.com/wp-content/uploads/2011/02/gnomeTerminalHOWTO1.jpg" alt="" title="Right-click on your Terminal shortcut, and select properties" width="477" height="254" class="alignnone size-full wp-image-281" /></a></p>
<p>Then modify the Command &#8220;gnome-terminal&#8221; (which is the executable name) to:<br />
<br />
<code>gnome-terminal --geometry=150x30+600+600</code><br />
<br />
The first two numbers, <code>150x30</code>, is the width and height of your window respectively. The second two numbers, <code>600+600</code>, are the coordinates of where you&#8217;d like the Terminal window to appear when you launch the program.<br />
<br />
<a href="http://www.tekphile.com/wp-content/uploads/2011/02/gnomeTerminalHOWTO2.jpg"><img src="http://www.tekphile.com/wp-content/uploads/2011/02/gnomeTerminalHOWTO2.jpg" alt="" title="Launcher Properties Window" width="477" height="254" class="alignnone size-full wp-image-290" /></a><br />
<br />
This should work in most other flavors of Linux as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tekphile.com/2011/02/customize-the-default-size-of-your-terminal-in-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting bashrc to work in Mac OS 10.6 Snow Leopard</title>
		<link>http://www.tekphile.com/2010/12/getting-bashrc-to-work-in-mac-os-10-6-snow-leopard/</link>
		<comments>http://www.tekphile.com/2010/12/getting-bashrc-to-work-in-mac-os-10-6-snow-leopard/#comments</comments>
		<pubDate>Fri, 24 Dec 2010 07:34:49 +0000</pubDate>
		<dc:creator>stantonk</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[operating systems]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.tekphile.com/?p=270</guid>
		<description><![CDATA[TweetI just got a new Mac on Wednesday, so naturally I&#8217;ve been configuring it to my liking bit by bit. I made the discovery that Snow Leopard doesn&#8217;t seem to support /Users/yourusername/.bashrc out of the box. No worries though, there is an easy fix! Open up Terminal and type: sudo vi /etc/bashrc Then at the [...]]]></description>
			<content:encoded><![CDATA[<div style="padding: 7px; float: right; margin: 10px; border-left: solid 1px #ddd; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px;"><a href="http://twitter.com/share?url=http://www.tekphile.com/2010/12/getting-bashrc-to-work-in-mac-os-10-6-snow-leopard/&via=stantonk&text=Getting bashrc to work in Mac OS 10.6 Snow Leopard&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>I just got a new Mac on Wednesday, so naturally I&#8217;ve been configuring it to my liking bit by bit. I made the discovery that Snow Leopard doesn&#8217;t seem to support /Users/yourusername/.bashrc out of the box.</p>
<p>No worries though, there is an easy fix!</p>
<p>Open up Terminal and type:</p>
<p><code>sudo vi /etc/bashrc</code></p>
<p>Then at the end of the file, add the following line:</p>
<p><code>source ~/.bashrc</code></p>
<p>Then, cd to /Users/yourusername and create a .bashrc file. If you&#8217;re not sure what you&#8217;re going to put in it just yet, at least do the following:</p>
<p><code>touch /Users/yourusername/.bashrc</code></p>
<p>So that you don&#8217;t get an error next time you open a shell ;-).</p>
<p>Hopefully that saves someone else some time!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tekphile.com/2010/12/getting-bashrc-to-work-in-mac-os-10-6-snow-leopard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Where is VHDL&#8217;s jQuery?</title>
		<link>http://www.tekphile.com/2010/12/where-is-vhdls-jquery/</link>
		<comments>http://www.tekphile.com/2010/12/where-is-vhdls-jquery/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 08:06:14 +0000</pubDate>
		<dc:creator>stantonk</dc:creator>
				<category><![CDATA[EDA]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[VHDL]]></category>

		<guid isPermaLink="false">http://www.tekphile.com/?p=259</guid>
		<description><![CDATA[TweetVHDL is a semi-broken language. Now, I definitely agree with Jan Decaluwe&#8217;s blog post that VHDL&#8217;s handling of determinism is a huge asset (see: Verilog&#8217;s Major Flaw). But from a programmer&#8217;s perspective the language is obnoxious to use. Some of it&#8217;s features are barely passable-like file i/o-and it takes a programmer far more brain function than it [...]]]></description>
			<content:encoded><![CDATA[<div style="padding: 7px; float: right; margin: 10px; border-left: solid 1px #ddd; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px;"><a href="http://twitter.com/share?url=http://www.tekphile.com/2010/12/where-is-vhdls-jquery/&via=stantonk&text=Where is VHDL's jQuery?&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>VHDL is a semi-broken language. Now, I definitely agree with Jan Decaluwe&#8217;s blog post that VHDL&#8217;s handling of determinism is a huge asset (see: <a title="Verilog's Major Flaw" href="http://www.sigasi.com/content/verilogs-major-flaw" target="_blank">Verilog&#8217;s Major Flaw</a>). But from a programmer&#8217;s perspective the language is obnoxious to use. Some of it&#8217;s features are barely passable-like file i/o-and it takes a programmer far more brain function than it should to do things.</p>
<p>Why is this? It&#8217;s always seemed like the language was a bit schizophrenic. Judging by the steering committee&#8217;s history with shared variables, this might be because hardware engineers resisted software-like concepts early on. And from what I can tell, the IEEE has done a fairly poor job shepherding the language in the 3 decades since it was created. Why it was never open-sourced, I&#8217;ll never understand. I actually asked (who, I can&#8217;t remember) during a webinar Q&amp;A on VHDL-2008 whether they&#8217;d consider open-sourcing the language, and was told that it &#8220;didn&#8217;t sound like a good idea.&#8221; Hmm. Maybe traditional EDA companies are to blame?</p>
<p>That said, VHDL isn&#8217;t the only language like this. The fact that a site like <a title="wtfjs" href="http://wtfjs.com/" target="_blank">wtfjs</a> exists is proof of that. Yet Javascript is widely used all across the web. You might argue that that&#8217;s simply because it&#8217;s gotten better over the years, and there&#8217;s likely some truth to that. I&#8217;ll argue, however, that one of the bigger reasons Javascript is so widely used today is that people innovated around the language&#8217;s faults by providing frameworks: <a title="jQuery" href="http://jquery.com" target="_blank">jQuery</a>, <a title="MooTools" href="http://mootools.net/" target="_blank">MooTools</a>, <a title="YUI" href="http://developer.yahoo.com/yui/" target="_blank">YUI</a>, <a title="Cappuccino" href="http://cappuccino.org/" target="_blank">Cappuccino</a>&#8230;the list goes on and on. These frameworks help to hide the obnoxious tasks from the programmer, and even provide commonly used programming patterns and widgets to prevent wheel reinvention.</p>
<p>If I had more free time, I&#8217;d start writing one by myself. In fact, I almost did. I got so far as to write down what I would put into it. That list is reproduced here:</p>
<div id="_mcePaste">Serial to parallel</div>
<div id="_mcePaste">Parallel to serial</div>
<div id="_mcePaste">Shift register</div>
<div id="_mcePaste">LFSRs</div>
<div id="_mcePaste">Interleaver/Deinterleaver</div>
<div id="_mcePaste">Synchronous &amp; Asynchronous FIFOs</div>
<div id="_mcePaste">Stacks, Queues</div>
<div id="_mcePaste">CAM Memory</div>
<div>Caches</div>
<div id="_mcePaste">Data Packetizer/Depacketizers (data marshaling)</div>
<div id="_mcePaste">DSP blocks</div>
<div id="_mcePaste">Micro-controllers</div>
<div id="_mcePaste">Processor Bus Interfaces</div>
<div id="_mcePaste">SPI Interfaces</div>
<div id="_mcePaste">I2C Interfaces</div>
<div id="_mcePaste">RS232</div>
<div id="_mcePaste">A/D, D/A Converter Interfaces</div>
<div>GPS Interfaces</div>
<div>Camera Interfaces</div>
<div>Ethernet Phy/MAC</div>
<p>All of these should be easily customized through generics, and contain self-verifying unit testbenches and documentation.</p>
<p>Some might argue that there&#8217;s no need for many of these because there&#8217;s already purchasable as IP. In my experience, IP always requires more of your own engineering than you expect, despite having paid for it, and support is pretty terrible. The strength of an open-source framework is that it gets the most sets of eyes on the code and documentation to catch errors and continually improve the quality. Often times, purchased IP you can&#8217;t even look at the source code to find out what&#8217;s wrong! I&#8217;ve been burned by this before.</p>
<p>So now all we need is a catchy sounding name and to grab the domain.</p>
<p>If we build it, they will come.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tekphile.com/2010/12/where-is-vhdls-jquery/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>The Case for vhdlUnit</title>
		<link>http://www.tekphile.com/2010/09/the-case-for-vhdlunit/</link>
		<comments>http://www.tekphile.com/2010/09/the-case-for-vhdlunit/#comments</comments>
		<pubDate>Sun, 26 Sep 2010 21:03:43 +0000</pubDate>
		<dc:creator>stantonk</dc:creator>
				<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.tekphile.com/?p=245</guid>
		<description><![CDATA[TweetTesting. It&#8217;s the most important part of engineering, whether its software or hardware. Yet all too often, it ends up getting sidestepped to get product out the door. It is woefully under-estimated in budgets and schedules. Then once the schedule starts slipping, engineers have trouble fighting the urge to skimp on testing to get things [...]]]></description>
			<content:encoded><![CDATA[<div style="padding: 7px; float: right; margin: 10px; border-left: solid 1px #ddd; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px;"><a href="http://twitter.com/share?url=http://www.tekphile.com/2010/09/the-case-for-vhdlunit/&via=stantonk&text=The Case for vhdlUnit&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Testing. It&#8217;s the most important part of engineering, whether its software or hardware. Yet all too often, it ends up getting sidestepped to get product out the door. It is woefully under-estimated in budgets and schedules. Then once the schedule starts slipping, engineers have trouble fighting the urge to skimp on testing to get things &#8220;done&#8221; faster. Most frustrating of all is the pressure from management to <em>cut</em> down testing hours in project plan estimates, because it &#8220;costs too much&#8221;, &#8220;takes too long&#8221;, or &#8220;doesn&#8217;t add enough value.&#8221;</p>
<p>The last 9 months of my life have been enlightening, jealousy inspiring, and ultimately motivating. Through the course of a number of side-projects I&#8217;ve been learning and using Java, PHP, Python, Javascript, and Tcl. The most poignant revelation to come from my varied experiences is that rigorous testing doesn&#8217;t have to be too difficult or costly to implement, and in fact, most languages have made it so easy to automate unit testing that the only excuse left to not do it is laziness. All of these languages have unit testing frameworks (most notably JUnit and PyUnit), which make writing tests and reporting results beautifully simple.</p>
<p>By day, I&#8217;m an FPGA developer and write mostly VHDL. Despite what some software developers might think about FPGA developers, we do quite a bit of unit testing, albeit without a formal framework. And that&#8217;s the problem. As schedules start slipping, the stress and anxiety of missing a deadline cause testing rigor to decrease. Ironically, if the project had a formal unit test suite that could be relied upon, stress and anxiety would be lessened because engineers wouldn&#8217;t have to fear breaking something in the frantic push to ship on time. They could simply launch their regression tests and review the results.</p>
<p>The most difficult part with engineering that takes place inside a text editor is that once our creations &#8220;live&#8221; in the physical world, they become a lot more difficult to test and diagnose problems.</p>
<p>Suppose you&#8217;re an analog engineer designing a bandpass filter using discrete components. You just got the manufactured boards back. How do you know the filter works? Do you just look at it and say &#8220;well, it <em>looks </em>like a bandpass filter, so it probably works.&#8221; Of course not. You connect a signal generator up to the input, place a spectrum analyzer on the output, and you sweep across input frequencies and measure the output signal to confirm your filter has the correct attenuation for out-of-band frequencies, etc. If you were to discover a problem, you&#8217;d grab a Fluke and check to confirm that the passive components have the proper quantities. This is in essence, a unit test.</p>
<p>Test suites written with frameworks like JUnit give you that warm, fuzzy feeling that all of the little pieces that make up your design are working correctly. This reduces the stress on your engineers, which I believe has a strong, direct correlation with product quality.</p>
<p>VHDL desperately needs an open-source unit testing framework modeled after JUnit. In general, FPGA and ASIC development methodologies have severely lagged innovations in the software world. Kent Beck, the father of Test Driven Development, wrote his landmark <a rel="nofollow" href="http://www.xprogramming.com/testfram.htm">Simple Smalltalk Testing: With Patterns</a> paper in 1989. It&#8217;s now 21 years later, and there is no vhdlUnit.</p>
<p>So, who wants to get started?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tekphile.com/2010/09/the-case-for-vhdlunit/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>iPhone prices to drop on Verizon and AT&amp;T?</title>
		<link>http://www.tekphile.com/2010/08/iphone-on-verizon-and-att/</link>
		<comments>http://www.tekphile.com/2010/08/iphone-on-verizon-and-att/#comments</comments>
		<pubDate>Sun, 08 Aug 2010 17:15:51 +0000</pubDate>
		<dc:creator>stantonk</dc:creator>
				<category><![CDATA[cellphone]]></category>
		<category><![CDATA[smartphone]]></category>

		<guid isPermaLink="false">http://www.tekphile.com/?p=240</guid>
		<description><![CDATA[TweetIt&#8217;s basically accepted as fact by now that the iPhone is coming to Verizon. When? Probably this Christmas, or early in 2011. The point is it&#8217;s going to happen, and when it does, things are going to get interesting. AT&#38;T is currently believed to be paying somewhere around $350-$400 in subsidy for each iPhone sold. [...]]]></description>
			<content:encoded><![CDATA[<div style="padding: 7px; float: right; margin: 10px; border-left: solid 1px #ddd; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px;"><a href="http://twitter.com/share?url=http://www.tekphile.com/2010/08/iphone-on-verizon-and-att/&via=stantonk&text=iPhone prices to drop on Verizon and AT&T?&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>It&#8217;s basically accepted as fact by now that the iPhone is coming to Verizon. When? Probably this Christmas, or early in 2011. The point is it&#8217;s going to happen, and when it does, things are going to get interesting.</p>
<p>AT&amp;T is currently believed to be paying somewhere around $350-$400 in subsidy for each iPhone sold. That&#8217;s a nice, healthy chunk of change for Apple. Since AT&amp;T has exclusivity of the iPhone, they have decided that this subsidy is an acceptable cost for the higher monthly service fees they receive from smartphone customers on their 2 year contracts.</p>
<p>Over on Verizon, there are now a bevy of Android based smartphones selling like hotcakes. Something more interesting is happening on the Android side though. Because there are so many handsets to choose from, you can get an Android phone for cheaper. Many Android handsets are priced below $99. The Motorola Droid has been out for only 9 months, and already is priced cheaper than at launch. Part of this is due to the Droid X&#8217;s release&#8211;only 8 months after the Droid. But the fact that Android handset makers need to be on a more aggressive release schedule is evidence of how hard they&#8217;re competing against each other.</p>
<p>Compare this to Apple. Their handsets don&#8217;t have to compete with other iOS based handsets on AT&amp;T. As a result, Apple can keep their prices higher. Their latest iPhone model released every year in June has had the same price points: $99 and $199, since the iPhone 3G was released. They don&#8217;t have to drop their prices, because there&#8217;s no alternative iOS handset.</p>
<p>Will this change once the iPhone hits Verizon? I bet it will. How else can Verizon and AT&amp;T compete for iPhone customers, if not on price of the handset? It makes more business sense to give customers a discount on the handset, rather than drop the price of service contracts. Dropping the price of the iPhone another $30-50 is a drop in the bucket compared to losing $10/month over the course of a 2 year contract. Despite the iPhone being available on Verizon and AT&amp;T at that point, it&#8217;s not as though customers can jump ship to the other carrier&#8211;the cellular radios are incompatible.</p>
<p>When the iPhone comes to Verizon, expect to see the price drop. But this won&#8217;t affect Apple, mind you, they&#8217;ll get a slightly larger subsidy from the carriers as they compete for iPhone customer&#8217;s wallets.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tekphile.com/2010/08/iphone-on-verizon-and-att/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Is Consumer Reports misleading the public about iPhone 4?</title>
		<link>http://www.tekphile.com/2010/07/is-consumer-reports-misleading-the-public-about-iphone-4/</link>
		<comments>http://www.tekphile.com/2010/07/is-consumer-reports-misleading-the-public-about-iphone-4/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 05:39:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[cellphone]]></category>
		<category><![CDATA[smartphone]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.tekphile.com/?p=213</guid>
		<description><![CDATA[TweetBy now everyone in the world has heard that Apple&#8217;s shiny new iPhone 4 allegedly has a fatal flaw worse than the Death Star. Consumer Reports claims that their &#8221;engineers have confirmed that iPhone 4 has an antenna problem&#8230;&#8221; and that it &#8220;&#8230;really is only with the iPhone 4.&#8221; Oh really?  Just watch this video I recorded [...]]]></description>
			<content:encoded><![CDATA[<div style="padding: 7px; float: right; margin: 10px; border-left: solid 1px #ddd; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px;"><a href="http://twitter.com/share?url=http://www.tekphile.com/2010/07/is-consumer-reports-misleading-the-public-about-iphone-4/&via=stantonk&text=Is Consumer Reports misleading the public about iPhone 4?&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>By now everyone in the world has heard that Apple&#8217;s shiny new iPhone 4 allegedly has a fatal flaw worse than the Death Star. <a title="Consumer Reports" href="http://video.consumerreports.org/services/player/bcpid21495733001?bctid=111613310001" target="_blank">Consumer Reports</a> <strong>claims </strong>that their &#8221;engineers have confirmed that iPhone 4 has an antenna problem&#8230;&#8221; and that it &#8220;&#8230;really is only with the iPhone 4.&#8221;</p>
<p>Oh really?  Just watch this video I recorded this evening with the original iPhone 2G, on T-Mobile USA&#8217;s network:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/r33kA8cP2X0&amp;hl=en_US&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/r33kA8cP2X0&amp;hl=en_US&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object><br />
Look familiar?!</p>
<p>Anand Lal Shimpi over at <a title="AnandTech" href="http://www.anandtech.com/" target="_blank"> AnandTech</a> did quite a rigorous investigation into iPhone 4&#8242;s reception and observed that:</p>
<blockquote><p>&#8220;squeezing it really tightly, you can drop as much as 24 dB. Holding it naturally, I measured an average drop of 20 dB.&#8221;</p></blockquote>
<p>Interesting! I measured an average drop of 20 dB when holding my iPhone 2G naturally, as seen in my video above. But here&#8217;s the kicker from Anand&#8217;s research:</p>
<blockquote><p>&#8220;From my day of testing, I&#8217;ve determined that the iPhone 4 performs much better than the 3GS in situations where signal is very low, at -113 dBm (1 bar)&#8230;I can honestly say that I&#8217;ve never held onto so many calls and data simultaneously on 1 bar at -113 dBm as I have with the iPhone 4, so it&#8217;s readily apparent that the new baseband hardware is much more sensitive compared to what was in the 3GS. The difference is that reception is massively better on the iPhone 4 in actual use.&#8221;</p></blockquote>
<p>In my opinion&#8211;and I happen to be an RF communications engineer at one of the largest cellphone designers in the world&#8211;the only thing Consumer Reports really can say with certainty is that signal strength depends on a variety of factors, one of which is dependent on how a phone is held. <strong>Any</strong> smartphone, or really any radio for that matter, will have it&#8217;s performance affected by how the antenna is placed, held, etc. It&#8217;s irresponsible and dishonest for them to claim anything otherwise.</p>
<p>But wait a minute! Consumer Reports said that they tested the iPhone 4 in a &#8220;signal proof room&#8221; that simulates &#8220;real life conditions&#8221;! Before addressing that, some background:</p>
<p>Your smartphone, and the cellular tower (or &#8220;base station&#8221;) both are really just digital radios. When you make phone calls, you&#8217;re talking on a walkie talkie that digitizes your voice and sends it to the base station using radio waves. Once there, the base station relays that voice data through the carrier&#8217;s network to the phone on the other end of the call, and vice versa.</p>
<p>For this whole system to work, you need to have a certain amount of Signal-to-Noise ratio, or SNR, at both the smartphone, and at the base station. SNR is measured in dBm, or decibels referenced to one milliwatt (mW), which is the standard unit of measure for RF engineers. If your SNR drops below the level of sensitivity of either radio, packets (small chunks of data, i.e. your voice or network synchronization traffic data) start getting dropped. If SNR is too low for too long, too many packets are dropped (this is where your voice starts &#8220;breaking up&#8221;) and then the call is dropped by the tower if SNR doesn&#8217;t recover to a level above sensitivity so that you don&#8217;t end up consuming precious bandwidth and preventing others from making calls.</p>
<p>What can cause SNR to drop? A whole slew of things:</p>
<ul>
<li>Distance from the cell tower</li>
<li>Interference from other radio waves</li>
<li>Attenuation from buildings, trees, trucks passing by, and how you hold the phone ;-)</li>
<li>Multipath distortion (a phenomenon in radio communications where multiple copies of the signal sent bounce off of buildings, etc. and arrive at slightly delayed times, causing inter-symbol interference (ISI). Think of it as the radio confusing 0&#8242;s and 1&#8242;s, causing corruption in packets sent. Though 2G, 3G, and 4G technologies do have equalization circuits and forward-error-correction (FEC) circuits that can help combat this, it does require a stronger SNR that otherwise to help decode the bits sent over the air.</li>
</ul>
<p>So, back to the &#8220;real life condtions&#8221; in Consumer Report&#8217;s &#8220;signal proof room.&#8221; The room they&#8217;re referring to is what&#8217;s known as a screen room. In their video, they claim that this environment simulates &#8220;real life conditions&#8221;. No it doesn&#8217;t! Screen rooms are designed to test radio performance while <strong>ignoring</strong> real-life issues, such as multipath, deep fades, interference, etc.</p>
<p>Does shorting the two antennas together cause a degradation in the performance of iPhone 4&#8242;s antenna? Sure. Does holding any phone change the performance of the antenna? Absolutely. Is the iPhone 4&#8242;s antenna a flawed design? <strong>Absolutely not</strong>. Could it be better? <strong>Definitely&#8230;but so can anything</strong>. Anand does suggest that Apple should &#8220;add an insulative coating&#8230;or subsidize bumper cases&#8221;. I&#8217;m not sure I agree, at least not yet. Depending on how Apple designed their antenna and radio front end, they could improve radio performance with a software update&#8211;I&#8217;ve implemented algorithms that did precisely this.</p>
<p>All in all, it seems clear that Consumer Reports didn&#8217;t prove anything is &#8220;flawed&#8221; with the iPhone 4, and acted irresponsibly in making the claims they did. The evidence they gave doesn&#8217;t support their claims, and was more smoke and mirrors than concrete information. It&#8217;s going to be difficult for me to trust their reviews of products in the future. As for what Apple does next, stay tuned for their <a href="http://digitaldaily.allthingsd.com/20100714/apple-to-hold-iphone-4-press-conference-friday/" target="_blank">invitation only press conference</a>, scheduled for this Friday.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tekphile.com/2010/07/is-consumer-reports-misleading-the-public-about-iphone-4/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

