tag:blogger.com,1999:blog-130483842024-03-13T21:33:37.274+08:00Tech TransitA blog about tech things as they occur to me. Often Mac and Linux related, often blogged on the bus or train. At least that was the theory -- now I just put things here whenever I have something to say.Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.comBlogger118125tag:blogger.com,1999:blog-13048384.post-31917391363773689392014-02-14T17:41:00.001+08:002014-02-14T17:41:12.963+08:00Reinvent: Updating my identity on the webInspired by my attendance at linux.conf.au 2014 I am in the process of "rebooting" my identity online and refreshing a lot of the services that I use.<div><br></div><div>I have been doing this since the start of the year and I've gotten to the point where I believe my blog should be a part of it.</div><div><br></div><div>The main aim of all of this has been to get onto reliable modern cloud services and move away from old ways of doing things that I have been doing for over a decade.</div><div><br></div><div>Nothing here is groundbreaking or new, but it might be worthwhile for others to reflect on some of this.</div><div><br></div><div>What do I mean by the old ways? Things like ISP email accounts, GeoCities services and services that are at risk of failure without an easy way out. Yes, this all stems from being burned by Google's Reader demise, and much earlier the aforementioned termination of GeoCities by Yahoo.</div><div><br></div><div>Thankfully in both cases my data has survived but the solution that I came up with weren't necessarily much better. For example my solution to Google Reader was to run Tiny Tiny RSS on a slow computer behind my home internet connection without a useful backup scheme and hampered by slow upload speeds. That's not a modern way of doing things.</div><div><br></div><div>So what do I consider the modern way? Well, creating your own open identity online - starting with A domain name of your own. Then we can attach services to this running in the "cloud" and use the domain name as a way of mitigating against changing services. For example, you can find this blog however you did, but from now on it's accessible via http://blog.jking.id.au - meaning it could change to WordPress or something else in the future with less effort. And I don't have to worry about natural disasters taking out my data as much.</div><div><br></div><div>So far my change has involved the following steps, which I hope to elaborate on:</div><div><br></div><div>Buy the domain name. This is the enabler for everything else.</div><div><br></div><div>Associate some email accounts with the domain name.</div><div><br></div><div>Get a password manager - this process creates a lot of new passwords and the modern way requires them to be unique and complex (and my brain can't cope with them all!)</div><div><br></div><div>Get some cloud resources - virtual machines and databases and/or hosting</div><div><br></div><div>Start running some cool services - such as the RSS platform and a blog</div><div><br></div><div>Comments welcome as always.</div>Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com0tag:blogger.com,1999:blog-13048384.post-20137514283317277342012-09-05T22:44:00.001+08:002012-09-05T22:44:12.029+08:00New GAuth version now hitting Nokia Store on N9With special thanks to Jean Blanchard for his regression fix you should now be able to update to GAuth version 1.6 on your Nokia N9 with Dropbox and multiple account support.Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com0tag:blogger.com,1999:blog-13048384.post-840538930075465702012-09-03T06:15:00.004+08:002012-09-03T06:15:58.429+08:00Mea culpa, or more to test before going to Nokia StoreSo version 1.4 of GAuth wasn't good enough for Nokia Store in the end. Here's a couple of reminders to make sure this doesn't happen again:<br />
<br />
<ul>
<li>Nokia Store still tests against PR1.1. It is now impossible for me to do so, without using <i>Remote Device Access</i> (which is a pain, because everything else can be done from my phone - I have a spare phone for testing but I've foolishly upgraded that one to PR1.3 too OTA).</li>
<li>Test for new users of your application that it works. Some of my new code was relying upon having settings already there, which of course wasn't the case for new users of the application.</li>
<li>Test for upgrading existing users. This is a problem that I hit in the past where I was wiping the settings because I was treating upgrade as uninstall-install.</li>
</ul>
<div>
Version 1.5 is now on <a href="http://github.com/jkingok/harmattan-pygauth/downloads">GitHub</a>. Existing users who had 1.4 working needn't upgrade.</div>
Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com2tag:blogger.com,1999:blog-13048384.post-41952637432772107462012-08-29T19:25:00.000+08:002012-08-29T19:25:17.598+08:00New version of GAuth... Long awaited featuresThanks to everyone for their support for <b><a href="http://techtransit.blogspot.com.au/p/gauth.html">GAuth</a></b>.<br />
<br />
This week sees a new update coming.<br />
<br />
The main trigger for this is that <b><a href="http://dropbox.com/" target="_blank">Dropbox</a></b> has added two-factor authentication compatible with <b>Google Authenticator</b>, and I'd fallen behind because a user pointed out the <b>GAuth</b><i> wasn't working with it.</i><br />
<i><br /></i>
That kicked me into gear! Thanks to Max on this blog for pointing it out (I'm not a big Dropbox user yet).<br />
<br />
Then of course, if people get the update, they'll be <i style="font-weight: bold;">adding</i> Dropbox to their <b>GAuth</b>. Which would've fallen foul of the fact that <b>GAuth</b> only ever supported one account at a time. <b>Yes I know I was asked about this a while ago. </b>But it's fixed now and that's what matters.<br />
<br />
And then over on <b><a href="http://talk.maemo.org/showthread.php?t=85769">talk.maemo.org</a></b> a fan has contributed an inverted theme icon for <b>GAuth</b>. So I thought I'd return the favour with a simple tweak to add an inverted theme mode to <b>GAuth.</b> Simply enable it in Settings after installing the update (unfortunately I can't swap over the icon as easily - you'll still have to do that yourself).<br />
<br />
So after 1000 downloads on the Nokia Store alone I give you <b>GAuth 1.4</b>. Available now on <b><a href="https://github.com/jkingok/harmattan-pygauth/downloads">GitHub</a>* </b>and soon in the Nokia Store via an automatic update to your phone (hopefully within the next week).<br />
<br />
* Note that you have get the update the same way you installed the previous version. If you have the Nokia Store version, your phone will not allow you to update to the GitHub version. Do not uninstall your version because you will lose your tokens! Just wait for the update notification, won't be long I promise.Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com0tag:blogger.com,1999:blog-13048384.post-78467134473979807252012-07-16T08:30:00.001+08:002012-07-16T08:30:53.939+08:00Build your own: XBMC for Android from Ubuntu 12.04Firstly massive credit to the XBMC team for pulling off the feat that is XBMC on Android. I'll bet though you're desperate to try it yourself. I'll respect XBMC and not share my build (I couldn't support it if I did) but here is a recipe for Ubuntu 12.04 users. Or equally, Windows users because you can't install using the Windows Android SDK.
First, for Windows users, install Oracle VirtualBox. Then install Ubuntu 12.04 using the mini net-install CD (this gets you less packages you don't need).
The instructions in the XBMC repository (docs/README.android) are then fairly complete, except for covering all of the dependencies you need.
You must:
sudo apt-get install build-essential git-core default-jdk autoconf autopoint curl zip unzip zlib1g-dev gawk gperf ant
Then when building the android depends for configure you need:
./configure --build=arm-linux-androideabi --with-sdk=/home/user/android-sdk-linux --with-ndk=/home/user/android-ndk-r7-crystax-5.beta2 --with-toolchain=/home/user/android-sdk-linux/platforms/android-10 --with-tarballs=/home/user
If you've never built anything with the Android SDK on this machine you have to generate a debug.keystore using ant debug on any random (a blank project will do) Android project before running make.
And the veru last step in the documentation is wrong. The APK you want to install is in the root of the source named xbmcapp-*-debug.apk.Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com0tag:blogger.com,1999:blog-13048384.post-19404288516113032822012-05-19T13:53:00.000+08:002012-05-19T14:10:58.012+08:00Update: GAuth new version now available from Nokia Store and thanks to the first 100+ downloaders.My app <b>GAuth </b>has been approved to the newer better version for the N9's Nokia Store. If you haven't downloaded it yet, go for it. If so, and you didn't already grab the updated version from GitHub, you can get the new version from the Nokia Store now.<br />
<br />
The new version is a little more polished, including a help file the first time you start it up or from the menu button.<br />
<br />
<a name='more'></a><br />
<br />
Note the issue that you will lose you token value when you upgrade and will need to reconnect to Google unless you copy it from the Settings first. This was an oversight of the first version that won't happen again.<br />
<br />
Nokia's statistics tell me that over 100 people have downloaded <b>GAuth</b> in the first week. Thanks everyone. The eye-opener here is the worldliness of it, even though it's only in English.
<br />
<div id="visualization" style="height: 400px; width: 800px;">
</div>
<script type="text/javascript">
function drawRegionsMap() { var data = google.visualization.arrayToDataTable([ ['Country', 'Popularity'], ['Saudi Arabia', 10], ['Iraq', 9], ['Azerbaijan', 7], ['Finland', 7], ['Libya', 6], ['Argentina', 5], ['Brazil', 5], ['United Arab Emirates', 8], ['United States', 5], ['Poland', 4], ['Russian Federation', 6], ['Thailand', 4], ['United Kingdom', 5], ['Costa Rica', 4], ['Kazakhstan', 3], ['Oman', 3], ['Sweden', 3], ['Australia', 2], ['Denmark', 2], ['Iran', 2], ['Italy', 2], ['Qatar', 2], ['Spain', 2] ]); var geomap = new google.visualization.GeoMap(document.getElementById('visualization')); geomap.draw(data, null); } google.load('visualization', '1', {'packages': ['geomap']}); google.setOnLoadCallback(drawRegionsMap);
</script>Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com0tag:blogger.com,1999:blog-13048384.post-16279133020620040512012-05-13T17:12:00.000+08:002012-05-13T17:12:23.324+08:00Announcing the Nokia Store release of GAuthSo this happened on Friday but immediately afterwards I was coding my next project and found an awkward bug so I planned to delay the announcement until after I had written and Nokia Store had approved the update, but seeing as people are already downloading it (for which I am grateful), <span style="font-size: large;"><b>GAuth has now been released as a free download on the Nokia Store.</b></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://store.nokia.com/content/273598"><img border="0" height="113" src="http://3.bp.blogspot.com/-J43z0bw8CXA/T64pVM6U6II/AAAAAAAAAdA/VS3ZyA5zCwI/s400/-nokia-n9-0.png" width="400" /></a></div>
<span style="font-size: large;"><b><br /></b></span><br />
This marks my first successful release of an "app" on any mobile platform. I've toyed with very briefly the iOS App Store (and helped friends release apps) but nothing myself, and I've toyed with the Android Market/Google Play Store but no joy there. The main difference was that I was able to make a full-blown app in my spare time just using my phone*.<br />
<br />
* Well plus SSH access to a Linux server for some small parts.<br />
<br />
GAuth is a <i>Google Authenticator </i>implementation for the Nokia N9. It allows you to generate six-digit token codes required for two-step verification of your Google Account when GAuth on your Nokia N9 is paired with your Google Account.<br />
<br />
That bug? It was a oversight in that <i>when next you download an update</i> to GAuth it will treat it as an uninstall followed by an install, rather than an upgrade which will reset your settings. <a href="https://github.com/jkingok/harmattan-pygauth/downloads">The new version is available now on GitHub</a> (get version 1.3 - it's the latest as of now) and you will be able to seamlessly get upgrades from the Nokia Store when later I make them. Nokia Store should have the update next weekend. The new version also features built-in help with a description of how to match your phone to your Google account.<br />
<br />
The workaround for the bug is simply to copy and paste your secret from the Settings before you do the update, and copy and paste them back when the update wipes them out. This won't happen again.<br />
<br />
For more information on this app, <a href="http://techtransit.blogspot.com/p/gauth.html">please visit the dedicated GAuth page on this blog</a> and I'm interested in your feedback.Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com0tag:blogger.com,1999:blog-13048384.post-86281661438477690262012-05-05T22:09:00.002+08:002012-05-05T22:09:27.578+08:00More hints on publishing PySide QML apps to the Nokia Store for N9I promised in the comments I would run down exactly what it takes me to publish a PySide application using QML to the Nokia Store for my N9 a couple of weeks ago.<br />
<br />
I've got some comments back from Nokia Store QA and I had to make changes so here are the things I've learned so far:<br />
<br />
<a name='more'></a><br /><br />
<br />
<ul>
<li>Nokia Store is currently using PR1.1 for testing. Make sure your QML does not use later versions of, for example <span style="font-family: 'Courier New', Courier, monospace;">com.nokia.meego</span>, than 1.0. You can test on PR1.1 (as most of us will have already updated to PR1.2) using Remote Device Access on <a href="http://developer.nokia.com/">developer.nokia.com</a>.</li>
<li>You cannot have a "Debian version" on your version number. This is the number after the "-" in the version number in the package tag. The PySide Assistant via <span style="font-family: 'Courier New', Courier, monospace;">python-stdeb</span> adds this and it currently is unavoidable. After running "<span style="font-family: 'Courier New', Courier, monospace;">psa build-deb</span>" you'll need to modify the contents of the <span style="font-family: 'Courier New', Courier, monospace;">debian/changelog</span> file which will be located in the <span style="font-family: 'Courier New', Courier, monospace;">deb_dist</span> subfolder and manually rebuild the package. See below.</li>
<li>You must have an icon embedded in your Debian package. This is automatic for "<span style="font-family: 'Courier New', Courier, monospace;">psa build-deb</span>" but is lost when you manually rebuild the package. PySide Assistant prepares this icon in the file <span style="font-family: 'Courier New', Courier, monospace;"><i>yourpackagename</i>.base64</span> however this needs some massaging to get it into the right format:<br /><span style="font-family: 'Courier New', Courier, monospace;">echo "XB-Maemo-Icon-26:" >> debian/control; tail -n +2 <i>yourpackagename</i>.base64 | sed -e 's/^/ /' >> debian/control</span></li>
<li><span style="font-family: inherit;">Your package must be for the </span><span style="font-family: 'Courier New', Courier, monospace;">armel</span><span style="font-family: inherit;"> architecture, even though by definition PySide and QML are architecture-independent (the runtimes of course are not, but we're not packaging those). This means you must change the architecture from "</span><span style="font-family: 'Courier New', Courier, monospace;">all</span><span style="font-family: inherit;">" to "</span><span style="font-family: 'Courier New', Courier, monospace;">armel</span><span style="font-family: inherit;">" in </span><span style="font-family: 'Courier New', Courier, monospace;">debian/control</span><span style="font-family: inherit;">. Unless you're dealing with compiled Python modules inside your package this shouldn't matter. </span></li>
<li>Lastly, to recap my last post, Nokia Store requires (almost) all items to be self-contained within a subfolder of <span style="font-family: 'Courier New', Courier, monospace;">/opt</span>. We did this by making a symlink from our desktop's Python root to the desired opt directory and putting this path in <span style="font-family: 'Courier New', Courier, monospace;">setup.py</span>.</li>
</ul>
<div style="font-family: inherit;">
<span style="font-family: inherit;">So here's the process I've followed so far:</span></div>
<br />
<ol>
<li>Go through the PySide Assistant process of setting up a package.<br /><span style="font-family: 'Courier New', Courier, monospace;">psa init</span></li>
<li>Make your customisations and put your Python and QML inside the created PySide template.</li>
<li>Make a Nokia Store-compliant <span style="font-family: 'Courier New', Courier, monospace;">/opt</span> symlink for your package.<br /><span style="font-family: 'Courier New', Courier, monospace;">sudo ln -s /usr /opt/<i>yourpackagename</i></span></li>
<li>Change <span style="font-family: 'Courier New', Courier, monospace;">setup.py</span> to include this path. Add the line near the top:<br /><span style="font-family: 'Courier New', Courier, monospace;">sys.prefix = sys.exec_prefix = '/opt/<i>yourpackagename</i>'</span></li>
<li>Change the version number in <span style="font-family: 'Courier New', Courier, monospace;">setup.py</span> and add any extra files you need installed and their locations. Relative paths should now use <span style="font-family: 'Courier New', Courier, monospace;">/opt/<i>yourpackagename</i></span> and any other files will need an absolute path (such as your <span style="font-family: 'Courier New', Courier, monospace;">.desktop</span> file).</li>
<li>Build the package as PySide Assistant wants you to:<br /><span style="font-family: 'Courier New', Courier, monospace;">psa build-deb</span></li>
<li>This will generate a <span style="font-family: 'Courier New', Courier, monospace;"><i>yourpackagename</i>.base64</span> and a <span style="font-family: 'Courier New', Courier, monospace;">deb_dist</span> folder (among others) with the content of the package that we will modify.</li>
<li>Go into the <span style="font-family: 'Courier New', Courier, monospace;">deb_dist/<i>yourpackagename</i>-*</span> folder.</li>
<li>Delete the results of the last package build. (These might conflict and generate errors later on.)<br /><span style="font-family: 'Courier New', Courier, monospace;">rm -r debian/<i>yourpackagename</i></span></li>
<li>Remove the "<span style="font-family: 'Courier New', Courier, monospace;">-1</span>" Debian version from the first line of the <span style="font-family: 'Courier New', Courier, monospace;">debian/changelog</span> file.</li>
<li>Add the icon and your display name for the Application Manager to the <span style="font-family: 'Courier New', Courier, monospace;">debian/control</span> file. The line for the display name is <span style="font-family: 'Courier New', Courier, monospace;">XB-Maemo-Display-Name</span>. The lines for the icon are generated by the command:<br /><span style="font-family: 'Courier New', Courier, monospace;">echo "XB-Maemo-Icon-26:" >> debian/control; tail -n +2 </span><i style="font-family: 'Courier New', Courier, monospace;">yourpackagename</i><span style="font-family: 'Courier New', Courier, monospace;">.base64 | sed -e 's/^/ /' >> debian/control</span>
</li>
<li><span style="font-family: inherit;">Change the architecture to "</span><span style="font-family: 'Courier New', Courier, monospace;">armel</span><span style="font-family: inherit;">" in </span><span style="font-family: 'Courier New', Courier, monospace;">debian/control</span><span style="font-family: inherit;">.</span></li>
</ol>
<br />
<span style="font-family: inherit;">Now that you've made those changes, you just need to rebuild the package (You have, right? If not, let me know where I lost you in the comments). Now we need to do this in a funky way because of the "</span><span style="font-family: 'Courier New', Courier, monospace;">armel</span><span style="font-family: inherit;">" architecture change:</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">dpkg-buildpackage -rfakeroot -uc -us -aarmel</span><br />
<span style="font-family: inherit;"><br /></span><br />
<span style="font-family: inherit;">You should end up with a </span><span style="font-family: 'Courier New', Courier, monospace;"><i>yourpackagename</i>_*_armel.deb</span><span style="font-family: inherit;"> file in </span><span style="font-family: 'Courier New', Courier, monospace;">deb_dist</span><span style="font-family: inherit;">. This is what should go to <a href="http://publish.nokia.com/">Nokia Store QA</a>. Of course test it first with Remote Device Access to save yourself any surprises.</span>Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com2tag:blogger.com,1999:blog-13048384.post-70991710532750607122012-04-25T08:34:00.000+08:002012-04-25T18:28:14.202+08:00N9: App: GAuth available for downloadMy first real mobile app is available for download now from GitHub and hopefully soon from the Nokia Store.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-_HbZkxRqc-0/T5dwjn85LdI/AAAAAAAAAcY/vZsreOOk6ks/s1600/Screen_24-Apr-12_06-41-31.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="179" src="http://1.bp.blogspot.com/-_HbZkxRqc-0/T5dwjn85LdI/AAAAAAAAAcY/vZsreOOk6ks/s320/Screen_24-Apr-12_06-41-31.png" width="320" /></a></div>
Update: Here's a screenshot. I couldn't add this from my phone where I usually blog from.<br />
<br />
It's an implementation of the Google Authenticator for the N9.<br />
<br />
This is the one killer app I needed to convert to my N9 fulltime from Android.<br />
<br />
It generates the same codes as the Android version and can be used, for a single account at the moment in the same way.<br />
<br />
I hope this is of use to some N9 users out there.<br />
<br />
For more information read <a href="https://github.com/jkingok/harmattan-pygauth"> the details at GitHub </a>(it's open source) and<a href="https://github.com/jkingok/harmattan-pygauth/downloads"> download it from there </a>too. Note that you must have Unknown sources turned on in your application settings until Nokia approves.<br />
<br />
I have my own ideas but I am soliciting for what I should try to port next. Please leave comments!Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com2tag:blogger.com,1999:blog-13048384.post-46483298955141142042012-04-23T19:17:00.000+08:002012-04-23T19:17:46.698+08:00N9: A trick to get pyside-assistant to build into a Nokia store-compliant pathI'm experimenting with building applications for the Nokia Store on N9.<br />
<br />
My current foray involves using PySide in Python.<br />
<br />
PySide provides an incomplete harmattan package template in their pyside-assistant tool. Incomplete in that its output would not pass QA on the Nokia Store.<br />
<br />
Nokia Store requires that your application's files live under /opt. However pyside-assistant, through python distutils, installs at least the python scripts to /usr instead. (It seems to be following whatever your Python system is set to - I'm on Ubuntu 11.04 and that is what I get.)<br />
<br />
However by making a symlink on your computer from /usr to /opt/<i>packagename</i> <b>and</b> adding the line:<br />
<br />
sys.prefix = sys.exec_prefix = '/opt/<i>packagename</i>'<br />
<br />
The resulting package is rooted in the /opt folder instead.<br />
<br />
(Of course there are other more trivial changes that must be made too, and I have yet to try for QA on this application.)<br />
<br />
Hope this helps someone.Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com5tag:blogger.com,1999:blog-13048384.post-90553064514775335182011-11-16T07:13:00.001+08:002011-11-16T07:40:36.359+08:00How to get rid of the dependency on Icon Project when using it to make
iOS 5 shortcutsThe Icon Project app is great way to get custom app icons onto your home screen. In combination with iOS 5 exposing deep links into Settings, its a must have.<br />
<br />
However installing the app from the App Store did make me pause and reconsider when it says "your icons won't work if you uninstall Icon Project".<br />
<br />
Wow, I thought, one extra icon I have to keep around. Because once you have your icons, why should you need it?<br />
<br />
Turns out that the URLs for the icons are redirected through the Icon Project app. Making them truly standalone is better and this is what I set out to do.<br />
<br />
To do this we edit the URL back to what it should be before saving it to our home screen using the technique for Mobile Safari bookmarklets.<br />
<br />
Create your icon as normal and when Icon Project sends you into Safari follow these steps:<br />
<br />
1. Save the icon's web page as a bookmark (not on the home screen yet).<br />
<br />
2. Edit the bookmark (tap Bookmarks, then find it, tap the Edit button and tap the bookmark).<br />
<br />
3. Copy the Address text to the clipboard (tap the text, tap Select All, tap again, tap Copy).<br />
<br />
4. Press the Home button and launch the Notes app. Create a new note and Paste in the text (the address is an embedded web page therefore it's easier to edit this way).<br />
<br />
5. In the note, look for the URL starting with iconfactory:// ending with a numerical ID. Replace this text with the URL you want the shortcut to load.<br />
<br />
6. Select All and Copy the text again.<br />
<br />
7. Return to Safari. Select All on the address and Paste to replace it with the modified version. Save the bookmark.<br />
<br />
8. Go to the bookmark. This will reload the web page with the new URL in it.<br />
<br />
9. Now Save to Home Screen as normal following it's instructions. This icon won't require Icon Project to be installed.<br />
<br />
Now you can delete the temporary bookmark you created but I instead recommend you keep it so you can quickly re-create the one on the home screen should you delete it and later want it back. Think of them as backups. You can move them into their own folder too if you want.<br />
<br />
Now to prove it, you can delete Icon. Project. (Don't panic after proving your icons work simply reinstall it from the App Store Purchased page.) Icons created without being modified freeze on a white screen. The modified ones should still work.<br />
<br />
Bonus tip: If you want some other icons, use Google Image Search in Safari, saving the icons you want to the Camera Roll (long tap and then select Save Image) then get the icons via the Camera button in Icon Project.Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com4tag:blogger.com,1999:blog-13048384.post-54789658808387063862011-11-16T00:21:00.001+08:002011-11-16T00:28:59.865+08:00More prefs URLs for use on iOS 5 for Settings App shortcuts<div><p>The below link describes App shortcuts deep-linking into the Settings app on iOS 5.</p>
<p><a href="http://www.idownloadblog.com/2011/11/11/how-to-create-custom-shortcuts-to-wifi-settings-airplane-mode-and-more-no-jailbreak-required/">How to Create Custom Shortcuts For WiFi Settings, Airplane Mode, and More – No Jailbreak Required</a></p>
<p>(Blogger app keeps losing my text, so apologies for the abbreviated post.)</p>
<p>This captivated me so I hunted around for more options, here they are:</p>
<p>Call forwarding: <a href="prefs:root=Phone&path=CallForwarding">prefs:root=Phone&path=CallForwarding</a></p>
<p>Call waiting: <a href="prefs:root=Phone&path=CallWaiting">prefs:root=Phone&path=CallWaiting</a></p>
<p>Show my caller ID: <a href="prefs:root=Phone&path=CallerID">prefs:root=Phone&path=CallerID</a></p>
<p>Mobile calls and data usage: <a href="prefs:root=General&path=USAGE/CELLULAR_USAGE">prefs:root=General&path=USAGE/CELLULAR_USAGE</a></p>
</div>Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com0tag:blogger.com,1999:blog-13048384.post-49041480777294750592011-11-15T22:23:00.001+08:002011-11-15T22:23:24.052+08:00Commentary on Google announces _nomap for WiFi SSIDs<div><p><a href="http://feedproxy.google.com/~r/blogspot/MKuf/~3/Fn476B-z1r0/greater-choice-for-wireless-access.html">Greater choice for wireless access point owners</a></p>
<p>While my initial thought is that this is a clumsy idea (it means that you have to re-save your network password on all of your devices for the new SSID) I'm warming to it for a crucial reason:</p>
<p>Recently a couple of things have bothered me in WiFi geolocation:</p>
<p>1. I moved house. The location of the access point I own still registers the old address.</p>
<p>2. I bought a new access point secondhand. The location of that access point still registers as the original owner's address some 3000km away!</p>
<p>Now the _nomap solution won't fix either of these problems because both access points are already in the database. I am waiting patiently for Skyhook to trickle down the updates, if that's even the correct place (how do I update Google directly?).</p>
<p>But it can be used to great effect in another case: mobile wireless hotspots. Any mobile hotspot, be it a device, a laptop (such as a Mac or running Connectify), or a mobile phone has no inherent location, therefore I would love it if manufacturers (because we know no-one changes defaults) could append _nomap in their firmware to the default network name on such devices.</p>
<p>Then again, maybe all devices should do this to their default name upon factory reset, because it only takes being tracked once to get in the database and it's harder to get out once you're in (how often is Google really going to be sampling your network name in your neighbourhood anyway?) as in my above cases.</p>
<p>Of course none of this stops the nefarious among us, the information is out there anyway...</p>
</div>Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com0tag:blogger.com,1999:blog-13048384.post-75874096400553746702011-10-27T17:26:00.001+08:002011-10-27T17:29:23.145+08:00More work done on Gitter<div><p>I have made more changes to Gitter. UI changes this time, no Git improvements yet.</p>
<p>I figured I would add a Browse button to view/edit files in the checked-out repository would be nice, so there it is.</p>
<p>And my commit log got longer than my screen, so I had to introduce a scroll bar.</p>
<p>I don't predict much work on this soon - it's a long weekend here and I'm driving next week :(</p>
<p>Same address as before to <a href="http://goo.gl/6W9Gy">download</a>.</p>
</div>Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com0tag:blogger.com,1999:blog-13048384.post-59474995761939580272011-10-25T08:33:00.001+08:002011-10-26T17:32:54.986+08:00My Android-on-Android workflow so farWith the release of the first of my SL4A scripts, I thought it beneficial to document how I got here and what I'm using.
<br/>
I'm using a lot of existing Android applications and gluing them all together, which is Android's biggest strength.
<br/>
Firstly, the core applications are the programming environment.
<br/>
<a href="http://code.google.com/p/android-scripting/">SL4A</a> is the scripting environment and text editor.
<br/>
<a href="http://code.google.com/p/python-android/">Py4A</a> is the Python interpreter.
<br/>
I'm using <a href="https://github.com/">Github</a> which likes Markdown documentation, so for this I use <a href="https://market.android.com/details?id=com.kooklab.epistle">Epistle</a> as a simple WYSIWYG editor.
<br/>
I'm using <a href="https://market.android.com/details?id=net.kidfeng.android.iconreader">IconReader2</a> in my layouts to use built-in Android icons in my scripts.
<br/>
I'm using <a href="https://market.android.com/details?id=org.pocketworkstation.pckeyboard">Hacker's Keyboard</a> for typing. It gives a full keyboard including the Python-critical Tab key. And it fits okay on my 7-inch Samsung Galaxy Tab.
<br/>
And of course I'm using the <a href="https://market.android.com/details?id=com.google.android.apps.blogger">Blogger</a> app to make these announcements on my blog.
<br/>
I use the <a href="https://market.android.com/details?id=com.metago.astro">ASTRO file manager</a> for those duties, including its ability to create and modify zip files that I use for distribution and to enable the Android browser to upload any file (though seemingly except for zip files).
<br/>
I tried using the (Google) <a href="https://market.android.com/details?id=com.google.android.apps.docs">Docs</a> app for
uploading but I found its multiple versions support lacking and a little unreliable.
<br/>
In stark contrast the <a href="https://market.android.com/details?id=com.box.android">Box.net</a> app supports both of these including in-app sharing. (At this point I cheated and used my iPhone to sign up for Box because you'll get 50GB this way right now.)
<br/> I then use the <a href="https://market.android.com/details?id=com.mndroid.apps.urly">Urly</a> app to make short URLs from the Box.net ones.
<br/>
And my Samsung Galaxy Tab is powered by <a href="http://p1000.teamovercome.net/">Overcome 7 Series Gingerbread</a>.
<br/>
Then I use my Gitter script just released to update my Git repository, a script I designed with the help of the UI Builder I've made, which is soon-to-be-released.
<br/>
All of the above have my recommendation.Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com0tag:blogger.com,1999:blog-13048384.post-10904606118151769182011-10-25T07:54:00.001+08:002011-10-26T17:11:27.586+08:00First published script: Gitter<div><p>UPDATE 2: And it should be fixed now. Note that I think there's a problem with timezones on commits but that's only a minor annoyance for me. It will affect you if Gitter isn't the only committer to your repository.</p>
<p>UPDATE: I'm a dummy. I've just learned after committing the source code that directories are trees in Git. Fixing this now. This affects the Commit button.</p>
<p>Okay so I promised this a little earlier but I haven't been carpooling until yesterday.</p>
<p>This is the first of the Android-on-Android scripts. It allows you to have a Git repository on your phone and optionally synchronized with a remote server such as Github.</p>
<p>It is very simple but I might expand it over time. It only supports the master branch and doesn't merge well.</p>
<p><a href="http://goo.gl/6W9Gy">Here is the script package</a>. You will first need to install SL4A, Py4A, PyCrypto, Paramiko and Dulwich.</p>
<p>The source code will arrive shortly in my <a href="https://github.com/jkingok/sl4a-scripts">Github account</a>.</p>
</div>Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com0tag:blogger.com,1999:blog-13048384.post-28836070825316457472011-10-04T21:07:00.001+08:002011-10-04T21:07:46.743+08:00The Android-on-android Project<div><p>Here's what I'm currently working on:</p>
<p>I'm toying with programming on Android but with a twist - I'm trying to do it all from my Samsung Galaxy Tab. This way I can do it anywhere. It's something my iphone doesn't offer and that I've recently become aware of through the SL4A scripting project and the many modules of Python.</p>
<p>Soon I will post some of the software I have been using and what I think of them and then I will follow this up with my first scripts.</p>
<p>The first scripts are building block development tools that make it easier to make more scripts in the future. Let me know what you think.</p>
</div>Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com0tag:blogger.com,1999:blog-13048384.post-45454143656812921762011-09-30T07:10:00.002+08:002011-09-30T17:31:38.376+08:00dulwich for Android<div>This is just a little post to help out when trying to install dulwich - the pure Python implementation Git version control - on Android.<br /><br />Dulwich is distributed as a .tar.gz archive, whereas my Android device won't allow me to download these files.<br /><br />I have converted the archive to .zip which is Android-friendly and have <span style="font-weight:bold;">made no other changes</span>. This is the latest version that is current as of now - 0.8.0.<br /><br />You
can <a href="https://docs.google.com/uc?id=0B0fr_2xFSdewMGE3NDA3MGYtM2M0Yy00Nzk1LTg4ODAtOGY3ZmI1NTg4Y2Y3&export=download&hl=en">download this version here</a> (link fixed to be a direct download).Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com0tag:blogger.com,1999:blog-13048384.post-59373504407793251312011-09-28T21:32:00.001+08:002011-09-28T21:32:23.063+08:00Scripting gets a home on github.com<div><p>I have just figured out how to export my scripts from my Android tablet.</p>
<p>I like Git version control so wanted to useit to back up my scripts. However there was nothing I could find to perform commits from Android to somewhere like <a href="http://github.com">GitHub</a>.</p>
<p>Enter Dulwich - git written in Python. I installed this to the phone (had to do it over USB unfortunately). I then found a code sample integrating it with Paramiko - SSH written in Python. That had a dependency on PyCrypto which is helpfully compiled as an egg on the Py4A page.</p>
<p>Now all I had to do is write a script to do the commit. Easier said than done. I've been spending all of my commute time on it and have only just got the first pushed commit into the repository.</p>
<p>Of course I wouldn't have had a chance of doing this on my iPhone! Three cheers for <a href="http://code.google.com/p/android-scripting">Android Scripting</a>!</p>
<p>You can visit the fruits of my labour <a href="https://github.com/jkingok/sl4a-scripts">here</a>. But don't expect much - I still have to learn how to push a diff'd second commit! </p>
</div>Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com0tag:blogger.com,1999:blog-13048384.post-78581915195981374462011-09-21T17:48:00.001+08:002011-09-28T21:32:47.466+08:00I'm playing with SL4A: UI Builder<div><p>I'm now playing with <a href="http://code.google.com/p/android-scripting">SL4A</a> that I recently discovered. SL4A stands for <i>Scripting Languages for Android </i>and provides live scripting environments on your phone or tablet.</p>
<p>It works in tandem with Python for Android as an interpreter which is downloadable separately. Python is my choice of language for now.</p>
<p>The latest Unofficial packages of SL4A add the ability to build UIs using the standard Android XML format.</p>
<p>That's great but I don't want to be editing XML on my phone. Not finding a useful XML editor for free in the Market I've found my first SL4A project.</p>
<p>UI Builder.</p>
<p>This is a menu driven Python script for generating and previewing live a simple layout XML file. It does not support nearly everything nor does SL4A yet (for example any Views that must be populated by an adapter class can't be done as far as I can see). But you will be able to do interactive form style applications.</p>
<p>I'll post the code soon when I can upload it somewhere. It's longer than a barcode (SL4A's unique script distribution option) for sure.</p>
<p>I'm steadily improving it thanks to time spent carpooling.</p>
<p>As a tease, here's a screenshot, which I can't seem to rotate right...</p>
<br/><img src='http://lh6.ggpht.com/-31-Sa_nF92Q/Tnmy5nyyH_I/AAAAAAAAAJ8/1tCSsEaUx4c/SC20110921-174405.png' /></div>Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com0tag:blogger.com,1999:blog-13048384.post-87871478180500999972011-08-03T07:09:00.001+08:002011-08-03T07:16:54.044+08:00Maps for Transit Navigation Mobile<div><p>Google have recently improved their transit navigation offering and I've now had a chance to compare the iPhone and Android offerings.</p>
<p>On iPhone you can plan a journey (Directions in Maps and then choose the Transit option if available). Here you get clock buttons which allow you to shift the trip time. This is necessary because depending on your location accuracy your trip will be prefixed by a walk and Google's walking speed is very conservative. You also have to manually move forward through the steps to follow your journey. One nice touch is that where the navigations have timings in them, they are relative and live updating. So you can see how long remains until you should reach the next leg in your journey.</p>
<p>On Android you get full blown navigation with the Navigation app. The live updating of the directions list in Android is different. It is static text but the GPS moves down the list of stations. The time and distance remaining on the current leg is shown when the GPS is available.</p>
<p>I wonder, given that the London Underground was added to Transit last week how well thus works because on Android it relies on GPS. I didn't get updates in the only tunnel I go through.</p>
<p>Really good for free on both if you have good Transit coverage in your area.<br>
</p>
</div>Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com0tag:blogger.com,1999:blog-13048384.post-35176528009538517782011-08-03T06:41:00.001+08:002011-08-03T06:48:53.062+08:00First use of Google+<div><p>Here's an impression from my first night of Google+:</p>
<p>This is very cool and slick interface but I can't help feeling that for a user from scratch it doesn't offer instant satisfaction.</p>
<p>You need to be a reasonable user of Gmail to get something to appear straight away, though you can connect Yahoo and Hotmail address books to get a larger list of people to invite.</p>
<p>I would like Google to make Sparks more prominent because it is something which you can do, after you edit your profile which Google+ asks you to do, before your circlets accept your invitations.</p>
<p>Sparks is just like customized sections in Google News and that's fine.</p>
<p>+1 from Google is integrated into the profile page and is very nice. It's like how I use starred items in Google Reader but for the whole web because of browser extensions. However I can't find an easy way to +1 and then share that from the feed.</p>
<p>Google+ on both iPhone and Android is there and works fine but is limited without many friends. I should start following people. Can't find Sparks in these apps yet unfortunately.</p>
<p>More as I figure it out, find me on <a href="http://gplus.to/jkingau">Google+</a> if you want.</p>
</div>Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com0tag:blogger.com,1999:blog-13048384.post-18928220916936265192011-06-29T08:27:00.001+08:002011-08-03T06:49:34.884+08:00Hey Google let me know when you want me to test Google+<div><p>UPDATE: I now have an invite which means I'm in thanks to pcworld.com. I am going to put up some commentary soon. </p>
<p>I'm a holdout from Facebook from a year now but I'd love to review +Circles...</p>
<p>This is really relevant to the news yesterday that +1 launched in Australia yesterday.</p>
<p>Here's hoping the invites ramp up soon.</p>
<p>Also notice that I'm posting this for the first time from the Blogger Android Market app which us very slick. Integrates with Picasso and uses the built-in Android account.</p>
<p>I look forward to getting into blogging again.</p>
<p>Any topics of interest? Anyone out there leave me a comment, thanks.</p>
</div>Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com0tag:blogger.com,1999:blog-13048384.post-12818320894570484922010-08-13T19:45:00.002+08:002010-08-13T19:49:17.272+08:00Open sourcing the older PutPinfInItsPlace toolReader Daniel has requested the source for <a href="http://techtransit.blogspot.com/2007/06/putpinfinitsplace-itunes-plus-fixer-for.html">PutPinfInItsPlace</a> my tool I needed to write to get iTunes Plus losslessly onto my older Nokia phones way back in 2007.<br /><br />Seems its still for use for Xbox 360 too.<br /><br />The tool was provided free of charge/free of warranty and I'm no longer maintaining it.<br />Along with fixing my links (thanks to the GeoCities mirror) to the runnable version today I've uploaded <a href="https://docs.google.com/leaf?id=0B0fr_2xFSdewMGNmMDQwZDEtMzRkOC00Yzk1LTkxYmQtYjdiZjY1M2FiZGNi&hl=en&authkey=CJWwy4oH">the source code here</a>. No warranty, always convert a backup of your music (you have been warned), I haven't tested this code in years.Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com0tag:blogger.com,1999:blog-13048384.post-42647178816116009192010-08-13T19:43:00.001+08:002010-08-13T19:45:25.458+08:00Renewed interest in my old itemsHello again.<br /><br />Yes I still exist. Thanks to some readers I've been prompted to update this site. Some of my older files are still useful. Please note that my previous links to Yahoo! GeoCities expired late in 2009.<br /><br />However thanks to the massive efforts of the Internet my old GeoCities has been mirrored.<br /><br />All of the old links now exist <a href="http://geocities.ws/jking_ok/blog.html">here instead.</a>Anonymoushttp://www.blogger.com/profile/03729992993316370302noreply@blogger.com0