<?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>Skinkers</title>
	<atom:link href="http://blog.skinkers.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.skinkers.com</link>
	<description>Tech Blog</description>
	<lastBuildDate>Thu, 17 May 2012 10:50:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Phonegap Orientation Plugin</title>
		<link>http://blog.skinkers.com/2012/04/24/phonegap-orientation-plugin/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=phonegap-orientation-plugin</link>
		<comments>http://blog.skinkers.com/2012/04/24/phonegap-orientation-plugin/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 13:17:56 +0000</pubDate>
		<dc:creator>Adam Maloney</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Phonegap]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.skinkers.com/?p=4050</guid>
		<description><![CDATA[TweetRecently we did a cross-device project using Phonegap, one of the requirements was to enable rotation specific pages i.e.portrait would show one view landscape another and restricted to portrait only for others. Unfortunately, phonegap doesn&#8217;t support this, and restricting to one orientation defined in xcode/android manifest means didn&#8217;t fire the orientationchanged event. To get round this [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton4050" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fblog.skinkers.com%2F2012%2F04%2F24%2Fphonegap-orientation-plugin%2F&amp;via=skinkers&amp;text=Phonegap%20Orientation%20Plugin&amp;related=skinkers:We%5C%5C%5C%27re+a+Digital+Agency+that+can+help+you+plan%2C+create%2C+and+manage+innovative+technical+solutions+across+a+broad+range+of+digital+media.&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fblog.skinkers.com%2F2012%2F04%2F24%2Fphonegap-orientation-plugin%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://blog.skinkers.com/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Recently we did a cross-device project using <a href="http://www.phonegap.com/">Phonegap</a>, one of the requirements was to enable rotation specific pages i.e.portrait would show one view landscape another and restricted to portrait only for others.</p>
<p>Unfortunately, phonegap doesn&#8217;t support this, and restricting to one orientation defined in xcode/android manifest means didn&#8217;t fire the orientationchanged event. To get round this I created a plugin that could change the orientations from inside the phonegap application, so the orientationchanged event could fire, then I could change the view.</p>
<p>Check it out <a href="https://github.com/acti0nm4n/Phonegap-Orientation-iOS">here</a> for iOS (Android version coming soon).</p>
<p>&nbsp;</p>
<div class="alignright"><g:plusone href="http://blog.skinkers.com/2012/04/24/phonegap-orientation-plugin/" size="standard" count="true"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://blog.skinkers.com/2012/04/24/phonegap-orientation-plugin/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Xcode 4.3 and Titanium &#8211; getting the new Retina iPad Simulator to work with Titanium</title>
		<link>http://blog.skinkers.com/2012/04/03/xcode-4-3-and-titanium-getting-the-new-retina-ipad-simulator-to-work-with-titanium/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=xcode-4-3-and-titanium-getting-the-new-retina-ipad-simulator-to-work-with-titanium</link>
		<comments>http://blog.skinkers.com/2012/04/03/xcode-4-3-and-titanium-getting-the-new-retina-ipad-simulator-to-work-with-titanium/#comments</comments>
		<pubDate>Tue, 03 Apr 2012 13:27:15 +0000</pubDate>
		<dc:creator>Matt Bryson</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[titanium]]></category>

		<guid isPermaLink="false">http://blog.skinkers.com/?p=3937</guid>
		<description><![CDATA[TweetThe current Titanium SDK (1.8.2) doesn&#8217;t support Xcode 4.3, as Xcode 4.3 has a totally different structure in terms of tools and utilities. Until Ti 2.0 comes out, here is what you can do to get it working: 1) Follow the instructions on the TI web site http://developer.appcelerator.com/blog/2012/03/titanium-and-xcode-4-3-revisited.html#cheatsheet 2) This might not be needed on [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton3937" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fblog.skinkers.com%2F2012%2F04%2F03%2Fxcode-4-3-and-titanium-getting-the-new-retina-ipad-simulator-to-work-with-titanium%2F&amp;via=skinkers&amp;text=Xcode%204.3%20and%20Titanium%20%26%238211%3B%20getting%20the%20new%20Retina%20iPad%20Simulator%20to%20work%20with%20Titanium&amp;related=skinkers:We%5C%5C%5C%27re+a+Digital+Agency+that+can+help+you+plan%2C+create%2C+and+manage+innovative+technical+solutions+across+a+broad+range+of+digital+media.&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fblog.skinkers.com%2F2012%2F04%2F03%2Fxcode-4-3-and-titanium-getting-the-new-retina-ipad-simulator-to-work-with-titanium%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://blog.skinkers.com/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>The current Titanium SDK (1.8.2) doesn&#8217;t support Xcode 4.3, as Xcode 4.3 has a totally different structure in terms of tools and utilities.  Until Ti 2.0 comes out, here is what you can do to get it working:</p>
<p>1) Follow the instructions on the TI web site<br />
<a href="http://developer.appcelerator.com/blog/2012/03/titanium-and-xcode-4-3-revisited.html#cheatsheet" target="_blank"> http://developer.appcelerator.com/blog/2012/03/titanium-and-xcode-4-3-revisited.html#cheatsheet</a></p>
<p>2) This might not be needed on CI builds, but was on my release build:<br />
Open TI Studio, go to <code>Preferences  >Titanium Studio > Titanium </code> &#8211; and hit the <code>REFRESH</code> button on the IOS SDK home (it should update to the Xcode 4.3 path in Applications)</p>
<p>3) I cant ever change the IOS Simulator settings from within TI, it always crashes, so I usually open the IOS SIM myself, change the device, and then launch from TI.  So to select the Ipad Retina, launch the NEW IOS Sim from here:</p>
<pre class="brush: bash; title: ; notranslate">

