<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/rss-style.xsl" type="text/xsl"?>
<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>app &#8211; Terence Eden’s Blog</title>
	<atom:link href="https://shkspr.mobi/blog/tag/app/feed/" rel="self" type="application/rss+xml" />
	<link>https://shkspr.mobi/blog</link>
	<description>Regular nonsense about tech and its effects 🙃</description>
	<lastBuildDate>Sat, 18 Apr 2026 06:59:55 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://shkspr.mobi/blog/wp-content/uploads/2023/07/cropped-avatar-32x32.jpeg</url>
	<title>app &#8211; Terence Eden’s Blog</title>
	<link>https://shkspr.mobi/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title><![CDATA[ManyTag Colour eInk Badge SDK - Minimum Viable Example for Android]]></title>
		<link>https://shkspr.mobi/blog/2025/02/manytag-colour-eink-badge-sdk-minimum-viable-example-for-android/</link>
					<comments>https://shkspr.mobi/blog/2025/02/manytag-colour-eink-badge-sdk-minimum-viable-example-for-android/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Fri, 28 Feb 2025 12:34:30 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[eink]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Kotlin]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=58487</guid>

					<description><![CDATA[Last year, I reviewed a Four-Colour eInk Name Badge - the ManyTag HSN371. The hardware itself is perfectly fine, but the Android app isn&#039;t great. It is complicated, crash-prone, and not available in the app-store.  After some back-and-forth with the manufacturer, they agreed to send me their Android SDK and documentation. Sadly, the PDF they sent me was riddled with errors and the software…]]></description>
										<content:encoded><![CDATA[<p>Last year, I reviewed a <a href="https://shkspr.mobi/blog/2024/11/review-four-colour-eink-name-badge-hsn371-plus-linux-and-android-tips/">Four-Colour eInk Name Badge</a> - the ManyTag HSN371. The hardware itself is perfectly fine, but the Android app isn't great. It is complicated, crash-prone, and not available in the app-store.</p>

<p>After some back-and-forth with the manufacturer, they agreed to send me their Android SDK and documentation. Sadly, the PDF they sent me was riddled with errors and the software library is also a bit dodgy. So, with the help of <a href="https://hades.omg.lol/">Edward Toroshchyn</a> and a hefty amount of automated boiler-plate, I managed to get it working.</p>

<p>The <a href="https://codeberg.org/edent/eInk-SDK/">full code is open source</a>, but here's a quick walk-through of the important bits.</p>

<p>First, the AAR library needs to be imported into the project. Place it in <code>app/libs</code> and then include it in the Gradle build file:</p>

<pre><code class="language-java">dependencies {
    implementation(files("libs/badge_nfc_api-release.aar"))
}
</code></pre>

<p>The key to getting it working is in the Android permissions. It needs Bluetooth, NFC, and location. So the manifest has to contain:</p>

<pre><code class="language-xml">&lt;uses-permission android:name="android.permission.BLUETOOTH"/&gt;
&lt;uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/&gt;
&lt;uses-permission android:name="android.permission.BLUETOOTH_SCAN"/&gt;
&lt;uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/&gt;
&lt;uses-permission android:name="android.permission.NFC"/&gt;
&lt;uses-permission android:name="android.permission.NFC_TRANSACTION_EVENT"/&gt;
&lt;uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/&gt;
&lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/&gt;
</code></pre>

<p>The following imports are needed from the Android Archive library:</p>

<pre><code class="language-java">import cn.manytag.badge_nfc_api.manager.BadgeWriteManager
import cn.manytag.badge_nfc_api.manager.OnNFCReaderCallback
import cn.manytag.badge_nfc_api.manager.OnBluetoothCallBack
import cn.manytag.badge_nfc_api.manager.OnSendImageCallback
</code></pre>

<p>The library needs to be initialised with:</p>

<pre><code class="language-java">val state = BadgeWriteManager.getInstance().init(this)
</code></pre>

<p>When the phone reads the NFC tag, it gets a bunch of information:</p>

<pre><code class="language-java">BadgeWriteManager.getInstance().setOnNFCReaderCallback(object : OnNFCReaderCallback {
    override fun onReaderMessage(i: Int, tag: Tag) {
        if (i == 0) {
            BadgeWriteManager.getInstance().readNFC(tag)
        }
    }

    //  Get the data from the badge
    override fun onReaderType(tag: Tag, isodep: IsoDep, i: Int, type: String, size: String, color: String) {
        if (i == 0) {
            nfcData = """
                NFC Tag Detected!!!
                Tag: $tag
                IsoDep: $isodep
                Type: $type
                Size: $size
                Color: $color
            """.trimIndent()
            colorFromNFC = color
            tagObject = tag
            isoDepObject = isodep
            badgeType = type
            badgeSize = size
        }
    }
})
</code></pre>

<p>The <code>color</code> is most important right now. It says whether the badge is black and white, or black and white and red, or black and white and red and yellow.</p>

<p>After picking an image from the filesystem, it needs to be dithered into the correct colour format:</p>

<pre><code class="language-java">processedBitmap = originalBitmap?.let { bitmap -&gt;
    colorFromNFC?.let { color -&gt;
        BadgeWriteManager.getInstance().processImage(bitmap, color)
    }
}
</code></pre>

<p>Finally, the processed image needs to be converted to bytes and then sent to the badge via Bluetooth:</p>

<pre><code class="language-java">if (processedBitmap != null &amp;&amp; badgeType != null &amp;&amp; badgeSize != null &amp;&amp; colorFromNFC != null) {
    val imgData = BadgeWriteManager.getInstance().getImageData(processedBitmap!!, colorFromNFC!!)

    BadgeWriteManager.getInstance().sentImageResource(
        tagObject!!, isoDepObject!!, imgData, badgeType!!, badgeSize!!, colorFromNFC!!
    )
}
</code></pre>

<p>I realise this is a bit "<a href="https://knowyourmeme.com/memes/how-to-draw-an-owl">draw the rest of the owl</a>" but that should be enough to get you started on building an app which can communicate with these badges.</p>

<p>The app I've built isn't the prettiest in the world but at least it works. It scans a badge, gets its info, picks an image, dithers it, then sends it to the badge.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2025/02/badge-app-fs8.png" alt="Screenshot of an app." width="504" height="957" class="aligncenter size-full wp-image-58494">

<p>You can <a href="https://codeberg.org/edent/eInk-SDK/">play with the code on CodeBerg</a>.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=58487&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2025/02/manytag-colour-eink-badge-sdk-minimum-viable-example-for-android/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Removing features is a shitty move]]></title>
		<link>https://shkspr.mobi/blog/2021/06/removing-features-is-a-shitty-move/</link>
					<comments>https://shkspr.mobi/blog/2021/06/removing-features-is-a-shitty-move/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 09 Jun 2021 09:08:41 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[hue]]></category>
		<category><![CDATA[IoT]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=39217</guid>

					<description><![CDATA[I&#039;ve worked on some big product launches. Every time there&#039;s a major update, developers have to think about which features to port over and which to drop.  Sometimes it is easy. Analytics show no one is using this feature? Drop it.  Sometimes it is hard. It&#039;s a moderately well used feature, but complicated to get running on a new environment. If you keep it - that&#039;s a huge extra cost, for…]]></description>
										<content:encoded><![CDATA[<p>I've worked on some big product launches. Every time there's a major update, developers have to think about which features to port over and which to drop.</p>

<p>Sometimes it is easy. Analytics show no one is using this feature? Drop it.</p>

<p>Sometimes it is hard. It's a moderately well used feature, but complicated to get running on a new environment. If you keep it - that's a huge extra cost, for marginal utility. If you drop it - die-hard users will complain.</p>

<p>So we come to Philips Hue. I've <a href="https://shkspr.mobi/blog/2019/11/mixing-hue-and-innr-smart-lights/">long been a fan of these smart lights</a>.  They've just released a completely redesigned version of their app. And, over on LinkedIn, the designers and product managers are congratulating each other on a job well done.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2021/06/linkedin-wanking.png" alt="People on linkedin wanking themselves dry over how clever they are." width="675" height="398" class="aligncenter size-full wp-image-39219">

<p>But reading the reviews and looking at the social media chatter shows a different story.</p>

<p>One of the app's best features was their Android Widgets. I had a row on my homescreen with buttons for each room.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2021/06/hue-widgets.jpg" alt="" width="1080" height="406" class="aligncenter size-full wp-image-39218">
Tap the bedroom - lights go on. Tap it again - lights go off. Perfect!</p>

<p>The new version deleted all the widgets, with no way to recreate them?  Why? Because the iPhone app can't have widgets, so no one gets them.  I wish I was joking.</p>

<blockquote class="social-embed" id="social-embed-1400566421927743489" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/tweethue" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRv4BAABXRUJQVlA4IPIBAAAwCQCdASowADAAPrVOn0snJCKhpy2w4BaJaADMT4Ox+cnt8eezYuHYD7YcQGkCmd+TGGolTGACvoKFB9Fk28pWUTfXyyYF4/Z2/sUWv9I6aNwAAP79Kljh1pz5l4V7+KbF8W/QInFc1xAH8PsjRoO8cf98p85/mPTsuQ5u5qcMrSf66/SEPqcFqdjnmzzKBSkofdPBOE4IYjBIzekTnZleBG/JDy/RGa35MJxcolhjJhpSRd7c1R/wT0bblfCnEm4/B5l74sl0/JIx4nKnDVu/CsK+5daA+MOo+86qUnh2s1OLI2BGnaR1bUYYRcXlva+NhFTcKm0VqRLM1UGv/lB6kr0GB6uJ2q3/z5YzCX9MJPX66fNFAi5NG1vBRI4dmHtmiUDecIut+BuI9Z0Er9ih96ed7AedwtofE7+5biZcVkVKIz50zAj7Pg7E7X6tLyvpOYZqmn0x+M7krvzmCndWIU0QSs+t7JLdi4PzcaFb2e8/ftK02ei1WwevFJmI7+KZ+0NfEkmm7zbRfD8UiIRJ3jP24QCRlIS+K+8x2D7/oZlP2MOw8KEnitiQLf5miO4YkekizoQ5HjrTkM8RReX3p+wMEbO0UU+Hw/2NtvhZKDpmv0EoMvJ/i4FApt//FcgFl3xk4Ge6ZVkGQQ3A3gAAAAA=" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Philips Hue</p>@tweethue</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody"><a href="https://twitter.com/myotheralt">@myotheralt</a> Hi Jon, thanks for reaching out about this.  We've decided to discontinue the separate Hue widget to focus on bringing more functionality to Siri Shortcuts as it offers more extensive functionality. Same goes for Android. :)</section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/tweethue/status/1400566421927743489"><span aria-label="0 likes" class="social-embed-meta">❤️ 0</span><span aria-label="1 replies" class="social-embed-meta">💬 1</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2021-06-03T21:33:50.000Z" itemprop="datePublished">21:33 - Thu 03 June 2021</time></a></footer></blockquote>

<p>Perhaps this is a tiny kerfuffle? Sure, <a href="https://twitter.com/search?q=%40tweethue%20widget&amp;src=typed_query">there are lots of users complaining on Twitter</a> - but perhaps they're a vocal minority?</p>

<p>A check on the app's Google Play store rankings tells a similar story.  The app used to have an impressive 4.5★ rating. <a href="https://play.google.com/store/apps/details?id=com.philips.lighting.hue2&amp;showAllReviews=true">Now it's barely hovering above 3★</a>.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2021/06/User-Reviews.png" alt="Lots of reviews with people complaining." width="775" height="652" class="aligncenter size-full wp-image-39221">

<p>That's a significant drop considering how many people have installed it.  The <a href="https://apps.apple.com/us/app/philips-hue/id1055281310#see-all/reviews">reviews on iOS are also suffering</a> (although it's not possible for me to sort by date on them.)</p>

<blockquote class="social-embed" id="social-embed-1402586293192757248" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/tomsinger" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRioCAABXRUJQVlA4IB4CAAAwCwCdASowADAAPrVOoEynJCMiKrVaqOAWiWMAsR+pwojSu5bIAIq1tWoX5S0NOgh53hRjQSd7JJZRIqnh9gDjFliVx7V8+QOyNInZfcAwacrGPQ/v87Av8cRl0V/2hk9xAAD+9TW2IsgTbnbUx2jbcXWGgT9wFwBE2WiY3uk7cfIb+vFWdYaNCf8mBubT+D9yI5AdsY24XaROubl7BBUkc+vll/+XCfUeNGcG1cxx/q1XkzwxR+/pIeA7IQ+HFmf6H25xATxMKxL2gPapjiXxw/pSsPBQU2yzDmMtpywnoQY+B1eL4uHRu4/xKa94mefo+JcbluhUbubFvCW2uO91COfSr+mhwSFMpqUEziYMNIoGv6N5X0kXloUATjPZf1zx/yOYyxbnWNngfgfPu1I2A5vdy0VLTt4uPF8PFCkqXXLQAROZmmdCbABEMH2QANa6DZSSABiJYz44fDO61DVHBdl9L8RJ1B2S2Hz9mE1nQPfjTsCuxXorhavCNwEntsTpRcH/+pPjvFLCh6H93sJDZOVXfPYdnYJ7wNEgw2lS+utZnCVMhaLManrDX9oknMhQd+YDZWV/mtvW60XkJCGwmmzKrIMxs8THXLt/9hh7NdBuEwkn3BUK5yKIvvzw1LTIR12l9k+jAUE4FfWe4KSR4fmv/SGEiBeHZnlIL58Qbv1843od/TXRlp8wgg21gAeVgIfhQ+27RdFo0AAAAA==" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Tom Singer</p>@tomsinger</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody"><small class="social-embed-reply"><a href="https://twitter.com/edent/status/1402553326743560193">Replying to @edent</a></small><a href="https://twitter.com/edent">@edent</a> I can sort by most recent using my iPhone, they have the same level of praise as Android! <a href="https://x.com/tomsinger/status/1402586293192757248/video/1">pic.x.com/Ko0n1wSsFQ</a><div class="social-embed-media-grid"><video class="social-embed-video" controls="" src="https://video.twimg.com/ext_tw_video/1402586195419406339/pu/vid/592x1280/75yoSyrCOQTVboGz.mp4?tag=12" poster="data:image/webp;base64,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" width="550"></video></div></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/tomsinger/status/1402586293192757248"><span aria-label="1 likes" class="social-embed-meta">❤️ 1</span><span aria-label="2 replies" class="social-embed-meta">💬 2</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2021-06-09T11:20:05.000Z" itemprop="datePublished">11:20 - Wed 09 June 2021</time></a></footer></blockquote>

<p>I get it. I truly do. Philips couldn't afford the expense of maintaining an Android and iPhone version of their app, so they rewrote the whole thing in Flutter. That way they only have a single code base to worry about. I daresay that iOS is their biggest user-base, so anything which is too hard for Apple to support gets dropped. From a purely business perspective, I guess it makes sense.</p>

<p>But this is an app used by people who have made a considerable investment buying into the ecosystem. The bulbs are not cheap, and they're installed in people's personal homes - so when the app screws them over, it <em>feels</em> like a slap in the face.</p>

<p>Removing features is an insult to your users. It is an insult to people who have paid good money to you, and who have spend significant time learning how to use your product. When you remove functionality, you're telling your customers that they've wasted their time and you simply don't care.</p>

<p>Programming computers is hard. Keeping people happy is hard. Upgrading systems and retaining compatibility is hard. Removing functionality makes life easy for you - but, guess what? Your job is to work hard to make things easy for your customers.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=39217&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2021/06/removing-features-is-a-shitty-move/feed/</wfw:commentRss>
			<slash:comments>17</slash:comments>
		
		<enclosure url="https://video.twimg.com/ext_tw_video/1402586195419406339/pu/vid/592x1280/75yoSyrCOQTVboGz.mp4?tag=12" length="2615768" type="video/mp4" />

			</item>
		<item>
		<title><![CDATA[Why does my remote control need to know my location?]]></title>
		<link>https://shkspr.mobi/blog/2019/02/why-does-my-remote-control-need-to-know-my-location/</link>
					<comments>https://shkspr.mobi/blog/2019/02/why-does-my-remote-control-need-to-know-my-location/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 21 Feb 2019 12:09:28 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[location]]></category>
		<category><![CDATA[privacy]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=31518</guid>

					<description><![CDATA[Here&#039;s an interesting user-hostile pattern which could easily be avoided if programmers and business-people thought like regular humans.  I have a Pioneer / Onkyo sound system. It&#039;s pretty nice and comes with a (not too crappy) Android app to let me remote control it.  One day, the app updated itself. The changelog was the usual bland &#34;bug fixes and improvements&#34; message, but when I opened it,…]]></description>
										<content:encoded><![CDATA[<p>Here's an interesting user-hostile pattern which could easily be avoided if programmers and business-people thought like regular humans.</p>

<p>I have a Pioneer / Onkyo sound system. It's pretty nice and comes with a (not too crappy) Android app to let me remote control it.</p>

<p>One day, the app updated itself. The changelog was the usual bland "bug fixes and improvements" message, but when I opened it, this happened:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/02/Pioneer-App-Location.jpeg" alt="Allow Pioneer Remote App to access this device's location?" width="680" height="518" class="aligncenter size-full wp-image-31520">

<p><em>Why</em> does a remote control need to know my location?  I assumed it was for some marketing bollocks, so I refused permission. Then the app refused to work.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/02/Pioneer-App-Location-Refused.jpeg" alt="Authority to access is required to play/display the contents and to get network information in App info." width="680" height="523" class="aligncenter size-full wp-image-31519">

<p>Let's ignore the grammatical atrocities in the pop-up. Something that was working fine and is now broken because the app developer didn't think that people would dare refuse their demand for sensitive data.</p>

<p>I complained, along with several other users.  A few weeks later, they published an update:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/02/pioneer-fs8.png" alt="What’s New Change the permission indication of Device’s Location to be indicated only when needed. * In case of use Android 4 or 5, the permission indication will be indicated when install this App or update to the latest version. * Why Device's location is needed? Answer: In order to set-up your wireless devices which are located around you, SSID and Access Point info is needed. There is no other purpose to use the information of Device’s Location." width="624" height="621" class="aligncenter size-full wp-image-31521">

<p>The new app works even if I don't give it permission to track me. Result!</p>

<h2 id="cause-1"><a href="https://shkspr.mobi/blog/2019/02/why-does-my-remote-control-need-to-know-my-location/#cause-1">Cause #1</a></h2>

<p>The first mistake was Pioneer / Onkyo. They should pop up a message saying "Hey, we would like your location so that we can..." and then let the user make an informed choice as to whether to grant that information.</p>

<p>If the user refuses, gracefully degrade and provide some other way to accomplish the task manually.</p>

<h2 id="cause-2"><a href="https://shkspr.mobi/blog/2019/02/why-does-my-remote-control-need-to-know-my-location/#cause-2">Cause #2</a></h2>

<p>Google, in its wisdom, has tied "Location" into things like BLE Scanning and WiFi scanning.  The excuse is that you can use these things as a <em>proxy</em> for location. That is, if I know you are near access point X your location is probably near Y.</p>

<p>I appreciate that. But is there a better way to request the permission? "Allow WiFi scan? This might share your location." That's probably not the best way to word it - but the current situation just confuses and upsets customers.</p>

<p>This is a <a href="https://issuetracker.google.com/issues/37065090">much</a> <a href="https://issuetracker.google.com/issues/37074104">complained</a> <a href="https://issuetracker.google.com/issues/71551252">about</a> problem with Android.  And one which won't be fixed anytime soon by Google.</p>

<h2 id="permission-to-speak-freely"><a href="https://shkspr.mobi/blog/2019/02/why-does-my-remote-control-need-to-know-my-location/#permission-to-speak-freely">Permission to speak freely</a></h2>

<p>In the bad old days of Nokia, apps <em>constantly</em> asked for permission. It was a running joke that the web browser app would ask for permission to connect to the net, and then ask if you <em>really</em> wanted to connect to a secure website.</p>

<p>You think I'm joking? This was a common experience on Symbian:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/04/Symbian-Secure-Connection-prompt.jpeg" alt="A pop-up asking if the user wants to connect to https." width="640" height="360" class="aligncenter size-full wp-image-28201">

<p>Android and Apple were meant to free us from this drudgery. With their carefully curated walled gardens, and double-checked apps, there was no need to bother the user with requests for permission.</p>

<p>Then this happened:
<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/04/Legit-App-Permissions.png" alt="A long list of unnecessary permissions requested by a dodgy flashlight app." width="480" height="800" class="aligncenter size-full wp-image-28202">
App developers abused that trust and started cramming in needless permissions in order to exploit the user.</p>

<p>Users don't want to have to think about this. App stores don't want to police the apps they stock. Developers don't want to put friction in the user journey. Regulators don't want data being shared without consent. Users say they want to manage their permissions, but don't really understand the consequences.</p>

<p>What a mess!  Perhaps I should find some AA batteries for the physical remote instead...?</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=31518&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2019/02/why-does-my-remote-control-need-to-know-my-location/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[It's The Little Things Which Make An App]]></title>
		<link>https://shkspr.mobi/blog/2013/05/its-the-little-things-which-make-an-app/</link>
					<comments>https://shkspr.mobi/blog/2013/05/its-the-little-things-which-make-an-app/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 09 May 2013 12:46:06 +0000</pubDate>
				<category><![CDATA[mobile]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[energy]]></category>
		<category><![CDATA[ovo]]></category>
		<category><![CDATA[ux]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=8195</guid>

					<description><![CDATA[I&#039;ve been a big fan of Ovo Energy since switching to them last year.  They email me a PDF statement, pay me 3% interest on any overpayments, and have their call centre waiting times displayed prominently on their homepage.  So, when they announced their new app, I was expecting something a little bit special. And that&#039;s exactly what I&#039;ve got.   An automatic torch to help you when you&#039;re rooting…]]></description>
										<content:encoded><![CDATA[<p>I've been a big fan of <a href="http://www.ovoenergy.com/">Ovo Energy</a> since switching to them last year.  They email me a PDF statement, pay me 3% interest on any overpayments, and have their call centre waiting times displayed prominently on their homepage.</p>

<p>So, when they announced their new app, I was expecting something a little bit special. And that's exactly what I've got.
<a href="https://play.google.com/store/apps/details?id=com.ovo.energy"><img title="" class="alignnone size-full" alt="image" src="https://shkspr.mobi/blog/wp-content/uploads/2013/05/wpid-Screenshot_2013-05-09-07-50-24.png"></a></p>

<p>An automatic torch to help you when you're rooting around in dark cupboards trying to read your meter.  Brilliant.</p>

<p>So, not only does the app fulfil its main purpose (submit gas &amp; electricity meter readings, see my bill, etc), someone has obviously taken the time to see how the app works in the real world.  Sure, there are plenty of standalone torch apps in the world - but this is the first time I've seen one so thoughtfully integrated into an app.</p>

<p>Ultimately, this app is probably going to be used once per month.  It needs to be simple enough to use that the customer doesn't have to relearn how to operate it every time. More than that - it needs to be <em>delightful</em> to use.</p>

<p>As much as we would all love our users to open our app several times a day, the reality is that they won't. That's why we need to concentrate not on beauty, not on overall UX, but on tiny moments of joy which reminds people why they should keep our app on their phone and keep coming back to it.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=8195&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2013/05/its-the-little-things-which-make-an-app/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[The OAuth / App Anti-Pattern]]></title>
		<link>https://shkspr.mobi/blog/2012/04/the-oauth-app-anti-pattern/</link>
					<comments>https://shkspr.mobi/blog/2012/04/the-oauth-app-anti-pattern/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sat, 21 Apr 2012 19:48:58 +0000</pubDate>
				<category><![CDATA[mobile]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[twitter]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=5599</guid>

					<description><![CDATA[OAuth was designed to combat an anti-pattern.  Typing your username and password into a third party site is bad idea. A really bad idea. I mean, you may think it&#039;s a bad idea to give your bank details to a Nigerian prince but that&#039;s just peanuts compared to giving away your password to an untrusted site!  So, that&#039;s why we use OAuth. Rather than handing details to a random site, we authenticate…]]></description>
										<content:encoded><![CDATA[<p>OAuth was designed to combat an <a href="http://en.wikipedia.org/wiki/Anti-pattern">anti-pattern</a>.</p>

<p>Typing your username and password into a third party site is bad idea. A <em>really</em> bad idea. I mean, you may think it's a bad idea to give your bank details to a Nigerian prince but that's just peanuts compared to giving away your password to an untrusted site!</p>

<p>So, that's why we use OAuth. Rather than handing details to a random site, we authenticate against a trusted site which then redirects us back with an authentication token.</p>

<p>That's all well and good on the web, but on mobile apps it becomes a little more difficult.</p>

<p>This is the popular mobile game <a href="https://play.google.com/store/apps/details?id=com.imangi.templerun">Temple Run</a>. After dying in the game (as I frequently do!) you can Tweet your score. But, first, you need to connect with Twitter.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2012/04/Temple-Run-Twitter.jpg" alt="Temple Run Twitter" title="Temple Run Twitter" width="300" height="500" class="aligncenter size-full wp-image-5601"></p>

<p>However, clicking the button, presents this screen:
<img src="https://shkspr.mobi/blog/wp-content/uploads/2012/04/Temple-Run-Twitter-OAuth.jpg" alt="Temple Run Twitter OAuth" title="Temple Run Twitter OAuth" width="300" height="500" class="aligncenter size-full wp-image-5600">
This is a pop-up within the game. What you see in the screenshot is the totality of what the user sees.</p>

<p>There are now two important questions:</p>

<ol>
    <li>How can the user tell if this is the genuine Twitter site?</li>
    <li>Why is there no indication that the site is served over HTTPS?</li>
</ol>

<p>This is a clear anti-pattern! We're teaching people to give over their usernames and passwords to sites that <em>appear</em> to be genuine - yet offer no way to validate their legitimacy.</p>

<p>We've been trying to educate people to look at the URL bar - to check that they've visited the correct site and that there's some form of SSL verification (commonly a padlock).</p>

<p>I'm not suggesting that Temple Run is doing anything other than pointing to the correct site. Just that they aren't giving the user a chance to verify the authenticity.</p>

<h2 id="how-to-solve-this-problem"><a href="https://shkspr.mobi/blog/2012/04/the-oauth-app-anti-pattern/#how-to-solve-this-problem">How To Solve This Problem</a></h2>

<p>I haven't the foggiest!  Thoughts?</p>

<p>We can't rely on the user having the Twitter app installed and firing via intent (or similar).
Due to the huge variety of phones and Operating Systems, there's no easy way (that I know of) to redirect from a website back to the app.
There needs to be a way to keep everything in-app to keep the user experience.</p>

<p>So, come on then oh great minds of the Internet, how do we fix this?</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=5599&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2012/04/the-oauth-app-anti-pattern/feed/</wfw:commentRss>
			<slash:comments>13</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Give Customers an Elevator Pitch for Your App]]></title>
		<link>https://shkspr.mobi/blog/2012/04/give-customers-an-elevator-pitch-for-your-app/</link>
					<comments>https://shkspr.mobi/blog/2012/04/give-customers-an-elevator-pitch-for-your-app/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 18 Apr 2012 11:35:22 +0000</pubDate>
				<category><![CDATA[mobile]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[blackberry]]></category>
		<category><![CDATA[playbook]]></category>
		<category><![CDATA[sign up]]></category>
		<category><![CDATA[zinio]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=5561</guid>

					<description><![CDATA[We live in a world of our own creation. This means we can find it inconceivable that outsiders don&#039;t know the acronyms we use daily. How can anyone possibly live without understanding what we do?  Customers don&#039;t understand your company&#039;s acronyms, processes, or business model.  It&#039;s worse than that, though - most users don&#039;t even recognise your company&#039;s name!  Here&#039;s a great example. In Zinio&#039;s …]]></description>
										<content:encoded><![CDATA[<p>We live in a world of our own creation. This means we can find it inconceivable that outsiders don't know the acronyms we use daily. How can anyone possibly live without understanding what we do?</p>

<p>Customers don't understand your company's acronyms, processes, or business model.</p>

<p>It's worse than that, though - most users don't even recognise your company's name!</p>

<p>Here's a great example. In Zinio's world, everyone knows who Zinio are. They live in Zinio town, drink Zinio coffee from the Zinio shop. ZINIO! It's the first thing on their minds when they wake up, and what they dream of in their Zinio beds.</p>

<p>They are completely disconnected from the real world. They just don't understand how non-customers see them.</p>

<p>Which leads to this disaster.</p>

<iframe title="Zinio on the PlayBook - first experience" width="620" height="349" src="https://www.youtube.com/embed/qtlDM0GN5rg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>

<p>Zinio have placed a button on the PlayBook - and, apparently, have never tested it with a non-Zinio aficionado.</p>

<p>The first thing to note is that no one is ever going to click on that icon. Neither the name or the graphic hold any interest to people who don't know what Zinio is.</p>

<p>Most normal people just don't go around clicking random buttons to see what they do. Computers are mysterious and pressing the wrong button could easily break them.</p>

<p>But, let us imagine that a curious user hits the button - what should they see?</p>

<p>A splash screen? An explanation of why Zinio is awesome? A demo? A fully working application which - later - prompts them to create an account?</p>

<p>In short - the elevator pitch. The trailer. The hook. Call it whatever you want - you need to make people give a damn about your product.</p>

<p>There's <a href="https://www.mobileindustryreview.com/mark_curtis_of_flirtomatic_dont_forget_the_mobile_web/">an excellent talk that Mark Curtis of Flirtomatic gives about the sign-up process</a>. In it, he describes how sign ups to the service rocketed once they minimised the amount of information they asked if a user. Why would a user give over any information without understanding what's on offer?</p>

<p>In the case of Zinio on the PlayBook, there's a complete absence of understanding of a normal user.</p>

<ul>
    <li>The icon is meaningless.</li>
    <li>The name is unfamiliar.</li>
    <li>There's no way of knowing what the app does if you open it.</li>
    <li>There's no incentive for the user to register.</li>
</ul>

<p>Would anyone - who didn't already know about Zinio - <em>ever</em> sign up to this?</p>

<p>I wonder who is paying for this deal? Is it RIM paying to have a killer app on its PlayBook? Is it Zinio paying RIM to access all their customers?  In either case - it looks like a wasted opportunity.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=5561&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2012/04/give-customers-an-elevator-pitch-for-your-app/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[QR Pal - When is an Android App not an Android App?]]></title>
		<link>https://shkspr.mobi/blog/2011/08/qr-pal-when-is-an-android-app-not-an-android-app/</link>
					<comments>https://shkspr.mobi/blog/2011/08/qr-pal-when-is-an-android-app-not-an-android-app/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 11 Aug 2011 11:30:07 +0000</pubDate>
				<category><![CDATA[mobile]]></category>
		<category><![CDATA[qr]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[review]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=4337</guid>

					<description><![CDATA[It&#039;s been a while since I did a screenshot based review of a mobile app.  I was gratified when QR Pal asked me to review their new app.  First thing&#039;s first, this is a great idea for a QR Scanner.  It saves all your scans - so you can retrieve them by category, it checks to see if links are safe to click on, it allows you to share scans with friends, and it also has a gameification element.  But…]]></description>
										<content:encoded><![CDATA[<p>It's been a while since I did a screenshot based review of a mobile app.  I was gratified when <a href="https://web.archive.org/web/20120920061300/http://qrpal.com/">QR Pal</a> asked me to review their new app.</p>

<p>First thing's first, this is a great idea for a QR Scanner.  It saves all your scans - so you can retrieve them by category, it checks to see if links are safe to click on, it allows you to share scans with friends, and it also has a gameification element.</p>

<p>But I <em>really</em> don't like it.  It's slow to start up, has a UI which is only really suitable for iPhone users, and has some basic usability flaws.</p>

<h2 id="on-with-the-review"><a href="https://shkspr.mobi/blog/2011/08/qr-pal-when-is-an-android-app-not-an-android-app/#on-with-the-review">On With The Review!</a></h2>

<p>The first thing you have to do is set up an account?  Why?  I just want to scan me some QR codes!
<img src="https://shkspr.mobi/blog/wp-content/uploads/2011/08/QRpal-Setup.png" alt="" title="QRpal  Setup" width="480" height="800" class="aligncenter size-full wp-image-4338">
I now understand that there are a bunch of social features - but that's not explained here.  Just "give us all your personal details for some unspecified purpose."  Hardly encouraging.</p>

<p>The email field doesn't tell the Android system that it's for email - so there's no @ key present on the keyboard.  Annoying oversight.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2011/08/QRpal-no-email-keyboard.png" alt="" title="QRpal no email keyboard" width="480" height="800" class="aligncenter size-full wp-image-4339"></p>

<p>It gets worse.  There's a password field which <em>doesn't tell the user the password parameters</em>!  How long does my password have to be? Do I have to use mixed case, numbers, symbols? What?
<img src="https://shkspr.mobi/blog/wp-content/uploads/2011/08/QRpal-no-password-info.png" alt="" title="QRpal no password info" width="480" height="800" class="aligncenter size-full wp-image-4340">
So, of course, after submitting, it tells you that you did not pass the stringent password requirements.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2011/08/QRpal-password-error.png" alt="" title="QRpal password error" width="480" height="800" class="aligncenter size-full wp-image-4341"></p>

<p>As a side note - if you were sending an email to people who had registered on your mobile app, would you make the email mobile friendly?
<img src="https://shkspr.mobi/blog/wp-content/uploads/2011/08/QRpal-email-not-mobile.png" alt="" title="QRpal email not mobile" width="480" height="800" class="aligncenter size-full wp-image-4349">
QR Pal didn't.  I don't understand why.  They know this email is probably going to an Android phone, why didn't they make sure the email looked perfect on the device?</p>

<p>So, on to the app itself...
<img src="https://shkspr.mobi/blog/wp-content/uploads/2011/08/QRpal-iPhone-UI.png" alt="" title="QRpal iPhone UI" width="480" height="800" class="aligncenter size-full wp-image-4342">
This, may I remind you, is an Android app.  Yet their UI has been lifted wholesale from their iPhone app.</p>

<p>The UI will be totally unfamiliar to anyone who is used to Android apps and the way they work.  Pressing the Android's menu button does nothing.</p>

<p>Even the settings page is iPhone-styled.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2011/08/QRpal-iPhone-Settings.png" alt="" title="QRpal iPhone Settings" width="480" height="800" class="aligncenter size-full wp-image-4343"></p>

<p>Scanning codes is as quick as any other scanner - and seems to work as well.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2011/08/QRpal-scanning.png" alt="" title="QRpal scanning" width="480" height="800" class="aligncenter size-full wp-image-4345"></p>

<p>Now, I say "quick", but you have to wait a good 5-10 seconds after clicking the app's icon before you can scan.  Why?  Because you have to see their splash-screen.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2011/08/QRpal-startup-screen.png" alt="" title="QRpal startup screen" width="480" height="800" class="aligncenter size-full wp-image-4346"></p>

<p>Now, there are a few nice features - checking to see if a URL is likely to be harmful is one.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2011/08/QRpal-link-checker.png" alt="" title="QRpal link checker" width="480" height="800" class="aligncenter size-full wp-image-4344">
Of course, it means that you are sending all your scans back to the QR Pal mothership.  I wonder what they do with them all?</p>

<p>Once a code is scanned, it's saved in your wallet.  Scans are grouped by category.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2011/08/QRpal-wallet.png" alt="" title="QRpal wallet" width="480" height="800" class="aligncenter size-full wp-image-4347">
Sadly, they don't check for duplicates.</p>

<h2 id="conclusion"><a href="https://shkspr.mobi/blog/2011/08/qr-pal-when-is-an-android-app-not-an-android-app/#conclusion">Conclusion</a></h2>

<p>The thing is, QR Pal is chock-full of good ideas.</p>

<p>Integrating with Twitter, LinkedIn, and Facebook is a smart move.</p>

<p>Checking links for safety is a bit of a gimmick, but a good differentiator.</p>

<p>Their <a href="https://web.archive.org/web/20121019141140/http://qrpal.com/live-map">live map of scans</a> is cute - although the app never asks for my location.</p>

<p>They have a "points" system - but it's never really explained why, how, or what it's for.</p>

<p>You see - every idea they have is good, but none of them seem fully realised.  Making the whole UI look like an iPhone app makes Android users feel like they're an afterthought.  I doubt it will play well on BlackBerry and WP7 when they launch.</p>

<p>But the absolute killer, for me, is the start-up time.  When I want to scan a code, I want to scan it right there, right then. I may be on a busy street, about to get off a train, or taking someone's business card.  I do not want to watch QR Pal's splash screen.</p>

<p>My preferred scanner <a href="https://github.com/zxing/zxing">ZXing for Android</a> starts instantly.  It doesn't do all of the fancy stuff of QR Pal - but it doesn't need to.  It's quick, simple, and all the features work.</p>

<p>QR Pal is a great idea for an app.  But they need to fix the UI, start-up speed, and finish the features they've started.  Once it's done that, it will be an excellent app.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=4337&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2011/08/qr-pal-when-is-an-android-app-not-an-android-app/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Android App - Vodafone UK USSD Commands]]></title>
		<link>https://shkspr.mobi/blog/2010/07/android-app-vodafone-uk-ussd-commands/</link>
					<comments>https://shkspr.mobi/blog/2010/07/android-app-vodafone-uk-ussd-commands/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 06 Jul 2010 07:56:29 +0000</pubDate>
				<category><![CDATA[mobile]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[ussd]]></category>
		<category><![CDATA[vodafone]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=2129</guid>

					<description><![CDATA[This is a really geeky app!  You know USSD? They&#039;re the codes you can type in to your phone to send messages back and forth to the networks.  You&#039;ve probably seen something like *#147# to display the last caller.  My second app presents a series of buttons which call the USSD commands - so you don&#039;t have to remember if it&#039;s the HLR or VLR which is queried by *#103#.  Useful, I know....  You can …]]></description>
										<content:encoded><![CDATA[<p>This is a really geeky app!  You know USSD? They're the codes you can type in to your phone to send messages back and forth to the networks.&nbsp; You've probably seen something like *#147# to display the last caller.</p>

<p>My second app presents a series of buttons which call the USSD commands - so you don't have to remember if it's the HLR or VLR which is queried by *#103#.</p>

<p>Useful, I know....</p>

<p>You can download the app by scanning in this QR code.</p>

<p></p><div id="attachment_2130" style="width: 174px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-2130" class="size-full wp-image-2130" title="Android App - Vodafone UK USSD Commands" src="https://shkspr.mobi/blog/wp-content/uploads/2010/07/vfuk.png" alt="Android App - Vodafone UK USSD Commands" width="164" height="164"><p id="caption-attachment-2130" class="wp-caption-text">Android App - Vodafone UK USSD Commands</p></div><p></p>

<p>The majority of these codes only work on phones with a Vodafone UK SIM who are on the Vodafone UK network.  I've no idea what the codes do on other networks.</p>

<p>A <a href="https://web.archive.org/web/20100612080105/http://www.betavine.net/bvportal/resources/vodafone/ussd">detailed explanation of the commands is available on Betavine</a>.</p>

<p>Sadly, Android provides no native way to capture or interprate USSD responses. Please star the <a href="http://code.google.com/p/android/issues/detail?id=1285">feature request</a> if you're interested in seeing this in future versions of Android.</p>

<p>One last thing - this app was neither designed nor approved by Vodafone UK. It has nothing to do with them!</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=2129&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2010/07/android-app-vodafone-uk-ussd-commands/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[NESTA - What's App]]></title>
		<link>https://shkspr.mobi/blog/2010/03/nesta-whats-app/</link>
					<comments>https://shkspr.mobi/blog/2010/03/nesta-whats-app/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 23 Mar 2010 18:30:13 +0000</pubDate>
				<category><![CDATA[mobile]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[Apps]]></category>
		<category><![CDATA[nesta]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=1875</guid>

					<description><![CDATA[Last night I went to the NESTA&#039;s &#34;What&#039;s App?&#34; discussion.  You can watch the event at NESTA&#039;s website.  .social-embed {all: unset;display: block;}.social-embed * {all: unset;display: revert;}.social-embed::after {all: unset;}.social-embed::before {all: unset;}blockquote:not(*) {all: unset;}.social-embed a {cursor: pointer;}blockquote.social-embed {box-sizing: border-box;border: .5px solid;width: …]]></description>
										<content:encoded><![CDATA[<p>Last night I went to the NESTA's "What's App?" discussion.&nbsp; You can <a href="https://web.archive.org/web/20100327071152/http://www.nesta.org.uk/news_events/video/assets/features/whats_app_event">watch the event at NESTA's website</a>.</p>

<style>.social-embed {all: unset;display: block;}.social-embed * {all: unset;display: revert;}.social-embed::after {all: unset;}.social-embed::before {all: unset;}blockquote:not(*) {all: unset;}.social-embed a {cursor: pointer;}blockquote.social-embed {box-sizing: border-box;border: .5px solid;width: 550px;max-width: 100%;font-family: sans-serif;margin: 0;margin-bottom: .5em;padding: 1em;border-radius: 1em;background-color: white;color: black;display: block;}.social-embed-header {display: flex;justify-content: space-between;}.social-embed-user {display: flex;position: relative;align-items: center;text-decoration: none;color: inherit;}.social-embed-avatar {width: 3em;height: 3em;margin-right: .5em;}.social-embed-avatar-circle {border-radius: 50%;}.social-embed-avatar-square {border-radius: 5%;}.social-embed-user-names-name {display: flex;align-items: center;font-weight: bold;margin: 0;}.social-embed-text {margin-top: .5em;}.social-embed-footer {display: flex;align-items: center;justify-content: space-between;}.social-embed-logo {width: 3em;}.social-embed-hr {border: .1px solid;margin: .5em 0 .5em 0;}.social-embed-meta {text-decoration: none !important;color: unset !important;}.social-embed-reply {display: block;}.social-embed-text a, .social-embed-footer time {color: blue;text-decoration: underline;}.social-embed-media, .social-embed-video {border-radius:1em;max-width:100%;}.social-embed-reply{font-size:.75em;display:block;}.social-embed-meter{width: 100%;background: #0005;}</style>

<blockquote class="social-embed" id="social-embed-10882499082" lang="en"><header class="social-embed-header"><a href="https://twitter.com/edent" class="social-embed-user"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRkgBAABXRUJQVlA4IDwBAACQCACdASowADAAPrVQn0ynJCKiJyto4BaJaQAIIsx4Au9dhDqVA1i1RoRTO7nbdyy03nM5FhvV62goUj37tuxqpfpPeTBZvrJ78w0qAAD+/hVyFHvYXIrMCjny0z7wqsB9/QE08xls/AQdXJFX0adG9lISsm6kV96J5FINBFXzHwfzMCr4N6r3z5/Aa/wfEoVGX3H976she3jyS8RqJv7Jw7bOxoTSPlu4gNbfXYZ9TnbdQ0MNnMObyaRQLIu556jIj03zfJrVgqRM8GPwRoWb1M9AfzFe6Mtg13uEIqrTHmiuBpH+bTVB5EEQ3uby0C//XOAPJOFv4QV8RZDPQd517Khyba8Jlr97j2kIBJD9K3mbOHSHiQDasj6Y3forATbIg4QZHxWnCeqqMkVYfUAivuL0L/68mMnagAAA" alt=""><div class="social-embed-user-names"><p class="social-embed-user-names-name">Terence Eden is on Mastodon</p>@edent</div></a><img class="social-embed-logo" alt="" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCmFyaWEtbGFiZWw9IlR3aXR0ZXIiIHJvbGU9ImltZyIKdmlld0JveD0iMCAwIDUxMiA1MTIiPjxwYXRoCmQ9Im0wIDBINTEyVjUxMkgwIgpmaWxsPSIjZmZmIi8+PHBhdGggZmlsbD0iIzFkOWJmMCIgZD0ibTQ1OCAxNDBxLTIzIDEwLTQ1IDEyIDI1LTE1IDM0LTQzLTI0IDE0LTUwIDE5YTc5IDc5IDAgMDAtMTM1IDcycS0xMDEtNy0xNjMtODNhODAgODAgMCAwMDI0IDEwNnEtMTcgMC0zNi0xMHMtMyA2MiA2NCA3OXEtMTkgNS0zNiAxczE1IDUzIDc0IDU1cS01MCA0MC0xMTcgMzNhMjI0IDIyNCAwIDAwMzQ2LTIwMHEyMy0xNiA0MC00MSIvPjwvc3ZnPg=="></header><section class="social-embed-text">Here at <a href="https://twitter.com/nesta_uk">@nesta_uk</a> for What's App a look at the emerging app economy.</section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/edent/status/10882499082" aria-label="0 likes" class="social-embed-meta">❤️ 0</a><a href="https://twitter.com/edent/status/10882499082" aria-label="0 replies" class="social-embed-meta">💬 0</a><a href="https://twitter.com/edent/status/10882499082" aria-label="0 retweets" class="social-embed-meta">♻️ 0</a><a href="https://twitter.com/edent/status/10882499082"><time datetime="2010-03-22T17:36:36.000Z">17:36 - Mon 22 March 2010</time></a></footer></blockquote>

<p>It was an excellent panel - despite being a bit stale, pale and male.</p>

<p>But I can't help feeling that the central premise of the event was flawed.</p>

<p>We were meant to be discussing the "emerging economy" of mobile applications.</p>

<h2 id="emerging"><a href="https://shkspr.mobi/blog/2010/03/nesta-whats-app/#emerging">Emerging</a></h2>

<p>Emerging?  Mobile apps are beyond that.  They have emerged.  They are mainstream and they have been for a while.  Vodafone* has been selling apps for nearly 6 year.  Other mobile operators have been selling games, application, tools, utilities, ebooks, and other apps for just as long.</p>

<p>And it has been profitable.</p>

<h2 id="economy"><a href="https://shkspr.mobi/blog/2010/03/nesta-whats-app/#economy">Economy</a></h2>

<p>Ah, that word, "profitable".  I'm not an economist, but I would have thought that an economy requires the exchange of money somewhere along the lines.</p>

<p>The vast majority of downloads from app stores are free.  Now, undoubtedly a few of those free apps lead on to purchases - but not many. (See <a href="https://web.archive.org/web/20100325185414/http://communities-dominate.blogs.com/brands/2010/03/paid-smartphone-apps-half-get-under-1000-downloads-what-does-this-mean.html">Tomi T Ahonen's amazing dissection of the hype</a>).</p>

<p>Then there's the pricing of the applications themselves.</p>

<p>A game like Angry Birds (which seems to be a favourite) costs around 59p.  A few years ago it would have sold for £4.99 via an operator store. 15 years ago the same quality game on the MegaDrive would probably have cost around £35.</p>

<p>Cheaper prices are good for customers - but are they good for the economy when the price continually trends downwards?</p>

<p>So we have a range of apps with an average price of £0.00.  Of those that cost, the monetary sums are very low.  Making money from apps is a fool errand.</p>

<p>So, who is making money?</p>

<p>The developers aren't - not in any significant way.</p>

<p>The payment gateways aren't - 30% of 0 is still 0.</p>

<p>Advertisers are - lots of adverts on apps which are given away.</p>

<p>The device manufacturers are - they can sell more hardware on the basis of freely developed 3rd party content.</p>

<p>The operators are - they're selling more phones and more data bundles.</p>

<h3 id="so-what-if-anything-has-changed"><a href="https://shkspr.mobi/blog/2010/03/nesta-whats-app/#so-what-if-anything-has-changed">So what (if anything) has changed?</a></h3>

<h2 id="open"><a href="https://shkspr.mobi/blog/2010/03/nesta-whats-app/#open">Open</a></h2>

<p>What the app space hasn't been is open.  True, anyone could develop a J2ME or S60 app - and many did.  But getting them distributed was always hard unless you could do a deal with a major publisher.</p>

<p>Now, the middle-man is (nearly) gone.  The developer can submit their work to a central app store and have it in front of potential customers. Almost instantly.</p>

<h2 id="quality"><a href="https://shkspr.mobi/blog/2010/03/nesta-whats-app/#quality">Quality</a></h2>

<p>Because there are many more highly-spec'd phones and SDKs have improved immeasurably, there's been an outpouring of new developers.</p>

<p>But are they any good?</p>

<p>In the bad old days - when people actually made money from apps - there was a quality threshold.&nbsp; If an app was buggy or crap, customers would ring up a call-centre and demand a refund.&nbsp; That's costly to a company, so naturally the bar for apps was set fairly high.</p>

<p>It also encouraged conservatism - releasing a beta app with experimental functionality was a risk.&nbsp; Few people would buy it and the cost of refunds could be horrendous.</p>

<p>Now, we have everyone and her sister developing iFart apps.&nbsp; Reading the reviews of paid-for apps can be quite depressing - constant tales of broken or missing functionality.</p>

<p>So, we have a decrease in price and a decrease in quality - but a rapid increase in supply.&nbsp; Rapid to the point where developers struggle to even give away their product.&nbsp; Is this a <strong>healthy</strong> economy?</p>

<h2 id="whats-next"><a href="https://shkspr.mobi/blog/2010/03/nesta-whats-app/#whats-next">What's Next</a></h2>

<p>Despite my grousing, I enjoy living in a world where anyone - even me - can develop an app.&nbsp; The financial rewards are more like a lottery than a business, it's true.&nbsp; The rewards to society where a company can take a punt on a product like <a href="https://web.archive.org/web/20100316165338/http://audioboo.fm/">AudioBoo</a> are immense.</p>

<p>But can it last?  I've no doubt that this current boom will mirror the home-computer boom of the early 1980s.</p>

<p>The fragmentation that bedevilled that market will weaken the mobile marketplace - even with initiatives like <a href="https://web.archive.org/web/20100323185017/http://www.jil.org/">JIL</a> and <a href="https://web.archive.org/web/20100311142112/http://www.wholesaleappcommunity.com/">WAC</a>.</p>

<p>We'll probably see another <a href="http://en.wikipedia.org/wiki/Codemasters">Codemasters</a> emerge from Britain's bedrooms - and the rest either get bought out or fail.</p>

<p>But I bet they have fun doing it.</p>

<h3 id="disclaimer"><a href="https://shkspr.mobi/blog/2010/03/nesta-whats-app/#disclaimer">Disclaimer.</a></h3>

<p>*I work for them but this blog is a personal comment.  Please set your bias filters accordingly.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=1875&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2010/03/nesta-whats-app/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
