<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Software development in the minutes a day I have spare</description><title>Devgeeks</title><generator>Tumblr (3.0; @therealdevgeeks)</generator><link>http://blog.devgeeks.org/</link><item><title>blog.izs.me: Free as in Hugs Licence</title><description>&lt;a href="http://blog.izs.me/post/48281002063/free-as-in-hugs-licence"&gt;blog.izs.me: Free as in Hugs Licence&lt;/a&gt;: &lt;p&gt;&lt;a href="http://blog.izs.me/post/48281002063/free-as-in-hugs-licence" class="tumblr_blog"&gt;izs&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Copyright (c) &lt;code&gt;__AUTHOR_NAME__&lt;/code&gt; (“Author”) and Contributors&lt;/p&gt; &lt;p&gt;All rights reserved.&lt;/p&gt; &lt;p&gt;The “Free as in Hugs” License&lt;/p&gt; &lt;p&gt;Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;&lt;p&gt;Redistributions of source code must…&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/blockquote&gt;</description><link>http://blog.devgeeks.org/post/48310171349</link><guid>http://blog.devgeeks.org/post/48310171349</guid><pubDate>Fri, 19 Apr 2013 08:54:04 +1000</pubDate></item><item><title>4ZzZfm app in need of an update</title><description>&lt;p&gt;The &lt;a href="https://itunes.apple.com/au/app/4zzzfm/id359090535?mt=8"&gt;4ZzZfm app&lt;/a&gt; was my first ever mobile app. It was then my first PhoneGap / Cordova app when I ported it.&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s in desperate need of an update if for no other reason than that the iOS version does not support the iPhone 5 screen size.&lt;/p&gt;

&lt;p&gt;I am thinking of trying to consolidate the codebases (currently it is a codebase for each of its two platforms) and maybe even expand it to cover other platforms beyond iOS and Android.&lt;/p&gt;