open /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/iOS Simulator.app
</pre>
<p>And then go to <code>Devices > ipad (retina)</code></p>
<p>Now you should be all set.</p>
<p>As I often use spotlight to launch the IOS sim outside of Ti, I created a launcher app for the new Sim (A Symbolic link doesn&#8217;t work as spotlight thinks its a system file).</p>
<p><a href='http://blog.skinkers.com/2012/04/03/xcode-4-3-and-titanium-getting-the-new-retina-ipad-simulator-to-work-with-titanium/ios-sim-5-1-launcher/' rel='attachment wp-att-3949'>Download IOS Sim 5.1 launcher</a><br />
m</p>
<p><strong>UPDATE</strong><br />
I initially upgraded Xcode and kept my 4.2 install, but this caused all manner of issues after a few hours, and TI couldn&#8217;t compile &#8211; kept looking in the wrong Xcode dir for some libs. </p>
<p>Installing on a machine with JUST 4.3 works fine though.</p>
<div class="alignright"><g:plusone href="http://blog.skinkers.com/2012/04/03/xcode-4-3-and-titanium-getting-the-new-retina-ipad-simulator-to-work-with-titanium/" size="standard" count="true"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://blog.skinkers.com/2012/04/03/xcode-4-3-and-titanium-getting-the-new-retina-ipad-simulator-to-work-with-titanium/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting MAMP to run on OSX Lion / Upgrading phpMyAdmin</title>
		<link>http://blog.skinkers.com/2012/03/27/getting-mamp-to-run-on-osx-lion-and-upgrading-phpmyadmin/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=getting-mamp-to-run-on-osx-lion-and-upgrading-phpmyadmin</link>
		<comments>http://blog.skinkers.com/2012/03/27/getting-mamp-to-run-on-osx-lion-and-upgrading-phpmyadmin/#comments</comments>
		<pubDate>Tue, 27 Mar 2012 17:01:15 +0000</pubDate>
		<dc:creator>Matt Bryson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.skinkers.com/?p=3886</guid>
		<description><![CDATA[TweetI had been looking for a good alternative to WAMP to run on OSX, and decided to give MAMP / MAMP Pro a go. It looked pretty good, but I had a few teething troubles getting it all up and running, mainly; Apache wouldn&#8217;t start Then phpMyAdmin wouldn&#8217;t run This is what I did to [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton3886" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fblog.skinkers.com%2F2012%2F03%2F27%2Fgetting-mamp-to-run-on-osx-lion-and-upgrading-phpmyadmin%2F&amp;via=skinkers&amp;text=Getting%20MAMP%20to%20run%20on%20OSX%20Lion%20%2F%20Upgrading%20phpMyAdmin&amp;related=skinkers:We%5C%5C%5C%27re+a+Digital+Agency+that+can+help+you+plan%2C+create%2C+and+manage+innovative+technical+solutions+across+a+broad+range+of+digital+media.&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fblog.skinkers.com%2F2012%2F03%2F27%2Fgetting-mamp-to-run-on-osx-lion-and-upgrading-phpmyadmin%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://blog.skinkers.com/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>I had been looking for a good alternative to WAMP to run on OSX, and decided to give MAMP / MAMP Pro a go. It looked pretty good, but I had a few teething troubles getting it all up and running, mainly; </p>
<ul>
<li>Apache wouldn&#8217;t start</li>
<li>Then phpMyAdmin wouldn&#8217;t run</li>
</ul>
<p>This is what I did to get it running (and upgrade phpMyAdmin).<br />
<span id="more-3886"></span></p>
<h1>Getting Apache to Run</h1>
<p>The first issue I had was apache failing to run. There was no error, but MAMP Apache wont run if you have the OSX web sharing enabled, as they both run off port 80. MAMP does warn you of this, but my web sharing wasn&#8217;t actually enabled. Interestingly, I couldn&#8217;t enable it either. Every time I tried, it disabled itself immediately.</p>
<p>Assuming some service was still running that was blocking them both, I simply restarted (rather than hunt down the service), and MAMP Apache was now fine.</p>
<h1>Getting phpMyAdmin to run</h1>
<p>The next issue was launching phpMyAdmin.  When clicking on the tab in MAMP PRO to run phpMyAdmin, phpMyAdmin would report:</p>
<p><code> #1045 - Access denied for user 'root'@'localhost' (using password: YES)</code></p>
<p>It turned out this was due to the query string being passed to the <code>phpMyAdmin/index.php</code> page.  MAMP was appending <code>language=English</code> to the url, wich was the cause of the issue. The version of phpMyAdmin shipped with MAMP doesn&#8217;t appear to be multi language, and for some reason this request for English would cause the 1045 error.</p>
<h3>The Fix</h3>
<p>You can either remove this query, or simply upgrade phpMyAdmin to the multi langauge version and the problem is fixed.</p>
<p>To remove the query, edit;</p>
<p>MAMP:<br />
<code>/Applications/MAMP/bin/mamp/phpmyadmin.php</code></p>
<p>MAMP PRO:<br />
<code>/Library/Application Support/appsolute/MAMP PRO/mamp/phpmyadmin.php</code></p>
<p>And change the contents from:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php header('Location: /phpMyAdmin/'.(!empty($_SERVER['QUERY_STRING']) ? '?'.$_SERVER['QUERY_STRING'] : '')); ?&gt;
</pre>
<p>to:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php header('Location: /phpMyAdmin/'); ?&gt;
</pre>
<p>This will get phpMyAdmin to run, but be warned, it may well cause other issues as MAMP no longer passes any query vars to phpMyAdmin, so it&#8217;s preferable to upgrade phpMyAdmin, which will also fix the issue.</p>
<h1>Upgrade phpMyAdmin in MAMP</h1>
<p>Download the latest build from <a href="http://www.phpmyadmin.net/home_page/downloads.php" title="phpMyAdmin" target="_blank">phpMyAdmin</a>, ensuring you get the ALL LANGUAGES version (That bit is very important).</p>
<p>Expand the archive, and rename the directory to <code>phpMyAdmin</code>.</p>
<p>Copy this dir to one of the following locations (ensuring you backup the existing phpMyAdmin first)<br />
MAMP:<br />
<code>/Applications/MAMP/bin/</code></p>
<p>MAMP PRO:<br />
<code>/Library/Application Support/appsolute/MAMP PRO/</code></p>
<p>Now, <i>within</i> your new <code>phpMyAdmin</code> dir, create a file called <code>config.inc.php</code>, and insert the code below.  </p>
<p>This sets the username and pasword for phpMyAdmin to be that of MAMPs SQL set up. By default this is <code>root</code> and <code>root</code>, be sure to change these values below if you use a different set up:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * phpMyAdmin sample configuration, you can use it as base for
 * manual configuration. For easier setup you can use setup/
 *
 * All directives are explained in Documentation.html and on phpMyAdmin
 * wiki &lt;http://wiki.phpmyadmin.net&gt;.
 *
 * @package phpMyAdmin
 */

/*
 * This is needed for cookie based authentication to encrypt password in
 * cookie
 */
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

/*
 * Servers configuration
 */
$i = 0;

/*
 * First server
 */
$i++;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'root';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
/* Select mysql if your server does not have mysqli */
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = false;

/*
 * phpMyAdmin configuration storage settings.
 */

/* User used to manipulate with storage */
// $cfg['Servers'][$i]['controluser'] = 'pma';
// $cfg['Servers'][$i]['controlpass'] = 'pmapass';

/* Storage database and tables */
// $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
// $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
// $cfg['Servers'][$i]['relation'] = 'pma_relation';
// $cfg['Servers'][$i]['table_info'] = 'pma_table_info';
// $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
// $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
// $cfg['Servers'][$i]['column_info'] = 'pma_column_info';
// $cfg['Servers'][$i]['history'] = 'pma_history';
// $cfg['Servers'][$i]['tracking'] = 'pma_tracking';
// $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
// $cfg['Servers'][$i]['userconfig'] = 'pma_userconfig';
/* Contrib / Swekey authentication */
// $cfg['Servers'][$i]['auth_swekey_config'] = '/etc/swekey-pma.conf';

/*
 * End of servers configuration
 */

/*
 * Directories for saving/loading files from server
 */
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';

/**
 * Defines whether a user should be displayed a &quot;show all (records)&quot;
 * button in browse mode or not.
 * default = false
 */
//$cfg['ShowAll'] = true;

/**
 * Number of rows displayed when browsing a result set. If the result
 * set contains more rows, &quot;Previous&quot; and &quot;Next&quot;.
 * default = 30
 */
//$cfg['MaxRows'] = 50;

/**
 * Use graphically less intense menu tabs
 * default = false
 */
//$cfg['LightTabs'] = true;

/**
 * disallow editing of binary fields
 * valid values are:
 *   false  allow editing
 *   'blob' allow editing except for BLOB fields
 *   'all'  disallow editing
 * default = blob
 */
//$cfg['ProtectBinary'] = 'false';

/**
 * Default language to use, if not browser-defined or user-defined
 * (you find all languages in the locale folder)
 * uncomment the desired line:
 * default = 'en'
 */
//$cfg['DefaultLang'] = 'en';
//$cfg['DefaultLang'] = 'de';

/**
 * default display direction (horizontal|vertical|horizontalflipped)
 */
//$cfg['DefaultDisplay'] = 'vertical';

/**
 * How many columns should be used for table display of a database?
 * (a value larger than 1 results in some information being hidden)
 * default = 1
 */
//$cfg['PropertiesNumColumns'] = 2;

/**
 * Set to true if you want DB-based query history.If false, this utilizes
 * JS-routines to display query history (lost by window close)
 *
 * This requires configuration storage enabled, see above.
 * default = false
 */
//$cfg['QueryHistoryDB'] = true;

/**
 * When using DB-based query history, how many entries should be kept?
 *
 * default = 25
 */
//$cfg['QueryHistoryMax'] = 100;

/*
 * You can find more configuration options in Documentation.html
 * or here: http://wiki.phpmyadmin.net/pm language=&quot;bash&quot;a/Config
 */
?&gt;
</pre>
<p>Now reboot you MAMP servers, and your links to phpMyAdmin should work, AND you have the latest build of phpMyAdmin with the nice jquery UI.</p>
<p>m.</p>
<div class="alignright"><g:plusone href="http://blog.skinkers.com/2012/03/27/getting-mamp-to-run-on-osx-lion-and-upgrading-phpmyadmin/" size="standard" count="true"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://blog.skinkers.com/2012/03/27/getting-mamp-to-run-on-osx-lion-and-upgrading-phpmyadmin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Generate visual Stats / Graphs from a Git repository (on OSX)</title>
		<link>http://blog.skinkers.com/2012/02/13/generate-visual-stats-graphs-from-a-git-repository-on-osx/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=generate-visual-stats-graphs-from-a-git-repository-on-osx</link>
		<comments>http://blog.skinkers.com/2012/02/13/generate-visual-stats-graphs-from-a-git-repository-on-osx/#comments</comments>
		<pubDate>Mon, 13 Feb 2012 16:14:57 +0000</pubDate>
		<dc:creator>Matt Bryson</dc:creator>
				<category><![CDATA[git]]></category>
		<category><![CDATA[gitStats]]></category>
		<category><![CDATA[graphs]]></category>
		<category><![CDATA[statistics]]></category>

		<guid isPermaLink="false">http://blog.skinkers.com/?p=3683</guid>
		<description><![CDATA[TweetI was looking to get some slightly more detailed stats out of a git repo, more than just the command line stats you can generate. There are a couple of tools out there that generate graphs and charts for you, but they rely heavily on external libraries. The best looking one was GitStats http://gitstats.sourceforge.net/ (example). [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton3683" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fblog.skinkers.com%2F2012%2F02%2F13%2Fgenerate-visual-stats-graphs-from-a-git-repository-on-osx%2F&amp;via=skinkers&amp;text=Generate%20visual%20Stats%20%2F%20Graphs%20from%20a%20Git%20repository%20%28on%20OSX%29&amp;related=skinkers:We%5C%5C%5C%27re+a+Digital+Agency+that+can+help+you+plan%2C+create%2C+and+manage+innovative+technical+solutions+across+a+broad+range+of+digital+media.&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fblog.skinkers.com%2F2012%2F02%2F13%2Fgenerate-visual-stats-graphs-from-a-git-repository-on-osx%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://blog.skinkers.com/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>I was looking to get some slightly more detailed stats out of a git repo, more than just the command line stats you can generate.  There are a couple of tools out there that generate graphs and charts for you, but they rely heavily on external libraries.</p>
<p>The best looking one was GitStats <a href="http://gitstats.sourceforge.net/" title="GitStats" target="_blank">http://gitstats.sourceforge.net/</a> (<a href="http://gitstats.sourceforge.net/examples/crossfire/" title="example" target="_blank">example</a>). But after checking off the pre reqs of  Python, X11 and downloading and compiling GnuPlot it still wasn&#8217;t creating PNG graphs due to missing 3rd party libraries!! It was proving to be a bit of a pain, but I finally managed to get it all working with just 2 downloads (I already had python) &#8211; GitStats and a pre compiled binary of GnuPlot that contains all the 3rd party dependencies used by GitStat.</p>
<p>Below are some simple steps to get it up and running on OSX:</p>
<p><span id="more-3683"></span></p>
<p><strong>Pre Requisites</strong><br />
Clone GitStats, I placed it into my developer folder:</p>
<pre class="brush: bash; title: ; notranslate">
$ cd ~/developer
$ git clone git://repo.or.cz/gitstats.git
</pre>
<p>Download and Install Python: <a href="http://www.python.org/download/releases/" title="http://www.python.org/download/releases/" target="_blank">http://www.python.org/download/releases/</a><br />
Download and run a GNUPlot .dmg and copy the app to Applications: <a href="http://www.miscdebris.net/upload/gnuplot-4.2.5-i386.dmg" title="http://www.miscdebris.net/upload/gnuplot-4.2.5-i386.dmg" target="_blank">http://www.miscdebris.net/upload/gnuplot-4.2.5-i386.dmg</a></p>
<p><strong>Setup</strong><br />
Add the GNUPlot binary to your $PATH, I added it to my .profile settings, in terminal run:</p>
<pre class="brush: bash; title: ; notranslate">
$ echo 'export PATH=/Applications/Gnuplot.app/Contents/Resources/bin:$PATH:$PATH' &gt;&gt; ~/.profile
</pre>
<p>Re boot terminal to load the new path settings.</p>
<p>Now navigate to your GitStats directory, and run the following, where &#8220;~/workspace/project&#8221; is the path to your git repo, and &#8220;~/public_html/project&#8221; is the output dir to save the HTML charts.</p>
<pre class="brush: bash; title: ; notranslate">
$ ./gitstats ~/workspace/project ~/public_html/project
</pre>
<p>And now run the index.html in your ~/public_html/project directory.</p>
<p>You can now share some lovely charts and graphs with your project managers <img src='http://blog.skinkers.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
m.</p>
<div class="alignright"><g:plusone href="http://blog.skinkers.com/2012/02/13/generate-visual-stats-graphs-from-a-git-repository-on-osx/" size="standard" count="true"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://blog.skinkers.com/2012/02/13/generate-visual-stats-graphs-from-a-git-repository-on-osx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IMImobile acquires award-winning digital agency Skinkers</title>
		<link>http://blog.skinkers.com/2011/09/26/imimobile-acquires-award-winning-digital-agency-skinkers/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=imimobile-acquires-award-winning-digital-agency-skinkers</link>
		<comments>http://blog.skinkers.com/2011/09/26/imimobile-acquires-award-winning-digital-agency-skinkers/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 16:00:45 +0000</pubDate>
		<dc:creator>Tim Heyes</dc:creator>
				<category><![CDATA[General News]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://blog.skinkers.com/?p=3083</guid>
		<description><![CDATA[TweetIMImobile to drive innovation in multi-device applications across web, mobile &#38; social channels. IMImobile, a leading provider of technology infrastructure for mobile data, voice and video services to mobile operators, enterprises and media companies today announced the acquisition of UK-based digital agency Skinkers. Skinkers pioneered the use of desktop applications since early 2000 and more [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton3083" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fblog.skinkers.com%2F2011%2F09%2F26%2Fimimobile-acquires-award-winning-digital-agency-skinkers%2F&amp;via=skinkers&amp;text=IMImobile%20acquires%20award-winning%20digital%20agency%20Skinkers&amp;related=skinkers:We%5C%5C%5C%27re+a+Digital+Agency+that+can+help+you+plan%2C+create%2C+and+manage+innovative+technical+solutions+across+a+broad+range+of+digital+media.&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fblog.skinkers.com%2F2011%2F09%2F26%2Fimimobile-acquires-award-winning-digital-agency-skinkers%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://blog.skinkers.com/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><h2>IMImobile to drive innovation in multi-device applications across web, mobile &amp; social channels.</h2>
<h2><span class="Apple-style-span" style="font-size: 13px; font-weight: normal;">IMImobile, a leading provider of technology infrastructure for mobile data, voice and video services to mobile operators, enterprises and media companies today announced the acquisition of UK-based digital agency Skinkers.</span></h2>
<p>Skinkers pioneered the use of desktop applications since early 2000 and more recently has developed innovative iPhone/iPad and Android applications for some of the world&#8217;s biggest and best-known organisations and brands. Its client list includes the American Airlines, BBC, Haymarket, Microsoft, NDS, Spectator and Virgin Atlantic.</p>
<p>Vishwanath Alluri, Founder and Chairman of IMImobile commented &#8220;With the acquisition of Skinkers we will add considerable strength to our existing offering. Skinkers bring on board an excellent digital understanding of application development, user-interface design as well as great expertise how to best use the latest web and social network technologies.&#8221;</p>
<p>For more information and the full press release please <a title="Skinkers Acquisition Press Release" href="http://blog.skinkers.com/wp-content/uploads/2011/09/27092011_Skinkers_Acquisition-_-Press-Release-_-FINAL_APR_AK.pdf" target="_blank">click here</a>.</p>
<div class="alignright"><g:plusone href="http://blog.skinkers.com/2011/09/26/imimobile-acquires-award-winning-digital-agency-skinkers/" size="standard" count="true"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://blog.skinkers.com/2011/09/26/imimobile-acquires-award-winning-digital-agency-skinkers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>We&#8217;ve moved (again)!</title>
		<link>http://blog.skinkers.com/2011/08/16/weve-moved-again/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=weve-moved-again</link>
		<comments>http://blog.skinkers.com/2011/08/16/weve-moved-again/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 15:17:09 +0000</pubDate>
		<dc:creator>Tim Heyes</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.skinkers.com/?p=2918</guid>
		<description><![CDATA[TweetWell, it doesn&#8217;t seem like 2 minutes ago since we moved last, but our time in temporary accommodation has come to an end and we have finally planted our roots firmly in Soho. Skinkers is now located at: 33 Glasshouse Street London W1B 5DG   There&#8217;s no markets round here as far as we know, [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton2918" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fblog.skinkers.com%2F2011%2F08%2F16%2Fweve-moved-again%2F&amp;via=skinkers&amp;text=We%26%238217%3Bve%20moved%20%28again%29%21&amp;related=skinkers:We%5C%5C%5C%27re+a+Digital+Agency+that+can+help+you+plan%2C+create%2C+and+manage+innovative+technical+solutions+across+a+broad+range+of+digital+media.&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fblog.skinkers.com%2F2011%2F08%2F16%2Fweve-moved-again%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://blog.skinkers.com/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>Well, it doesn&#8217;t seem like 2 minutes ago since we moved last, but our time in temporary accommodation has come to an end and we have finally planted our roots firmly in Soho.</p>
<p>Skinkers is now located at:</p>
<address>33 Glasshouse Street</address>
<address>London</address>
<address>W1B 5DG</address>
<address> </address>
<address><span class="Apple-style-span" style="font-style: normal;">There&#8217;s no markets round here as far as we know, but it&#8217;s right posh.</span></address>
<address> </address>
<address><span class="Apple-style-span" style="font-style: normal;"><a title="Office location details" href="http://www.skinkers.com/contact-us">Click here for more details</a></span></address>
<div class="alignright"><g:plusone href="http://blog.skinkers.com/2011/08/16/weve-moved-again/" size="standard" count="true"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://blog.skinkers.com/2011/08/16/weve-moved-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>We&#8217;ve moved!</title>
		<link>http://blog.skinkers.com/2011/07/05/weve-moved/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=weve-moved</link>
		<comments>http://blog.skinkers.com/2011/07/05/weve-moved/#comments</comments>
		<pubDate>Tue, 05 Jul 2011 17:54:21 +0000</pubDate>
		<dc:creator>Tim Heyes</dc:creator>
				<category><![CDATA[Company]]></category>

		<guid isPermaLink="false">http://blog.skinkers.com/?p=2745</guid>
		<description><![CDATA[TweetAfter many happy (and sometimes noisy) years, Skinkers have relocated from Kirby Street in Clerkenwell over to Beech Street in Barbican. All phone and fax numbers are the same but our address has changed to: Skinkers Central Point 45 Beech Street London EC2Y 8AD Who would have though that Leather Lane market could be beaten? We&#8217;ll [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton2745" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fblog.skinkers.com%2F2011%2F07%2F05%2Fweve-moved%2F&amp;via=skinkers&amp;text=We%26%238217%3Bve%20moved%21&amp;related=skinkers:We%5C%5C%5C%27re+a+Digital+Agency+that+can+help+you+plan%2C+create%2C+and+manage+innovative+technical+solutions+across+a+broad+range+of+digital+media.&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fblog.skinkers.com%2F2011%2F07%2F05%2Fweve-moved%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://blog.skinkers.com/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>After many happy (and sometimes noisy) years, Skinkers have relocated from Kirby Street in Clerkenwell over to Beech Street in Barbican.</p>
<p>All phone and fax numbers are the same but our address has changed to:</p>
<address>Skinkers</address>
<address>Central Point</address>
<address>45 Beech Street</address>
<address>London</address>
<address>EC2Y 8AD</address>
<p>Who would have though that Leather Lane market could be beaten? We&#8217;ll miss you, but hello Whitecross Street market!</p>
<div class="alignright"><g:plusone href="http://blog.skinkers.com/2011/07/05/weve-moved/" size="standard" count="true"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://blog.skinkers.com/2011/07/05/weve-moved/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fixing Internet Explorer&#8217;s setTimeout / setInterval scoping issues AND Overcome API&#8217;s/Frameworks that don&#8217;t allow arguments to be passed to callback methods..</title>
		<link>http://blog.skinkers.com/2011/05/31/fixing-internet-explorers-settimeout-setinterval-scoping-issues-and-overcome-apisframeworks-that-dont-allow-arguments-to-be-passed-to-callback-methods/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=fixing-internet-explorers-settimeout-setinterval-scoping-issues-and-overcome-apisframeworks-that-dont-allow-arguments-to-be-passed-to-callback-methods</link>
		<comments>http://blog.skinkers.com/2011/05/31/fixing-internet-explorers-settimeout-setinterval-scoping-issues-and-overcome-apisframeworks-that-dont-allow-arguments-to-be-passed-to-callback-methods/#comments</comments>
		<pubDate>Tue, 31 May 2011 14:34:42 +0000</pubDate>
		<dc:creator>Matt Bryson</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://blog.skinkers.com/?p=2574</guid>
		<description><![CDATA[TweetWhen using setTimeout or setInterval in IE, there is no way to pass any data to the method you want to execute. You can obviously create lots of global variables, but this is a very messy solution, and not object oriented. Similarly, if you are using an API that makes an A-Synchronous call and you [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton2574" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fblog.skinkers.com%2F2011%2F05%2F31%2Ffixing-internet-explorers-settimeout-setinterval-scoping-issues-and-overcome-apisframeworks-that-dont-allow-arguments-to-be-passed-to-callback-methods%2F&amp;via=skinkers&amp;text=Fixing%20Internet%20Explorer%26%238217%3Bs%20setTimeout%20%2F%20setInterval%20scoping%20issues%20AND%20Overcome...%20&amp;related=skinkers:We%5C%5C%5C%27re+a+Digital+Agency+that+can+help+you+plan%2C+create%2C+and+manage+innovative+technical+solutions+across+a+broad+range+of+digital+media.&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fblog.skinkers.com%2F2011%2F05%2F31%2Ffixing-internet-explorers-settimeout-setinterval-scoping-issues-and-overcome-apisframeworks-that-dont-allow-arguments-to-be-passed-to-callback-methods%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://blog.skinkers.com/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>When using <code>setTimeout</code> or <code>setInterval</code> in IE, there is no way to pass any data to the method you want to execute.<br />
You can obviously create lots of global variables, but this is a very messy solution, and not object oriented.</p>
<p>Similarly, if you are using an API that makes an A-Synchronous call and you can set a callback handler, you may well want to pass extra data to the handler, and the API may not let you.</p>
<p>To get round this you can use a delegate function.  You basically tell another function what to execute, what to pass it and the scope to execute it in. </p>
<p>NOTE : This method uses jQuery for browser detection. However you can add whichever browser detection you like and replace the  <code>$.browser.mozilla</code> check in the method.</p>
<pre class="brush: jscript; title: ; notranslate">
/**
* @param scope Object :  The scope in which to execute the delegated function.
* @param func Function : The function to execute
* @param data Object or Array : The data to pass to the function. If the function is also passed arguments, the data is appended to the arguments list. If the data is an Array, each item is appended as a new argument.
* @param isTimeout Boolean : Indicates if the delegate is being executed as part of timeout/interval method or not. This is required for Mozilla/Gecko based browsers when you are passing in extra arguments. This is not needed if you are not passing extra data in.
*/
function delegate(scope, func, data, isTimeout)
{
	return function()
	{
		var args = Array.prototype.slice.apply(arguments).concat(data);
		//Mozilla/Gecko passes a extra arg to indicate the &quot;lateness&quot; of the interval
		//this needs to be removed otherwise your handler receives more arguments than you expected.
                //NOTE : This uses jQuery for browser detection, you can add whatever browser detection you like and replace the below.
		if (isTimeout &amp;&amp; $.browser.mozilla)
			args.shift();	

		func.apply(scope, args);
	}
}
</pre>
<p><span id="more-2574"></span><br />
The delegate function then creates another function, that will execute your original function and pass it all your data. This new function requires no arguments and is de-coupled so it does not suffer scoping issues when being passed between objects. </p>
<p><br/><br />
This example shows how to create a delegate method&#8230;</p>
<pre class="brush: jscript; title: ; notranslate">
//Our function to execute via the delegate
function helloFunc(name, age)
{
	alert(&quot;hello &quot; + name + &quot; you are &quot; + age);
}

//Our delegated function
var delegateFunc =  delegate( this, helloFunc,  [&quot;Bob&quot;, 50] );

//Now we can execute the delegate function, passing no arguments to it and we see our data alerted.
delegateFunc(); //hello Bob 50.
</pre>
<p><br/><br />
You can also pass data into the delegate, which will precede the data set when the delegate was created.</p>
<pre class="brush: jscript; title: ; notranslate">
//Our function to execute via the delegate
function helloFunc(message, name)
{
	alert(message + name);
}

//Our delegated function
var delegateFunc =  delegate( this, helloFunc,  &quot;Bob&quot; );

//Now we can execute the delegate function, but this time we pass it some arguments. Both these arguments, and our delegated arguments are all passed to the delegated function.

delegateFunc(&quot;Welcome to my site&quot;); //Welcome to my site Bob
</pre>
<p><br/><br />
In the case of <code>setTimeout</code>, you can simply execute the delegate in line as it returns the function reference.</p>
<p>UPDATE: due to Mozilla&#8217;s implementation of intervals / timeouts we need to pass a flag to indicate the method is executing as part of a timeout callback. This is due to the fact mozilla will insert an extra parameter indicating the &#8220;lateness&#8221; of the timeout. More <a href="https://developer.mozilla.org/en/DOM/window.setTimeout">here</a>.</p>
<pre class="brush: jscript; title: ; notranslate">
	setTimeout( delegate( this, myFunction,  &quot;hello&quot;, true), 5000);
</pre>
<p><br/><br />
Or in the scope of another object, with multiple arguments as an array</p>
<pre class="brush: jscript; title: ; notranslate">
 	setTimeout( delegate( myObject, myFunction,  [&quot;hello&quot;, 10, someData], true ), 5000);
</pre>
<p><br/><br />
When using an API, such as the google gadgets API to load data, you might want to pass extra data through, the delegate works here as well. As it appends arguments, any data passed by the API is still preserved, the delegate will just add your extra arguments to the end of the arguments already passed to the callback.</p>
<pre class="brush: jscript; title: ; notranslate">
gadgets.io.makeRequest( myURL , delegate(this, dataSourceLoadedHandler, [&quot;bob&quot;, 50]), params);

//Response is passed by the Google API,
//Name and Age are appended to the arguments list by our delegate
function dataSourceLoadedHandler(response, name, age)
{

}
</pre>
<p>Delegating is a much cleaner and more object oriented approach than littering you code with global variables.</p>
<p>.m</p>
<div class="alignright"><g:plusone href="http://blog.skinkers.com/2011/05/31/fixing-internet-explorers-settimeout-setinterval-scoping-issues-and-overcome-apisframeworks-that-dont-allow-arguments-to-be-passed-to-callback-methods/" size="standard" count="true"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://blog.skinkers.com/2011/05/31/fixing-internet-explorers-settimeout-setinterval-scoping-issues-and-overcome-apisframeworks-that-dont-allow-arguments-to-be-passed-to-callback-methods/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Provisioning Snom phones automatically in a Lync 2010 environment with Snomtastic</title>
		<link>http://blog.skinkers.com/2011/05/17/snomtastic-provisioning/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=snomtastic-provisioning</link>
		<comments>http://blog.skinkers.com/2011/05/17/snomtastic-provisioning/#comments</comments>
		<pubDate>Tue, 17 May 2011 10:31:41 +0000</pubDate>
		<dc:creator>Max Sanna</dc:creator>
				<category><![CDATA[Lync]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[lync]]></category>
		<category><![CDATA[ocs]]></category>
		<category><![CDATA[phones]]></category>
		<category><![CDATA[provisioning]]></category>
		<category><![CDATA[snom]]></category>
		<category><![CDATA[snomtastic]]></category>

		<guid isPermaLink="false">http://blog.skinkers.com/?p=2482</guid>
		<description><![CDATA[TweetA bit of background info Hi everybody, I wanted to give you a little update on how our experience with Lync has been so far and how are we doing device-wise. By now we completely replaced our legacy 3CX environment and sold most of the old Linksys SPA941 phones we used with it. All these [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton2482" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fblog.skinkers.com%2F2011%2F05%2F17%2Fsnomtastic-provisioning%2F&amp;via=skinkers&amp;text=Provisioning%20Snom%20phones%20automatically%20in%20a%20Lync%202010%20environment%20with%20Snomtastic&amp;related=skinkers:We%5C%5C%5C%27re+a+Digital+Agency+that+can+help+you+plan%2C+create%2C+and+manage+innovative+technical+solutions+across+a+broad+range+of+digital+media.&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fblog.skinkers.com%2F2011%2F05%2F17%2Fsnomtastic-provisioning%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://blog.skinkers.com/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><h3>A bit of background info</h3>
<p>Hi everybody, I wanted to give you a little update on how our experience with Lync has been so far and how are we doing device-wise.</p>
<p>By now we completely replaced our legacy 3CX environment and sold most of the old Linksys SPA941 phones we used with it. All these phones had to be replaced with new, Lync compatible ones though. We did a pilot experiment to see if people were ready to just ditch their deskphone and use headsets all the time. As you can guess the answer is a big fat NO. A handset is just too convenient to have, you can&#8217;t expect sales people and developers to be wearing a headset at all times as if they were in a call centre, so the result is that many calls were going missing, etc.</p>
<p>That&#8217;s when I started exploring which alternatives were available. The key requirements for most people were:</p>
<ul>
<li>Being able to use the phone regardless of their computer being turned on and Lync logged in</li>
<li>Most users were happy with having basic functionality on their phone (making phone calls, receiving them, joining a conference) and would use Lync client for more high-level functionality</li>
</ul>
<p>With these two requirements in mind, we ruled out all the USB handsets (Polycom CX200, etc.), it had to be Ethernet, and possibly not break the bank.</p>
<p>So we started talking with Snom, who have been developing an OCS compatible firmware for the past years, which runs on most phones they produce. They have been extremely kind and agreed to send us a sample of three models they distribute which support the OCS firmware:</p>
<ul>
<li>Snom 300 &#8211; a no frills phone perfect for people who don&#8217;t live constantly on the phone, or for communal areas</li>
<li>Snom 821 &#8211; a nice colour display phone which provides enhanced presence, and advanced telephony features</li>
<li>Snom 870 &#8211; their top-of-the-range touchscreen phone, suitable for power users and management</li>
</ul>
<p>Now, if you used an Aries-based Lync Phone before (e.g. Aastra 6725ip, or Polycom CX600) you will be accustomed to the ease of deployment these phones enjoy, just plug it into the Ethernet, and via USB to the computer, and Lync client will deliver all the necessary settings to the phone, ask you to enter your password and presto, you&#8217;re all set.</p>
<p>The problem with Snom phones so far, instead, was that the user was either required to type in his SIP uri, domain, username and password using the clunky phone keyboard, or find out the IP of his phone, open the web interface and do so via web. Not the easiest experience for an end user, especially if not technically minded.</p>
<p>But this now has changed thanks to a great piece of software developed by the <em>Sydney Harbour Foreshore Authority, </em>which automates the provisioning of Snom phones into your environment.</p>
<h3>Snomtastic!!</h3>
<div id="attachment_2504" class="wp-caption aligncenter" style="width: 680px"><a href="http://blog.skinkers.com/wp-content/uploads/2011/05/snomtastic-home.png"><img class="size-medium wp-image-2504" title="Snomtastic Homepage" src="http://blog.skinkers.com/wp-content/uploads/2011/05/snomtastic-home-670x476.png" alt="Snomtastic Homepage" width="670" height="476" /></a><p class="wp-caption-text">This is what the Hardware inventory looks like in Snomtastic</p></div>
<p>Snomtastic does many things, and covers all the functionalities one would expect from a mass deployment provisioning tool:</p>
<ul>
<li>Hardware inventory</li>
<li>Remote reboot</li>
<li>Multiple configurations</li>
<li>Firmware updates</li>
<li>Easy login for the users</li>
</ul>
<p>The easy login part is covered with a tiny client utility you can easily deploy by group policies, which asks the users to enter their Active Directory credentials, and automates the login on the phone, mimicking the experience you&#8217;d get by using a normal Aries/Tanjay phone.</p>
<p>Unfortunately, because the software is not in production stage yet, the installation process is very manual and prone to issues with the webserver (e.g. if you run a 64bit version of Windows and IIS you will have to do a few undocumented tweaks to the IIS settings), but our friend Drago Totev wrote a <a title="Snomtastic Tutorial" href="http://www.lynclog.com/2011/04/snomtastic-phone-management-system-part.html" target="_blank">super-detailed how-to in four parts </a>on how to get up and running with Snomtastic. He will also provide you a copy of the database back up with a few tweaks to support newer phones.</p>
<p>To be honest I don&#8217;t feel like I need to add anything to the excellent job he did at writing that tutorial, it literally covers everything, also the firmware updates. With a bit of patience everybody can get Snomtastic up and running by following it.</p>
<p>One thing we hope to see in future Snomtastic releases is the ability to add more managed settings to the ones available via web interface, while now it requires changing the database schema by hand. I can see this becoming a key feature as Snom releases newer versions of the OCS firmware which add support for additional settings (i.e. the server-controlled remote keyboard lock option which appeared in v8.6.6.4).</p>
<p>The only caveat I found so far, is that if you try to reset a provisioned phone to factory settings, it will still hold some parameters in the memory, and you&#8217;ll end up locked out from its web interface. None of the factory passwords worked for me to gain access to it again. The only solution is these cases, is to follow <a href="http://wiki.snom.com/Firmware/Update/TFTP_Update" target="_blank">this procedure</a> and flash the phone with the recovery firmware, then re-flash it with the latest OCS firmware (make sure to be on a network where it won&#8217;t pick up the DHCP option 66 again, or you&#8217;ll be back to square one).</p>
<p>So, there you go: by getting Snom phones and Snomtastic you&#8217;ll have an easy-to-manage environment, with high quality Ethernet desk phones, without having to compromise on price and get USB handsets of limited functionality.</p>
<div class="alignright"><g:plusone href="http://blog.skinkers.com/2011/05/17/snomtastic-provisioning/" size="standard" count="true"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://blog.skinkers.com/2011/05/17/snomtastic-provisioning/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Android Density Pixel (DP) / Pixel (PX) Calculator</title>
		<link>http://blog.skinkers.com/2011/04/08/android-density-pixel-dp-pixel-px-calculator/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=android-density-pixel-dp-pixel-px-calculator</link>
		<comments>http://blog.skinkers.com/2011/04/08/android-density-pixel-dp-pixel-px-calculator/#comments</comments>
		<pubDate>Fri, 08 Apr 2011 15:48:59 +0000</pubDate>
		<dc:creator>Matt Bryson</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://blog.skinkers.com/?p=2323</guid>
		<description><![CDATA[TweetAfter getting confused for the millionth time regarding converting Density Independent Pixels to Pixels (or vice versa), We decided to create a simple calculator to do it for us! This should help to determine what size to make all your assets so you can support multiple screen densities on Android. Android DP / PX Calculator [...]]]></description>
			<content:encoded><![CDATA[<div id="tweetbutton2323" class="tw_button" style=""><a href="http://twitter.com/share?url=http%3A%2F%2Fblog.skinkers.com%2F2011%2F04%2F08%2Fandroid-density-pixel-dp-pixel-px-calculator%2F&amp;via=skinkers&amp;text=Android%20Density%20Pixel%20%28DP%29%20%2F%20Pixel%20%28PX%29%20Calculator&amp;related=skinkers:We%5C%5C%5C%27re+a+Digital+Agency+that+can+help+you+plan%2C+create%2C+and+manage+innovative+technical+solutions+across+a+broad+range+of+digital+media.&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fblog.skinkers.com%2F2011%2F04%2F08%2Fandroid-density-pixel-dp-pixel-px-calculator%2F" class="twitter-share-button"  style="width:55px;height:22px;background:transparent url('http://blog.skinkers.com/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat  0 0;text-align:left;text-indent:-9999px;display:block;">Tweet</a></div><p>After getting confused for the millionth time regarding converting Density Independent Pixels to Pixels (or vice versa), We decided to create a simple calculator to do it for us! </p>
<p>This should help to determine what size to make all your assets so you can support multiple screen densities on Android. </p>
<p><a href="http://labs.skinkers.com/content/android_dp_px_calculator/">Android DP / PX Calculator</a></p>
<p><a href="http://developer.android.com/guide/practices/screens_support.html">Android API : Supporting Multiple Screens</a></p>
<p>m.</p>
<div class="alignright"><g:plusone href="http://blog.skinkers.com/2011/04/08/android-density-pixel-dp-pixel-px-calculator/" size="standard" count="true"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://blog.skinkers.com/2011/04/08/android-density-pixel-dp-pixel-px-calculator/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

