<?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>Robert Kern</title> <atom:link href="http://www.robertkern.com/feed" rel="self" type="application/rss+xml" /><link>http://www.robertkern.com</link> <description>PHP Web developer</description> <lastBuildDate>Thu, 17 May 2012 01:25:42 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.2</generator> <cloud
domain='www.robertkern.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' /> <item><title>Please don&#8217;t learn to code</title><link>http://www.robertkern.com/web-development/please-dont-learn-to-code.html</link> <comments>http://www.robertkern.com/web-development/please-dont-learn-to-code.html#comments</comments> <pubDate>Thu, 17 May 2012 01:25:42 +0000</pubDate> <dc:creator>Robert Kern</dc:creator> <category><![CDATA[Web Development]]></category><guid
isPermaLink="false">http://www.robertkern.com/?p=639</guid> <description><![CDATA[&#8220;To those who argue programming is an essential skill we should be teaching our children, right up there with reading, writing, and arithmetic: can you explain to me how Michael Bloomberg would be better at his day to day job of leading the largest city in the USA if he woke up one morning as [...]]]></description> <content:encoded><![CDATA[<blockquote><p>&#8220;To those who argue programming is an essential skill we should be teaching our children, right up there with reading, writing, and arithmetic: can you explain to me how Michael Bloomberg would be better at his day to day job of leading the largest city in the USA if he woke up one morning as a crack Java coder? It is obvious to me how being a skilled reader, a skilled writer, and at least high school level math are fundamental to performing the job of a politician. Or at any job, for that matter. But understanding variables and functions, pointers and recursion? I can&#8217;t see it.&#8221; via <a
href="http://www.codinghorror.com/blog/2012/05/please-dont-learn-to-code.html">codinghorror.com</a></p></blockquote> ]]></content:encoded> <wfw:commentRss>http://www.robertkern.com/web-development/please-dont-learn-to-code.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>What&#8217;s happening</title><link>http://www.robertkern.com/bugify/whats-happening.html</link> <comments>http://www.robertkern.com/bugify/whats-happening.html#comments</comments> <pubDate>Tue, 15 May 2012 05:00:49 +0000</pubDate> <dc:creator>Robert Kern</dc:creator> <category><![CDATA[Bugify]]></category><guid
isPermaLink="false">http://www.robertkern.com/?p=636</guid> <description><![CDATA[&#8220;It’s been about a month since the last update to Bugify. I’d like to have an update out every 2 to 3 weeks while the app is still reasonably young, but that didn’t happen this month sorry. The biggest thing I’ve been working on lately is the new permissions system – which is not a [...]]]></description> <content:encoded><![CDATA[<blockquote><p>&#8220;It’s been about a month since the last update to Bugify. I’d like to have an update out every 2 to 3 weeks while the app is still reasonably young, but that didn’t happen this month sorry. The biggest thing I’ve been working on lately is the new permissions system – which is not a simple addition. The last thing I wanted was a bulky permissions system that slows the app down, so it’s a lot of work trying to get it right.&#8221; via <a
href="http://blog.bugify.com/general/whats-happening.html">blog.bugify.com</a></p></blockquote> ]]></content:encoded> <wfw:commentRss>http://www.robertkern.com/bugify/whats-happening.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Bugify-related posts have a new home</title><link>http://www.robertkern.com/bugify/bugify-related-posts-have-a-new-home.html</link> <comments>http://www.robertkern.com/bugify/bugify-related-posts-have-a-new-home.html#comments</comments> <pubDate>Tue, 06 Mar 2012 18:35:27 +0000</pubDate> <dc:creator>Robert Kern</dc:creator> <category><![CDATA[Bugify]]></category><guid
isPermaLink="false">http://www.robertkern.com/?p=633</guid> <description><![CDATA[I have setup a blog just for Bugify updates at blog.bugify.com. If you&#8217;re a Bugify customer, please add the blog to your feed reader to keep up-to-date with Bugify changes.]]></description> <content:encoded><![CDATA[<p>I have setup a blog just for Bugify updates at <a
href="http://blog.bugify.com">blog.bugify.com</a>.  If you&#8217;re a Bugify customer, please add the blog to your feed reader to keep up-to-date with Bugify changes.</p> ]]></content:encoded> <wfw:commentRss>http://www.robertkern.com/bugify/bugify-related-posts-have-a-new-home.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Related issues in Bugify</title><link>http://www.robertkern.com/bugify/related-issues-in-bugify.html</link> <comments>http://www.robertkern.com/bugify/related-issues-in-bugify.html#comments</comments> <pubDate>Mon, 05 Mar 2012 19:29:54 +0000</pubDate> <dc:creator>Robert Kern</dc:creator> <category><![CDATA[Bugify]]></category><guid
isPermaLink="false">http://www.robertkern.com/?p=630</guid> <description><![CDATA[One feature that&#8217;s not immediately obvious in Bugify is &#8220;Related Issues&#8221; (or &#8220;Issue Linking&#8221;). Sometimes you get a ticket that&#8217;s related to, or depends on another ticket. We didn&#8217;t like the way some issue trackers handle this with explicit &#8220;depends on&#8221;-type linking, and wanted a system that felt natural, simple, and required less effort. To [...]]]></description> <content:encoded><![CDATA[<p>One feature that&#8217;s not immediately obvious in Bugify is &#8220;Related Issues&#8221; (or &#8220;Issue Linking&#8221;).  Sometimes you get a ticket that&#8217;s related to, or depends on another ticket.  We didn&#8217;t like the way some issue trackers handle this with explicit &#8220;depends on&#8221;-type linking, and wanted a system that felt natural, simple, and required less effort.</p><p>To link an issue to another in Bugify, you simply need to reference the ticket in a comment, or in the issue description.  For example, you could write &#8220;We need to get #123 finished first&#8221;.  This would do two things: first, you would be able to click on the &#8220;#123&#8243; and go straight to that ticket, and second, Bugify would asynchronously scan the ticket for links to other tickets.  When it finds a link from #456 to #123, it creates a &#8220;link&#8221; from both #456 to #123, and from #123 to #456 (reciprocal linking).  You&#8217;ll see the related issues on the side bar, and if something&#8217;s not right, it&#8217;s a single click to remove the link (every time you update an issue, it will scan for links, so you&#8217;ll need to remove the reference to the other ticket if you don&#8217;t want the link added back in again).  And, of course you can also access the list of related issues through the API.</p> ]]></content:encoded> <wfw:commentRss>http://www.robertkern.com/bugify/related-issues-in-bugify.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>How to change the created/modified date of files on a Mac</title><link>http://www.robertkern.com/how-to/how-to-change-the-createdmodified-date-of-files-on-a-mac.html</link> <comments>http://www.robertkern.com/how-to/how-to-change-the-createdmodified-date-of-files-on-a-mac.html#comments</comments> <pubDate>Tue, 28 Feb 2012 19:04:46 +0000</pubDate> <dc:creator>Robert Kern</dc:creator> <category><![CDATA[How to]]></category><guid
isPermaLink="false">http://www.robertkern.com/?p=626</guid> <description><![CDATA[You can use the touch tool to modify the created (and/or modified) date of a file on a Mac. Simply open Terminal and run touch -mt {date} {filename} (changes both created and modified dates), or touch -t {date} {filename} (changes just the created date). The date must be formatted as: YYYYMMDDhhmm. Date Format Key: YYYY [...]]]></description> <content:encoded><![CDATA[<p>You can use the <code>touch</code> tool to modify the created (and/or modified) date of a file on a Mac.  Simply open Terminal and run <code>touch -mt {date} {filename}</code> (changes both created and modified dates), or <code>touch -t {date} {filename}</code> (changes just the created date).  The date must be formatted as: <code>YYYYMMDDhhmm</code>.</p><p>Date Format Key:<br
/> YYYY – The year (the first two digits/century can be omitted).<br
/> MM – The month of the year, from 1 to 12.<br
/> DD – The day of the month, from 1 to 31.<br
/> hh – The hour of the day, from 0 to 23.<br
/> mm – The minute of the hour, from 0 to 59.</p> ]]></content:encoded> <wfw:commentRss>http://www.robertkern.com/how-to/how-to-change-the-createdmodified-date-of-files-on-a-mac.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Introducing Bugify Hosted</title><link>http://www.robertkern.com/bugify/introducing-bugify-hosted.html</link> <comments>http://www.robertkern.com/bugify/introducing-bugify-hosted.html#comments</comments> <pubDate>Mon, 27 Feb 2012 09:56:10 +0000</pubDate> <dc:creator>Robert Kern</dc:creator> <category><![CDATA[Bugify]]></category><guid
isPermaLink="false">http://www.robertkern.com/?p=624</guid> <description><![CDATA[This evening we released our new hosted service for Bugify, including a new website and logo.  Have a look at bugify.com for more info.]]></description> <content:encoded><![CDATA[<p>This evening we released our new <a
href="http://bugify.com/plans">hosted service for Bugify</a>, including a new website and logo.  Have a look at <a
href="http://bugify.com">bugify.com</a> for more info.</p> ]]></content:encoded> <wfw:commentRss>http://www.robertkern.com/bugify/introducing-bugify-hosted.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>How to take screenshots of your Android app for the Android Market</title><link>http://www.robertkern.com/how-to/how-to-take-screenshots-of-your-android-app-for-the-android-market.html</link> <comments>http://www.robertkern.com/how-to/how-to-take-screenshots-of-your-android-app-for-the-android-market.html#comments</comments> <pubDate>Mon, 27 Feb 2012 02:47:29 +0000</pubDate> <dc:creator>Robert Kern</dc:creator> <category><![CDATA[How to]]></category><guid
isPermaLink="false">http://www.robertkern.com/?p=619</guid> <description><![CDATA[If you&#8217;re developing Android apps to list in the Android Market, you&#8217;ll be needing to take some screenshots of it. You should already have the Android SDK installed, so these instructions make that assumption. You also need your Android phone plugged in via USB with USB Debugging enabled. Open Terminal, and change to your Android [...]]]></description> <content:encoded><![CDATA[<p>If you&#8217;re developing Android apps to list in the Android Market, you&#8217;ll be needing to take some screenshots of it.</p><p>You should already have the Android SDK installed, so these instructions make that assumption. You also need your Android phone plugged in via USB with USB Debugging enabled.</p><p>Open Terminal, and change to your Android SDK folder, open the &#8220;tools&#8221; folder, here you should see a tool named &#8220;ddms&#8221; (this stands for Davlik Debug Monitor). Run this tool from the Terminal and the Debug Monitor app will open up.</p><p>When the app has opened, go to the Device menu and select Screen Capture.</p><p><a
href="http://www.robertkern.com/wp-content/uploads/2012/02/Screen-Shot-2012-02-27-at-3.29.png"><img
class="aligncenter size-medium wp-image-621" title="Screen-Shot-2012-02-27-at-3.29" src="http://www.robertkern.com/wp-content/uploads/2012/02/Screen-Shot-2012-02-27-at-3.29-300x209.png" alt="" width="300" height="209" /></a></p><p>You can now take and save screenshots of whatever is running on your Android device.</p> ]]></content:encoded> <wfw:commentRss>http://www.robertkern.com/how-to/how-to-take-screenshots-of-your-android-app-for-the-android-market.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Bugify API now has &#8220;write&#8221; support</title><link>http://www.robertkern.com/bugify/bugify-api-now-has-write-support.html</link> <comments>http://www.robertkern.com/bugify/bugify-api-now-has-write-support.html#comments</comments> <pubDate>Mon, 13 Feb 2012 02:35:39 +0000</pubDate> <dc:creator>Robert Kern</dc:creator> <category><![CDATA[Bugify]]></category><guid
isPermaLink="false">http://www.robertkern.com/?p=612</guid> <description><![CDATA[We have recently added &#8220;write&#8221; support to the Bugify API, which means you are now able to create tickets, update tickets, add comments, and update comments through the API. You need to be running at least version 1.1.337 to access this. For information on how to use the API, please read the API information here.]]></description> <content:encoded><![CDATA[<p>We have recently added &#8220;write&#8221; support to the Bugify API, which means you are now able to create tickets, update tickets, add comments, and update comments through the API.  You need to be running at least version 1.1.337 to access this.</p><p>For information on how to use the API, please <a
href="https://bugify.com/api">read the API information here</a>.</p> ]]></content:encoded> <wfw:commentRss>http://www.robertkern.com/bugify/bugify-api-now-has-write-support.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Bugify &#8220;Overview&#8221; page updated</title><link>http://www.robertkern.com/bugify/bugify-overview-page-updated.html</link> <comments>http://www.robertkern.com/bugify/bugify-overview-page-updated.html#comments</comments> <pubDate>Mon, 13 Feb 2012 02:34:48 +0000</pubDate> <dc:creator>Robert Kern</dc:creator> <category><![CDATA[Bugify]]></category><guid
isPermaLink="false">http://www.robertkern.com/?p=602</guid> <description><![CDATA[Something that has been bugging me for a while, is how to show some useful information on the Bugify &#8220;Overview&#8221; page. Up until now, we have been showing the history of recent changes made to tickets. But, based on our experience (and user feedback), this was not the best way to utilise the &#8220;Overview&#8221; page [...]]]></description> <content:encoded><![CDATA[<p>Something that has been bugging me for a while, is how to show some useful information on the Bugify &#8220;Overview&#8221; page. Up until now, we have been showing the history of recent changes made to tickets. But, based on our experience (and user feedback), this was not the best way to utilise the &#8220;Overview&#8221; page &#8211; so, we have been working on updating it.</p><div
id="attachment_605" class="wp-caption aligncenter" style="width: 310px"><a
href="http://www.robertkern.com/wp-content/uploads/2012/02/overview-screeny.png"><img
class="size-medium wp-image-605" title="New &quot;Overview&quot; page" src="http://www.robertkern.com/wp-content/uploads/2012/02/overview-screeny-300x131.png" alt="New &quot;Overview&quot; page" width="300" height="131" /></a><p
class="wp-caption-text">New &quot;Overview&quot; page</p></div><p>Above is the new &#8220;Overview&#8221; page (you can experience it yourself by trying out the <a
href="http://demo.bugify.com">Bugify demo</a>).  The idea was to provide a brief overview of where you&#8217;re tracking both as an organisation, and as a user.  We are pretty happy with it, and find it a vast improvement over the old &#8220;Overview&#8221; page.</p><p>To get the new &#8220;Overview&#8221; page, simply update your installation of Bugify, or if you don&#8217;t have it yet, <a
href="https://bugify.com">download Bugify from bugify.com</a></p> ]]></content:encoded> <wfw:commentRss>http://www.robertkern.com/bugify/bugify-overview-page-updated.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Detecting touch events on Google Maps using Sencha Touch</title><link>http://www.robertkern.com/sencha-touch/detecting-touch-events-on-google-maps-using-sencha-touch.html</link> <comments>http://www.robertkern.com/sencha-touch/detecting-touch-events-on-google-maps-using-sencha-touch.html#comments</comments> <pubDate>Fri, 03 Feb 2012 01:29:54 +0000</pubDate> <dc:creator>Robert Kern</dc:creator> <category><![CDATA[Sencha Touch]]></category><guid
isPermaLink="false">http://www.robertkern.com/?p=595</guid> <description><![CDATA[I recently had a situation where I needed to detect taps on a Google Maps instance in a Sencha Touch app, so I could place a marker where the user tapped. The Google Maps API (v3) doesn&#8217;t support the &#8220;touch&#8221; event, and the iPhone doesn&#8217;t support the &#8220;click&#8221; event. Below is an example of the [...]]]></description> <content:encoded><![CDATA[<p>I recently had a situation where I needed to detect taps on a Google Maps instance in a Sencha Touch app, so I could place a marker where the user tapped.  The Google Maps API (v3) doesn&#8217;t support the &#8220;touch&#8221; event, and the iPhone doesn&#8217;t support the &#8220;click&#8221; event.  Below is an example of the way I worked around the issue (this.map is an instance of Ext.Map).</p><pre>
/**
 * We need to use multiple touch events to handle a "tap" because
 * the google maps api doesn't natively support the touch event.
 */