&lt;p&gt;Questions I am going to have to look at over the next couple of weeks:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Does anyone listening to &lt;a href="http://www.4zzzfm.org.au/"&gt;4ZzZfm&lt;/a&gt; want to do so on WP8, BlackBerry or any of the other platforms supported by PhoneGap / Cordova?&lt;/li&gt;
&lt;li&gt;Do I just use KendoUI and keep it closed source, or do I do a completely custom UI and open source the app? (note: I will only open source it if I can get a real program feed instead of scraping the website like I do now&amp;#8230; the current code is embarrassment personified)&lt;/li&gt;
&lt;li&gt;If I am supporting Android 2.3 (and I am sure I will), how will I handle the fact that it does not support html5 audio&amp;#8230; and conversely, the media APIs I use for it are no good for streaming radio on iOS?&lt;/li&gt;
&lt;li&gt;Are there other features that would be of use to 4ZzZfm?&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;I&amp;#8217;ll try to keep updating the blog as I go with it (since I haven&amp;#8217;t been using the blog for anything else lately with &lt;a href="http://pixfor.me"&gt;Pixfor&amp;#8217;s&lt;/a&gt; own update on hold).&lt;/p&gt;</description><link>http://blog.devgeeks.org/post/47002690082</link><guid>http://blog.devgeeks.org/post/47002690082</guid><pubDate>Wed, 03 Apr 2013 16:13:00 +1100</pubDate><category>4ZzZfm</category><category>PhoneGap</category></item><item><title>photoKandy Studios: Getting Started with Cordova-CLI</title><description>&lt;a href="http://photokandy.tumblr.com/post/46289610781/getting-started-with-cordova-cli"&gt;photoKandy Studios: Getting Started with Cordova-CLI&lt;/a&gt;: &lt;h3&gt;A Great intro to the Cordova Command Line Tooling&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://photokandy.tumblr.com/post/46289610781/getting-started-with-cordova-cli" class="tumblr_blog"&gt;photokandy&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cordova-CLI&lt;/strong&gt; is doing some great things to make working with multiple platforms in one &lt;strong&gt;Cordova&lt;/strong&gt; project easier. But installing with it can initially seem a little daunting if you’ve never played with it before, and so I thought it would help to write this guide up to help anyone else getting their…&lt;/p&gt;&lt;/blockquote&gt;</description><link>http://blog.devgeeks.org/post/46294419936</link><guid>http://blog.devgeeks.org/post/46294419936</guid><pubDate>Tue, 26 Mar 2013 11:14:24 +1100</pubDate><category>PhoneGap</category><category>cordova</category><category>cli</category></item><item><title>My slides for the Sensis API Product Hack Camp</title><description>&lt;a href="http://devgeeks.org/slides/sensis-hackathon-slides/"&gt;My slides for the Sensis API Product Hack Camp&lt;/a&gt;</description><link>http://blog.devgeeks.org/post/37451921155</link><guid>http://blog.devgeeks.org/post/37451921155</guid><pubDate>Sat, 08 Dec 2012 15:02:59 +1100</pubDate></item><item><title>Raised center TabBar button in Cordova / PhoneGap for iOS</title><description>&lt;p&gt;A popular pattern in iOS lately (especially in apps with a focus on photo taking) is the raised / highlighted middle TabBar button. It’s easy enough to get a native TabBar in an iOS PhoneGap app using one of the two popular plugins (&lt;a href="https://github.com/phonegap/phonegap-plugins/tree/master/iOS/NativeControls"&gt;NativeControls&lt;/a&gt; and &lt;a href="https://github.com/AndiDog/phonegap-ios-tabbar-plugin"&gt;TabBar&lt;/a&gt;). There is even a great article on &lt;a href="http://idevrecipes.com/2010/12/16/raised-center-tab-bar-button/"&gt;getting a raised middle TabBar button on iOS&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;But not everyone using PhoneGap can comfortably turn that article into a modified TabBar plugin. There was even a recent thread on this topic in the PhoneGap Google Group recently.&lt;/p&gt;

&lt;p&gt;Since I have done this in one of my apps, I thought I might post a quick outline on how to use the code in the iDevRecipes article above to get one of these buttons into one of the plugins above.&lt;/p&gt;

&lt;h3&gt;The Button Image&lt;/h3&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_meegzr8RIz1r76itr.png" alt="aperture-tab.png"/&gt;&lt;/p&gt;

&lt;p&gt;This is the button I created for my app &lt;a href="https://take.pixfor.me"&gt;Pixfor&lt;/a&gt;. It’s basically just a green tinted screenshot of the middle third of a standard TabBar with an Aperture icon and a subtle shadow. You certainly don’t need to have a tinted gradient as well as your larger icon or whatever. That’s just a design decision. The great thing about how this works is that the touch goes straight through the added UIButton, so the highlight of the TabBar still happens so if your button image has transparency, it will show through nicely.&lt;/p&gt;

&lt;p&gt;The button image is named &lt;code&gt;aperture-tab.png&lt;/code&gt; and also has a corresponding &lt;code&gt;aperture-tab@2x.png&lt;/code&gt; image for retina devices.&lt;/p&gt;

&lt;p&gt;Note: these images (unlike the icons normally used in the TabBar plugins as icons) are added to the project through XCode as a resource, not just copied into the &lt;code&gt;www&lt;/code&gt; folder with the other PhoneGap assets.&lt;/p&gt;

&lt;h3&gt;The JavaScript Code&lt;/h3&gt;

&lt;p&gt;For the JavaScript code, all you really need to do is create a TabBar item with an empty label and an empty icon.&lt;/p&gt;

&lt;p&gt;For example, in NativeControls:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;window.plugins.nativeControls.createTabBarItem("takepix", "", "", options);
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and in TabBar:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;window.plugins.tabBar.createItem("takepix", "", "", options);
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;The Objective-C Code&lt;/h3&gt;

&lt;p&gt;Pixfor happens to use the NativeControls plugin, but the code below should work in both.&lt;/p&gt;

&lt;p&gt;They both have a method in their respective .m files that creates the TabBar (&lt;code&gt;create&lt;/code&gt; in &lt;a href="https://github.com/AndiDog/phonegap-ios-tabbar-plugin/blob/a729db390c47e99644d0d7be32cc84de9cecf0e9/2.1.0%20(non-ARC)/TabBar.m#L169"&gt;TabBar&lt;/a&gt; and &lt;code&gt;createTabBar&lt;/code&gt; in &lt;a href="https://github.com/phonegap/phonegap-plugins/blob/0b5ae07bd1987afcb145df7d866b3197617111a3/iOS/NativeControls/NativeControls.m#L57"&gt;NativeControls&lt;/a&gt;). *&lt;/p&gt;

&lt;p&gt;Both these methods end with&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[self.webView.superview addSubview:tabBar];
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;What we are going to do is add the following code directly after this line before the closing brace.&lt;/p&gt;

&lt;script src="https://gist.github.com/4187933.js?file=raised-tabbar-snippet.m"&gt;&lt;/script&gt;&lt;p&gt;This code will add a custom UIButton using our image centered on our TabBar. Note the file name &lt;code&gt;aperture-tab.png&lt;/code&gt; in the first line. The retina @2x version does not need to be explicitly referenced.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_meeh0mzmpN1r76itr.jpg" alt="Pixfor's raised middle button"/&gt;&lt;/p&gt;

&lt;p&gt;And there it is! Our special TabBar button.&lt;/p&gt;

&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;
* Line numbers only used for illustration. Please find the methods above in the plugin’s latest version.&lt;/p&gt;</description><link>http://blog.devgeeks.org/post/37023355576</link><guid>http://blog.devgeeks.org/post/37023355576</guid><pubDate>Mon, 03 Dec 2012 00:40:03 +1100</pubDate><category>phonegap</category><category>cordova</category><category>ios</category><category>plugins</category><category>Pixfor</category></item><item><title>First rejection</title><description>&lt;p&gt;So I know I haven’t been posting here much, what can I say? &lt;/p&gt;

&lt;p&gt;But I did feel like posting that I have had my first ever rejection experience with the Apple App Store. &lt;/p&gt;

&lt;p&gt;An app I have been building for a client got rejected for collecting donations for charity — even though the app did not collect actual money, it merely allowed you to convert points earned in the app to a charitable donation. &lt;/p&gt;

&lt;p&gt;The reviewer was very nice about it and offered some suggestions on how to comply with the rules in this area. &lt;/p&gt;

&lt;p&gt;Here is where this post turns into a love letter to PhoneGap/Cordova and KendoUI. &lt;/p&gt;

&lt;p&gt;The easiest way to comply was to have the actual charitable donation aspect happen on a web site and have the app kick the user out of the app to said web site to complete the donation. If the app had been native I would have had to re-write all my logic and create a web site appropriate for a mobile device, etc. However, since the app was a hybrid app using PhoneGap and KendoUI, all I had to do was copy some of the app into a standalone website using the same UI and the same JavaScript logic. Then I added a button from the website sending the user back to the app using URI schemes in iOS (the Android version of the app can stay how it was). &lt;/p&gt;

&lt;p&gt;Like magic, I now have the charitable donations happening on a web site instead of the app, but with very little effort and it even looks the same aesthetically as the app!&lt;/p&gt;

&lt;p&gt;The app has been resubmitted and our fingers are once again crossed. &lt;/p&gt;

&lt;p&gt;As for the other problem (a lack of decent posts on this blog) I have been storing some up that I did not want to post until this app was finished. They should be coming very soon. I hope. Heh.&lt;/p&gt;</description><link>http://blog.devgeeks.org/post/36944267581</link><guid>http://blog.devgeeks.org/post/36944267581</guid><pubDate>Sun, 02 Dec 2012 00:36:01 +1100</pubDate><category>phonegap</category><category>cordova</category><category>ios</category><category>apple</category><category>kendoui</category></item><item><title>the Web, unplugged: There must be something out there?</title><description>&lt;a href="http://blog.theunpluggedweb.com/post/25834406703/there-must-be-something-out-there"&gt;the Web, unplugged: There must be something out there?&lt;/a&gt;: &lt;p&gt;&lt;a class="tumblr_blog" href="http://blog.theunpluggedweb.com/post/25834406703/there-must-be-something-out-there"&gt;johnallsopp&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I’ve been developing a workshop focussing on HTML5 app features like UI, localStorage, devicemotion, geolocation, as well a bit of phoneGap, so students can add additional featurs like camera support, and package it all up as an app.&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://blog.devgeeks.org/post/25837994391</link><guid>http://blog.devgeeks.org/post/25837994391</guid><pubDate>Mon, 25 Jun 2012 16:05:49 +1000</pubDate></item><item><title>I always wanted to be a 1%-er</title><description>&lt;p&gt;So I submitted version 1.1 of Pixfor already. &lt;br/&gt;&lt;br/&gt;&lt;a href="http://photo.blogpressapp.com/show_photo.php?p=12/06/01/3178.jpg"&gt;&lt;img border="0" height="237" src="http://photo.blogpressapp.com/photos/12/06/01/s_3178.jpg" width="281"/&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://photo.blogpressapp.com/show_photo.php?p=12/06/01/3179.jpg"&gt;&lt;img border="0" height="157" src="http://photo.blogpressapp.com/photos/12/06/01/s_3179.jpg" width="281"/&gt;&lt;/a&gt;&lt;br/&gt;I don&amp;#8217;t think that&amp;#8217;s the 1% I wanted to be in. *sigh*&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;</description><link>http://blog.devgeeks.org/post/24227634239</link><guid>http://blog.devgeeks.org/post/24227634239</guid><pubDate>Sat, 02 Jun 2012 10:35:00 +1000</pubDate><category>Devgeeks</category><category>Pixfor</category><category>iPhone development</category><category>PhoneGap</category></item><item><title>Pixfor is live.</title><description>&lt;p&gt;The side project I have been working on for the last two months is finally live.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://pixfor.me" title="Pixfor" target="_blank"&gt;&lt;a href="http://pixfor.me"&gt;http://pixfor.me&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Pixfor is, in many ways, the 21st century update on the idea of leaving disposable cameras on the tables at weddings. It is also a great deal more than that.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It&amp;#8217;s a combination of an app (currently iOS only) and a SaaS web site. &lt;/p&gt;
&lt;p&gt;I have so much I haven&amp;#8217;t had time to post about here and hope to finally get around to it now that Pixfor is launched (albeit very softly so far).&lt;/p&gt;</description><link>http://blog.devgeeks.org/post/23861631650</link><guid>http://blog.devgeeks.org/post/23861631650</guid><pubDate>Mon, 28 May 2012 00:18:44 +1000</pubDate><category>Devgeeks</category><category>ios</category><category>PhoneGap</category><category>Pixfor</category><category>iphone development</category></item><item><title>Been a while, but there is a reason</title><description>&lt;p&gt;&lt;img alt="Finally submitted" height="220" src="http://f.cl.ly/items/3x0O3Y403q1L0X390W0x/Screen%20Shot%202012-05-19%20at%207.29.39%20AM.png" width="417"/&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s been almost two months since my last post, but that&amp;#8217;s because I have been working hard on a new app. In fact, an entire new product.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ll be able to post more soon including some of the custom plugins I wrote for the app.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s a camera-based app at heart so I needed a custom camera overlay view as well as some changes to make the camera more responsive (there was a horrible delay after clicking the &amp;#8220;use&amp;#8221; button in the core PhoneGap Camera API).&lt;/p&gt;
&lt;p&gt;I am hoping to find a way to make the camera functionality open source and abstract enough that it would be useful to someone else.&lt;/p&gt;
&lt;p&gt;Until then, stay tuned? ;)&lt;/p&gt;</description><link>http://blog.devgeeks.org/post/23309761135</link><guid>http://blog.devgeeks.org/post/23309761135</guid><pubDate>Sat, 19 May 2012 07:42:00 +1000</pubDate><category>PhoneGap</category><category>PhoneGap Plugins</category><category>Devgeeks</category><category>iPhone</category></item><item><title>Who Uses PhoneGap/Apache Cordova?</title><description>&lt;a href="http://www.tricedesigns.com/2012/03/27/who-uses-phonegapapache-cordova/#.T3LB_SToQf0.tumblr"&gt;Who Uses PhoneGap/Apache Cordova?&lt;/a&gt;: &lt;p&gt;A nice list of some of the “bigger” names behind/using PhoneGap / Cordova.&lt;/p&gt;</description><link>http://blog.devgeeks.org/post/20055090541</link><guid>http://blog.devgeeks.org/post/20055090541</guid><pubDate>Wed, 28 Mar 2012 18:47:45 +1100</pubDate></item><item><title>Announcing the Read it Later plugin for PhoneGap (soon also for Cordova)</title><description>&lt;p&gt;One of the developers working on the new &lt;a href="https://github.com/Wikimedia/WikipediaMobile" target="_blank"&gt;PhoneGap-based Wikipedia Mobile&lt;/a&gt; was having some annoying issues with the PhoneGap ShareKit plugin and decided he&amp;#8217;d rather just put the Facebook and Twitter sharing in with their individual plugins. &lt;/p&gt;
&lt;p&gt;He was happy with the decision where Facebook and Twitter were concerned, but lamented that the decision would mean there would no longer be support for Read it Later (&lt;a href="http://readitlaterlist.com" target="_blank"&gt;&lt;a href="http://readitlaterlist.com"&gt;http://readitlaterlist.com&lt;/a&gt;&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;I had a look at &lt;a href="http://readitlaterlist.com/api/libraries-iphone" target="_blank"&gt;Read it Later&amp;#8217;s API and iOS SDK&lt;/a&gt; and it looked fairly straight forward, so when he asked if I would like to write a plugin for it I took on the challenge.&lt;/p&gt;
&lt;p&gt;Just two hours later I had a shiny new PhoneGap plugin!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/devgeeks/ReadItLaterPlugin" target="_blank"&gt;&lt;a href="https://github.com/devgeeks/ReadItLaterPlugin"&gt;https://github.com/devgeeks/ReadItLaterPlugin&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you wanna be as cool as Wikipedia, run over to GitHub and clone it into your app now! &lt;/p&gt;
&lt;h1&gt;Installation&lt;/h1&gt;
&lt;p&gt;This plugin allows you to save a URL to &lt;a href="http://readitlaterlist.com/"&gt;Read It Later&lt;/a&gt; from your app.&lt;/p&gt;
&lt;p&gt;Add the plugin much like any other:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Add the ReadItLaterPlugin.h and VolumeSlider.m classes to your Plugins folder in Xcode (use &amp;#8220;Create groups for any added folders&amp;#8221;)&lt;/li&gt;
&lt;li&gt;Add the ReadItLaterPlugin.js file to your www folder&lt;/li&gt;
&lt;li&gt;Add the ReadItLaterPlugin.js to your html file. eg:&lt;code&gt;&amp;lt;script type="text/javascript" charset="utf-8" src="ReadItLaterPlugin.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Add the plugin to the PhoneGap.plist under Plugins (key: &amp;#8220;ReadItLaterPlugin&amp;#8221; value: &amp;#8220;ReadItLaterPlugin&amp;#8221;)&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Next, get the Read It Later API iPhone Library and add it to your project:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;a href="http://readitlaterlist.com/api/libraries-iphone#download"&gt;Download the library from Read It Later&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Unzip the library and examples&lt;/li&gt;
&lt;li&gt;Copy these four files into your Xcode project under the Plugins folder (again, use &amp;#8220;Create groups for any added folders&amp;#8221;)
&lt;ul&gt;&lt;li&gt;&lt;code&gt;ReadItLaterLite.h&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ReadItLaterLite.m&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ReadItLaterFull.h&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ReadItLaterFull.m&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://readitlaterlist.com/api/signup/"&gt;Get an API Key&lt;/a&gt; from Read It Later for your app&lt;/li&gt;
&lt;li&gt;Add your shiny new API key to the top of the &lt;code&gt;ReadItLaterLite.m&lt;/code&gt; file you copied in above
&lt;ul&gt;&lt;li&gt;&lt;code&gt;static NSString *apikey = @"&amp;lt;api key here&amp;gt;";&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Add the name of your app (as you entered it to get your API key above) as well
&lt;ul&gt;&lt;li&gt;&lt;code&gt;static NSString *nameOfYourApp = @"&amp;lt;name of your app here&amp;gt;";&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Finally, call the &lt;code&gt;saveToReadItLater()&lt;/code&gt; method using a success callback and an object containing a url and a title:&lt;/p&gt;
&lt;h3&gt;Example&lt;/h3&gt;
&lt;pre class="prettyprint"&gt;function onDeviceReady()
{
    var readItLaterPlugin = window.plugins.readItLaterPlugin;
    readItLaterPlugin.saveToReadItLater(
        function(){
            console.log("Successfully saved to Read It Later");
        }, 
        { 
            url: "http://github.com/devgeeks", 
            title: "Devgeeks on GitHub"
        }
    );
}
&lt;/pre&gt;</description><link>http://blog.devgeeks.org/post/20053826438</link><guid>http://blog.devgeeks.org/post/20053826438</guid><pubDate>Wed, 28 Mar 2012 17:42:00 +1100</pubDate><category>iphone development</category><category>iOS</category><category>PhoneGap</category><category>Cordova</category><category>plugins</category><category>mobile app development</category></item><item><title>How to keep your old version of PhoneGap for iOS when upgrading</title><description>&lt;p&gt;The PhoneGap installer for iOS overwrites the old version when you run it. It puts itself in over the top of your previous version.&lt;/p&gt;
&lt;p&gt;However, when you have shipped an app with PhoneGap and it&amp;#8217;s happily in the App Store, the &lt;em&gt;last&lt;/em&gt; thing you want to do is have to &lt;a href="http://blog.devgeeks.org/post/18290634821/phonegap-cordova-plugin-devs-and-users-are-in-for-a"&gt;deal with changes in the PhoneGap API between versions&lt;/a&gt; if you need to make small maintenance tweaks down the track. &lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s what I do in this instance.&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Before upgrading PhoneGap (running the installer) I back up the previous version of the framework. I copy &amp;#8216;&lt;em&gt;/Users/Shared/PhoneGap&lt;/em&gt;&amp;#8217; to &amp;#8216;&lt;em&gt;/Users/Shared/PhoneGap-&amp;lt;version&amp;gt;&lt;/em&gt;&amp;#8217; (such as &amp;#8216;&lt;em&gt;/Users/Shared/PhoneGap-1.2&lt;/em&gt;&amp;#8217;).&lt;/li&gt;
&lt;li&gt;Next I go into the projects that I want to keep running that version, and I delete the &lt;em&gt;PhoneGap.framework&lt;/em&gt; from the project (remove reference only). &lt;/li&gt;
&lt;li&gt;Then I add the framework from the copied versioned folder I made in step #1. Select the target in Xcode, choose the &amp;#8220;&lt;em&gt;Build Phases&lt;/em&gt;&amp;#8221; tab, open the &amp;#8220;&lt;em&gt;Link Binary With Libraries&lt;/em&gt;&amp;#8221; section and click the + and choose &amp;#8220;&lt;em&gt;Add Other&amp;#8230;&lt;/em&gt;&amp;#8221;, browse to where you backed up your old &lt;em&gt;PhoneGap.framework&lt;/em&gt; and add it in.&lt;/li&gt;
&lt;li&gt;Upgrade PhoneGap to latest version.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;You now not only have a back up you can keep old projects maintained against, but you have a version you can use if the new PhoneGap &lt;a href="http://blog.devgeeks.org/post/17997175468/phonegap-plugins-in-ios-complaining-about-deprecations"&gt;changes something you want to use or breaks a plugin you need for your project&lt;/a&gt;. In fact, inside the &amp;#8216;&lt;em&gt;/Users/Shared/PhoneGap-1.2/Frameworks/PhoneGap.framework/www&lt;/em&gt;&amp;#8217; folder is the version-specific PhoneGap iOS JavaScript file if you need to downgrade a project.&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;</description><link>http://blog.devgeeks.org/post/18313490602</link><guid>http://blog.devgeeks.org/post/18313490602</guid><pubDate>Mon, 27 Feb 2012 01:09:28 +1100</pubDate><category>PhoneGap</category><category>PhoneGap plugins</category><category>Xcode</category><category>iphone development</category><category>Cordova</category></item><item><title>PhoneGap / Cordova plugin devs and users are in for a bumpy ride</title><description>&lt;p&gt;It looks like those of us who rely heavily on plugins are in for a bad time.&lt;/p&gt;

&lt;p&gt;Cordova devs working on 1.4.x &lt;a href="http://blog.devgeeks.org/post/17997175468/phonegap-plugins-in-ios-complaining-about-deprecations"&gt;began the process of deprecating some classes a great many plugins used&lt;/a&gt;, now it looks like the work on 1,5 and beyond is going to make the plugin landscape even shakier.&lt;/p&gt;

&lt;p&gt;The work on the new unified js will be a great boon to many end users making it easier to develop for multiple platforms. Unfortunately, it looks like it is also going to be only a partial implementation on 1.5 and one that not only might break things for existing apps and/or plugins… but might not even be the final API we see shipped with 1.6…&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;…we’ve made no commitment on the plugin api (its never been official) so I don’t feel we’re breaking any promises&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;…and concerns about it are being dismissed.&lt;/p&gt;

&lt;p&gt;I don’t know about you, but I think I might stick with 1.4.x for now unless a bug comes up that will make it worth it to me to work around these teething issues in the coming releases.&lt;/p&gt;

&lt;p&gt;I do know the PhoneGap Google group, IRC and StackOverflow are gonna get an influx of confused devs very soon. I’m bracing for it.&lt;/p&gt;</description><link>http://blog.devgeeks.org/post/18290634821</link><guid>http://blog.devgeeks.org/post/18290634821</guid><pubDate>Sun, 26 Feb 2012 18:48:22 +1100</pubDate><category>PhoneGap</category><category>Cordova</category><category>plugins</category></item><item><title>PhoneGap plugins in iOS complaining about deprecations and what you might be able to do about it</title><description>&lt;p&gt;In PhoneGap (in reality Cordova) 1.4.x some classes were deprecated in the effort to make it play nice as a component in an otherwise native app (as opposed to only being able to be the primary controlling view). This is causing some confusion when developers using this version try to use plugins written using those classes. Xcode is giving them warnings about the deprecation and making them worry.&lt;/p&gt;
&lt;p&gt;The plugins affected are mostly those that pop up an entire native view controller over the top of the PhoneGap/Cordova app - EmailComposer, SMSComposer, Twitter and worst of all ChildBrowser.&lt;/p&gt;
&lt;p&gt;The important thing to remember is that for now (1.4.x), although the methods are deprecated, they should still work just fine. They will warn you, but as a good friend of mine was fond of saying: “a warning is not an error”. The point of deprecation warnings are to warn you that what you are doing might go away some time in the future and to start thinking about a new way to do it.&lt;/p&gt;
&lt;p&gt;AFAIK, the issue will be with the coming releases when the methods are actually removed (there is debate on if this should be soon… like 1.5 or 1.6… or wait for a major release like 2.0).&lt;/p&gt;
&lt;p&gt;I am happy to update plugins and submit pull requests to the phonegap-plugins repo if the plugin is not being actively maintained or not overly complex. I have already submitted a pull request for an update to SMSComposer after someone asked for help in the PhoneGap IRC channel. As for any of the others affected, it might be that they will just use the deprecated calls until the upcoming plugin upgrade guide is ready I believe with 1.5.x.&lt;/p&gt;
&lt;p&gt;In the case of most of the affected plugins, really all you should need to do is in the plugins &lt;em&gt;PluginClassName.m&lt;/em&gt; file add in this initialization method just after ‘@implementation PluginClassName’ (&lt;em&gt;note: this one might be optional, but most of the modern plugins seem to initialize self this way&lt;/em&gt;):&lt;/p&gt;
&lt;pre class="prettyprint"&gt;-(PGPlugin) initWithWebView:(UIWebView)theWebView 
{     
    self = (PluginClassName*)[super initWithWebView:theWebView];     
    return self; 
{
&lt;/pre&gt;
&lt;p&gt;Then, where ever the deprecated ‘appViewController’ appears… change:&lt;/p&gt;
&lt;pre class="prettyprint"&gt;[[ super appViewController ] presentModalViewController:picker animated:YES];
&lt;/pre&gt;
&lt;p&gt;to:&lt;/p&gt;
&lt;pre class="prettyprint"&gt;[self.viewController presentModalViewController:picker animated:YES];
&lt;/pre&gt;
&lt;p&gt;This will make most of the basic plugins compile quite happily without warnings. Unfortunately… ChildBrowser not so much, but that plugin is far from simple. However, it is very popular so I am sure it will get some love before the deprecations truly take effect.&lt;/p&gt;
&lt;p&gt;If you have any questions about this feel free to shoot me a message:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;tommy AT devgeeks DOT org&lt;/em&gt;&lt;/p&gt;</description><link>http://blog.devgeeks.org/post/17997175468</link><guid>http://blog.devgeeks.org/post/17997175468</guid><pubDate>Tue, 21 Feb 2012 16:29:00 +1100</pubDate><category>PhoneGap</category><category>plugins</category><category>Cordova</category><category>appViewController</category><category>deprecations</category></item><item><title>4ZzZfm app program guide updated</title><description>&lt;p&gt;The main reason it took so long to port the &lt;a href="http://blog.devgeeks.org/iphone-apps/4zzzfm-iphone/"&gt;4ZzZfm app&lt;/a&gt; from Objective-C to &lt;a href="http://www.phonegap.com" target="_blank"&gt;PhoneGap&lt;/a&gt; had nothing to do with PhoneGap, really. It had to do with adding new functionality at the same time that I had been wanting to add in for some time.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.4zzzfm.org.au/" target="_blank"&gt;4ZzZfm&lt;/a&gt; has a &lt;a href="http://www.4zzzfm.org.au/program/guide" target="_blank"&gt;program schedule&lt;/a&gt; that changes at the very least every quarter or so. There are also small things that change from time to time for various reasons. Up until this version of the app, changing that program information in the app has meant my updating the schedule manually, then updating the app and submitting a new version to the App Store.&lt;/p&gt;
&lt;p&gt;Needless to say, this didn&amp;#8217;t happen as frequently as it should have.&lt;/p&gt;
&lt;p&gt;So for this version, it was important to me to have the guide be updated from within the app with no updates to the code required. Though getting there was a bit of a challenge, the current version of the app does indeed include that functionality. However, it had not actually been tested in a &amp;#8220;live&amp;#8221; environment&amp;#8230; until today. :)&lt;/p&gt;
&lt;p&gt;Today I pushed an updated version of the guide to the server and the app should automatically use that version the next time it starts up (though the background behaviour of iOS and Android mean that this might not happen unless you close it all the way or don&amp;#8217;t use it for a given period of time&amp;#8230; not entirely sure what all triggers the app having to start from scratch).&lt;/p&gt;
&lt;p&gt;Anyway, it seems to have worked. If you or anyone you know has trouble with the app updating the guide, please let me know, but for now I am calling it a success.&lt;/p&gt;
&lt;p&gt;If you haven&amp;#8217;t already checked out 4ZzZfm and / or the app, it&amp;#8217;s available for &lt;a href="http://itunes.apple.com/au/app/4zzzfm/id359090535?mt=8" target="_blank"&gt;iPhone&lt;/a&gt; and &lt;a href="http://devgeeks.org/android-apps/4zzzfm-android-app" target="_blank"&gt;Android&lt;/a&gt; now.&lt;/p&gt;</description><link>http://blog.devgeeks.org/post/17414319727</link><guid>http://blog.devgeeks.org/post/17414319727</guid><pubDate>Sat, 11 Feb 2012 17:35:00 +1100</pubDate><category>iphone development</category><category>4zzz</category></item><item><title>The move to Tumblr</title><description>&lt;p&gt;I have decided to move the blog to tumblr for a few of reasons.&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;I was sick of managing the comment spam on the previous WordPress blog&lt;/li&gt;
&lt;li&gt;I was sick of managing the software/security updates on the previous WordPress blog&lt;/li&gt;
&lt;li&gt;I wanted an easy way to post to the blog when I was out and about on an iOS device using Markdown &lt;/li&gt;
&lt;li&gt;I wanted to see how well Tumblr works for a blog with it&amp;#8217;s own domain, etc&lt;/li&gt;
&lt;li&gt;I wanted to learn how to theme Tumblr &lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;So far it seems to be going OK. Some things are certainly easier (less maintenance, easier posting) but some things are more tedious (static &amp;#8220;landing pages&amp;#8221; for the apps, etc).&lt;/p&gt;
&lt;p&gt;I will be updating the theme a bit at a time. Cleaning up the posts so the images are no longer coming from the previous WordPress blog, extending the theme to include comments/discussion/likes/etc and adding more social media integration (apart from just Twitter).&lt;/p&gt;
&lt;p&gt;Feel free to shoot me an email if you think this is a good/stupid/pointless idea. ;)&lt;/p&gt;</description><link>http://blog.devgeeks.org/post/17246214103</link><guid>http://blog.devgeeks.org/post/17246214103</guid><pubDate>Wed, 08 Feb 2012 14:13:55 +1100</pubDate><category>devgeeks</category></item><item><title>Meet the new 4ZzZfm app – now for iPhone *and* Android!!</title><description>&lt;p&gt;Dear &lt;a href="http://www.4zzzfm.org.au/" target="_blank"&gt;4ZzZfm&lt;/a&gt; and &lt;a href="http://www.facebook.com/pages/4ZZZ/135231119831050" target="_blank"&gt;lovers of the best community radio station ever&lt;/a&gt;&amp;#8230;&lt;/p&gt;
&lt;p&gt;The &lt;a href="http://devgeeks.org/iphone-apps/4zzzfm-iphone"&gt;4ZzZfm iPhone app&lt;/a&gt; has been updated to version 3.0. This new version should always have an up to date Program Guide. It can now update the guide over the internet so it will no longer need an updated version to have a correct guide.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devgeeks.org/iphone-apps/4zzzfm-iphone/"&gt;&lt;a href="http://devgeeks.org/iphone-apps/4zzzfm-iphone"&gt;http://devgeeks.org/iphone-apps/4zzzfm-iphone&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;or on iTunes:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://itunes.apple.com/au/app/4zzzfm/id359090535?mt=8" target="_blank"&gt;&lt;a href="http://itunes.apple.com/au/app/4zzzfm/id359090535?mt=8"&gt;http://itunes.apple.com/au/app/4zzzfm/id359090535?mt=8&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;oh&amp;#8230; and for those that have brought it up whenever the 4ZzZfm iPhone app is mentioned&amp;#8230;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Meet the 4ZzZfm Android app!&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devgeeks.org/android-apps/4zzzfm-android-app"&gt;&lt;a href="http://devgeeks.org/android-apps/4zzzfm-android-app"&gt;http://devgeeks.org/android-apps/4zzzfm-android-app&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;or on the Android Market:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://market.android.com/details?id=org.devgeeks.fourzzzfm" target="_blank"&gt;&lt;a href="https://market.android.com/details?id=org.devgeeks.fourzzzfm"&gt;https://market.android.com/details?id=org.devgeeks.fourzzzfm&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.devgeeks.org/post/17199630079</link><guid>http://blog.devgeeks.org/post/17199630079</guid><pubDate>Mon, 05 Dec 2011 11:34:00 +1100</pubDate><category>4zzz</category><category>Android development</category><category>PhoneGap</category><category>iPhone development</category><category>Mobile app development</category></item><item><title>4ZzZfm iPhone app</title><description>&lt;p&gt;So here we are. Almost four months to the day since I last posted about porting the &lt;a href="http://devgeeks.org/iphone-apps/4zzzfm-iphone"&gt;4ZzZfm iPhone app&lt;/a&gt; to &lt;a href="http://phonegap.com" target="_blank"&gt;PhoneGap&lt;/a&gt;, it’s finally awaiting review in the App Store.&lt;/p&gt;
&lt;p&gt;A lot has changed from starting out to getting to this point. I’ll be writing a much bigger post about the whole experience (including my new-found hate for timezones and date math), but till then&amp;#8230; I am just happy to see the back end of it. :)&lt;/p&gt;
&lt;p&gt;Now let’s see if we can get past the approval process OK.&lt;/p&gt;</description><link>http://blog.devgeeks.org/post/17199468001</link><guid>http://blog.devgeeks.org/post/17199468001</guid><pubDate>Tue, 29 Nov 2011 10:58:00 +1100</pubDate><category>iPhone development</category><category>4zzz</category><category>PhoneGap</category></item><item><title>Devgeeks takes over the WORLD! (or at least my life...)</title><description>&lt;p&gt;So for all my bemoaning about not having enough time to work on devgeeks work and mobile stuff in particular, I have had a career change of sorts and I am now going to pursue devgeeks as my full-time job.&lt;/p&gt;
&lt;p&gt;This means I will be able to take on work as a mobile developer (as well as my more traditional web applications work).&lt;/p&gt;
&lt;p&gt;I have set up the new &lt;a href="http://devgeeks.com" target="_blank"&gt;devgeeks.com&lt;/a&gt; to this end. I will also continue with the open source plugin development that I talked about in my previous post. I am pretty excited about this change. Feel free to throw work my way so I can keep doing it ;)&lt;/p&gt;</description><link>http://blog.devgeeks.org/post/17199406632</link><guid>http://blog.devgeeks.org/post/17199406632</guid><pubDate>Tue, 06 Sep 2011 01:31:00 +1000</pubDate><category>degeeks</category><category>Mobile app development</category><category>iPhone development</category><category>Career change</category></item></channel></rss>
