<?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>k3vin.net</title>
	<atom:link href="http://www.k3vin.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.k3vin.net</link>
	<description>Coding, Design, Writing and All-Around Awesome</description>
	<lastBuildDate>Mon, 22 Oct 2012 08:43:53 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Minimal Home Page</title>
		<link>http://www.k3vin.net/2012/10/minimal-home-page/</link>
		<comments>http://www.k3vin.net/2012/10/minimal-home-page/#comments</comments>
		<pubDate>Mon, 22 Oct 2012 08:43:53 +0000</pubDate>
		<dc:creator>Kevin Smith</dc:creator>
				<category><![CDATA[Software, Hardware & Tools]]></category>

		<guid isPermaLink="false">http://www.k3vin.net/?p=285</guid>
		<description><![CDATA[It seems that Google is not as minimalistic as it once was. Now there are user bars, share links, translations, drop-downs&#8230; don&#8217;t you miss when it was simple, and (importantly) loaded almost instantly? To remedy this, I&#8217;ve created g.k3vin.net, an ultra-minimalistic homepage with a Google search box, and nothing else. The entire page is 3,753 bytes [...]]]></description>
				<content:encoded><![CDATA[<p>It seems that Google is not as minimalistic as it once was. Now there are user bars, share links, translations, drop-downs&#8230; don&#8217;t you miss when it was simple, and (importantly) loaded almost instantly?</p>
<p>To remedy this, I&#8217;ve created <a title="g.k3vin.net" href="http://g.k3vin.net" target="_blank">g.k3vin.net</a>, an ultra-minimalistic homepage with a Google search box, and nothing else.</p>
<div id="attachment_286" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.k3vin.net/wp-content/uploads/Screen-Shot-2012-10-22-at-1.32.31-AM.png"><img class="size-medium wp-image-286" title="g.k3vin.net" src="http://www.k3vin.net/wp-content/uploads/Screen-Shot-2012-10-22-at-1.32.31-AM-300x253.png" alt="Screenshot of g.k3vin.net" width="300" height="253" /></a><p class="wp-caption-text">Behold! Nothing!</p></div>
<p>The entire page is 3,753 bytes (yes&#8230; bytes), and is entirely self contained, so only one HTTP request is made when you visit the site. The result? It loads near instantly (488ms!), so you don&#8217;t have to wait before searching.</p>
<p>Compare this with Google&#8217;s main page: 272.5 kilobytes (1024 bytes), 23 HTTP requests, and a loading time of 1.51 seconds.</p>
<p>Not that Google&#8217;s page is big/slow by modern web standards, but it was an interesting experiment that&#8217;s proved useful on several occasions.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.k3vin.net/2012/10/minimal-home-page/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Invincible&#8230; Forever!</title>
		<link>http://www.k3vin.net/2012/02/invincible-forever/</link>
		<comments>http://www.k3vin.net/2012/02/invincible-forever/#comments</comments>
		<pubDate>Sun, 26 Feb 2012 10:39:37 +0000</pubDate>
		<dc:creator>Kevin Smith</dc:creator>
				<category><![CDATA[Software, Hardware & Tools]]></category>

		<guid isPermaLink="false">http://www.k3vin.net/?p=241</guid>
		<description><![CDATA[Play it now! Before I delve into the remainder of this blog, go &#8220;play&#8221; Invincible&#8230; Forever! Tumult Hype I was recently introduced to a neat tool called Hype by San Francisco developer Tumult. Hype is an HTML 5 Animator, a tool to help build fast, fluid animated web content without using a proprietary or expensive program [...]]]></description>
				<content:encoded><![CDATA[<h2>Play it now!</h2>
<p>Before I delve into the remainder of this blog, go &#8220;play&#8221; <a href="http://www.k3vin.net/invincibleforever/" target="_blank">Invincible&#8230; Forever!</a></p>
<h2>Tumult Hype</h2>
<div id="attachment_243" class="wp-caption alignright" style="width: 160px"><img class="size-thumbnail wp-image-243" title="Tumult's Hype App" src="http://www.k3vin.net/wp-content/uploads/HypeApp-150x150.png" alt="Tumult's Hype App" width="150" height="150" /><p class="wp-caption-text">Tumult Hype</p></div>
<p>I was recently introduced to a neat tool called <a href="http://tumultco.com/hype/" target="_blank">Hype</a> by San Francisco developer <a href="http://tumultco.com" target="_blank">Tumult</a>. Hype is an HTML 5 Animator, a tool to help build fast, fluid animated web content without using a proprietary or expensive program like Adobe&#8217;s Flash.</p>
<p>The result can be exported directly to a web page, or exported as an HTML 5 widget to insert into Apple&#8217;s iBooks Author, creating an animated, interactive e-book.</p>
<p>The concept isn&#8217;t entirely original, and several other companies are currently developing similar solutions: <a href="http://labs.adobe.com/technologies/edge/" target="_blank">Adobe Edge</a> (preview), and <a href="http://www.sencha.com/products/animator" target="_blank">Sencha Animator</a> ($199). <a href="http://tumultco.com/hype/" target="_blank">Tumult Hype</a> sets itself apart by its simplicity, ease of use, and a very reasonable $49.99 price tag.</p>
<p>Because HTML 5 animations are very cross-platform friendly, and work on all modern browsers, as well as many mobile devices, they&#8217;re a future-proof solution for producing more dynamic content for web pages.</p>
<h2>The Making Of &#8220;Invincible&#8230; Forever!&#8221;</h2>
<p>To test out the capabilities of this app, I decided to put together an animated &#8220;game&#8221; with <a href="http://www.k3vin.net/2012/01/a-look-at-css-sprites/" target="_blank">sprites</a> from the game Super Mario Bros. Mario would be invincible, and run to the right infinitely, while enemies appear on the right, collied with him, and die.</p>
<p>For running Mario, I simply imported an animated .gif image. Mario would remain stationary in the center of the screen, and the ground would move underneath him to give the appearance of movement.</p>
<p>For the ground, I created a box, set its background to the brick image, and set the image to repeat. Now I could animate it!</p>
<p>I positioned the box at the start, on the left, hit &#8220;record&#8221;, moved the slider along the timeline, and dragged the box across the screen. Presto! Mario runs.</p>
<p style="text-align: center;"><a href="http://www.k3vin.net/wp-content/uploads/Screen-Shot-2012-02-26-at-1.29.03-AM.png"><img class="size-medium wp-image-245 aligncenter" title="Hype Screenshot 1" src="http://www.k3vin.net/wp-content/uploads/Screen-Shot-2012-02-26-at-1.29.03-AM-300x221.png" alt="" width="300" height="221" /></a></p>
<p>Now for the enemies, shrubs and cloud: Create .gif images, drag into scene. Position, record, position, done! Surprisingly simple and straightforward.</p>
<h2>Minor Quibbles</h2>
<p>Despite the relative ease-of-use, I did run into a few minor issues that I feel limit the usefulness of Tumult Hype.</p>
<h3>Sound</h3>
<p>The animation was only half the work. Afterwards, I had to put together the simple web site, and add&#8230; sound? Hmm&#8230; yes it seems that Tumult Hype lacks any kind of support for sounds and/or music. The developer claims that HTML5 Audio is &#8220;lousy across browsers and devices&#8221; (<a href="http://hype.desk.com/customer/portal/questions/188997-playing-sound-or-music" target="_blank">source</a>). To me, that seems like a lousy excuse. Within 10 minutes, and after a quick consultation to my <a href="http://www.k3vin.net/2012/02/css3-browser-support/">CSS3 charts</a> I had sound and music that works in most browsers.</p>
<h3>Javascript</h3>
<p>One issue with the sound/music is that they&#8217;re controlled by javascript completely independently of the animation. The problem with this is that after a little while, the sounds no longer sync up with the animation, due to differences in timing. One thing I <em>really</em> wanted to do was set keyframe-triggered javascript events. If I could fire an event on a specific keyframe, then I could hook into the event and trigger the sound, and never worry about it becoming out of sync.</p>
<h3>Curves</h3>
<p>Another thing I could find no mention of is a facility for creating custom, curved animation paths. When the enemies are hit by Mario, they go flying, and fall off the screen. If you hit something, it generally flies in a curved path, arcing upward before falling. This kind of effect is apparently impossible to create in Tumult Hype.</p>
<div id="attachment_254" class="wp-caption aligncenter" style="width: 310px"><img class="size-full wp-image-254 " title="curves" src="http://www.k3vin.net/wp-content/uploads/curves.jpg" alt="" width="300" height="151" /><p class="wp-caption-text">Left: The path I used... Right: The path I wanted.</p></div>
<p>In the end result, it doesn&#8217;t seem too apparent that I had to use an angular path, but it would have been nice&#8230; you know?</p>
<h3>Better Keyframe Positioning</h3>
<p>It doesn&#8217;t seem like there&#8217;s an easy way to fine-tune keyframe positioning. If I highlight one or more keyframes, and use the arrow keys, it either nudges the object&#8217;s position (Arrgh!) or moves the playhead around, de-selecting the keyframes in the process. It&#8217;s tricky to get that kind of fine-grained control on such a small user-interface element using a trackpad.</p>
<h2>Conclusions</h2>
<p>If Tumult keeps working on Hype, then it&#8217;s definitely going to have a place in the toolkits of future web developers. It could be a real competitor to Flash, and many other, much more expensive, HTML5 animators.</p>
<p>As it stands, I&#8217;d recommend that anyone who develops on the web take a little bit of time and at least check out the demo. At the very least, you might have fun putting together some neat animations on the internet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.k3vin.net/2012/02/invincible-forever/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CSS3 Browser Support</title>
		<link>http://www.k3vin.net/2012/02/css3-browser-support/</link>
		<comments>http://www.k3vin.net/2012/02/css3-browser-support/#comments</comments>
		<pubDate>Sun, 26 Feb 2012 10:03:13 +0000</pubDate>
		<dc:creator>Kevin Smith</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>

		<guid isPermaLink="false">http://www.k3vin.net/?p=248</guid>
		<description><![CDATA[Here is a must-have for any developer: an up-to-date chart of CSS3 support in all major browsers. If you do any kind of web-development work, and don&#8217;t find this insanely useful, then you might want to reconsider your choice of careers. I even printed it off as a poster, and hung it on the wall in [...]]]></description>
				<content:encoded><![CDATA[<p>Here is a must-have for any developer: <a href="http://www.findmebyip.com/litmus">an up-to-date chart of CSS3 support in all major browsers</a>. If you do any kind of web-development work, and don&#8217;t find this insanely useful, then you might want to reconsider your choice of careers.</p>
<p>I even printed it off as a poster, and hung it on the wall in our office. No joke.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.k3vin.net/2012/02/css3-browser-support/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A Look At CSS Sprites</title>
		<link>http://www.k3vin.net/2012/01/a-look-at-css-sprites/</link>
		<comments>http://www.k3vin.net/2012/01/a-look-at-css-sprites/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 08:09:26 +0000</pubDate>
		<dc:creator>Kevin Smith</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Designing]]></category>
		<category><![CDATA[Tips & Tricks]]></category>

		<guid isPermaLink="false">http://www.k3vin.net/?p=219</guid>
		<description><![CDATA[A Little Background&#8230; Of all the tools in my Web Developer&#8217;s Toolkit™, perhaps the most used, and the most useful, is a trick called the CSS Sprite. It&#8217;s an &#8220;advanced&#8221; technique that is actually deceptively simple, and leads to fantastic advantages in loading times of web pages. First, a quick primer. A &#8220;sprite&#8221; doesn&#8217;t refer [...]]]></description>
				<content:encoded><![CDATA[<h2>A Little Background&#8230;</h2>
<p>Of all the tools in my Web Developer&#8217;s Toolkit™, perhaps the most used, and the most useful, is a trick called the CSS Sprite. It&#8217;s an &#8220;advanced&#8221; technique that is actually deceptively simple, and leads to fantastic advantages in loading times of web pages.</p>
<p>First, a quick primer. A &#8220;sprite&#8221; doesn&#8217;t refer to a carbonated soft-drink, or a mythical fairy. It&#8217;s an archaic computer term that simply refers to a graphic, stored in memory, that can be drawn on the screen. Old video games would define regions of memory (later called a &#8220;sprite sheet&#8221;) that contain the individual frames of an animation, and by cycling through these regions, the objects on screen would appear to animate.</p>
<div id="attachment_220" class="wp-caption aligncenter" style="width: 394px"><img class="size-full wp-image-220  " title="mario" src="http://www.k3vin.net/wp-content/uploads/mario.gif" alt="" width="384" height="152" /><p class="wp-caption-text">A sprite sheet (left) and the resulting animation (right). Super Mario is registered trademark of Nintendo Co., Ltd.</p></div>
<p>The relationship between video games becomes clearer when you think about these sprite sheets. Instead of producing an animation, we can use the technique to reduce code complexity, decrease loading times, improve accessibility, optimize the site for search engines, and provide a &#8220;rollover&#8221; effect (making the image appear to change when the user moves the mouse over it).</p>
<h2>Getting Started</h2>
<p>The first step is identifying the images. In the screenshot below, I&#8217;ve highlighted the items that I would replace with sprites on my company&#8217;s new web site. It&#8217;s important to note that these are <strong><em>layout elements</em></strong>. They are not a part of the content of the page, and will not change as frequently.</p>
<div id="attachment_225" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.k3vin.net/wp-content/uploads/chilicode-sprites1.jpg"><img class="size-medium wp-image-225" title="chilicode-sprites" src="http://www.k3vin.net/wp-content/uploads/chilicode-sprites1-300x251.jpg" alt="" width="300" height="251" /></a><p class="wp-caption-text">Click to Embiggen</p></div>
<p>In this image, the logo in the top left, styled text in the middle, and button will have better accessibility and search engine friendliness. The icons in the top right and center of the page will have improved loading times, and the large chili will benefit from easier positioning and smoother rendering.</p>
<p>You&#8217;ll notice I didn&#8217;t highlight the portfolio thumbnails in the bottom right. This is because these images are dynamically inserted by a script, and therefore likely to change. Making them sprites would make them harder to manage in the future.</p>
<h2>The Markup</h2>
<p>Now that we&#8217;ve identified our images, it&#8217;s time to write the structure of the page in (X)HTML. Essentially, you can treat every element as if it were a piece of text, as the text will be replaced with images when the page is displayed.</p>
<p>Here is the markup for the very top bar, where the logo and social networking icons are displayed.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;h1&gt;&lt;a href=&quot;#&quot; id=&quot;logo&quot;&gt;Chili Code Solutions&lt;/a&gt;&lt;/h1&gt;
&lt;ul id=&quot;social-networks&quot;&gt;
	&lt;li&gt;
		&lt;a href=&quot;#&quot; id=&quot;facebook&quot; title=&quot;Join us on Facebook&quot;&gt;
			Join us on Facebook
		&lt;/a&gt;
	&lt;/li&gt;
	&lt;li&gt;
		&lt;a href=&quot;#&quot; id=&quot;twitter&quot; title=&quot;Follow us on Twitter&quot;&gt;
			Follow us on Twitter
		&lt;/a&gt;
	&lt;/li&gt;
	&lt;li&gt;
		&lt;a href=&quot;#&quot; id=&quot;linkedin&quot; title=&quot;Connect on LinkedIn&quot;&gt;
			Connect with us on LinkedIn
		&lt;/a&gt;
	&lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>On a text-only browser, assistive screen reader, or search engine robot, these elements will be displayed as text. Accessible and search engine optimized in one fell swoop!</p>
<h2>The Stylesheet</h2>
<p>To replace the text with an image, we need to use a little CSS magic. This code is proven to work in all but the most obscure browsers.</p>
<pre class="brush: css; title: ; notranslate">
/* For the logo */
#logo {
	display: block;
	text-indent: -9999px; /* Move the text left 9999px */
	overflow: hidden; /* Hide elements outside the block */
	width: 240px; /* Width of image */
	height: 40px; /* Height of image */
	/* Image */
	background-image: url('images/logo.png');
	background-repeat: no-repeat;
}
</pre>
<p>This demonstrates the basic principle, but it is not a CSS sprite. The web browser will still make an HTTP request to load the image if it isn&#8217;t cached, and there will be no performance benefit.</p>
<h2>Real Sprites</h2>
<p>The social networking icons are best implemented as true CSS sprites. We can reduce load times, as well as create a rollover effect.</p>
<p>The sprite image is a combination of all the images, arranged into one, similar to the following:</p>
<div id="attachment_228" class="wp-caption aligncenter" style="width: 124px"><img class="size-full wp-image-228" title="Social Network Sprites" src="http://www.k3vin.net/wp-content/uploads/sprite.png" alt="" width="114" height="68" /><p class="wp-caption-text">The top row is normal, the bottom is for the mouse-over state.</p></div>
<p>The idea is we&#8217;ll use the background-position CSS property, to position the background inside the visible area.</p>
<div id="attachment_229" class="wp-caption aligncenter" style="width: 262px"><img class="size-full wp-image-229" title="sprite-2" src="http://www.k3vin.net/wp-content/uploads/sprite-2.jpg" alt="" width="252" height="120" /><p class="wp-caption-text">Left: Normal style. Right: mouse-over style.</p></div>
<pre class="brush: css; title: ; notranslate">
/* For the facebook icon */
#facebook {
	display: block;
	text-indent: -9999px; /* Move the text left 9999px */
	overflow: hidden; /* Hide elements outside the block */
	width: 34px; /* Width of image */
	height: 34px; /* Height of image */
	/* Image */
	background: url('images/social-networks.png');
	background-repeat: no-repeat;
	background-position: 0px 0px; /* Position Image */
}
#facebook:hover {
	background-position: 0px -34px; /* Position Image */
}
</pre>
<p>Now, when the image is hovered, the background position will change, and the &#8220;over&#8221; state will be displayed.<br />
By combining the Facebook, Twitter, and LinkedIn into one image, you can reduce the number of HTTP requests, and simply position the background image.</p>
<pre class="brush: css; title: ; notranslate">
/* Combine into one definition */
#social-networks a {
	display: block;
	text-indent: -9999px; /* Move the text left 9999px */
	overflow: hidden; /* Hide elements outside the block */
	width: 34px; /* Width of image */
	height: 34px; /* Height of image */
	/* Image */
	background: url('images/social-networks.png');
	background-repeat: no-repeat;
}
/* Facebook */
#facebook {
	background-position: 0px 0px; /* Position Image */
}
#facebook:hover {
	background-position: 0px -34px; /* Position Image */
}
/* Twitter */
#twitter {
	background-position: -34px 0px; /* Position Image */
}
#twitter {
	background-position: -34px -34px; /* Position Image */
}
/* LinkedIn */
#linkedin {
	background-position: -68px 0px; /* Position Image */
}
#linkedin:hover {
	background-position: -68px -34px; /* Position Image */
}
</pre>
<p>The end result? Instead of loading 6 separate images, it loads one. Using background-position to display the area of the image, depending on the id of the element. It&#8217;s re-usable code, and it&#8217;s accessible, efficient, search-engine friendly.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.k3vin.net/2012/01/a-look-at-css-sprites/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>QR Codes</title>
		<link>http://www.k3vin.net/2011/07/qr-codes/</link>
		<comments>http://www.k3vin.net/2011/07/qr-codes/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 22:53:41 +0000</pubDate>
		<dc:creator>Kevin Smith</dc:creator>
				<category><![CDATA[Software, Hardware & Tools]]></category>
		<category><![CDATA[Tips & Tricks]]></category>

		<guid isPermaLink="false">http://www.k3vin.net/?p=206</guid>
		<description><![CDATA[QR Codes are becoming more and more visible these days, appearing everywhere from magazines, to bus stop ads. They even had a dancer hold up a giant QR Code in Stephen Colbert&#8217;s hilarious rendition of Rebecca Black&#8217;s &#8220;Friday&#8221;. They&#8217;re a useful tool that can help connect the physical world to the virtual one. A QR [...]]]></description>
				<content:encoded><![CDATA[<p>QR Codes are becoming more and more visible these days, appearing everywhere from magazines, to bus stop ads. They even had a dancer hold up a giant QR Code in <a href="http://www.youtube.com/watch?v=fSAwOcFr_VE&amp;feature=player_detailpage#t=225s" target="_blank">Stephen Colbert&#8217;s hilarious rendition of Rebecca Black&#8217;s &#8220;Friday&#8221;</a>. They&#8217;re a useful tool that can help connect the physical world to the virtual one.</p>
<p>A QR Code is basically a way of encoding text, and works in exactly the same way as the bar codes at the supermarket. Instead of being vertical lines, and read with a laser, the data is displayed on a grid, and read using the cameras in your smartphone. The name &#8220;QR Code&#8221; is short for &#8220;Quick Response Code&#8221;, due to the fact that they were designed to be instantly readable, even on low-power, embedded devices like &#8220;feature&#8221; phones.</p>
<p>If you want to make your own QR Codes, or use them in a project, there are a number of resources that make it easy to do.</p>
<p>First, take a look at this QR Code generator, at delivr: <a href="http://delivr.com/qr-code-generator">http://delivr.com/qr-code-generator</a></p>
<p>Using this, you can create a QR Code to be used in your project. Just choose the kind of code, enter your data, and click &#8220;Generate QR Code&#8221;!</p>
<p>If you need some more details on how they work, and how to make your own, take a look at the <a href="http://en.wikipedia.org/wiki/Qr_code" target="_blank">Wikipedia page on QR Codes</a>, which provide information on how the encoding works, and how you can generate codes manually in your project.</p>
<p>Finally, a neat trick I noticed: Google automatically displays QR Codes as download links on Google Code, for example: <a href="http://code.google.com/p/swfobject/downloads/detail?name=swfobject_2_2.zip" target="_blank">here</a>.</p>
<p>This means that Google QR Codes are being automatically generated for each download link. Knowing this, we can use Google&#8217;s Charts API (which is used to generate the codes) to provide quick and easily generated codes wherever they&#8217;re needed.</p>
<p>The format of the URL is as follows: https://www.google.com/chart?cht=qr&amp;chld=L|1&amp;chs=&lt;width&gt;x&lt;height&gt;&amp;chl=&lt;content&gt;</p>
<p>Simply replace &lt;width&gt; &amp; &lt;height&gt; with the size of the image you want (From about 25&#215;25 pixels and up), and the &lt;content&gt; with a URL-encoded string of your choice. Google will return a QR Code with the details you specified, ready for embedding.</p>
<p>From personal experience, QR Codes can be a great way to attract customers if used properly, and I expect they will explode in popularity within the coming years.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.k3vin.net/2011/07/qr-codes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The iPad 2</title>
		<link>http://www.k3vin.net/2011/04/the-ipad-2/</link>
		<comments>http://www.k3vin.net/2011/04/the-ipad-2/#comments</comments>
		<pubDate>Sun, 17 Apr 2011 07:57:08 +0000</pubDate>
		<dc:creator>Kevin Smith</dc:creator>
				<category><![CDATA[Software, Hardware & Tools]]></category>

		<guid isPermaLink="false">http://www.k3vin.net/?p=200</guid>
		<description><![CDATA[It&#8217;s no secret now, but in case you missed it, yes, I bought an iPad 2. After using it for a few days, and getting to know this shiny rectangular piece of modern technology, I feel qualified to share of my impressions of the device. Typing is actually pretty easy. In landscape orientation, anyways. Portrait is [...]]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s no secret now, but in case you missed it, yes, I bought an iPad 2. After using it for a few days, and getting to know this shiny rectangular piece of modern technology, I feel qualified to share of my impressions of the device.</p>
<ol>
<li>Typing is actually pretty easy. In landscape orientation, anyways. Portrait is a different matter entirely, and the on-screen keyboard is just too small, but since every app rotates to accomodate how you want to view it, I don&#8217;t consider this an issue. While I haven&#8217;t measured my typing speed quantitatively, I can say I&#8217;m almost as fast on the on-screen keyboard as I am with my laptop&#8217;s keys. This makes writing my science fiction story, or an email, or even a comment on a website a reasonably pleasant experience.</li>
<li>It&#8217;s heavy. I shudder to think of the wrist-mangling weight that the original iPad carried, but the first thing you think about with this model is how sore your wrists might be after anything more than 10 minutes of use. In practice, it&#8217;s not as bad as I had originally thought, since I usually find something to rest it on fairly quickly (my lap or knees being the most common places) but it still takes some time to figure out.</li>
<li>The iPad isn&#8217;t just a big iPod Touch. The extra screen makes so much of a difference it&#8217;s frightening. Suddenly you can see the big picture. Look at several things at once, and not have to squint at the tiny (but Retina™ clear!) text that the iPhone would display. Apps on the iPhone feel tiny and cramped by comparison, and I find myself reaching for the iPad to do some of the things I would have done on my iPhone before.</li>
<li>It&#8217;s making me paranoid. Is that guy on the bus going to jump me the moment I get off and steal it? Probably not, but as is true with any expensive new shiny gadget, I am immediately aware of the possibility for it getting stolen. I run through horror stories in my head whenever I&#8217;m in the downtown east-side (which I walk through every day on the way to work). I remember the stories of the person who got their finger torn off when a thief yanked a bag containing a new iPad out of their hands. Not fun.</li>
<li>This is the #&amp;%$*^ future. I think about this every time I pick up the iPad. Remember &#8220;Star Trek: The Next Generation&#8221; where everyone had these little handheld devices that did anything the show required of them? This is that. This is more than that. This is like the Hitchhiker&#8217;s Guide, and then some. My mind is constantly being blown at how far technology has advanced in the last few years, and the iPad 2 is the perfect example of that. I can stream movies, send e-mails, browse the web, play games&#8230; all at the flick of a finger. The new iOS software incorporates gestures that make performing simple tasks, such as closing an app, feel so natural and intuitive, I&#8217;ve often wondered why they haven&#8217;t appeared elsewhere before now.</li>
</ol>
<p>Now, is the iPad worthy of being called &#8220;magical&#8221;? Probably not. What is is though, is a well-designed device that excels in ease-of-use. So far, it seems to fit my needs just fine, and is a lot more natural than the awkward netbook that it replaced. Overall, I&#8217;m fairly impressed with it, and I am looking forward to using it to its full potential, and even developing my own apps to make use of the unique hardware and software.</p>
<p>My model: Wi-Fi only, 32GB flash memory, black.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.k3vin.net/2011/04/the-ipad-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iOSSecret</title>
		<link>http://www.k3vin.net/2011/03/iossecret/</link>
		<comments>http://www.k3vin.net/2011/03/iossecret/#comments</comments>
		<pubDate>Sun, 27 Mar 2011 08:15:40 +0000</pubDate>
		<dc:creator>Kevin Smith</dc:creator>
				<category><![CDATA[Coding]]></category>

		<guid isPermaLink="false">http://www.k3vin.net/?p=190</guid>
		<description><![CDATA[I&#8217;ve been learning to develop for the iOS platform, so I&#8217;ve got some really neat stuff in the works. The first of which is an app that d3IÖn6ëî&#38;µ¥äâÑ*ÞEí¡ÿzðERROR]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been learning to develop for the iOS platform, so I&#8217;ve got some really neat stuff in the works. The first of which is an app that d3IÖn6ëî&amp;µ¥äâÑ*ÞEí¡ÿzðERROR</p>
]]></content:encoded>
			<wfw:commentRss>http://www.k3vin.net/2011/03/iossecret/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weekly Wallpaper 3: Robots Don&#8217;t Need Moustaches</title>
		<link>http://www.k3vin.net/2011/03/weekly-wallpaper-3-robots-dont-need-moustaches/</link>
		<comments>http://www.k3vin.net/2011/03/weekly-wallpaper-3-robots-dont-need-moustaches/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 08:07:58 +0000</pubDate>
		<dc:creator>Kevin Smith</dc:creator>
				<category><![CDATA[Desktop Wallpapers]]></category>

		<guid isPermaLink="false">http://www.k3vin.net/?p=182</guid>
		<description><![CDATA[Author: Kevin Smith / Artwork by Divide By Zero, Picnik Dimensions: 1680×1050 License: CC BY-NC-SA 2.5 Download: here While exploring the APIs and functionality of a nifty online image editing service called Picnik, I created this funny little doodle out of their provided clip-art. My co-workers liked it so much I just had to make [...]]]></description>
				<content:encoded><![CDATA[<p>Author: Kevin Smith / Artwork by <a href="http://fonts.tom7.com/">Divide By Zero</a>, <a href="http://www.picnik.com/">Picnik</a><br />
Dimensions: 1680×1050<br />
License: <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/2.5/ca/">CC BY-NC-SA 2.5</a><br />
Download: <a href="http://www.k3vin.net/?attachment_id=183" target="_self">here</a></p>
<p>While exploring the APIs and functionality of a nifty online image editing service called <a href="http://www.picnik.com/">Picnik</a>, I created this funny little doodle out of their provided clip-art. My co-workers liked it so much I just had to make it into a full-size wallpaper. Here is the result.</p>
<p>I could not find any terms of use or licensing information for the artwork provided by either Divide By Zero or Picnik, additionally, neither party has made contact details available. I am therefore under the assumption that artwork provided is in the Public Domain, and my re-licensing and re-distribution of a derivative work under a creative commons license is lawful.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.k3vin.net/2011/03/weekly-wallpaper-3-robots-dont-need-moustaches/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Abusing t.co for Fun and Profit</title>
		<link>http://www.k3vin.net/2011/03/abusing-tco-for-fun-and-profit/</link>
		<comments>http://www.k3vin.net/2011/03/abusing-tco-for-fun-and-profit/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 07:34:15 +0000</pubDate>
		<dc:creator>Kevin Smith</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Tips & Tricks]]></category>

		<guid isPermaLink="false">http://www.k3vin.net/?p=171</guid>
		<description><![CDATA[Ah, yes. t.co. That amazingly tiny url shortening service created by Twitter when they decided that they wanted to alienate and abandon all the 3rd party developers who helped make them into the powerhouse social networking service that they are today. Using t.co has big advantages on Twitter, too: the original link is shown when [...]]]></description>
				<content:encoded><![CDATA[<pre></pre>
<p>Ah, yes. t.co. That amazingly tiny url shortening service created by Twitter when they decided that they wanted to alienate and abandon all the 3rd party developers who helped make them into the powerhouse social networking service that they are today. Using t.co has big advantages on Twitter, too: the original link is shown when the twitter post is viewed on the website, but the link only counts for 20 characters max. Twitter also provides security features, so that if a link contains potentially dangerous content, a user will be notified as such beforehand.</p>
<p>A link of 20 characters is one of the shortest of the URL-shortening services I&#8217;ve ever seen. It would be fantastic if we could use them elsewhere, would it not?</p>
<p>So here&#8217;s a nifty trick to generate a t.co URL without actually posting it to Twitter. You can do this in any language and on any platform that can make HTTP requests (and it helps if you can filter the result using regular expressions). You will, however, need a twitter account to make this work, and therefore I do not recommend using this method in a professional, production environment. Twitter has Developer API keys for that. I use this method for quick, easy scripts: anything that occasionally needs a short URL.</p>
<p>In essence, Twitter has a &#8220;share&#8221; service, that you can use to share a website. This includes passing the URL in the query parameter (where it is shortened and added to your message), entering a &#8220;tweet&#8221;, and posting it to your account. The fact that it is shortened BEFORE you post is what we&#8217;re going to take advantage of.</p>
<p>To make these requests from a web script, I recommend using one of my favorite PHP libraries: <a href="http://sourceforge.net/projects/snoopy/" target="_blank">Snoopy</a>! Snoopy is a web request library with support for redirection and cookies, which is what makes it so useful. I&#8217;ve used it many times in the past, and it has more than proven its worth. I won&#8217;t go into other languages or implementations, but it should be pretty straightforward.</p>
<p>Take a look at the script below:</p>
<pre class="brush: php; title: ; notranslate">
include 'Snoopy.class.php';
$link = &quot;http://www.google.ca&quot;;
$http = new Snoopy();
$http-&gt;maxredirs = 0;
$http-&gt;submit(&quot;http://twitter.com/share&quot;, array(
		'url' =&gt; $link,
		'session[username_or_email]' =&gt; '&lt;YOUR-TWITTER-ACCT&gt;',
		'session[password]' =&gt; '&lt;YOUR-TWITTER-PW&gt;',
		'commit' =&gt; 'Sign in'
	));
$html = $http-&gt;results;
</pre>
<p>What this does is log you in with your twitter account, and pass the /share service the link you want to send. The result will be a webpage with the share box containing your shortened url (among a lot of other form fields, images, text, and things we don&#8217;t care about).</p>
<p>To extract the fields, I used a handy loop and some regex. This can definitely be done in a simpler way, but I wanted to be thorough, and account for possible changes in the resulting /share page.</p>
<pre class="brush: php; title: ; notranslate">
$fields = array();
$matches = array();
preg_match_all('/&lt;input([^&gt;]+)&gt;/', $html, $matches,
	PREG_PATTERN_ORDER, 
	strpos($html, 'action=&quot;/share/update&quot;')
);
foreach($matches[1] as $match)
{
	$name = array(); $value = array();
	if(preg_match('/name=[&quot;\']([^&quot;\']+)[&quot;\']/', 
			$match, $name) 
		&amp;&amp; preg_match('/value=[&quot;\']([^&quot;\']+)[&quot;\']/',
			$match, $value))
	{
		$fields[trim($name[1])] = trim($value[1]);
	}
}
unset($matches);
</pre>
<p>At the end of all this, $fields will contain something that looks like this:</p>
<pre class="brush: plain; title: ; notranslate">
Array
(
    [authenticity_token] =&gt; somelongstringiprobablyshouldntshare
    [url] =&gt; http://www.google.com
    [shortened_url] =&gt; http://t.co/0vYtROQ
)
</pre>
<p>Just look! We have just obtained a t.co URL without having to post to Twitter! You can now use this URL for whatever purposes you wish, such as, but not limited to repeatedly tricking your friends and coworkers into watching Rick Astley&#8217;s &#8220;Never Gonna Give You Up&#8221; (<a href="http://t.co/aSObE9L">http://t.co/aSObE9L</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.k3vin.net/2011/03/abusing-tco-for-fun-and-profit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weekly Wallpaper 2: Light Room</title>
		<link>http://www.k3vin.net/2011/03/weekly-wallpaper-2-light-room/</link>
		<comments>http://www.k3vin.net/2011/03/weekly-wallpaper-2-light-room/#comments</comments>
		<pubDate>Fri, 11 Mar 2011 21:35:21 +0000</pubDate>
		<dc:creator>Kevin Smith</dc:creator>
				<category><![CDATA[Desktop Wallpapers]]></category>

		<guid isPermaLink="false">http://www.k3vin.net/?p=162</guid>
		<description><![CDATA[Author: (original) siwy7 / (modified) Kevin Smith Dimensions: 1680×1050 License: GPL Download: here The original light-room wallpaper is amazing, since it makes the desktop feel much bigger than it actually is &#8212; like a window into a vast, digital world. This wallpaper was never updated for high-resolution widescreen displays, so I&#8217;ve taken it upon myself [...]]]></description>
				<content:encoded><![CDATA[<p>Author: (original) <a href="http://gnome-look.org/usermanager/search.php?username=siwy78" target="_blank">siwy7</a> / (modified) Kevin Smith<br />
Dimensions: 1680×1050<br />
License: <a href="http://www.gnu.org/licenses/gpl.html" target="_blank">GPL</a><br />
Download: <a href="http://www.k3vin.net/?attachment_id=163" target="_self">here</a></p>
<p>The original light-room wallpaper is amazing, since it makes the desktop feel much bigger than it actually is &#8212; like a window into a vast, digital world. This wallpaper was never updated for high-resolution widescreen displays, so I&#8217;ve taken it upon myself to clean it up. Removed a lot of JPG compression artifacts, and adjusted it to a widescreen aspect ratio using a special technique to reduce the appearance of stretching or distortion.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.k3vin.net/2011/03/weekly-wallpaper-2-light-room/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