//Prepare the overlay object so we can use its "fromContainerPixelToLatLng" method
var overlay = new google.maps.OverlayView();
overlay.draw = function() {};
overlay.setMap(this.map.map);

//Prepare the touch vars
this.touches = {
    startX  : 0,
    startY  : 0,
    currentX: 0,
    currentY: 0,
    reset   : function() {
        this.startX   = 0;
        this.startY   = 0;
        this.currentX = 0;
        this.currentY = 0;
    }
};

this.map.el.dom.addEventListener('touchstart', function(e) {
    /**
     * Only deal with single touches (not multi-touch) - when it is multi-touch,
     * the array of touches will have an item for each finger.
     */
    if (e.touches.length == 1) {
        //Remember that the user has started a touch
        this.touches.startX = this.touches.currentX = e.touches[0].clientX;
        this.touches.startY = this.touches.currentY = e.touches[0].clientY;
    }
});

this.map.el.dom.addEventListener('touchmove', function(e) {
    //Only track the current position if we know of the start position
    if (this.touches.startX > 0) {
        //Remember the current position of the finger
        this.touches.currentX = e.touches[0].clientX;
        this.touches.currentY = e.touches[0].clientY;
    }
});

this.map.el.dom.addEventListener('touchend', function(e) {
    //Only track the current position if we know of the start position
    if (this.touches.startX > 0) {
        //Make sure the user hasn't dragged their finger too much
        if (Math.abs(this.touches.currentX - this.touches.startX) < 4 &#038;&#038; Math.abs(this.touches.currentY - this.touches.startY) < 4) {
            if (e.changedTouches &#038;&#038; e.changedTouches.length > 0) {
                var touch = e.changedTouches[0];

                //Work out the coordinates on the map
                var x = (touch.pageX - this.map.el.dom.offsetParent.offsetLeft),
                    y = (touch.pageY - this.map.el.dom.offsetParent.offsetTop);

                var point  = new google.maps.Point(x, y),
                    latLng = overlay.getProjection().fromContainerPixelToLatLng(point);

                google.maps.event.trigger(this.map.map, 'tapped', {latLng: latLng});
            }
        }
    }

    //Reset the touches
    this.touches.reset();
});

//Allow click events also (for testing in desktop browser)
google.maps.event.addListener(this.map.map, 'click', function(e) {
    google.maps.event.trigger(this.map.map, 'tapped', {latLng: e.latLng});
});

google.maps.event.addListener(this.map.map, 'tapped', function(e) {
    //Add this point to the list of points
    this.routePoints.push({lat: e.latLng.lat(), lng: e.latLng.lng()});

    //Update the lines on the map
    this.displayRoute();

    //Calculate the distance etc
    this.calculateStats();

    //Save the current trip details (for page reloads)
    this.saveTrip();
});
</pre>]]></content:encoded> <wfw:commentRss>http://www.robertkern.com/sencha-touch/detecting-touch-events-on-google-maps-using-sencha-touch.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced

Served from: www.robertkern.com @ 2012-05-19 11:15:54 -->
