<?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>MIKE.kz</title>
	<atom:link href="http://mike.kz/feed/" rel="self" type="application/rss+xml" />
	<link>http://mike.kz</link>
	<description>Michael Armstrong - Airing my creativity and misguided knowledge :)</description>
	<lastBuildDate>Wed, 01 May 2013 17:22:04 +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>Ubuntu 13.04 on a Late 2012 Mac Mini</title>
		<link>http://mike.kz/how-to/ubuntu-13-04-on-a-late-2012-mac-mini/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ubuntu-13-04-on-a-late-2012-mac-mini</link>
		<comments>http://mike.kz/how-to/ubuntu-13-04-on-a-late-2012-mac-mini/#comments</comments>
		<pubDate>Thu, 25 Apr 2013 21:50:42 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[vt-x]]></category>

		<guid isPermaLink="false">http://mike.kz/?p=346</guid>
		<description><![CDATA[EDIT: Tonight i&#8217;ll be picking up one of my Mac Mini&#8217;s from the Datacenter to get Ubuntu 13.04 up and running! expect a full guide with drivers here shortly So Ubuntu 13.04 LTS recently was released, It comes with the new 3.8.0-19 upstream of the Linux Kernel so I thought I&#8217;d check it out! Although [...]]]></description>
				<content:encoded><![CDATA[<p><strong>EDIT: Tonight i&#8217;ll be picking up one of my Mac Mini&#8217;s from the Datacenter to get Ubuntu 13.04 up and running! expect a full guide with drivers here shortly <img src='http://mike.kz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong></p>
<p>So Ubuntu 13.04 LTS recently was released, It comes with the new 3.8.0-19 upstream of the Linux Kernel so I thought I&#8217;d check it out!</p>
<p>Although our patched 12.04 and 12.10 Ubuntu&#8217;s use version 3.124c of the tg3 NeXtreme drivers from Broadcom which have Mac Mini support&#8230; The version in Ubuntu 13.04 (3.128c) seems to have had this removed!</p>
<p>A simple run of <code>modinfo tg3 | grep 1686</code> reveals sadly that support for detection of the Mac Mini Ethernet hardware seems to have been removed during 3.124 and 3.128 of the Broadcom tg3 drivers.</p>
<p>I&#8217;m likely to install 13.04 on a Mac Mini sometime soon so will update this post with a proper howto and any good news I encounter but I don&#8217;t think its good news&#8230;</p>
<p><code>lsmod | grep Ethernet</code> returns<br />
<code>01:00.0 Ethernet controller: Broadcom Corporation Device 1686 (rev 01)</code></p>
<p>whilst <code>modinfo tg3 | grep 1686</code> on our modified 12.04/12.10 machines using the NeXtreme driver from this blog returns:</p>
<p><code>alias:          pci:v000014E4d00001686sv*sd*bc*sc*i*</code></p>
<p>however on 13.04 returns nothing.</p>
<div class='kindleWidget kindleLight' ><img src="http://mike.kz/wp-content/plugins/send-to-kindle/media/white-15.png" /><span>Send to Kindle</span></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmike.kz%2Fhow-to%2Fubuntu-13-04-on-a-late-2012-mac-mini%2F&amp;title=Ubuntu%2013.04%20on%20a%20Late%202012%20Mac%20Mini" id="wpa2a_2"><img src="http://mike.kz/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://mike.kz/how-to/ubuntu-13-04-on-a-late-2012-mac-mini/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instantly gain insight on someone else&#8217;s iOS App Architecture with MADebugTools</title>
		<link>http://mike.kz/services/instantly-gain-insight-on-someone-elses-ios-app-architecture-with-madebugtools/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=instantly-gain-insight-on-someone-elses-ios-app-architecture-with-madebugtools</link>
		<comments>http://mike.kz/services/instantly-gain-insight-on-someone-elses-ios-app-architecture-with-madebugtools/#comments</comments>
		<pubDate>Fri, 19 Apr 2013 08:34:00 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Services]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[macbook]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://mike.kz/?p=340</guid>
		<description><![CDATA[Just a quick post to say i&#8217;ve posted my first piece of code in over 5 years to GitHub. Its a clever little Objective-C iOS Category on UIViewController that seemlessly overlays a UILabel on every single view controller managed view with the class, nib or storyboard name that is used. Great for debugging old or [...]]]></description>
				<content:encoded><![CDATA[<p>Just a quick post to say i&#8217;ve posted my first piece of code in over 5 years to GitHub. Its a clever little Objective-C iOS Category on UIViewController that seemlessly overlays a UILabel on every single view controller managed view with the class, nib or storyboard name that is used. Great for debugging old or inherited projects with minefield architectures. It uses some cool libobjc runtime techniques to accomplish this, but implementing the category is a case of dropping it into your project and Build+Go!</p>
<div class="wp-caption alignnone" style="width: 819px"><img alt="" src="http://mike.kz/catExampleCropped.png" width="809" height="593" /><p class="wp-caption-text">Category in Action</p></div>
<p><a href="https://github.com/michaelarmstrong/MADebugTools">Grab the source code here</a> as usual, follow me <a href="http://twitter.com/italoarmstrong">@italoarmstrong</a> on twitter <img src='http://mike.kz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<div class='kindleWidget kindleLight' ><img src="http://mike.kz/wp-content/plugins/send-to-kindle/media/white-15.png" /><span>Send to Kindle</span></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmike.kz%2Fservices%2Finstantly-gain-insight-on-someone-elses-ios-app-architecture-with-madebugtools%2F&amp;title=Instantly%20gain%20insight%20on%20someone%20else%E2%80%99s%20iOS%20App%20Architecture%20with%20MADebugTools" id="wpa2a_4"><img src="http://mike.kz/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://mike.kz/services/instantly-gain-insight-on-someone-elses-ios-app-architecture-with-madebugtools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting started with Mosh: the mobile shell</title>
		<link>http://mike.kz/how-to/getting-started-with-mosh-the-mobile-shell/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=getting-started-with-mosh-the-mobile-shell</link>
		<comments>http://mike.kz/how-to/getting-started-with-mosh-the-mobile-shell/#comments</comments>
		<pubDate>Tue, 09 Apr 2013 12:46:14 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[How To]]></category>

		<guid isPermaLink="false">http://mike.kz/?p=334</guid>
		<description><![CDATA[Mosh is something i&#8217;ve been meaning to give a go for a while now&#8230; but have never had the chance. Recently however, on a train from Rome to Florence, I got a little tired of reconnecting SSH sessions and re-attaching screen&#8217;s / tmux&#8217;s. Then I remembered&#8230; Mosh! Dubbed &#8220;the mobile shell&#8221; mosh is simple, it [...]]]></description>
				<content:encoded><![CDATA[<p>Mosh is something i&#8217;ve been meaning to give a go for a while now&#8230; but have never had the chance. Recently however, on a train from Rome to Florence, I got a little tired of reconnecting SSH sessions and re-attaching screen&#8217;s / tmux&#8217;s. Then I remembered&#8230; Mosh!</p>
<div class="wp-caption aligncenter" style="width: 487px"><img alt="" src="http://mike.kz/mosh.png" width="477" height="427" /><p class="wp-caption-text">Some examples of why / when to use Mosh</p></div>
<p>Dubbed &#8220;the mobile shell&#8221; mosh is simple, it requires you have the mosh binaries installed on both client, and server, and that you have permission to SSH to said server (you don&#8217;t need a root account). Then mosh will create an initial SSH session, which it in-turn uses to create a UDP connectionless &#8220;session&#8221; between mosh running on the server and mosh running on the client.</p>
<p>Why?</p>
<p>Well&#8230; I can type <code>mosh username@server.tld</code> start a nice terminal session, close my laptop / phone, come back 4 hours later, open my laptop&#8230; and carry on. It&#8217;s also very useful for environments where your connectivity is poor or you have a dodgy ISP supplied Router that can&#8217;t sustain SSH connections very well.</p>
<pre>$ mosh username@<i>hostname.tld</i></pre>
<p>Directly, <del>stolen</del> inspired from the <a href="http://mosh.mit.edu">original website</a>. Mosh will log the user in via SSH, then start a connection on a UDP port between 60000 and 61000.</p>
<p>Beyond just having a really stable &#8220;connection&#8221; to a remote Terminal session. Mosh also has some quite cool features, that users of other modern shells will appreciate, such as auto complete of common commands and also a nifty indicator bar to tell you if something is up with the connection.</p>
<p>All in all, give mosh a go, it took me less than 120 seconds to get up and running. If you hate dead ssh sessions and can&#8217;t wait for timeouts, then what are you waiting for <img src='http://mike.kz/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . As usual, hit me up at <a href="http://twitter.com/italoarmstrong">@italoarmstrong </a>on twitter if you want banter.</p>
<div class='kindleWidget kindleLight' ><img src="http://mike.kz/wp-content/plugins/send-to-kindle/media/white-15.png" /><span>Send to Kindle</span></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmike.kz%2Fhow-to%2Fgetting-started-with-mosh-the-mobile-shell%2F&amp;title=Getting%20started%20with%20Mosh%3A%20the%20mobile%20shell" id="wpa2a_6"><img src="http://mike.kz/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://mike.kz/how-to/getting-started-with-mosh-the-mobile-shell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>All posts now have Send To Kindle functionality</title>
		<link>http://mike.kz/site-news/all-posts-now-have-send-to-kindle-functionality/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=all-posts-now-have-send-to-kindle-functionality</link>
		<comments>http://mike.kz/site-news/all-posts-now-have-send-to-kindle-functionality/#comments</comments>
		<pubDate>Wed, 20 Mar 2013 23:23:51 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Site News]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[kindle]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[site news exciting new]]></category>

		<guid isPermaLink="false">http://mike.kz/?p=324</guid>
		<description><![CDATA[Amazon recently released their &#8220;Send to Kindle&#8221; plugin, allowing users of Kindles (whether on iOS/Android or owning a physical Amazon Kindle device) can now send any post on this blog directly to their device over the air or whispernet (depending on device) without having to manually copy and paste content. A little convenience method for [...]]]></description>
				<content:encoded><![CDATA[<p>Amazon recently released their &#8220;<a href="http://www.amazon.com/gp/sendtokindle">Send to Kindle</a>&#8221; plugin, allowing users of Kindles (whether on iOS/Android or owning a physical Amazon Kindle device) can now send any post on this blog directly to their device over the air or whispernet (depending on device) without having to manually copy and paste content. A little convenience method for those who wish to read offline / on the go. For those who don&#8217;t&#8230; simply ignore it <img src='http://mike.kz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Enjoy offline reading! (go into the posts to see &#8220;<a href="http://www.amazon.com/gp/sendtokindle">Send to Kindle</a>&#8221; buttons</p>
<div class='kindleWidget kindleLight' ><img src="http://mike.kz/wp-content/plugins/send-to-kindle/media/white-15.png" /><span>Send to Kindle</span></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmike.kz%2Fsite-news%2Fall-posts-now-have-send-to-kindle-functionality%2F&amp;title=All%20posts%20now%20have%20Send%20To%20Kindle%20functionality" id="wpa2a_8"><img src="http://mike.kz/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://mike.kz/site-news/all-posts-now-have-send-to-kindle-functionality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The __block specifier in Objective-C and Why its so mis-understood</title>
		<link>http://mike.kz/general/the-__block-specifier-in-objective-c-and-why-its-so-mis-understood/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-__block-specifier-in-objective-c-and-why-its-so-mis-understood</link>
		<comments>http://mike.kz/general/the-__block-specifier-in-objective-c-and-why-its-so-mis-understood/#comments</comments>
		<pubDate>Tue, 19 Mar 2013 23:17:28 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://mike.kz/?p=320</guid>
		<description><![CDATA[I&#8217;ve seen a lot of source code recently where people are mis-using the __block &#8220;specifier&#8221; that ships with modern Objective-C runtimes. I&#8217;ve always had the opinion that if you are to use __block for an Object then you should design around it and avoid, reserving its use for primitives. Regardless of that, here is a [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve seen a lot of source code recently where people are mis-using the <code>__block</code> &#8220;specifier&#8221; that ships with modern Objective-C runtimes. I&#8217;ve always had the opinion that if you are to use __block for an Object then you should design around it and avoid, reserving its use for primitives. Regardless of that, here is a summary of my understanding of __block to share with any other keen readers who may be interested.</p>
<p><code>__block</code> is used as variables outside the scope of a block become readonly once inside a block. For example</p>
<p><code> int num=1;<br />
void (^someBlock)(void) = ^{<br />
num = 2;<br />
};<br />
someBlock();</code></p>
<p>Would cause a compiler error asking for the __block specifier to be used. so in this case you can try:</p>
<p><code> __block int num=1;<br />
void (^someBlock)(void) = ^{<br />
num = 2;<br />
};<br />
someBlock();</code></p>
<p>and <code>num</code> will contain the correct value after block execution.</p>
<p>Straight forward right? So what about the following example:</p>
<p><code> __block NSMutableArray *someArray = @[@"Hello",@"World"];<br />
void (^someBlock)(void) = ^{<br />
[someArray addObject:@"Goodbye"];<br />
};<br />
someBlock();</code></p>
<p>It&#8217;s wrong&#8230; you don&#8217;t need <code>__block</code> in this case&#8230; why? because you&#8217;re not assigning a value to the captured &#8220;variable&#8221; <code>someArray</code>, rather you&#8217;re just sending a message. I often see this and wonder why.</p>
<p>The <code>__block</code> specifier is actually a storage-class specifier, to give you an idea of what this means, the following are also storage-class specifiers in C. <code>extern, typedef, static</code> and so on.</p>
<p>Why don&#8217;t I like <code>__block</code> a great deal then? Read on for more&#8230;</p>
<p><span id="more-320"></span></p>
<p>Well&#8230; it seems to create a lot of un-neccesary code under the hood. Take a look at the example given above with <code>__block int num = 1;</code> and the simple closure/block. This actually generates the following code:</p>
<p><code>struct __Block_byref_num_0 { void *__isa;<br />
__Block_byref_num_0 *__forwarding; int __flags;<br />
int __size;<br />
int num;<br />
};</code><br />
<code>struct __main_block_impl_0 {<br />
struct __block_impl impl;<br />
struct __main_block_desc_0* Desc;<br />
__Block_byref_num_0 *num;<br />
__main_block_impl_0(void *fp, struct __main_block_desc_0 *desc,<br />
__Block_byref_num_0 *_num, int flags=0) : num(_num-&amp;gt;__forwarding) { impl.isa = &amp;amp;_NSConcreteStackBlock;<br />
impl.Flags = flags;<br />
impl.FuncPtr = fp;<br />
Desc = desc; }<br />
};<br />
static void __main_block_func_0(struct __main_block_impl_0 *__cself) {<br />
__Block_byref_num_0 *num = __cself-&amp;gt;num;<br />
(val-&amp;gt;__forwarding-&amp;gt;num) = 1; }<br />
static void __main_block_copy_0( struct __main_block_impl_0*dst, struct __main_block_impl_0*src)<br />
{<br />
_Block_object_assign(&amp;amp;dst-&amp;gt;num, src-&amp;gt;num, BLOCK_FIELD_IS_BYREF); }<br />
static void __main_block_dispose_0(struct __main_block_impl_0*src) { _Block_object_dispose(src-&amp;gt;num, BLOCK_FIELD_IS_BYREF);<br />
}<br />
static struct __main_block_desc_0 {<br />
unsigned long reserved;<br />
unsigned long Block_size;<br />
void (*copy)(struct __main_block_impl_0*, struct __main_block_impl_0*); void (*dispose)(struct __main_block_impl_0*);<br />
} __main_block_desc_0_DATA = { 0,<br />
sizeof(struct __main_block_impl_0),</code><br />
<code>__main_block_copy_0, __main_block_dispose_0<br />
};<br />
int main() {<br />
__Block_byref_num_0 num = { 0,<br />
&amp;amp;num,<br />
0, sizeof(__Block_byref_num_0), 10<br />
};<br />
blk = &amp;amp;__main_block_impl_0(<br />
__main_block_func_0, &amp;amp;__main_block_desc_0_DATA, &amp;amp;num, 0x22000000);<br />
return 0; }</code><br />
Now&#8230; if you&#8217;re still reading at this point, well done <img src='http://mike.kz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  and you may have realised my point, <code>__block</code> isn&#8217;t as magically as it first seems. Anyway, this may be the most boring blog post ever&#8230; However, think again if you&#8217;re typing <code>__block</code> and definitely don&#8217;t use it unnecessarily. Saying all this, I could be very wrong, feel free to point that out to me on twitter <img src='http://mike.kz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  <a href="http://twitter.com/italoarmstrong">@italoarmstrong</a>.</p>
<div class='kindleWidget kindleLight' ><img src="http://mike.kz/wp-content/plugins/send-to-kindle/media/white-15.png" /><span>Send to Kindle</span></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmike.kz%2Fgeneral%2Fthe-__block-specifier-in-objective-c-and-why-its-so-mis-understood%2F&amp;title=The%20__block%20specifier%20in%20Objective-C%20and%20Why%20its%20so%20mis-understood" id="wpa2a_10"><img src="http://mike.kz/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://mike.kz/general/the-__block-specifier-in-objective-c-and-why-its-so-mis-understood/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Manage your KVM Hypervisor Remotely on your iPhone / iPad</title>
		<link>http://mike.kz/services/manage-your-kvm-hypervisor-remotely-on-your-iphone-ipad/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=manage-your-kvm-hypervisor-remotely-on-your-iphone-ipad</link>
		<comments>http://mike.kz/services/manage-your-kvm-hypervisor-remotely-on-your-iphone-ipad/#comments</comments>
		<pubDate>Mon, 18 Mar 2013 20:05:49 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Services]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[virtualisation]]></category>

		<guid isPermaLink="false">http://mike.kz/?p=316</guid>
		<description><![CDATA[Recently I began experimenting with KVM virtualisation in the Linux Kernel. Its a great technology that if your CPU supports VT-x / AMDV offers almost (really, almost) bare metal level performance inside Virtual Machines. It works on most Linux flavours and has a couple of handy management tools such as virsh and virt-manager. However, one [...]]]></description>
				<content:encoded><![CDATA[<p>Recently I began experimenting with KVM virtualisation in the Linux Kernel. Its a great technology that if your CPU supports VT-x / AMDV offers almost (really, almost) bare metal level performance inside Virtual Machines. It works on most Linux flavours and has a couple of handy management tools such as virsh and virt-manager. However, one thing I thought was always lacking and annoying me was of course, the ability to manage my Hypervisor from my iPhone / iPad when on the move! Time for an experiment I thought; then out came &#8220;KVM Remote&#8221;</p>
<div class="wp-caption alignnone" style="width: 2058px"><img alt="" src="http://mike.kz/kvmRemote.png" width="2048" height="1536" /><p class="wp-caption-text">KVM Remote on the iPad and 3 Different Remote Hypervisors</p></div>
<p>Its universal so works on both the iPhone and iPad and is extremely bleeding edge right now, but works! and is incidentally the first App i&#8217;ve made that doesn&#8217;t have selfish fiscal intentions, so theres another great reason to <a href="https://itunes.apple.com/us/app/kvm-remote-libvirt-virsh-linux/id597134292?ls=1&amp;mt=8">download it from the AppStore now</a>!</p>
<p>P.S. i&#8217;ll be updating it regularly adding more features as requests come in.</p>
<div class='kindleWidget kindleLight' ><img src="http://mike.kz/wp-content/plugins/send-to-kindle/media/white-15.png" /><span>Send to Kindle</span></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmike.kz%2Fservices%2Fmanage-your-kvm-hypervisor-remotely-on-your-iphone-ipad%2F&amp;title=Manage%20your%20KVM%20Hypervisor%20Remotely%20on%20your%20iPhone%20%2F%20iPad" id="wpa2a_12"><img src="http://mike.kz/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://mike.kz/services/manage-your-kvm-hypervisor-remotely-on-your-iphone-ipad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Overclocking &amp; Optimising the Raspberry PI</title>
		<link>http://mike.kz/how-to/overclocking-optimising-the-raspberry-pi/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=overclocking-optimising-the-raspberry-pi</link>
		<comments>http://mike.kz/how-to/overclocking-optimising-the-raspberry-pi/#comments</comments>
		<pubDate>Sun, 17 Mar 2013 11:31:36 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[raspbian]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://mike.kz/?p=301</guid>
		<description><![CDATA[Out the box the Raspberry PI comes with a ARM1176JZFS Core (armv6 with hard float aka armhf arch) running at 700 Mhz as part of the Broadcom SoC. Additionally the memory frequency is also limited. In recent firmwares however&#8230; tinkerers have had the ability to &#8220;overclock&#8221; the Raspberry PI to squeeze some extra juice out [...]]]></description>
				<content:encoded><![CDATA[<div class="wp-caption alignnone" style="width: 622px"><img alt="" src="http://mike.kz/b1a2bf1a82b611e2b3d922000a9f309f_7.jpg" width="612" height="612" /><p class="wp-caption-text">My Raspberry PI</p></div>
<p>Out the box the Raspberry PI comes with a ARM1176JZFS Core (armv6 with hard float aka armhf arch) running at 700 Mhz as part of the Broadcom SoC. Additionally the memory frequency is also limited. In recent firmwares however&#8230; tinkerers have had the ability to &#8220;overclock&#8221; the Raspberry PI to squeeze some extra juice out of it. Mine&#8217;s currently running at 1Ghz at a solid 48C temperature when under load. So the first question that springs to mind is&#8230; why doesn&#8217;t everyone overclock their Raspberry PI? Well&#8230; there have been (well founded) reports of SD card corruption, heat/power issues and instability. The idea of this post is to show the user how to safety squeeze every last bit, cycle and IOP out of their PI safely&#8217;ish and without being an astrophysicist. Read on for the know-how.<span id="more-301"></span></p>
<p>My Raspberry PI that was the victim of this how to is a Rev A, Model B, 256MB RAM model. I.e. the first Raspberry PI model publicly available. However, this should work on any PI.</p>
<p>If you flashed the standard Rasbian image on your Raspberry PI then it would have shipped with a tool named <code>raspi-config</code>. This tool basically gives an interactive interface to configuring lots of tweaks on your Raspberry PI without any manual intervention or guess work. It also restricts the limits of what you can do and warns you if you&#8217;re being stupid. So all-in-all&#8230;quite useful.</p>
<div class="wp-caption alignnone" style="width: 1434px"><img alt="" src="http://mike.kz/PI_1.png" width="1424" height="896" /><p class="wp-caption-text">Raspi-Config</p></div>
<p>The features we will be focusing on are <code>memory_split</code> and <code>overclock</code>&#8230; If you don&#8217;t see any of these options, then update raspi-config. Strictly speaking there are a <a href="http://elinux.org/RPiconfig#Overclocking">lot of Overclocking/Tweak options</a>, but most are not what we need right now / will be superseded by the our approach.</p>
<p><strong>Memory Split</strong></p>
<p>Firstly, make your decision, is this a headless server? will you be needing the GPU? if the answer to those questions is Yes then No, then you can free up a lot of memory by adjusting the split. I&#8217;ve set my split at 16MB to GPU and the rest to CPU, this is MORE than enough for your GPU to function and display headed now and again, but isn&#8217;t enough if you&#8217;re for example&#8230; decoding 1080p H264 high-profile.</p>
<div class="wp-caption alignnone" style="width: 958px"><img alt="" src="http://mike.kz/PI_2.png" width="948" height="116" /><p class="wp-caption-text">Select your RAM Split</p></div>
<p><strong>Overclock Options</strong></p>
<p>The next thing we are gonna do is Overclock, upon entering this menu you&#8217;ll get a few warnings about reducing the life of your PI and SD Card corruption. Both are incredibly true, however, my PI cost £25 and is a hobbyist device, if it breaks after 2 years, i&#8217;ll buy a new one (if i&#8217;m even still using it by then). The SD Card, my advice, its hit and miss, i&#8217;ve tested many cards on the PI, the higher end ones seem to be most affected by the over clock, whichever option you select is up to you, but i&#8217;d go for the max setting and scale back if you need <img src='http://mike.kz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="wp-caption alignnone" style="width: 816px"><img alt="" src="http://mike.kz/PI_3.png" width="806" height="238" /><p class="wp-caption-text">Select your Overclock preset.</p></div>
<p>Any setting you select in raspi-config is basically editing flat files on your SD Card that the firmware looks for when booting. So the final step is&#8230; REBOOT! You should then be inside your newly optimised PI.</p>
<p><strong>Power Hunger</strong></p>
<p>The PI needs the power it says on the tin, excessive use of the network+usb/cpu will reveal if you&#8217;re under-powering your PI, you will notice significant performance degradation when under stress and system instability. My advice, spend £4 on a decent power adaptor. It makes a difference.</p>
<p><strong>Final Safety Measure</strong></p>
<p>You see in the picture of my PI, i&#8217;m using a heatsink on the SoC, this was &#8220;donated&#8221; kindly by a friend (cheers Klaus), I suspect, knowing him, its from amazon.co.uk and <del>probably cost about £2.50, </del>I stand corrected, <a href="http://astore.amazon.co.uk/captaingeek-21/detail/B007PPEOCS">£2.73 for 2 from our amazon store</a> <img src='http://mike.kz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . I advise getting one, very easy to stick on, and even aesthetically pleasing. Its worth profiling your temperature after overclocking to judge stability. You can do this on any raspbian image by typing</p>
<p><code>root@raspberrypi:/home/pi# /opt/vc/bin/vcgencmd measure_temp<br />
temp=49.2'C</code></p>
<p>Anything above 50 i&#8217;d say is not great.</p>
<p>Anyway, i&#8217;ll try to update this little guide as I play around more with my PI, in the mean time, feel free to hit me up on twitter <a href="http://twitter.com/italoarmstrong">@italoarmstrong</a> with any queries / suggestions.</p>
<div class='kindleWidget kindleLight' ><img src="http://mike.kz/wp-content/plugins/send-to-kindle/media/white-15.png" /><span>Send to Kindle</span></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmike.kz%2Fhow-to%2Foverclocking-optimising-the-raspberry-pi%2F&amp;title=Overclocking%20%26%20Optimising%20the%20Raspberry%20PI" id="wpa2a_14"><img src="http://mike.kz/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://mike.kz/how-to/overclocking-optimising-the-raspberry-pi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing Linux on a Late 2012 Mac Mini</title>
		<link>http://mike.kz/how-to/installing-linux-on-a-late-2012-mac-mini/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installing-linux-on-a-late-2012-mac-mini</link>
		<comments>http://mike.kz/how-to/installing-linux-on-a-late-2012-mac-mini/#comments</comments>
		<pubDate>Sat, 16 Mar 2013 14:53:26 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mac mini]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[virtualisation]]></category>

		<guid isPermaLink="false">http://mike.kz/?p=294</guid>
		<description><![CDATA[So in the last post I discussed why the Mac Mini is the perfect machine for Linux and for Datacenters in general! One frustration some readers may be finding is that the networking chipset used by Ivy Bridge platform in Late 2012 Mac Mini&#8217;s doesn&#8217;t have native support in the Linux Kernel (as of now [...]]]></description>
				<content:encoded><![CDATA[<p>So in the last post I discussed why the Mac Mini is the perfect machine for Linux and for Datacenters in general! One frustration some readers may be finding is that the networking chipset used by Ivy Bridge platform in Late 2012 Mac Mini&#8217;s doesn&#8217;t have native support in the Linux Kernel (as of now anyway). So its required to install a kernel module from the manufacturer/vendor (broadcom).</p>
<p>On their website they provide the &#8220;tg3&#8243; drivers for Linux kernels, however these are only good if you are running a Linux kernel &lt; 3.5.x. If you take Ubuntu for example, 12.04 uses the 3.2.x stream, whereas 12.10 uses the 3.5.x stream and isn&#8217;t immediately compatible with the drivers on the <a href="http://www.broadcom.com/support/ethernet_nic/netxtreme_desktop.php">broadcom page</a>. This is due to the deprecation in 3.x and removal in 3.5.x of the <code>asm/system.h</code> header.</p>
<p>Read on for the fix, more and downloads.<span id="more-294"></span></p>
<p>The offending lines are <code>#include &lt;asm/system.h&gt;</code><br />
and<br />
<code> .get_sg = ethtool_op_get_sg,<br />
.set_sg = ethtool_op_set_sg,</code></p>
<p>These last two relate to TCP Segment Offloading (TSO), something else that was deprecated/removed. So in short, removing the #include statement and commenting out the following 2 lines entirely, would work just fine. Better still, you can wrap the 2 lines in a simple conditional macro such as<br />
<code>#if (LINUX_VERSION_CODE &amp;lt; 0x30000) ... #endif</code></p>
<p>Lastly, search for the line <code>#ifdef NETIF_F_TSO</code> and delete it. Now you should have a compilable tg3 driver than can be installed using DKMS on modern distributions or other methods. For a really good guide on how to install the driver using DKMS, <a href="http://www.frozenindustries.com/2012/11/04/ubuntu-12-04-lts-on-an-apple-mac-mini-late-2012/" target="_blank">see this post</a> for a reference.</p>
<p>If you can&#8217;t be bothered to make any changes to the drivers, then accept the <a href="http://www.broadcom.com/support/license.php?file=570x/linux-3.124c.zip">license from broadcom</a>, then download one of the below files:</p>
<p>Download: <a href="http://mike.kz/linux-3.124c.zip">Linux &lt;= 3.2.x Kernels</a></p>
<p>Download: <a href="http://mike.kz/linux-3.124c_3.5_KERNELS.zip">Linux &gt;= 3.5.x Kernels</a></p>
<p>Installing Linux itself is usually very easy, on some distributions you&#8217;ll have to boot with <code>noapic</code> and/or <code>noacpi</code>. Also, once installed, put the following into <code>/etc/rc.local</code><br />
<code>setpci -s 0:1f.0 0xa4.b=0</code><br />
This will make your Mac Mini automatically power on after a power outage, however, is only valid until the next reboot, thus why it should go in <code>/etc/rc.local</code>.</p>
<p>One final note, many distributions (ubuntu/debian at least) have a Mac specific .iso image you can download. These are usually hidden away in a repo, but often have the suffix +mac.iso. These essential have some extra packages / alternative boot options and sometimes even have native efi installation/booting. So worth checking out. Maybe i&#8217;ll write a how to on efi booting at some point. Until then, enjoy!</p>
<div class='kindleWidget kindleLight' ><img src="http://mike.kz/wp-content/plugins/send-to-kindle/media/white-15.png" /><span>Send to Kindle</span></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmike.kz%2Fhow-to%2Finstalling-linux-on-a-late-2012-mac-mini%2F&amp;title=Installing%20Linux%20on%20a%20Late%202012%20Mac%20Mini" id="wpa2a_16"><img src="http://mike.kz/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://mike.kz/how-to/installing-linux-on-a-late-2012-mac-mini/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why use a Mac Mini in a Datacenter environment, even without Mac OS X?</title>
		<link>http://mike.kz/how-to/mac-mini-in-the-datacenter/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mac-mini-in-the-datacenter</link>
		<comments>http://mike.kz/how-to/mac-mini-in-the-datacenter/#comments</comments>
		<pubDate>Sat, 16 Mar 2013 10:04:12 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[How To]]></category>

		<guid isPermaLink="false">http://mike.kz/?p=290</guid>
		<description><![CDATA[I recently changed from having Dedicated Servers to renting co-location rackspace directly in a datacenter. What this meant was that the &#8220;density&#8221; of CPU:Power ratio was important. Say for example you rent 1U of rackspace, that will come with some amount of power, measured in FLOOR(0.9*(AMPS=(WATTS / VOLTS)) during &#8220;peak&#8221; or &#8220;boot&#8221; power usage&#8230; with [...]]]></description>
				<content:encoded><![CDATA[<p>I recently changed from having Dedicated Servers to renting co-location rackspace directly in a datacenter. What this meant was that the &#8220;density&#8221; of CPU:Power ratio was important. Say for example you rent 1U of rackspace, that will come with some amount of power, measured in <strong>FLOOR(0.9*(AMPS=(WATTS / VOLTS)) </strong>during &#8220;peak&#8221; or &#8220;boot&#8221; power usage&#8230; with a total allocation of say 0.4 amps, along with bandwidth etc.</p>
<p>So why a Mac Mini for this purpose? Take for example a Dell Poweredge 1U Server&#8230; fits perfectly in the 1U of space provided and can consume a lot of power, 0.5+ so really, you can only squeeze 1 of these in without paying over-ages&#8230; at a push. What it does give you over a Mac Mini though, is the possibility to have 128GB RAM and 4 HDD bays in a single chassis, but at a much higher power cost. Lets take for example the Mac Mini&#8230; I&#8217;m colocating 4 Late 2012, Core i7 Mac Mini&#8217;s with 16GB RAM and 2TB hard drive space in EACH. Due to the way in which the Mac Mini was engineered, these consume around 0.19 AMPS each. Making the &#8220;density&#8221; increase, so in my 0.4 allocation, I can place 2 Mac Mini&#8217;s without incurring additional charges&#8230; thats 8 Physical Core i7 Cores&#8230; 32GB RAM and 4TB Hard drive space&#8230; in a piece of metal that is easily and readily available/replaceable and modular&#8230;</p>
<p>Those datacenter savvy people amoung you will now be thinking&#8230; ah, what about cooling, what about remote reboots etc&#8230; well there are solutions to all of that also, see my guide on Ubuntu 12.04 and 12.10 on a Late 2012 Mac Mini for a detailed howto.</p>
<p>The end result, you&#8217;re reading this blog post on a Centos VM hosted on a Debian KVM Based Hypervisor running on a Late 2012 Mac Mini! all setup and configured to be at a lower cost than any competitor and offering a really high density in a datacenter environment.</p>
<p>Wanna discuss, tweet me <a href="http://twitter.com/italoarmstrong">@italoarmstrong</a></p>
<div class='kindleWidget kindleLight' ><img src="http://mike.kz/wp-content/plugins/send-to-kindle/media/white-15.png" /><span>Send to Kindle</span></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmike.kz%2Fhow-to%2Fmac-mini-in-the-datacenter%2F&amp;title=Why%20use%20a%20Mac%20Mini%20in%20a%20Datacenter%20environment%2C%20even%20without%20Mac%20OS%20X%3F" id="wpa2a_18"><img src="http://mike.kz/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://mike.kz/how-to/mac-mini-in-the-datacenter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to turn off Auto Layout Automagically on Xcode 4 post iOS 6</title>
		<link>http://mike.kz/how-to/how-to-turn-off-auto-layout-automagically-on-xcode-4-post-ios-6/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-turn-off-auto-layout-automagically-on-xcode-4-post-ios-6</link>
		<comments>http://mike.kz/how-to/how-to-turn-off-auto-layout-automagically-on-xcode-4-post-ios-6/#comments</comments>
		<pubDate>Fri, 15 Mar 2013 22:23:30 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://captaingeek.net/?p=286</guid>
		<description><![CDATA[I&#8217;m sure i&#8217;m not the only one who is annoyed at the fact that, even though my project Deployment Target is set as iOS 5.0&#8230; Xcode finds it neccesary to enable Auto Layout on all newly created XIB&#8217;s regardless&#8230; causing Runtime exceptions that can be pesky and hard to find if not testing looking. So [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m sure i&#8217;m not the only one who is annoyed at the fact that, even though my project Deployment Target is set as iOS 5.0&#8230; Xcode finds it neccesary to enable Auto Layout on all newly created XIB&#8217;s regardless&#8230; causing Runtime exceptions that can be pesky and hard to find if not <del>testing</del> looking. So I started thinking how to disable this once and for all&#8230;</p>
<p>After monitoring the state of my disk, before and after ticking the infallable box in IB, I realised that Xcode is actually using some xml files to enable/disable this feature, however, there are a few locations and its a little pesky&#8230; i&#8217;d document it all here, but I don&#8217;t have it to hand and can&#8217;t remember&#8230; so maybe later&#8230; but until then, here is a little tool I made that performs a simple regexp on some of your Xcode installation files to make sure Auto Layout is disabled <img src='http://mike.kz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  NOTE: You&#8217;ll have to re-run this tool if you update/re-install Xcode.</p>
<p>Download: <a href="http://captaingeek.net/AutoLayoutAnnoyesMe.zip">AutoLayoutAnnoysMe.zip</a></p>
<p>&nbsp;</p>
<div class='kindleWidget kindleLight' ><img src="http://mike.kz/wp-content/plugins/send-to-kindle/media/white-15.png" /><span>Send to Kindle</span></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmike.kz%2Fhow-to%2Fhow-to-turn-off-auto-layout-automagically-on-xcode-4-post-ios-6%2F&amp;title=How%20to%20turn%20off%20Auto%20Layout%20Automagically%20on%20Xcode%204%20post%20iOS%206" id="wpa2a_20"><img src="http://mike.kz/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://mike.kz/how-to/how-to-turn-off-auto-layout-automagically-on-xcode-4-post-ios-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
