<?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>qr &#8211; Terence Eden’s Blog</title>
	<atom:link href="https://shkspr.mobi/blog/tag/qr/feed/" rel="self" type="application/rss+xml" />
	<link>https://shkspr.mobi/blog</link>
	<description>Regular nonsense about tech and its effects 🙃</description>
	<lastBuildDate>Tue, 10 Mar 2026 09:40:23 +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>qr &#8211; Terence Eden’s Blog</title>
	<link>https://shkspr.mobi/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title><![CDATA[The NHS shouldn't outsource its QR codes]]></title>
		<link>https://shkspr.mobi/blog/2025/06/the-nhs-shouldnt-outsource-its-qr-codes/</link>
					<comments>https://shkspr.mobi/blog/2025/06/the-nhs-shouldnt-outsource-its-qr-codes/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 03 Jun 2025 11:34:04 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[gdpr]]></category>
		<category><![CDATA[nhs]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[qr]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=60954</guid>

					<description><![CDATA[QR codes are brilliant. They&#039;re a simple way to allow users to easily and quickly go to the right URl - no matter how complex. No more worrying about typing in long addresses or figuring out if that&#039;s a letter O or the number O. Scan and go!  The best thing about QR codes is that they&#039;re free. It doesn&#039;t cost any money to generate one. They&#039;re an open standard with no middle-men. Users can go…]]></description>
										<content:encoded><![CDATA[<p>QR codes are brilliant. They're a simple way to allow users to easily and quickly go to the right URl - no matter how complex. No more worrying about typing in long addresses or figuring out if that's a letter O or the number O. Scan and go!</p>

<p>The best thing about QR codes is that they're free. It doesn't cost any money to generate one. They're an open standard with no middle-men. Users can go direct to your site!</p>

<p>Except… Some people want to insert themselves into your conversation. Sometimes it is for malicious reasons, sometimes it is greed for user data, and sometimes it is just incompetence.</p>

<p>Let's take this example - a health centre wants people to register. Scan the QR and get started. Fab!</p>

<p><img src="https://shkspr.mobi/blog/wp-content/uploads/2025/05/registerQR.webp" alt="QR code on an NHS branded poster." width="982" height="1220" class="aligncenter size-full wp-image-60956">
<small>Photo shamelessly stolen from a LinkedIn contact.</small></p>

<p>But what happens when you scan the QR code?  Rather than taking you directly to an authoritative and trusted NHS.UK domain name, it sends you through <code>https://register-with-gp.ht1.uk/</code>.</p>

<h2 id="who-on-earth-are-ht1-uk"><a href="https://shkspr.mobi/blog/2025/06/the-nhs-shouldnt-outsource-its-qr-codes/#who-on-earth-are-ht1-uk">Who on earth are HT1.UK?</a></h2>

<p>According to <a href="https://www.healthtech1.uk/">their website</a>, they're an automation company who are "on a mission to make the NHS the most advanced healthcare system in the world."</p>

<p>Good for them. But what information are they collecting about users who traverse through their QR codes? If you take a look at <a href="https://docs.healthtech1.uk/general-privacy-policy">their privacy policy</a> you won't find anything specific.  Never mind, let's email their friendly privacy team. What's their email address?</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2025/05/emailthem.webp" alt="Screenshot of terms and conditions with an hello email address." width="1024" height="406" class="aligncenter size-full wp-image-60957">

<p>Of course, emailing that gets you back this error:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2025/05/ht1email.webp" alt="Hey there 👋 This email inbox is not monitored. Please get in touch with us at support@healthtech1.uk Thanks, Team at Healthtech-1" width="529" class="aligncenter size-full wp-image-60955">

<p>Emoji! How fun!!</p>

<p>So I emailed the new address to see what information they were collecting. Their response wasn't particularly informative.</p>

<blockquote><p>because Healthtech-1 is a processor of information and the GP practice is the data controller any requests about how your data is handled should be made to the GP practice who can inform you of the information you requested.</p>

<p>…</p>

<p>I can confirm that there is no information stored about users who scan the QR codes and no cookies placed.</p></blockquote>

<p>But, of course, users have no way of verifying what this company is storing about them. There's simply no reason to use an untrusted 3rd party like this to provide either a QR code or an intermediary website.</p>

<h2 id="why-this-is-a-problem"><a href="https://shkspr.mobi/blog/2025/06/the-nhs-shouldnt-outsource-its-qr-codes/#why-this-is-a-problem">Why this is a problem</a></h2>

<p>Trust is everything. People are <em>constantly</em> being scammed. One of the great things that GOV.UK did was to say "This here is our trusted brand. If you don't see GOV.UK in the URl bar - don't trust it!"</p>

<p>The NHS should be doing the same. Every hospital, surgery, and clinic should have an NHS.UK domain name. When a user sees a link to a healthcare service which <em>doesn't</em> go through NHS.UK, they should feel suspicious and not click on it.</p>

<p>There is no way as a regular user to know that HT1.UK is a trusted domain. What about HT1.biz? HT2.UK? NHS.info.ly?  What happens if HT1 go bust or have their domain name hijacked?</p>

<p>The NHS must stop the proliferation of these 3rd party domain names. They need to reinforce users' understanding that NHS.UK is the <em>only</em> trusted domain name for official NHS services.</p>

<p>I'm sure HT1.UK aren't doing anything nefarious with the data of people who visit their QR codes. I'm sure they're not inserting tracking cookies or selling my data. But I shouldn't have to be sure. All users should be pointed <em>directly</em> to an NHS.UK domain without having to risk whether their details are going via a dodgy site.</p>

<p>Here endeth the rant.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=60954&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2025/06/the-nhs-shouldnt-outsource-its-qr-codes/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[A Recursive QR Code]]></title>
		<link>https://shkspr.mobi/blog/2025/03/a-recursive-qr-code/</link>
					<comments>https://shkspr.mobi/blog/2025/03/a-recursive-qr-code/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 09 Mar 2025 12:34:13 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[qr]]></category>
		<category><![CDATA[QR Codes]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=58742</guid>

					<description><![CDATA[I&#039;ve been thinking about fun little artistic things to do with QR codes. What if each individual pixel were a QR code?  There&#039;s two fundamental problems with that idea. Firstly, a QR code needs whitespace around it in order to be scanned properly.  So I focussed on the top left positional marker. There&#039;s plenty of whitespace there.  Secondly, because QR codes contain a lot of white pixels…]]></description>
										<content:encoded><![CDATA[<img src="https://shkspr.mobi/blog/wp-content/uploads/2025/03/QR.gif" alt="A QR code zooming in on itself." width="580" height="580" class="aligncenter size-full wp-image-58752">

<p>I've been thinking about fun little artistic things to do with QR codes. What if each individual pixel were a QR code?</p>

<p>There's two fundamental problems with that idea. Firstly, a QR code needs whitespace around it in order to be scanned properly.</p>

<p>So I focussed on the top left positional marker. There's plenty of whitespace there.</p>

<p>Secondly, because QR codes contain a lot of white pixels inside them, scaling down the code usually results in a grey square - which is unlikely to be recognised as a black pixel when scanning.</p>

<p>So I cheated! I made the smaller code transparent and gradually increased its opacity as it grows larger.</p>

<p>I took a Version 2 QR code - which is 25px wide. With a 2px whitespace border around it, that makes 29px * 29px.</p>

<p>Blow it up to 2900px * 2900px. That will be the base image.</p>

<p>Take the original 25px code and blow it up to the size of the new marker, 300px * 300px. Place it on a new transparent canvas the size of the base image, and place it where the marker is - 400px from the top and left.</p>

<p>Next step is creating the image sequence for zooming in. The aim is to move in to the target area, then directly zoom in.</p>

<p>The whole code, if you want to build one yourself, is:</p>

<pre><code class="language-bash">#!/bin/bash

#   Input file
input="25.png"

#   Add a whitespace border
convert "$input" -bordercolor white -border 2 29.png

#   Upscaled image size
upscaled_size=2900

#   Scale it up for the base
convert 29.png -scale "${upscaled_size}x${upscaled_size}"\! base.png

#   Create the overlay
convert -size "${upscaled_size}x${upscaled_size}" xc:none canvas.png
convert "$input" -scale 300x300\! 300.png
convert canvas.png 300.png -geometry +400+400 -composite overlay.png

#   Start crop size (full image) and end crop size (target region)
start_crop=$upscaled_size
end_crop=350

#   Zoom-in target position (top-left corner)
target_x=375
target_y=375

#   Start with a completely opaque image
original_opacity=0

#   Number of intermediate images
steps=100

for i in $(seq 0 $((steps - 1))); do
    #   Calculate current crop size
    crop_size=$(echo "$start_crop - ($start_crop - $end_crop) * $i / ($steps - 1)" | bc)
    crop_size=$(printf "%.0f" "$crop_size")  # Round to nearest integer

    #   Keep zoom centered on the target
    crop_x_offset=$(echo "$target_x - ($crop_size - $end_crop) / 2" | bc)
    crop_y_offset=$(echo "$target_y - ($crop_size - $end_crop) / 2" | bc)

    #   Once centred, zoom in normally
    if (( crop_x_offset &lt; 0 )); then crop_x_offset=0; fi
    if (( crop_y_offset &lt; 0 )); then crop_y_offset=0; fi

    #   Generate output filenames
    background_file=$(printf "%s_%03d.png" "background" "$i")
    overlay_file=$(printf "%s_%03d.png" "overlay" "$i")
    combined_file=$(printf "%s_%03d.png" "combined" "$i")

    #   Crop and resize the base
    convert "base.png" -crop "${crop_size}x${crop_size}+${crop_x_offset}+${crop_y_offset}" \
            -resize "${upscaled_size}x${upscaled_size}" \
            "$background_file"

    #   Transparancy for the overlay
    opacity=$(echo "$original_opacity + 0.01 * $i" | bc)

    # Crop and resize the overlay
    convert "overlay.png" -alpha on -channel A -evaluate multiply "$opacity" \
            -crop "${crop_size}x${crop_size}+${crop_x_offset}+${crop_y_offset}" \
            -resize "${upscaled_size}x${upscaled_size}" \
            "$overlay_file"

    #   Combine the two files
    convert "$background_file" "$overlay_file" -composite "$combined_file"
done

#   Create a 25fps video, scaled to 1024px
ffmpeg -framerate 25 -i combined_%03d.png -vf "scale=1024:1024" -c:v libx264 -crf 18 -preset slow -pix_fmt yuv420p recursive.mp4
</code></pre>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=58742&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2025/03/a-recursive-qr-code/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Why are QR Codes with capital letters smaller than QR codes with lower-case letters?]]></title>
		<link>https://shkspr.mobi/blog/2025/02/why-are-qr-codes-with-capital-letters-smaller-than-qr-codes-with-lower-case-letters/</link>
					<comments>https://shkspr.mobi/blog/2025/02/why-are-qr-codes-with-capital-letters-smaller-than-qr-codes-with-lower-case-letters/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 23 Feb 2025 12:34:37 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[qr]]></category>
		<category><![CDATA[QR Codes]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=58337</guid>

					<description><![CDATA[Take a look at these two QR codes. Scan them if you like, I promise there&#039;s nothing dodgy in them.           Left is upper-case HTTPS://EDENT.TEL/ and right is lower-case https://edent.tel/  You can clearly see that the one on the left is a &#34;smaller&#34; QR as it has fewer bits of data in it. Both go to the same URl, the only difference is the casing.  What&#039;s going on?  Your first thought might be th…]]></description>
										<content:encoded><![CDATA[<p>Take a look at these two QR codes. Scan them if you like, I promise there's nothing dodgy in them.</p>

<hr>

<p><img src="https://shkspr.mobi/blog/wp-content/uploads/2025/02/caps.png" alt="QR CODE" width="400" height="400" class="alignnone size-full wp-image-58339" style="max-width:45%;display:inline;">&nbsp;&nbsp;&nbsp;<img src="https://shkspr.mobi/blog/wp-content/uploads/2025/02/lower.png" alt="QR Code." width="400" height="400" class="alignnone size-full wp-image-58338" style="max-width:45%;display:inline;"></p>

<hr>

<p>Left is upper-case <code>HTTPS://EDENT.TEL/</code> and right is lower-case <code>https://edent.tel/</code></p>

<p>You can clearly see that the one on the left is a "smaller" QR as it has fewer bits of data in it. Both go to the same URl, the only difference is the casing.</p>

<p>What's going on?</p>

<p>Your first thought might be that there's a different level of error-correction. QR codes can have increasing levels of redundancy in order to make sure they can be scanned when damaged. But, in this case, they both have <strong>L</strong>ow error correction.</p>

<p>The smaller code is "Type 1" - it is 21px * 21px. The larger is "Type 2" with 25px * 25px.</p>

<p>The <a href="https://www.qrcode.com/en/about/version.html">official specification</a> describes the versions in more details. The smaller code should be able to hold 25 alphanumeric character. But <code>https://edent.tel/</code> is only 18 characters long. So why is it bumped into a larger code?</p>

<p>Using a decoder like <a href="https://zxing.org/">ZXING</a> it is possible to see the raw bytes of each code.</p>

<p>UPPER</p>

<pre><code class="language-_">20 93 1a a6 54 63 dd 28   
35 1b 50 e9 3b dc 00 ec
11 ec 11 
</code></pre>

<p>lower:</p>

<pre><code class="language-_">41 26 87 47 47 07 33 a2   
f2 f6 56 46 56 e7 42 e7
46 56 c2 f0 ec 11 ec 11   
ec 11 ec 11 ec 11 ec 11
ec 11 
</code></pre>

<p>You might have noticed that they both end with the same sequence: <code>ec 11</code> Those are "padding bytes" because the data needs to completely fill the QR code. But - hang on! - not only does the UPPER one safely contain the text, it also has some spare padding?</p>

<p>The answer lies in the first couple of bytes.</p>

<p>Once the raw bytes have been read, a QR scanner needs to know exactly what sort of code it is dealing with.  <a href="https://www.thonky.com/qr-code-tutorial/data-encoding#step-3-add-the-mode-indicator">The first four <em>bits</em> tell it the mode</a>. Let's convert the hex to binary and then split after the first four bits:</p>

<table>
<thead>
<tr>
  <th align="center">Type</th>
  <th align="center">HEX</th>
  <th align="center">BIN</th>
  <th align="center">Split</th>
</tr>
</thead>
<tbody>
<tr>
  <td align="center">UPPER</td>
  <td align="center"><code>20 93</code></td>
  <td align="center"><code>00100000 10010011</code></td>
  <td align="center"><code>0010 000010010011</code></td>
</tr>
<tr>
  <td align="center">lower</td>
  <td align="center"><code>41 26</code></td>
  <td align="center"><code>01000001 00100110</code></td>
  <td align="center"><code>0100 000100100110</code></td>
</tr>
</tbody>
</table>

<p>The UPPER code is <code>0010</code> which indicates it is Alphanumeric - the standard says the next <strong>9</strong> bits show the length of data.</p>

<p>The lower code is <code>0100</code> which indicates it is Byte mode - the standard says the next <strong>8</strong> bits show the length of data.</p>

<table>
<thead>
<tr>
  <th align="center">Type</th>
  <th align="center">HEX</th>
  <th align="center">BIN</th>
  <th align="center">Split</th>
</tr>
</thead>
<tbody>
<tr>
  <td align="center">UPPER</td>
  <td align="center"><code>20 93</code></td>
  <td align="center"><code>00100000 10010011</code></td>
  <td align="center"><code>0010 0000 10010</code></td>
</tr>
<tr>
  <td align="center">lower</td>
  <td align="center"><code>41 26</code></td>
  <td align="center"><code>01000001 00100110</code></td>
  <td align="center"><code>0100  000 10010</code></td>
</tr>
</tbody>
</table>

<p>Look at that! They both have a length of <code>10010</code> which, converted to binary, is 18 - the exact length of the text.</p>

<p>Alphanumeric users 11 bits for every two characters, Byte mode uses (you guessed it!) 8 bits per single character.</p>

<p>But why is the lower-case code pushed into Byte mode? Isn't it using letters and number?</p>

<p>Well, yes. But in order to store data efficiently,  Alphanumeric mode only has <a href="https://www.thonky.com/qr-code-tutorial/alphanumeric-table">a limited subset of characters available</a>. Upper-case letters, and a handful of punctuation symbols: <code>space $ % * + - . / :</code></p>

<p>Luckily, that's enough for a protocol, domain, and path. Sadly, no GET parameters.</p>

<p>So, there you have it. If you want the smallest possible <em>physical</em> size for a QR code which contains a URl, make sure the text is all in capital letters.</p>

<hr>

<p><ins datetime="2025-03-25T10:02:55+00:00">This blog post was exhibited at <a href="https://qrshow.nyc/retrospective.html">QR Show, NYC</a><img src="https://shkspr.mobi/blog/wp-content/uploads/2025/02/image0.jpeg" alt="A print out of the blog post pinned up in an exhibition space." width="360" height="640" class="aligncenter size-full wp-image-59093"></ins></p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=58337&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2025/02/why-are-qr-codes-with-capital-letters-smaller-than-qr-codes-with-lower-case-letters/feed/</wfw:commentRss>
			<slash:comments>18</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[QR Code Hijacking Attempts Are Pretty Inept]]></title>
		<link>https://shkspr.mobi/blog/2024/07/qr-code-hijacking-attempts-are-pretty-inept/</link>
					<comments>https://shkspr.mobi/blog/2024/07/qr-code-hijacking-attempts-are-pretty-inept/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 28 Jul 2024 11:34:32 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[CyberSecurity]]></category>
		<category><![CDATA[qr]]></category>
		<category><![CDATA[QR Codes]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=51159</guid>

					<description><![CDATA[I&#039;ve been writing about QR codes since 2007 - long before they were fashionable. Because QR Codes are so cheap to produce, there has always been a concern that attackers might print out their own codes and stick them over legitimate ones.  When I first wrote about QR Hijacking in 2011, I said that such attacks were usually easy to spot:    Recently, a new wave of QR Hijacking attacks have been…]]></description>
										<content:encoded><![CDATA[<p>I've been <a href="https://shkspr.mobi/blog/?s=qr+codes&amp;order=asc">writing about QR codes since 2007</a> - long before they were fashionable. Because QR Codes are so cheap to produce, there has always been a concern that attackers might print out their own codes and stick them over legitimate ones.</p>

<p>When I first wrote about <a href="https://shkspr.mobi/blog/2011/12/how-to-prevent-qr-hijacking/">QR Hijacking in 2011</a>, I said that such attacks were usually easy to spot:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2011/12/QR-Jacking.jpg" alt="A poster behind some glass. A paper QR code is stuck on top of the glass. It is easy to see it is a replacement code." width="600" height="402" class="aligncenter size-full wp-image-27644">

<p>Recently, a new wave of QR Hijacking attacks have been reported in Bournemouth:</p>

<blockquote><p>A further warning about fake QR codes on parking ticket machines has been issued after new stickers were found in numerous beach resort car parks.</p>

<p>When scanned the codes go to a fraudulent website.</p>

<p><a href="https://www.bbc.co.uk/news/articles/cz472gy8nd9o">Further warning over fake parking QR code scam - BBC News</a></p></blockquote>

<p>Let's take a look at some photos of the attacks.  Then I'll explain how to prevent them.</p>

<p>First up, <a href="https://www.facebook.com/photo/?fbid=890798076414623&amp;set=a.305983834896053">this photo from Bournemouth, Christchurch and Poole Council's Facebook page</a>:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2024/07/BCP-Photo.jpg" alt="A car park payment information screen. There are two fake QR codes stuck to it." width="940" height="788" class="aligncenter size-full wp-image-51160">

<p>These are pretty crappy attempts! The original code in the top right corner has been covered, which might fool some people. However, it is pooly aligned and sized. The other code is sloppily placed in the middle of the text. It doesn't look convincing. While the codes may have looked legitimate when first placed on, ten minutes in the English rain makes it apparent that they are paper forgeries.</p>

<p>And then there's <a href="https://www.bournemouthecho.co.uk/news/24428628.bcp-residents-urged-vigilant-paying-car-parking/">this QR code randomly stuck on to a parking machine</a>:
<img src="https://shkspr.mobi/blog/wp-content/uploads/2024/07/Fake-QR-code-BCP.jpg.gallery.jpg" alt="A paper code stuck onto a payment machine." width="450" height="1000" class="aligncenter size-full wp-image-51161"></p>

<p>The URl it goes to is superficially convincing - <code>fee-parking-pay.info</code> - but let's take a closer look:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2024/07/Fake-QR-code-BCP-detail.jpg" alt="Close up of the code." width="800" height="449" class="aligncenter size-full wp-image-51163">

<p>It has been inexpertly cut out, it is too large for the space provided, and is clearly stuck on. Rubbish!</p>

<p>Finally, there's <a href="https://www.bournemouthecho.co.uk/news/24473516.warning-fraudulent-parking-qr-codes-bournemouth/">this sticker found by Bournemouth Police</a>:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2024/07/QR-Sticker.jpg" alt="A small QR code sticker being pealed of a sign. The original QR is underneath it." width="486" height="404" class="aligncenter size-full wp-image-51164">

<p>This one is <em>much</em> harder to spot! It's about the right size and shape. It looks well aligned and the paper hasn't degraded.  But do you notice what's printed <em>above</em> it? The <strong>official</strong> URl.  And that leads me on to…</p>

<h2 id="how-to-prevent-qr-code-hijacking"><a href="https://shkspr.mobi/blog/2024/07/qr-code-hijacking-attempts-are-pretty-inept/#how-to-prevent-qr-code-hijacking">How to Prevent QR Code Hijacking</a></h2>

<p>Putting QR codes behind a glass screen isn't always practical, and reflections in the glass can make it hard to scan a code. It's difficult to make a code physically inaccessible for a scammer while also making it easy to scan.</p>

<p>The number one thing to do is <strong>display the official URl</strong> nearby.</p>

<p>Every QR scanner that I know shows you the URl before opening the page. Every web browser shows you the full URl of the site you're on.</p>

<p>If someone scans a code which goes to <code>totally-official-parking.biz</code> but they can see the parking sign says <code>pay4parking.gov.uk</code> then they are much less likely to fall for the scam.</p>

<p>You can do fancy things like incorporate a logo into you QR, or print it on a coloured background, or have people regularly check your codes for signs of tampering. Those <em>might</em> keep your users secure, but can be bypassed by a sufficiently determined attacker.</p>

<p>A large printed URl isn't infallible, but it is much harder for an attacker to  deface a large area of a poster than it is to cover a small QR square.</p>

<p>As for what to do if you're worried about the legitimacy of these codes:</p>

<blockquote><p>Anyone worried about paying online for parking can also pay by debit card/contactless or cash at a parking meter.</p>

<p><a href="https://www.bcpcouncil.gov.uk/news-hub/news-articles/bcp-residents-urged-to-be-vigilant-when-paying-for-car-parking">BCP Council</a></p></blockquote>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=51159&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2024/07/qr-code-hijacking-attempts-are-pretty-inept/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[How to generate a Base32 TOTP secret string on a Mac]]></title>
		<link>https://shkspr.mobi/blog/2023/03/how-to-generate-a-base32-totp-secret-string-on-a-mac/</link>
					<comments>https://shkspr.mobi/blog/2023/03/how-to-generate-a-base32-totp-secret-string-on-a-mac/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 13 Mar 2023 12:34:20 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[CyberSecurity]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[qr]]></category>
		<category><![CDATA[totp]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=45094</guid>

					<description><![CDATA[I needed a way to generate a TOTP secret using a fairly locked-down Mac. No Brew. No NPM. No Python. No Prolog, COBOL, or FORTRAN. No Internet connection. Just whatever software is native to MacOS.  As I&#039;ve mentioned before, the TOTP specification is a stagnant wasteland. But it does have this to say about the secret:  The secret parameter is an arbitrary key value encoded in Base32 according to…]]></description>
										<content:encoded><![CDATA[<p>I needed a way to generate a TOTP secret using a fairly locked-down Mac. No Brew. No NPM. No Python. No Prolog, COBOL, or FORTRAN. No Internet connection. Just whatever software is native to MacOS.</p>

<p>As I've mentioned before, <a href="https://shkspr.mobi/blog/2022/05/why-is-there-no-formal-specification-for-otpauth-urls/">the TOTP specification is a stagnant wasteland</a>. But it does have this to say about the secret:</p>

<blockquote><p>The <code>secret</code> parameter is an arbitrary key value encoded in Base32 according to <a href="https://www.rfc-editor.org/rfc/rfc3548">RFC 3548</a>.</p></blockquote>

<p>The <a href="https://www.rfc-editor.org/rfc/rfc3548#section-5">Base32 alphabet</a> is pretty simple. The upper-case letters A - Z, and the numbers 3 - 7.</p>

<p>But that's only half the problem.</p>

<h2 id="how-long-should-the-secret-be"><a href="https://shkspr.mobi/blog/2023/03/how-to-generate-a-base32-totp-secret-string-on-a-mac/#how-long-should-the-secret-be">How long should the secret be?</a></h2>

<p>This is an area where <a href="https://www.rfc-editor.org/rfc/rfc6238">the official spec is silent</a>.  Around the web, you'll find people saying things like:</p>

<blockquote><p>The length in bytes of generated shared secrets. The minimum is 20 (or 160 bits), and the default is 32 (or 256 bits). In most use cases 32 is sufficient. Though some authenticators may have issues with more than the minimum. Our minimum is the recommended value in <a href="https://www.rfc-editor.org/rfc/rfc4226.html">RFC4226</a>, though technically according to the specification 16 bytes (or 128 bits) is the minimum.
<a href="https://www.authelia.com/configuration/second-factor/time-based-one-time-password/#secret_size">Authelia</a></p></blockquote>

<p>Although that's for the <strong>H</strong>OTP algorithm, rather than <strong>T</strong>OTP.</p>

<p>Looking through my 49(!) different TOTP codes, the shared secret ranges from 16 characters to 52 characters. No consistency whatsoever.</p>

<h2 id="the-code"><a href="https://shkspr.mobi/blog/2023/03/how-to-generate-a-base32-totp-secret-string-on-a-mac/#the-code">The Code</a></h2>

<p>Run this on your command line.</p>

<p><code>cat /dev/urandom | LC_ALL=C tr -dc 'A-Z3-7' | fold -w 24 | head -n 1</code></p>

<p>That generates a random-enough<sup id="fnref:random"><a href="https://shkspr.mobi/blog/2023/03/how-to-generate-a-base32-totp-secret-string-on-a-mac/#fn:random" class="footnote-ref" title="This is a shared secret. It doesn't need an infinite supply of high-quality entropy. Any decent login protection service should throttle incorrect attempts long before someone can brute-force it.…" role="doc-noteref">0</a></sup> string using the correct alphabet and truncated to a sensible length.</p>

<p>Let's go through each part of it.</p>

<p><code>cat /dev/urandom</code> spits out random data from your machine. You may wish to use <a href="https://linuxhint.com/dev_random_vs_dev_urandom/"><code>/dev/random</code></a> if you feel like it.</p>

<p><code>LC_ALL=C</code> sets the <a href="https://www.ibm.com/support/pages/what-lcall-variable">Locale to by ANSI bytes</a>.</p>

<p><code>tr</code> is "<a href="https://ss64.com/osx/tr.html">Translate, squeeze, and/or delete characters.</a>".</p>

<p><code>-dc 'A-Z3-7'</code> is <strong>d</strong>elete the <strong>c</strong>omplement (i.e. delete anything which <em>isn't</em> in the following string).</p>

<p><code>fold -w 24</code> is <a href="https://www.unix.com/man-page/osx/1/fold/">wrap the input text</a> with a line length of 24.</p>

<p><code>head -n 1</code> displays <a href="https://www.unix.com/man-page/osx/1/head/">the first line of the file</a>.</p>

<h2 id="next-steps"><a href="https://shkspr.mobi/blog/2023/03/how-to-generate-a-base32-totp-secret-string-on-a-mac/#next-steps">Next Steps</a></h2>

<p>Now... How do I locally generate a QR code without anything else being installed...?</p>

<div id="footnotes" role="doc-endnotes">
<hr aria-label="Footnotes">
<ol start="0">

<li id="fn:random">
<p>This is a shared secret. It doesn't <em>need</em> an infinite supply of high-quality entropy. Any decent login protection service should throttle incorrect attempts long before someone can brute-force it. Remember, TOTP codes are <em>not</em> random - they're deterministic product of the secret. Your adversary isn't someone who can crack your secure vault - it's someone who already has your username as password, but doesn't have your token generating device.&nbsp;<a href="https://shkspr.mobi/blog/2023/03/how-to-generate-a-base32-totp-secret-string-on-a-mac/#fnref:random" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

</ol>
</div>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=45094&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2023/03/how-to-generate-a-base32-totp-secret-string-on-a-mac/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Strange Encoding Errors in TOTP QR Codes]]></title>
		<link>https://shkspr.mobi/blog/2022/05/strange-encoding-errors-in-totp-qr-codes/</link>
					<comments>https://shkspr.mobi/blog/2022/05/strange-encoding-errors-in-totp-qr-codes/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 10 May 2022 11:34:59 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[qr]]></category>
		<category><![CDATA[security]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=42524</guid>

					<description><![CDATA[Not really a security issue, but one which I thought was worth highlighting. It shows the peril of slightly vague specifications.  When you scan a 2FA token into your authenticator app via QR code, you get presented with a bunch of information about your account.  This lets you store things like the issuer and the account name.  I recently scanned a code, and it displayed my name as Terence+Eden. …]]></description>
										<content:encoded><![CDATA[<p>Not <em>really</em> a security issue, but one which I thought was worth highlighting. It shows the peril of slightly vague specifications.</p>

<p>When you scan a 2FA token into your authenticator app via QR code, you get presented with a bunch of information about your account.  This lets you store things like the issuer and the account name.</p>

<p>I recently scanned a code, and it displayed my name as <code>Terence+Eden</code>.  Which was a bit weird.  Try it yourself:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2022/05/TOTP-QR.png" alt="A QR code." width="350" height="350" class="aligncenter size-full wp-image-42558">

<p>Checking the raw output of the code, shows the underlying data is:</p>

<pre><code class="language-_">otpauth://totp/
   Private%20Bank%20Account:
      Your+Name+Here?
         secret=abcdefghijklmno&amp;amp;
         digits=6&amp;amp;
         issuer=Cayman%20Island%20Bank&amp;amp;
         algorithm=SHA1&amp;amp;
         period=30
</code></pre>

<p>The <strong>O</strong>ne <strong>T</strong>ime <strong>P</strong>assword information is encoded as a URl. Generally speaking, a URl cannot contain spaces. So they get encoded. But <em>how</em> should they be encoded?</p>

<p>The HTML specification, RFC1866, talks about when a space should be encoded as <code>+</code>.</p>

<blockquote><p>The form field names and values are escaped: space characters are replaced by <code>+</code>, and then reserved characters are escaped … that is, non-alphanumeric characters are replaced by <code>%HH</code></p>

<p><a href="https://www.rfc-editor.org/rfc/rfc1866#section-8.2.1">8.2.1. The form-urlencoded Media Type</a></p></blockquote>

<p>That is, a space becomes a plus <em>only</em> when it is submitted as part of a form. <em>Not</em> as part of a <code>GET</code> request.</p>

<p>This is slightly confused by a later section:</p>

<blockquote><p>The keywords are escaped according … and joined by <code>+</code>. For example … the user provides the keywords <code>apple</code> and <code>berry</code>, then the user agent must access the resource</p>

<p><code>http://host/index?apple+berry</code>
?
<a href="https://www.rfc-editor.org/rfc/rfc1866#section-7.5">7.5. Queries and Indexes</a></p></blockquote>

<p>But, in the case of OTP, the user's name is not multiple keywords. It is a single datum.</p>

<p>So it should use <code>%20</code>, that's pretty obvious - right?</p>

<p>Well… not quite.  You'll find many people (correctly) saying that <em>path</em> fragment of a URl <a href="https://blog.lunatech.com/posts/2009-02-03-what-every-web-developer-must-know-about-url-encoding#Thereservedcharactersaredifferentforeachpart">doesn't have to be percent encoded</a>.</p>

<p>This example is perfectly valid:</p>

<pre><code class="language-_">https://example.com/My+Cool+Page.php?username=Terence%20Eden
</code></pre>

<p>And, as we can see in the above <code>optauth</code> scheme, the user's name <em>does</em> come before the <code>?</code>!</p>

<p>OK, let's take a look at the OTP scheme standard.  The <a href="https://github.com/google/google-authenticator/wiki/Key-Uri-Format">original is an archived Github page from Google</a>.</p>

<blockquote><p>The label is used to identify which account a key is associated with. It contains an account name, which is a URI-encoded string, optionally prefixed by an issuer string identifying the provider or service managing that account.</p></blockquote>

<p>So that gives us <code>Issuer:Name</code>. But, as we've seen above "URI-encoded" is a little ambiguous.  It goes on to say "optional spaces may precede the account name" and gives the ABNF as <code>label = accountname / issuer (“:” / “%3A”) *”%20” accountname</code></p>

<p>But, again, that doesn't say anything about how spaces <em>inside</em> the account name should be encoded.</p>

<p>Finally, it gives some non-normative examples, including: <code>Provider1:Alice%20Smith</code> which shows a space being percent encoded.</p>

<h2 id="summary"><a href="https://shkspr.mobi/blog/2022/05/strange-encoding-errors-in-totp-qr-codes/#summary">Summary</a></h2>

<p>The confusion arises, I think, because the label is <em>not</em> part of the query string. If it were, it would be obvious that it should have percent encoding applied to it.</p>

<p>But because it appears before the <code>?</code>, it looks like it is part of the pathname.  Therefore, some encoding libraries - and some humans - get a little confused.</p>

<p>I contacted a few organisations who had made this mistake - and they were quick to fix it.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=42524&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2022/05/strange-encoding-errors-in-totp-qr-codes/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Why is there no formal specification for otpauth URls?]]></title>
		<link>https://shkspr.mobi/blog/2022/05/why-is-there-no-formal-specification-for-otpauth-urls/</link>
					<comments>https://shkspr.mobi/blog/2022/05/why-is-there-no-formal-specification-for-otpauth-urls/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 08 May 2022 11:34:35 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[2fa]]></category>
		<category><![CDATA[qr]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[totp]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=42594</guid>

					<description><![CDATA[Yes yes, Cunningham&#039;s law etc etc!  I want to play around with 2FA codes. So, I started looking for the specification. Turns out, there isn&#039;t one. Not really.  IANA has a provisional registration - but no spec.  It links to an archived Google Wiki which, as we&#039;ll come on to, isn&#039;t sufficient.  There&#039;s some documentation from Yubico which is mostly a copy of the Google wiki with some incompatible…]]></description>
										<content:encoded><![CDATA[<p>Yes yes, Cunningham's law etc etc!</p>

<p>I want to play around with 2FA codes. So, I started looking for the specification. Turns out, there isn't one. Not really.</p>

<p><a href="https://www.iana.org/assignments/uri-schemes/prov/otpauth">IANA has a provisional <em>registration</em></a> - but no spec.</p>

<p>It links to an <a href="https://github.com/google/google-authenticator/wiki/Key-Uri-Format">archived Google Wiki</a> which, as we'll come on to, isn't sufficient.</p>

<p>There's some <a href="https://docs.yubico.com/yesdk/users-manual/application-oath/uri-string-format.html">documentation from Yubico</a> which is mostly a copy of the Google wiki with some incompatible tweaks.</p>

<p>The <a href="https://www1.auth.iij.jp/smartkey/en/uri_v1.html">Internet Initiative Japan has a <em>subtly</em> different spec</a> which includes an <code>icon</code> parameter not seen in any other.</p>

<p>Hidden halfway down the IETF tracker for <a href="https://datatracker.ietf.org/doc/draft-ietf-kitten-scram-2fa/">Extensions to Salted Challenge Response (SCRAM) for 2 factor authentication</a> is <em>yet another</em> specification which is incompatible with the others!</p>

<p>Oh, and <a href="https://web.archive.org/web/20230122203833/https://www.ibm.com/docs/en/sva/9.0.6?topic=authentication-configuring-totp-one-time-password-mechanism">IBM has yet another one</a>!</p>

<p>Of course, Apple have their own <a href="https://developer.apple.com/documentation/authenticationservices/securing_logins_with_icloud_keychain_verification_codes#3795996">special Apple-specific version</a>. It is identical to Google's, but uses the <code>apple-otpauth:</code> scheme. Because.</p>

<p>Here's a quick table comparing them:
<!--
|                   |            Google           |          Yubico         |              IIJ             | SCRAM        | IBM |
|------------------:|:---------------------------:|:-----------------------:|:----------------------------:|:------------:|:------------:|
|  `label` `issuer` | No encoding specified       | No encoding specified   | URI Encoding                 | N/A          | No encoding specified |
| `label` `account` | URI encoding                | URI encoding            | URI encoding                 | N/A          | No encoding specified |
|          `secret` | Arbitrary length Base32     | Arbitrary length Base32 | Arbitrary length Base32      | 40 * HEXCHAR | Not specified |
|       `algorithm` | SHA1 / SHA256 / SHA512      | SHA1 / SHA256 / SHA512  | SHA1 / SHA256 / SHA512 / **MD5** | -        | HmacSHA1, HmacSHA256, HmacSHA512 |
|          `digits` | 6 / 8                       | 6 / **7** / 8               | 6 / 8                        | -        | 6 - 9 characters or numbers |
|          `period` | Arbitrary number of seconds | 15 / 30 / 60            | Arbitrary number of seconds  | -            | Arbitrary number of seconds |
|          `issuer` | URL encoding                | URL encoding            | No encoding specified        | 1*CHAR       | No encoding specified |
|            `icon` | -                           | -                       | String                       | -            | - |
--></p>

<table>

<thead>
<tr>
<th align="right">Variable</th>
<th align="center">Google</th>
<th align="center">Yubico</th>
<th align="center">IIJ</th>
<th align="center">SCRAM</th>
<th align="center">IBM</th>
</tr>
</thead>
<tbody>
<tr>
<td align="right">label issuer</td>
<td align="center">No encoding specified</td>
<td align="center">No encoding specified</td>
<td align="center">URI Encoding</td>
<td align="center">N/A</td>
<td align="center">No encoding specified</td>
</tr>
<tr>
<td align="right">label account</td>
<td align="center">URI encoding</td>
<td align="center">URI encoding</td>
<td align="center">URI encoding</td>
<td align="center">N/A</td>
<td align="center">No encoding specified</td>
</tr>
<tr>
<td align="right">secret</td>
<td align="center">Arbitrary length Base32</td>
<td align="center">Arbitrary length Base32</td>
<td align="center">Arbitrary length Base32</td>
<td align="center">40 * HEXCHAR</td>
<td align="center">Not specified</td>
</tr>
<tr>
<td align="right">algorithm</td>
<td align="center">SHA1 / SHA256 / SHA512</td>
<td align="center">SHA1 / SHA256 / SHA512</td>
<td align="center">SHA1 / SHA256 / SHA512 / <strong>MD5</strong></td>
<td align="center">-</td>
<td align="center">HmacSHA1 / HmacSHA256 / HmacSHA512</td>
</tr>
<tr>
<td align="right">digits</td>
<td align="center">6 / 8</td>
<td align="center">6 / <strong>7</strong> / 8</td>
<td align="center">6 / 8</td>
<td align="center">-</td>
<td align="center">6 - 9 <strong>characters</strong> or numbers</td>
</tr>
<tr>
<td align="right">period</td>
<td align="center">Arbitrary number of seconds</td>
<td align="center">15 / 30 / 60</td>
<td align="center">Arbitrary number of seconds</td>
<td align="center">-</td>
<td align="center">Arbitrary number of seconds</td>
</tr>
<tr>
<td align="right">issuer</td>
<td align="center">URL encoding</td>
<td align="center">URL encoding</td>
<td align="center">No encoding specified</td>
<td align="center">1*CHAR</td>
<td align="center">No encoding specified</td>
</tr>
<tr>
<td align="right">icon</td>
<td align="center">-</td>
<td align="center">-</td>
<td align="center">String</td>
<td align="center">-</td>
<td align="center">-</td>
</tr>
</tbody>
</table>

<p>I tried creating a variety of codes on the fringes of the specification - more than 8 digits, lower than 15 second periods, weird issuers - to see what would happen if my trusting friends scanned them with their TOTP apps.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2022/05/WTAF.png" alt="A QR code." width="350" height="350" class="aligncenter size-full wp-image-42599">

<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:auto;margin-bottom:.5em;padding:1em;border-radius:1em;background-color:#FFF;color:#000;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-1522597758749880323" lang="en"><blockquote class="social-embed" id="social-embed-1522597542348926978" lang="en"><header class="social-embed-header"><a href="https://twitter.com/samnalty" class="social-embed-user"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRt4BAABXRUJQVlA4INIBAAAwCgCdASowADAAPrVIokqnJCMhrjv5mOAWiUAXZoHYyqQ0eAuLFQPefp2t0tF+xe/kNlepsH6/8TzPwSqnv3elmK12fKIlHfzuAq/Afb8g2Oq2z/VWt3N6yAAA/vNo84oq9c7uaDif8Ttje97m+ToovqRbZK4Ji8uX4H7sdFlcDpPn7sA0gmE/zTsAfycjXDV2uYyIIfbK1lNrEO+NTaFfxxHfX942TEZ/CFSGOB1D00iDvSiS8CF4B3v/d2/y23jeIHY6AAuWf9IxrmTLiNNHeQGcqdBHJyii0hajpueZks+6/Ixjb5v3i5SZy77+ul//Kp7VOFPZc7BBrsUgJjBZKPJCYyTLBgcfIt/+IrT2px6eU060ADdXeLL/5MilC4yJ84XaPSp3vzxlp/HskXunfb5XQ4dWxxSg7T3L4K40WyuE0idrfdk/GeoUnT2ox9cavFP0+4jfSHsDlRzqb1Ncaf4XQfryl8/fwQZ2tdROfnFCFQOUAqFkV25q3d6TDZ6TqCKNkpz/INc1FQv4pOxUQZ9TXhNFKxHQBHkrV5AAXRuf6mK1j+fDuDuhjHOeX+NI186Uzmfiwtwxe4beufuzjBgMoRuv9nVHYtcVbiw+AgAA" alt=""><div class="social-embed-user-names"><p class="social-embed-user-names-name">Sam Nalty</p>@samnalty</div></a><img class="social-embed-logo" alt="" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCmFyaWEtbGFiZWw9IlR3aXR0ZXIiIHJvbGU9ImltZyIKdmlld0JveD0iMCAwIDUxMiA1MTIiPjxwYXRoCmQ9Im0wIDBINTEyVjUxMkgwIgpmaWxsPSIjZmZmIi8+PHBhdGggZmlsbD0iIzFkOWJmMCIgZD0ibTQ1OCAxNDBxLTIzIDEwLTQ1IDEyIDI1LTE1IDM0LTQzLTI0IDE0LTUwIDE5YTc5IDc5IDAgMDAtMTM1IDcycS0xMDEtNy0xNjMtODNhODAgODAgMCAwMDI0IDEwNnEtMTcgMC0zNi0xMHMtMyA2MiA2NCA3OXEtMTkgNS0zNiAxczE1IDUzIDc0IDU1cS01MCA0MC0xMTcgMzNhMjI0IDIyNCAwIDAwMzQ2LTIwMHEyMy0xNiA0MC00MSIvPjwvc3ZnPg=="></header><section class="social-embed-text"><small class="social-embed-reply"><a href="https://twitter.com/kerguio/status/1522592200764317697">Replying to @kerguio</a></small><a href="https://twitter.com/kerguio">@kerguio</a> <a href="https://twitter.com/edent">@edent</a> Weird, worked for me on 1password for android</section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/samnalty/status/1522597542348926978" aria-label="1 likes" class="social-embed-meta">❤️ 1</a><a href="https://twitter.com/samnalty/status/1522597542348926978" aria-label="0 replies" class="social-embed-meta">💬 0</a><a href="https://twitter.com/samnalty/status/1522597542348926978" aria-label="0 retweets" class="social-embed-meta">♻️ 0</a><a href="https://twitter.com/samnalty/status/1522597542348926978"><time datetime="2022-05-06T15:21:57.000Z">15:21 - Fri 06 May 2022</time></a></footer></blockquote><header class="social-embed-header"><a href="https://twitter.com/samnalty" class="social-embed-user"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRt4BAABXRUJQVlA4INIBAAAwCgCdASowADAAPrVIokqnJCMhrjv5mOAWiUAXZoHYyqQ0eAuLFQPefp2t0tF+xe/kNlepsH6/8TzPwSqnv3elmK12fKIlHfzuAq/Afb8g2Oq2z/VWt3N6yAAA/vNo84oq9c7uaDif8Ttje97m+ToovqRbZK4Ji8uX4H7sdFlcDpPn7sA0gmE/zTsAfycjXDV2uYyIIfbK1lNrEO+NTaFfxxHfX942TEZ/CFSGOB1D00iDvSiS8CF4B3v/d2/y23jeIHY6AAuWf9IxrmTLiNNHeQGcqdBHJyii0hajpueZks+6/Ixjb5v3i5SZy77+ul//Kp7VOFPZc7BBrsUgJjBZKPJCYyTLBgcfIt/+IrT2px6eU060ADdXeLL/5MilC4yJ84XaPSp3vzxlp/HskXunfb5XQ4dWxxSg7T3L4K40WyuE0idrfdk/GeoUnT2ox9cavFP0+4jfSHsDlRzqb1Ncaf4XQfryl8/fwQZ2tdROfnFCFQOUAqFkV25q3d6TDZ6TqCKNkpz/INc1FQv4pOxUQZ9TXhNFKxHQBHkrV5AAXRuf6mK1j+fDuDuhjHOeX+NI186Uzmfiwtwxe4beufuzjBgMoRuv9nVHYtcVbiw+AgAA" alt=""><div class="social-embed-user-names"><p class="social-embed-user-names-name">Sam Nalty</p>@samnalty</div></a><img class="social-embed-logo" alt="" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCmFyaWEtbGFiZWw9IlR3aXR0ZXIiIHJvbGU9ImltZyIKdmlld0JveD0iMCAwIDUxMiA1MTIiPjxwYXRoCmQ9Im0wIDBINTEyVjUxMkgwIgpmaWxsPSIjZmZmIi8+PHBhdGggZmlsbD0iIzFkOWJmMCIgZD0ibTQ1OCAxNDBxLTIzIDEwLTQ1IDEyIDI1LTE1IDM0LTQzLTI0IDE0LTUwIDE5YTc5IDc5IDAgMDAtMTM1IDcycS0xMDEtNy0xNjMtODNhODAgODAgMCAwMDI0IDEwNnEtMTcgMC0zNi0xMHMtMyA2MiA2NCA3OXEtMTkgNS0zNiAxczE1IDUzIDc0IDU1cS01MCA0MC0xMTcgMzNhMjI0IDIyNCAwIDAwMzQ2LTIwMHEyMy0xNiA0MC00MSIvPjwvc3ZnPg=="></header><section class="social-embed-text"><small class="social-embed-reply"><a href="https://twitter.com/samnalty/status/1522597542348926978">Replying to @samnalty</a></small><a href="https://twitter.com/kerguio">@kerguio</a> <a href="https://twitter.com/edent">@edent</a> Even weirder, in the Android app it is a 10 digit OTP but on the windows app it's a normal 6 digit one.</section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/samnalty/status/1522597758749880323" aria-label="0 likes" class="social-embed-meta">❤️ 0</a><a href="https://twitter.com/samnalty/status/1522597758749880323" aria-label="2 replies" class="social-embed-meta">💬 2</a><a href="https://twitter.com/samnalty/status/1522597758749880323" aria-label="0 retweets" class="social-embed-meta">♻️ 0</a><a href="https://twitter.com/samnalty/status/1522597758749880323"><time datetime="2022-05-06T15:22:48.000Z">15:22 - Fri 06 May 2022</time></a></footer></blockquote>

<blockquote class="social-embed" id="social-embed-1522593948950310913" lang="en"><header class="social-embed-header"><a href="https://twitter.com/ben_nuttall" class="social-embed-user"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRuABAABXRUJQVlA4INQBAADQCQCdASowADAAPrVGnUqnI6KhsdM9+OAWiUAYC4F9/88AZUBi/iT0gUz/x2Yi1FvH8pq2qgkRxfVDXvlsquGPR233nNWgbjRPm3d5tEBY8WOtldy+DwAA/v34fHTGYdkcvM0NpyW5l9wXBDmJizXg/G78cyvDv/hDOMVphom5abaa+N0tCHH6Atw6JP/BnZnQ9+4bdDOHqsX8LyY/6z7Vb5lIiK5Hf8wmbpwHbOHKrPxOx4LkVB3C3Y1Uk8tsumTGiT8uvARYdIOs4daIZ8vZaXmuVrV78PrLysVkYNLl6q4rHMKZc4Mk1O6qaFaIbADyJeh0xRg5M2DWCKQ2wFsXn/oKXvO5lN2Vm+KlrJCkNL92nsAMUGUDOaDwqR40IHORon3f+esYpXN0TWg7NC4t900f/V7X19hanVskWTfhXN/R9at634o3kHU1HCGOgbGWHor/DMLFTeUFJ+CdEuarzqv0nc9P+OnpGI6wg7erI6NIQOeuD28SekqNZmjpsqbvvixRfW7Z8eHu//wtipY8+zP/0x6wT6+5sKxkpb4UqRQZ5/rIjGOGYQCt91SkKW3AHaFVtuzuMNz3UarAgVG0puJWkczvAj0sdp6DQ45edLE/gAA=" alt=""><div class="social-embed-user-names"><p class="social-embed-user-names-name">Ben Nuttall</p>@ben_nuttall</div></a><img class="social-embed-logo" alt="" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCmFyaWEtbGFiZWw9IlR3aXR0ZXIiIHJvbGU9ImltZyIKdmlld0JveD0iMCAwIDUxMiA1MTIiPjxwYXRoCmQ9Im0wIDBINTEyVjUxMkgwIgpmaWxsPSIjZmZmIi8+PHBhdGggZmlsbD0iIzFkOWJmMCIgZD0ibTQ1OCAxNDBxLTIzIDEwLTQ1IDEyIDI1LTE1IDM0LTQzLTI0IDE0LTUwIDE5YTc5IDc5IDAgMDAtMTM1IDcycS0xMDEtNy0xNjMtODNhODAgODAgMCAwMDI0IDEwNnEtMTcgMC0zNi0xMHMtMyA2MiA2NCA3OXEtMTkgNS0zNiAxczE1IDUzIDc0IDU1cS01MCA0MC0xMTcgMzNhMjI0IDIyNCAwIDAwMzQ2LTIwMHEyMy0xNiA0MC00MSIvPjwvc3ZnPg=="></header><section class="social-embed-text"><small class="social-embed-reply"><a href="https://twitter.com/edent/status/1522592041150173190">Replying to @edent</a></small><a href="https://twitter.com/edent">@edent</a> Seems to work as my others do (in Google Authenticator), apart from the name is emojis and some RTL text</section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/ben_nuttall/status/1522593948950310913" aria-label="1 likes" class="social-embed-meta">❤️ 1</a><a href="https://twitter.com/ben_nuttall/status/1522593948950310913" aria-label="1 replies" class="social-embed-meta">💬 1</a><a href="https://twitter.com/ben_nuttall/status/1522593948950310913" aria-label="0 retweets" class="social-embed-meta">♻️ 0</a><a href="https://twitter.com/ben_nuttall/status/1522593948950310913"><time datetime="2022-05-06T15:07:40.000Z">15:07 - Fri 06 May 2022</time></a></footer></blockquote>

<blockquote class="social-embed" id="social-embed-1522592326509641736" lang="en"><header class="social-embed-header"><a href="https://twitter.com/kerguio" class="social-embed-user"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRgoCAABXRUJQVlA4IP4BAABQCwCdASowADAAPrVSoU2nJCMiJzgKSOAWiWkAE9efUuVVP0YgVprdB+q4wKaP4+tQT9U0xtjlubHIWJhQStYQS6H8gshCYHvQ7ePmiaXIrcC5qxugIucI8ZXMmacopZWPUoAA/v4u2vmGJ8xWI07tUFkaMDPwFq4SHNqEOAeceix6BTkrSTJfdMf12w9KYEZ3Hrkxnvfbv/zj8PPCG92ON8jbVkJJsFEghWl7plQo4trtEPUGqlBIZbjsehokBqafJe679sf7fqx4ife6Oe0CInR8fvrRkA1uBNCJ0/Nxxzy6fvkmF/Oiyd8ge2yCp9XyiY1n98gRvlS7TAIy0FDvldfTjdVywIdOKozXnHVYHO4bpcszFazlI8ta8Wg/RNTZ0T/bGPNZPFo7Yfi6ZrA0x77JNVarO39pJM8tugZA5Y83nZB5GMF3cp+wkrPeImEImZijJCYU0gKQJ8dkUM0r6eQ3t90zVXYgTfLxejej8OEOYu0nf0e8WPmtHvs8BEaEcq9uJ/fRO7k+Bb3/604NIT7G/q3r/D0AJq79tnYzcMImDDxt+bt7zFR6Q8Me3TTVo7yJdLXSUCPnWetlMwJ9vDd2thAnoYBisAS69mWsqlzv1B1Mk2zXOfxzVESQn9a43CHXA6hAun36kelfuPeC1Ge60Gfmp27gfNFAAAA=" alt=""><div class="social-embed-user-names"><p class="social-embed-user-names-name">Serge</p>@kerguio</div></a><img class="social-embed-logo" alt="" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCmFyaWEtbGFiZWw9IlR3aXR0ZXIiIHJvbGU9ImltZyIKdmlld0JveD0iMCAwIDUxMiA1MTIiPjxwYXRoCmQ9Im0wIDBINTEyVjUxMkgwIgpmaWxsPSIjZmZmIi8+PHBhdGggZmlsbD0iIzFkOWJmMCIgZD0ibTQ1OCAxNDBxLTIzIDEwLTQ1IDEyIDI1LTE1IDM0LTQzLTI0IDE0LTUwIDE5YTc5IDc5IDAgMDAtMTM1IDcycS0xMDEtNy0xNjMtODNhODAgODAgMCAwMDI0IDEwNnEtMTcgMC0zNi0xMHMtMyA2MiA2NCA3OXEtMTkgNS0zNiAxczE1IDUzIDc0IDU1cS01MCA0MC0xMTcgMzNhMjI0IDIyNCAwIDAwMzQ2LTIwMHEyMy0xNiA0MC00MSIvPjwvc3ZnPg=="></header><section class="social-embed-text"><small class="social-embed-reply"><a href="https://twitter.com/edent/status/1522589408251334659">Replying to @edent</a></small><a href="https://twitter.com/edent">@edent</a> Keychain in iOS seemed to ingest it, but not sure where it went...</section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/kerguio/status/1522592326509641736" aria-label="1 likes" class="social-embed-meta">❤️ 1</a><a href="https://twitter.com/kerguio/status/1522592326509641736" aria-label="1 replies" class="social-embed-meta">💬 1</a><a href="https://twitter.com/kerguio/status/1522592326509641736" aria-label="0 retweets" class="social-embed-meta">♻️ 0</a><a href="https://twitter.com/kerguio/status/1522592326509641736"><time datetime="2022-05-06T15:01:13.000Z">15:01 - Fri 06 May 2022</time></a></footer></blockquote>

<blockquote class="social-embed" id="social-embed-1522605596247220224" lang="en"><header class="social-embed-header"><a href="https://twitter.com/Johninnit" class="social-embed-user"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRvIBAABXRUJQVlA4IOYBAAAwCgCdASowADAAPrVMoEwnJCMiJzgNsOAWiWoAnTOOfK/PX7uOAlMYtpVHyB2P97QjYhb+ry9tvRBMpAdz+98UEf37ZCZob6sKn6C+Bo32AZ93nSVkH37QuqAA/q49PU3rLu2tNJ9PCa1/7K/c6BEANQPLaPNIatWVu7F76L6IuGN/Gf/P2rc9i7DMmSjt3e476wdJYpWjejlRYlIJHtZ66CchOcac33VDloP7KNyBndWkJAShUSR0b0zsOL6w9pL8qsqT8WDBqsAN3y+Dz6uUA9fWrdSaUGmR0JG0wjf1xYV2lWNJuKxIzBq7c2eF8VpT+GlXlga77kcrjVXs2swDOghLAvBQE2ZqiUGD7vbgf8U0V5y6lf+pqPZTydbE+iVSeRHI9m0FVZMdAjYuLo19xAlRO3S/leprxG6qdEJZraLEkkFc/65ZsIXiejSjq4yS23Gk7B4q8vCzuGb5BPXXbtS1ccJejcEoIvRNB2H8YnliVS+Tg7vql2LAUmvvc977LHIOnClwFAGDXTyZB6fhfgH9LK1cW1rTL4Q4urck28ZFVMwdxDoJkdYkOsE50zpc+2HmWgCbbQySC0MKaef0XfrhTmfxjhZhLaPYY+6BVpndMPPO5kPXf8z1PjYHPGoGuBEAAAA=" alt=""><div class="social-embed-user-names"><p class="social-embed-user-names-name">John</p>@Johninnit</div></a><img class="social-embed-logo" alt="" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCmFyaWEtbGFiZWw9IlR3aXR0ZXIiIHJvbGU9ImltZyIKdmlld0JveD0iMCAwIDUxMiA1MTIiPjxwYXRoCmQ9Im0wIDBINTEyVjUxMkgwIgpmaWxsPSIjZmZmIi8+PHBhdGggZmlsbD0iIzFkOWJmMCIgZD0ibTQ1OCAxNDBxLTIzIDEwLTQ1IDEyIDI1LTE1IDM0LTQzLTI0IDE0LTUwIDE5YTc5IDc5IDAgMDAtMTM1IDcycS0xMDEtNy0xNjMtODNhODAgODAgMCAwMDI0IDEwNnEtMTcgMC0zNi0xMHMtMyA2MiA2NCA3OXEtMTkgNS0zNiAxczE1IDUzIDc0IDU1cS01MCA0MC0xMTcgMzNhMjI0IDIyNCAwIDAwMzQ2LTIwMHEyMy0xNiA0MC00MSIvPjwvc3ZnPg=="></header><section class="social-embed-text"><small class="social-embed-reply"><a href="https://twitter.com/edent/status/1522589408251334659">Replying to @edent</a></small><a href="https://twitter.com/edent">@edent</a> Authy says "Token format invalid"</section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/Johninnit/status/1522605596247220224" aria-label="0 likes" class="social-embed-meta">❤️ 0</a><a href="https://twitter.com/Johninnit/status/1522605596247220224" aria-label="1 replies" class="social-embed-meta">💬 1</a><a href="https://twitter.com/Johninnit/status/1522605596247220224" aria-label="0 retweets" class="social-embed-meta">♻️ 0</a><a href="https://twitter.com/Johninnit/status/1522605596247220224"><time datetime="2022-05-06T15:53:57.000Z">15:53 - Fri 06 May 2022</time></a></footer></blockquote>

<iframe src="https://toot.me.uk/@revk/108255557953114821/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400" allowfullscreen="allowfullscreen"></iframe>

<iframe src="https://mastodon.social/@andypiper/108255613228860659/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400" allowfullscreen="allowfullscreen"></iframe>

<script src="https://mastodon.social/embed.js" async="async"></script>

<h2 id="why-is-this-a-problem"><a href="https://shkspr.mobi/blog/2022/05/why-is-there-no-formal-specification-for-otpauth-urls/#why-is-this-a-problem">Why is this a problem?</a></h2>

<p>Formally standardised specifications are a good thing. They mean that everyone is on a level playing-field and innovation can happen without actors enclosing the commons.</p>

<p>More prosaically, it means that users can be confident that any app will work with any code from any provider.  And implementers can have a forum where they can propose enhancements to the spec which won't break users' devices.</p>

<h2 id="where-are-the-specifications-deficient"><a href="https://shkspr.mobi/blog/2022/05/why-is-there-no-formal-specification-for-otpauth-urls/#where-are-the-specifications-deficient">Where are the specifications deficient?</a></h2>

<p>The URI encoding trips up a number of publishers - more on that in a later blog post.</p>

<p>Should there be a maximum or minimum length to the secret? Why? Why not?</p>

<p>Is it a wise idea to fix those algorithms? Does it matter if a weaker one is in there? Can they be deprecated?</p>

<p>Why just 6 or 8 digits? What's wrong with an arbitrary number of digits? What about using letters or other symbols?</p>

<p>The period is in seconds. Does that mean whole seconds? Can users reliably type in 8 digit codes which change every 15 seconds?</p>

<p>"Issuer" is in there twice. What if they don't match each other?</p>

<p>Do users want an "icon"? Should it be a Base64 encoded graphic? If so, what format? If not, is a URL sufficient?</p>

<p>I'm sure there are half-a-dozen more gripes you could come up with.</p>

<h2 id="the-future-kinda-sucks"><a href="https://shkspr.mobi/blog/2022/05/why-is-there-no-formal-specification-for-otpauth-urls/#the-future-kinda-sucks">The future kinda sucks</a></h2>

<p>I am <em>so</em> tired of Google getting bored halfway through designing something - and then expecting the rest of us to just figure out what they meant.</p>

<p>We're now in a situation where everyone is (rightly) pushing TOTP for 2FA, but there's no formal specification for how users can scan those codes into their apps. There's no way to propose changes. And there's no guarantee that a user will be able to reliably scan the codes they are given.</p>

<p>Bad times.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=42594&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2022/05/why-is-there-no-formal-specification-for-otpauth-urls/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[I was told that QR codes would never succeed because no one could make money from them]]></title>
		<link>https://shkspr.mobi/blog/2022/01/i-was-told-that-qr-codes-would-never-succeed-because-no-one-could-make-money-from-them/</link>
					<comments>https://shkspr.mobi/blog/2022/01/i-was-told-that-qr-codes-would-never-succeed-because-no-one-could-make-money-from-them/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 17 Jan 2022 12:34:01 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[qr]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=41529</guid>

					<description><![CDATA[Search back through this blog and you&#039;ll find dozens of posts about QR codes. Back in the day, I was a freelance &#34;Mobile Internet&#34; consultant. I&#039;d rock up to companies and say &#34;you know you can get the Web on your phone, right? It&#039;s going to be the next big thing!&#34;  And people would pay me handsomely for that advice.  I&#039;d also talk about apps - &#34;You don&#039;t need one, but if you&#039;re going to…]]></description>
										<content:encoded><![CDATA[<p><a href="https://web.archive.org/web/20220117124145/https://twitter.com/GraceMulvey1/status/1471800525834407941?ref_src=twsrc%5Etfw"><img src="https://shkspr.mobi/blog/wp-content/uploads/2022/01/qrcomeback-fs8.png" alt="I can't think of anyone who has had a better year than the QR code. What a comeback." width="720" height="389" class="aligncenter size-full wp-image-51984"></a></p>

<p>Search back through this blog and you'll find <a href="https://shkspr.mobi/blog/?s=qr+codes">dozens of posts about QR codes</a>. Back in the day, I was a freelance "Mobile Internet" consultant. I'd rock up to companies and say "you know you can get the Web on your phone, right? It's going to be the next big thing!"  And people would pay me handsomely for that advice.</p>

<p>I'd also talk about apps - "You don't need one, but if you're going to develop one, here's what you need to know." It was like pushing on an open door.</p>

<p>My final pitch was always - "Hey, QR codes are pretty nifty! <a href="https://shkspr.mobi/blog/2011/05/you-are-too-stupid-to-use-qr-codes-correctly/">Would you like some help with them?</a>"</p>

<p>Silence. Followed by a swift refusal.</p>

<p>The arguments against QR codes back then fell into a few main categories</p>

<ul>
<li>They're ugly (true, <a href="https://shkspr.mobi/blog/2010/11/qr-tetris/">but they can be made prettier</a>)</li>
<li>People don't scan them (false, <a href="https://shkspr.mobi/blog/2012/12/no-one-scans-qr-codes-apart-from-these-25-thousand-people/">with lots of data</a>)</li>
<li>Hackers might do something bad (unlikely, <a href="https://shkspr.mobi/blog/2011/12/how-to-prevent-qr-hijacking/">and easily defended against</a>)</li>
</ul>

<p>But, the main objection was that QR codes could never succeed because no one could make money from them!</p>

<p>This was a time when Microsoft was pushing its paid-for MS Tag product - <a href="https://shkspr.mobi/blog/2013/08/the-end-of-ms-tag/">which only lasted about 3 years before it was shut down</a>. They were trying to capture the mobile code scanning market, and failed.</p>

<p>Although lots of people were building scanners, there were very few companies pushing QR codes because they couldn't see a way to make money from them. Sure, there were a few companies which would sell you a short URL with analytics baked in. But there was no "moat". Anyone could build a slightly cheaper competitor. And businesses could bypass those companies easily. With no commercial driver, there was no pressure to promote the use of QR.  So - in the UK at least - QR codes bumbled along, occasionally <a href="https://shkspr.mobi/blog/2014/03/qr-codes-on-energy-bills/">appearing on energy bills</a>, <a href="https://shkspr.mobi/blog/2013/11/qr-codes-in-the-hardware-store/">physical products</a>, and <a href="https://shkspr.mobi/blog/2013/04/lambeths-brilliant-qr-codes/">informational posters</a>.</p>

<p>The "problem" is that QR codes are "boring infrastructure". That's what makes them magical - they're both libre and gratis.</p>

<p>Libre because QR codes are free to create - there are no royalties, 3rd parties, nor approval processes.</p>

<p>Gratis because QR codes are <em>too</em> cheap. <a href="https://shkspr.mobi/blog/2013/01/why-qr-codes-are-perfect-for-the-internet-of-things/">They only cost black ink</a>. They are so cheap, you can stick them on a sachets of salt and pepper!
<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/01/Pepper-pack-with-QR-code.jpg" alt="Pepper pack with QR code." width="500" height="391" class="aligncenter size-full wp-image-28053">
Try doing that with an NFC!</p>

<p>I was told that without organisations trying to drive adoption - whether to gain a monopoly or to drive people to walled-gardens - QR codes would never gain popularity.</p>

<p>I think that was true - up to a point. QR codes were always more popular with people than they were with advertisers.</p>

<p>But, in the end, it is somewhat gratifying being proven right. Mostly. It is great seeing restaurants using QR codes on their daily menus. And most product manuals, adverts, and fliers now contain a code. We're not there with payments - not in the same way China is. I kinda wish I'd finished writing my book about QR codes in 2014!</p>

<p>I was lucky enough to be in the right place at the right time to help the NHS with their QR check-in for COVID security. Which was nice. 
I just wish it didn't take a pandemic to make QR codes this popular!</p>

<blockquote class="social-embed" id="social-embed-1343844781982687233" 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/edent" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRkgBAABXRUJQVlA4IDwBAACQCACdASowADAAPrVQn0ynJCKiJyto4BaJaQAIIsx4Au9dhDqVA1i1RoRTO7nbdyy03nM5FhvV62goUj37tuxqpfpPeTBZvrJ78w0qAAD+/hVyFHvYXIrMCjny0z7wqsB9/QE08xls/AQdXJFX0adG9lISsm6kV96J5FINBFXzHwfzMCr4N6r3z5/Aa/wfEoVGX3H976she3jyS8RqJv7Jw7bOxoTSPlu4gNbfXYZ9TnbdQ0MNnMObyaRQLIu556jIj03zfJrVgqRM8GPwRoWb1M9AfzFe6Mtg13uEIqrTHmiuBpH+bTVB5EEQ3uby0C//XOAPJOFv4QV8RZDPQd517Khyba8Jlr97j2kIBJD9K3mbOHSHiQDasj6Y3forATbIg4QZHxWnCeqqMkVYfUAivuL0L/68mMnagAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Terence Eden is on Mastodon</p>@edent</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">Me in 2007: 🤔 Wouldn't it be neat if QR Codes were everywhere?<br><br>Me in 2020: 😢 Wouldn't it be neat if we didn't need QR Codes at the entrance to every shop.<blockquote class="social-embed" id="social-embed-152351385004941312" 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/edent" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRkgBAABXRUJQVlA4IDwBAACQCACdASowADAAPrVQn0ynJCKiJyto4BaJaQAIIsx4Au9dhDqVA1i1RoRTO7nbdyy03nM5FhvV62goUj37tuxqpfpPeTBZvrJ78w0qAAD+/hVyFHvYXIrMCjny0z7wqsB9/QE08xls/AQdXJFX0adG9lISsm6kV96J5FINBFXzHwfzMCr4N6r3z5/Aa/wfEoVGX3H976she3jyS8RqJv7Jw7bOxoTSPlu4gNbfXYZ9TnbdQ0MNnMObyaRQLIu556jIj03zfJrVgqRM8GPwRoWb1M9AfzFe6Mtg13uEIqrTHmiuBpH+bTVB5EEQ3uby0C//XOAPJOFv4QV8RZDPQd517Khyba8Jlr97j2kIBJD9K3mbOHSHiQDasj6Y3forATbIg4QZHxWnCeqqMkVYfUAivuL0L/68mMnagAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Terence Eden is on Mastodon</p>@edent</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">Turns out, I've been blogging about QR codes for 4 years.<br><a href="http://shkspr.mobi/blog/index.php/2007/12/qr-codes/">shkspr.mobi/blog/index.php…</a></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/edent/status/152351385004941312"><span aria-label="0 likes" class="social-embed-meta">❤️ 0</span><span aria-label="0 replies" class="social-embed-meta">💬 0</span><span aria-label="1 reposts" class="social-embed-meta">🔁 1</span><time datetime="2011-12-29T11:32:55.000Z" itemprop="datePublished">11:32 - Thu 29 December 2011</time></a></footer></blockquote></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/edent/status/1343844781982687233"><span aria-label="17 likes" class="social-embed-meta">❤️ 17</span><span aria-label="4 replies" class="social-embed-meta">💬 4</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2020-12-29T09:02:18.000Z" itemprop="datePublished">09:02 - Tue 29 December 2020</time></a></footer></blockquote>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=41529&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2022/01/i-was-told-that-qr-codes-would-never-succeed-because-no-one-could-make-money-from-them/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[A QR code built from Emoji]]></title>
		<link>https://shkspr.mobi/blog/2020/12/a-qr-code-built-from-emoji/</link>
					<comments>https://shkspr.mobi/blog/2020/12/a-qr-code-built-from-emoji/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 08 Dec 2020 12:31:51 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[emoji]]></category>
		<category><![CDATA[qr]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=37419</guid>

					<description><![CDATA[It&#039;s possible to encode QR images as text. In this case, Emoji!   ⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️ ⬜️⬛️⬛️⬛️⬛️⬛️⬛️⬛️⬜️⬜️⬜️⬛️⬜️⬜️⬜️⬛️⬛️⬛️⬛️⬛️⬛️⬛️⬜️ ⬜️⬛️⬜️⬜️⬜️⬜️⬜️⬛️⬜️⬛️⬛️⬜️⬛️⬛️⬜️⬛️⬜️⬜️⬜️⬜️⬜️⬛️⬜️ ⬜️⬛️⬜️⬛️⬛️⬛️⬜️⬛️⬜️⬜️⬛️⬜️⬛️⬛️⬜️⬛️⬜️⬛️⬛️⬛️⬜️⬛️⬜️ ⬜️⬛️⬜️⬛️⬛️⬛️⬜️⬛️⬜️⬛️⬛️⬜️⬛️⬛️⬜️⬛️⬜️⬛️⬛️⬛️⬜️⬛️⬜️ ⬜️⬛️⬜️⬛️⬛️⬛️⬜️⬛️⬜️⬜️⬜️⬛️⬜️⬜️⬜️⬛️⬜️⬛️⬛️⬛️⬜️⬛️⬜️ ⬜️⬛️⬜️⬜️⬜️⬜️⬜️⬛️⬜️⬛️⬛️⬛️⬛️⬛️⬜️⬛️⬜️⬜️⬜️⬜️⬜️⬛️⬜️ ⬜️⬛️⬛…]]></description>
										<content:encoded><![CDATA[<p>It's possible to encode QR images as text. In this case, Emoji!
<span id="more-37419"></span></p>

<pre style="line-height:1em;letter-spacing:-3px;">⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️
⬜️⬛️⬛️⬛️⬛️⬛️⬛️⬛️⬜️⬜️⬜️⬛️⬜️⬜️⬜️⬛️⬛️⬛️⬛️⬛️⬛️⬛️⬜️
⬜️⬛️⬜️⬜️⬜️⬜️⬜️⬛️⬜️⬛️⬛️⬜️⬛️⬛️⬜️⬛️⬜️⬜️⬜️⬜️⬜️⬛️⬜️
⬜️⬛️⬜️⬛️⬛️⬛️⬜️⬛️⬜️⬜️⬛️⬜️⬛️⬛️⬜️⬛️⬜️⬛️⬛️⬛️⬜️⬛️⬜️
⬜️⬛️⬜️⬛️⬛️⬛️⬜️⬛️⬜️⬛️⬛️⬜️⬛️⬛️⬜️⬛️⬜️⬛️⬛️⬛️⬜️⬛️⬜️
⬜️⬛️⬜️⬛️⬛️⬛️⬜️⬛️⬜️⬜️⬜️⬛️⬜️⬜️⬜️⬛️⬜️⬛️⬛️⬛️⬜️⬛️⬜️
⬜️⬛️⬜️⬜️⬜️⬜️⬜️⬛️⬜️⬛️⬛️⬛️⬛️⬛️⬜️⬛️⬜️⬜️⬜️⬜️⬜️⬛️⬜️
⬜️⬛️⬛️⬛️⬛️⬛️⬛️⬛️⬜️⬛️⬜️⬛️⬜️⬛️⬜️⬛️⬛️⬛️⬛️⬛️⬛️⬛️⬜️
⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬛️⬜️⬛️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️
⬜️⬛️⬛️⬛️⬛️⬛️⬜️⬛️⬛️⬛️⬛️⬜️⬛️⬛️⬛️⬜️⬛️⬜️⬛️⬜️⬛️⬜️⬜️
⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬛️⬛️⬛️⬛️⬛️⬜️⬛️⬜️⬛️⬛️⬛️⬛️⬛️⬛️⬜️
⬜️⬛️⬛️⬜️⬜️⬜️⬜️⬛️⬛️⬜️⬜️⬛️⬛️⬛️⬛️⬜️⬜️⬜️⬜️⬛️⬛️⬜️⬜️
⬜️⬛️⬜️⬜️⬜️⬜️⬛️⬜️⬜️⬛️⬛️⬜️⬜️⬜️⬛️⬜️⬜️⬛️⬛️⬛️⬜️⬜️⬜️
⬜️⬜️⬛️⬜️⬛️⬛️⬛️⬛️⬛️⬛️⬛️⬛️⬛️⬜️⬜️⬛️⬜️⬛️⬛️⬜️⬜️⬛️⬜️
⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬛️⬛️⬜️⬜️⬜️⬛️⬜️⬛️⬛️⬛️⬛️⬜️⬛️⬜️
⬜️⬛️⬛️⬛️⬛️⬛️⬛️⬛️⬜️⬛️⬜️⬜️⬜️⬛️⬜️⬜️⬛️⬜️⬜️⬛️⬛️⬜️⬜️
⬜️⬛️⬜️⬜️⬜️⬜️⬜️⬛️⬜️⬜️⬛️⬛️⬜️⬛️⬛️⬜️⬜️⬛️⬛️⬛️⬜️⬜️⬜️
⬜️⬛️⬜️⬛️⬛️⬛️⬜️⬛️⬜️⬛️⬛️⬛️⬛️⬛️⬜️⬛️⬜️⬛️⬛️⬜️⬜️⬜️⬜️
⬜️⬛️⬜️⬛️⬛️⬛️⬜️⬛️⬜️⬛️⬜️⬜️⬛️⬜️⬛️⬜️⬛️⬛️⬜️⬛️⬛️⬜️⬜️
⬜️⬛️⬜️⬛️⬛️⬛️⬜️⬛️⬜️⬛️⬜️⬜️⬛️⬛️⬛️⬜️⬛️⬜️⬜️⬛️⬜️⬜️⬜️
⬜️⬛️⬜️⬜️⬜️⬜️⬜️⬛️⬜️⬛️⬛️⬜️⬜️⬜️⬛️⬜️⬛️⬛️⬜️⬛️⬜️⬜️⬜️
⬜️⬛️⬛️⬛️⬛️⬛️⬛️⬛️⬜️⬛️⬛️⬜️⬛️⬜️⬜️⬛️⬛️⬛️⬛️⬜️⬛️⬜️⬜️
⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️
</pre>

<h2 id="how"><a href="https://shkspr.mobi/blog/2020/12/a-qr-code-built-from-emoji/#how">How?</a></h2>

<p>There are <em>lots</em> of <a href="https://en.wikipedia.org/wiki/Box-drawing_character">ASCII block characters</a>, but none are specifically marked as white / empty. Additionally, some fonts don't make the characters pure squares.</p>

<p>There are two characters which, generally, render as square Emoji:</p>

<ul>
<li>Unicode character U+2B1B is a <mark>large black square ⬛ .</mark></li>
<li>Unicode character U+2B1C is a <mark>large white square ⬜ .</mark></li>
</ul>

<p>These characters are from the <a href="https://en.wikipedia.org/wiki/Geometric_Shapes">Unicode block "Geometric Shapes"</a>. When paired with <a href="https://emojipedia.org/variation-selector-16/">️Variation Selector-16</a>, they are given an Emoji presentation.</p>

<p>The above QR code is styled with <code>"line-height:1em;"</code> to make sure there are no vertical gaps between characters, and <code>"letter-spacing:-3px;"</code> to squash any horizontal gaps.</p>

<p>I found that it scanned reliably on my devices.</p>

<h2 id="why"><a href="https://shkspr.mobi/blog/2020/12/a-qr-code-built-from-emoji/#why">Why?</a></h2>

<p>I was having a discussion with someone about the limitations of text based communication. How do you send a QR in, say, an email when you aren't allowed to attach anything?  We were looking at a text only system which wouldn't allow attachments or BASE64 encoded inline.</p>

<p>So I knocked up a quick scrap of code to see if it would work with Emoji.  It <em>sort of</em> works - but only if you can control the exact layout. On mobile screens, it might be too narrow, and you can't easily control the character spacing.</p>

<p>So, a nice idea, but a little pointless!</p>

<h2 id="can-i-tweet-that"><a href="https://shkspr.mobi/blog/2020/12/a-qr-code-built-from-emoji/#can-i-tweet-that">Can I tweet that??!?</a></h2>

<p>The smallest possible QR code is 21x21 pixels, that's too many characters to fit into a Tweet. Sorry!</p>

<p>You can <a href="https://mastodon.social/@Edent/105304907182816540">post it on something like Mastodon</a> but without the fine-grained CSS control, it probably won't be readable.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=37419&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2020/12/a-qr-code-built-from-emoji/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Donating via SMS - using QR Codes]]></title>
		<link>https://shkspr.mobi/blog/2014/07/donating-via-sms-using-qr-codes/</link>
					<comments>https://shkspr.mobi/blog/2014/07/donating-via-sms-using-qr-codes/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 07 Jul 2014 10:45:37 +0000</pubDate>
				<category><![CDATA[qr]]></category>
		<category><![CDATA[british museum]]></category>
		<category><![CDATA[museum]]></category>
		<category><![CDATA[sms]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=10632</guid>

					<description><![CDATA[One of the greatest cultural achievements of the last Labour Government was making museum entry free for everyone.  Whether you&#039;re rich, poor, British, foreign, young, old - you can enjoy the treasures of our museums and galleries.  Of course, while museums are funded by the state, they still rely on generating some external revenue - hence the ubiquitous gift shop and major corporate donations.  …]]></description>
										<content:encoded><![CDATA[<p>One of the greatest cultural achievements of the last Labour Government was <a href="http://www.museumsassociation.org/campaigns/free-admission-and-the-lottery">making museum entry free</a> for <em>everyone</em>.</p>

<p>Whether you're rich, poor, British, foreign, young, old - you can enjoy the treasures of our museums and galleries.</p>

<p>Of course, while museums are funded by the state, they still rely on generating some external revenue - hence the ubiquitous gift shop and major corporate donations.</p>

<p>In the front of most museums, you'll find a vessel for collecting donations.  Usually half full with pound coins, Euros, and Dollars.  On entering the <a href="http://www.britishmuseum.org/">British Museum</a> recently, I saw a new way to donate - QR codes!</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2014/07/British-Museum-Donate-a-Fiver.jpg" alt="British Museum Donate a Fiver" width="1024" height="611" class="aligncenter size-full wp-image-10634">

<p>Let's take a closer look at that code:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2014/07/British-Museum-Donate-a-Fiver-QR-Code.jpg" alt="British Museum Donate a Fiver QR Code" width="1024" height="239" class="aligncenter size-full wp-image-10633">

<p>If you scan it, your QR reader should prompt you to send a Premium Rate SMS to 70070 - a charity donation service run by <a href="https://web.archive.org/web/20140704202449/https://www.justgiving.com/en/justtextgiving">Just Giving</a>.</p>

<p>Just about anyone with a UK SIM will be able to send a fiver - no messing about with passwords, logging in, credit card numbers - it comes straight off the phone bill.</p>

<h2 id="setting-it-up"><a href="https://shkspr.mobi/blog/2014/07/donating-via-sms-using-qr-codes/#setting-it-up">Setting It Up</a></h2>

<p>It's really very easy to use the SMS feature of QR codes.  Assuming you've already got a number which can receive messages, you simply need to enter this text into your QR code:</p>

<pre>SMSTO:07700900617:Hello</pre>

<p>Which will appear as:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2014/07/SMS-QR-Code.png" alt="SMS QR Code" width="300" height="300" class="aligncenter size-full wp-image-10635">

<p>Scan it and you QR scanner should open up your SMS app, and you can choose whether to send or not.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2014/07/SMS-Compose-fs8.png" alt="SMS Compose-fs8" width="480" height="819" class="aligncenter size-full wp-image-10636">

<p>So, there you go! A really simple way to turn QR codes into donations using the ubiquitous SMS.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=10632&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2014/07/donating-via-sms-using-qr-codes/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[ASCII Art in QR Codes]]></title>
		<link>https://shkspr.mobi/blog/2014/05/ascii-art-in-qr-codes/</link>
					<comments>https://shkspr.mobi/blog/2014/05/ascii-art-in-qr-codes/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 27 May 2014 11:01:26 +0000</pubDate>
				<category><![CDATA[qr]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[ascii]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=10443</guid>

					<description><![CDATA[There are plenty of QR generators which will render the code in ASCII, but I wanted to try something a little different.  Is it possible to hide ASCII Art into QR Codes?  Errr.... yes... It&#039;s pretty damn simple! I was surprised I couldn&#039;t find anyone else doing this.   (\_/) (=&#039;.&#039;=) (&#34;)_(&#34;)   Becomes:   Which, when scanned, renders as:    Now, there are limits as to what you can put into a QR…]]></description>
										<content:encoded><![CDATA[<p>There are plenty of QR generators which will render the code in ASCII, but I wanted to try something a little different.  Is it possible to hide ASCII Art into QR Codes?</p>

<p>Errr.... yes... It's pretty damn simple! I was surprised I couldn't find anyone else doing this.</p>

<pre> (\_/)
(='.'=)
(")_(")
</pre>

<p>Becomes:
<img src="https://shkspr.mobi/blog/wp-content/uploads/2014/05/bunny-ascii-art-in-qr-code.png" alt="bunny ascii art in qr code" width="216" height="216" class="aligncenter size-full wp-image-10444"></p>

<p>Which, when scanned, renders as:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2014/05/ASCII-Art-QR-Scan.jpg" alt="ASCII Art QR Scan" width="1024" height="576" class="aligncenter size-full wp-image-10446">

<p>Now, there are limits as to what you can put into a QR code - about 4,000 characters.  Different devices have different screen widths, which limits the ability to include <a href="http://counterpoint.frequency44.com/pages/mona.html">fully featured ASCII Artworks like the Mona Lisa</a></p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=10443&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2014/05/ascii-art-in-qr-codes/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[QR Codes on Energy Bills]]></title>
		<link>https://shkspr.mobi/blog/2014/03/qr-codes-on-energy-bills/</link>
					<comments>https://shkspr.mobi/blog/2014/03/qr-codes-on-energy-bills/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 10 Mar 2014 14:09:57 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[necropost]]></category>
		<category><![CDATA[o2]]></category>
		<category><![CDATA[qr]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=34148</guid>

					<description><![CDATA[This is a necropost - resurrected from the now defunct blog of a previous employer. Sadly, the follow-up post has fallen down the memory hole. You can still read Sharon&#039;s response to it.  Well, we can finally unwrap one of the little projects The Lab has been working on.  Along with the Department of Energy and Climate Change we&#039;re aiming to stick QR codes on customers&#039; energy bills.  The…]]></description>
										<content:encoded><![CDATA[<p><ins datetime="2020-06-17">This is a necropost - resurrected from the <a href="https://web.archive.org/web/20160316233956/http://thelab.o2.com/2014/03/Lets-Put-QR-Codes-on-Energy-Bills.html">now defunct blog of a previous employer</a>. Sadly, the <a href="https://web.archive.org/web/20160316234727/http://thelab.o2.com/2014/03/QR-Codes-on-Energy-Bills—A-Response.html">follow-up post</a> has fallen down the memory hole. You can still read <a href="https://web.archive.org/web/20140317052759/https://sharonodea.co.uk/2014/03/11/will-qr-codes-help-consumers-get-cheaper-energy/">Sharon's response to it</a>.</ins></p>

<p>Well, we can finally unwrap one of the little projects The Lab has been working on.  Along with the Department of Energy and Climate Change we're aiming to stick QR codes on customers' energy bills.</p>

<p>The proposal has the grand name of: "<a href="https://www.gov.uk/government/consultations/a-consultation-on-proposals-to-amend-domestic-energy-supply-licence-conditions-requiring-provision-of-key-energy-data-in-a-machine-readable-format">A consultation on proposals to amend domestic energy supply licence conditions - requiring provision of key energy data in a machine readable format</a>"</p>

<h2 id="how-will-it-work"><a href="https://shkspr.mobi/blog/2014/03/qr-codes-on-energy-bills/#how-will-it-work">How Will It Work?</a></h2>

<p>Customers will receive their energy bill as normal.  Printed on the bill will be a QR code which lets the customer compare their usage, get energy efficiency advice, and potentially switch to a cheaper tariff.</p>

<p>You can read more on 
<a href="http://www.bbc.co.uk/news/business-26509405">BBC News</a>, 
<a href="http://www.theguardian.com/money/2014/mar/10/ed-davey-energy-bills-qr-codes">The Guardian</a>, 
<a href="https://news.sky.com/story/energy-bills-to-show-codes-to-help-consumers-10414423">Sky News</a>, 
<a href="http://www.itv.com/news/story/2014-03-10/government-to-introduce-quick-response-codes-on-energy-bills/">ITV News</a>, 
<a href="https://web.archive.org/web/20160316233956/http://www.marketingweek.co.uk/sectors/utilities/news/qr-codes-to-appear-on-energy-bills-to-make-switching-easier/4009723.article">MarketingWeek</a>, 
<a href="http://www.thedrum.com/news/2014/03/10/energy-companies-add-qr-codes-bills-help-customers-save">The Drum</a> and 
<a href="https://www.cityam.com/barcodes-ease-energy-switch/">City AM</a>.</p>

<p>This project has been gestating for a while - being <a href="http://www.theyworkforyou.com/debates/?id=2012-10-24c.929.1&amp;s=QR+codes#g942.2">first mentioned in the House of Commons in October 2012</a> - and is now being empowered via the <a href="http://www.theyworkforyou.com/wrans/?id=2014-02-27a.188955.h&amp;s=QR+codes#g188955.r0">Energy Act</a>.</p>

<p>This is the first time The Lab has helped with such a stately project - and we certainly hope to do more of this sort of work in the future.</p>

<h2 id="what-next"><a href="https://shkspr.mobi/blog/2014/03/qr-codes-on-energy-bills/#what-next">What Next?</a></h2>

<p>We know that QR codes are divisive for some - but they remain the cheapest way to put complex information on a piece of paper. They don't require a proprietary app, and can be used even on really quite basic phones.</p>

<p>We'd love it if you were to <a href="https://www.gov.uk/government/uploads/system/uploads/attachment_data/file/287573/A_consultation_on_proposals_to_amend_domestic_energy_supply_licence_conditionsMarch2014.pdf">respond to the consultation</a>.</p>

<h2 id="credits"><a href="https://shkspr.mobi/blog/2014/03/qr-codes-on-energy-bills/#credits">Credits</a></h2>

<p><a href="https://twitter.com/edent">Terence Eden</a> led this project, along with Lab Intern <a href="https://web.archive.org/web/20200924200334/https://twitter.com/yuanphoon">Yuan Phoon</a>.</p>

<hr>

<blockquote class="social-embed" id="social-embed-1008366248609091585" 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/edent" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRkgBAABXRUJQVlA4IDwBAACQCACdASowADAAPrVQn0ynJCKiJyto4BaJaQAIIsx4Au9dhDqVA1i1RoRTO7nbdyy03nM5FhvV62goUj37tuxqpfpPeTBZvrJ78w0qAAD+/hVyFHvYXIrMCjny0z7wqsB9/QE08xls/AQdXJFX0adG9lISsm6kV96J5FINBFXzHwfzMCr4N6r3z5/Aa/wfEoVGX3H976she3jyS8RqJv7Jw7bOxoTSPlu4gNbfXYZ9TnbdQ0MNnMObyaRQLIu556jIj03zfJrVgqRM8GPwRoWb1M9AfzFe6Mtg13uEIqrTHmiuBpH+bTVB5EEQ3uby0C//XOAPJOFv4QV8RZDPQd517Khyba8Jlr97j2kIBJD9K3mbOHSHiQDasj6Y3forATbIg4QZHxWnCeqqMkVYfUAivuL0L/68mMnagAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Terence Eden is on Mastodon</p>@edent</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">OMG! Reading "Inside the Nudge Unit" by David Halpern - and it mentions the QR energy project I worked on when I was at O2 😀<br><br><a href="http://blog.lab-cloud.net/2014/03/Lets-Put-QR-Codes-on-Energy-Bills.html">blog.lab-cloud.net/2014/03/Lets-P…</a><br><a href="http://blog.lab-cloud.net/2014/03/QR-Codes-on-Energy-Bills---A-Response.html">blog.lab-cloud.net/2014/03/QR-Cod…</a> <a href="https://twitter.com/edent/status/1008366248609091585/photo/1">pic.x.com/sg3tv9pvuz</a><div class="social-embed-media-grid"><a href="https://pbs.twimg.com/media/Df5vlQpWkAI9Vfp.jpg" class="social-embed-media-link"><img class="social-embed-media" alt="Photo of an ebook reader. The text describes adding QR codes to energy bills to encourage switching. " src="data:image/webp;base64,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"></a><a href="https://pbs.twimg.com/media/Df5vpxmWkAMt91X.jpg" class="social-embed-media-link"><img class="social-embed-media" alt="Scan your bill, switch and save. " src="data:image/webp;base64,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"></a></div></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/edent/status/1008366248609091585"><span aria-label="3 likes" class="social-embed-meta">❤️ 3</span><span aria-label="0 replies" class="social-embed-meta">💬 0</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2018-06-17T15:10:22.000Z" itemprop="datePublished">15:10 - Sun 17 June 2018</time></a></footer></blockquote>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=34148&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2014/03/qr-codes-on-energy-bills/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[QR Codes in the Hardware Store]]></title>
		<link>https://shkspr.mobi/blog/2013/11/qr-codes-in-the-hardware-store/</link>
					<comments>https://shkspr.mobi/blog/2013/11/qr-codes-in-the-hardware-store/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 03 Nov 2013 12:36:28 +0000</pubDate>
				<category><![CDATA[qr]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=8796</guid>

					<description><![CDATA[I&#039;m a big fan of QR codes.  A few years ago, I did some work for a major UK retailer who wanted to put QR codes on some of their DIY products.  Rather than ship expensive instructions with each item, there would be a QR code on the packaging which linked directly to a video explaining how to use whatever it was you&#039;d just purchased.  The idea was a success and is now helping them cut costs - even …]]></description>
										<content:encoded><![CDATA[<p>I'm a big fan of <a href="https://shkspr.mobi/blog/tag/qr-codes/">QR codes</a>.  A few years ago, I did some work for a major UK retailer who wanted to put QR codes on some of their DIY products.  Rather than ship expensive instructions with each item, there would be a QR code on the packaging which linked directly to a video explaining how to use whatever it was you'd just purchased.  The idea was a success and is now helping them cut costs - even in their after-sales service.</p>

<p>It's always nice when other companies imitate your success - and it's always amusing when they fall slightly short of the mark.</p>

<p>Lots of items in stores have QR codes on them.  There's a limit to how much information you can cram onto packaging.  It gives the customers more information, helps them buy the right product, and reduces the number of questions they ask a sales assistant.  QR FTW?
<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/10/QR-Hidden-by-packaging.jpg" alt="QR Hidden by packaging" width="600" height="450" class="aligncenter size-full wp-image-8797"></p>

<p>If you look closely at the above package, you'll see a QR nestled in the corner. Sadly, the plastic around is is deforming it.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/10/QR-Deformed-by-packaging.jpg" alt="QR Deformed by packaging" width="600" height="563" class="aligncenter size-full wp-image-8798">
This, of course, renders the code completely unscanable.</p>

<p>If you need help with your QR code, follow my <a href="https://shkspr.mobi/blog/2011/05/you-are-too-stupid-to-use-qr-codes-correctly/">10 simple steps for perfect QR codes</a>, or if you need some bespoke consultancy <a href="http://edent.tel/">give me a call</a>.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=8796&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2013/11/qr-codes-in-the-hardware-store/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[The End of MS Tag]]></title>
		<link>https://shkspr.mobi/blog/2013/08/the-end-of-ms-tag/</link>
					<comments>https://shkspr.mobi/blog/2013/08/the-end-of-ms-tag/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 20 Aug 2013 14:41:00 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[ms tag]]></category>
		<category><![CDATA[qr]]></category>
		<category><![CDATA[QR Codes]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=8625</guid>

					<description><![CDATA[Three years ago, I wrote about the deficiencies in Microsoft&#039;s Tag system.  It was painfully obvious even then that MS had no desire to back the &#34;standard&#34; they&#039;d tried to create.  They couldn&#039;t even be bothered to leverage the then-new Windows Phone to get the reader into customers&#039; hands.  Their terms and conditions at the time said  We will also use commercially reasonable efforts to make…]]></description>
										<content:encoded><![CDATA[<p>Three years ago, I <a href="https://shkspr.mobi/blog/2010/11/ms-tags-vs-qr-codes/">wrote about the deficiencies in Microsoft's Tag</a> system.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2010/12/MS-Tag-218x300.jpg" alt="MS Tag" width="218" height="300" class="aligncenter size-medium wp-image-3294">
It was painfully obvious even then that MS had no desire to back the "standard" they'd tried to create.  They couldn't even be bothered to <a href="https://twitter.com/#!/odedran/status/7515358512549888">leverage the then-new Windows Phone</a> to get the reader into customers' hands.</p>

<p>Their terms and conditions at the time said</p>

<blockquote>We will also use commercially reasonable efforts to make these basic features available until at least January 1, 2015, and provide two years prior notice before we terminate the basic features or the entire Microsoft Tag service.</blockquote>

<p>Well, <a href="https://thefonecast.com/News/microsoft-shutting-down-microsoft-tag-barcode-system">they've just given their two years' notice</a>.  They've offloaded the entire service off to ScanBuy:</p>

<blockquote><p>Through August 19, 2015, you will be able to continue to log into your existing Microsoft Tag service account, use existing Microsoft Tag codes, generate new Microsoft Tags, and run reports as usual. Scanbuy plans to support Microsoft Tag Technology on the ScanLife platform beginning no later than September 18th, 2013, and to offer transition and migration services to Microsoft Tag customers who choose to migrate to the ScanLife platform.</p></blockquote>

<p>I've got nothing against ScanBuy - but why would anyone carry on with this ridiculous platform now?  What's to stop ScanBuy in the future abandoning it, going bust, or radically changing the pricing structure?  Nothing.</p>

<p>With QR codes, you have an open standard where the destination is controlled by <strong>you</strong>!  There's no relying on the largesse of multinationals to keep a service running.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=8625&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2013/08/the-end-of-ms-tag/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[A QR Specification For Mobile Payments]]></title>
		<link>https://shkspr.mobi/blog/2013/06/a-qr-specification-for-mobile-payments/</link>
					<comments>https://shkspr.mobi/blog/2013/06/a-qr-specification-for-mobile-payments/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 13 Jun 2013 07:37:08 +0000</pubDate>
				<category><![CDATA[mobile]]></category>
		<category><![CDATA[qr]]></category>
		<category><![CDATA[bitcoin]]></category>
		<category><![CDATA[money]]></category>
		<category><![CDATA[payment]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=8366</guid>

					<description><![CDATA[BitCoin and other crypto-currencies are gaining popularity at the moment - but I remain firmly convinced that they&#039;re too hard for the average person to use.  I have, however, watched with interest as an ecosystem grows around them.  In particular, I like the way The Pirate Bay (and others) have used QR codes to facilitate easy payments and donations.  The QR codes contain only three variables -…]]></description>
										<content:encoded><![CDATA[<p>BitCoin and other crypto-currencies are gaining popularity at the moment - but I remain firmly convinced that they're too hard for the average person to use.  I have, however, watched with interest as an ecosystem grows around them.</p>

<p>In particular, I like the way The Pirate Bay (and others) have used QR codes to facilitate easy payments and donations.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/06/PirateBay-BitCoin-QR-fs8.png" alt="PirateBay BitCoin QR-fs8" width="276" height="472" class="size-full wp-image-8367">
The QR codes contain only three variables - the payment method (BitCoin), the destination, and a message.  As this is a donation there is no value set.  There is a <a href="https://en.bitcoin.it/wiki/URI_Scheme">full specification for a BitCoin URI scheme</a> which I think is fairly well designed.</p>

<p>I envisage a day when, on asking for the bill at a restaurant, I am presented with a paper slip totting up my purchases with a neat QR code printed at the bottom.  Scanning the code will pull up my banking or credit card app and allow me to make a payment.  A verifiable receipt is either shown on screen or sent directly to the restaurant.</p>

<p>For example:
<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/06/QR-Payment.png" alt="QR Payment" width="250" height="250" class="size-full wp-image-8370"></p>

<pre>PAY:
&nbsp;WHO:Pizza Palace
&nbsp;IBAN:GB29NWBK60161331926819
&nbsp;CUR:EUR
&nbsp;VAL:27.35
&nbsp;REF:123456qwerty
&nbsp;TIME:1370886496
</pre>

<p>That's enough human readable information - and machine data - to ensure the correct payment gets from one person to another.  I'm sure there are some other fields which may be advantageous to add; tax rate, specific location, etc.  But it certainly all fit within a QR code.</p>

<p>QR codes can easily be printed out using the current infrastructure of mobile POS terminals.  Those terminals already have mobile network access so can be alerted in real-time when the payment is made.  <a href="http://en.wikipedia.org/wiki/International_Bank_Account_Number">IBAN</a> means we have an easy(ish) way to uniquely identify payment destinations. And, in the UK at least, we have a fairly rapid payments infrastructure.</p>

<p>What's needed is a simple standard and mobile banking and credit card apps to support it.</p>

<p>Simple...</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=8366&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2013/06/a-qr-specification-for-mobile-payments/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[How Not To Run An Interactive Advertising Campaign #TAP4offers]]></title>
		<link>https://shkspr.mobi/blog/2013/06/how-not-to-run-an-interactive-advertising-campaign-tap4offers/</link>
					<comments>https://shkspr.mobi/blog/2013/06/how-not-to-run-an-interactive-advertising-campaign-tap4offers/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 10 Jun 2013 11:08:01 +0000</pubDate>
				<category><![CDATA[badvertising]]></category>
		<category><![CDATA[qr]]></category>
		<category><![CDATA[advertising]]></category>
		<category><![CDATA[nfc]]></category>
		<category><![CDATA[QR Codes]]></category>
		<category><![CDATA[tap4offers]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=8329</guid>

					<description><![CDATA[Public transport is a great way to assess the Zeitgeist.  Watching commuters transition from iPhones to Samsungs, and from paper books to Kindles, really gives one a sense of how the world is changing.  Advertising is also a great way to measure society; seeing lots of adverts for dodgy loan companies can give you an interesting idea about the direction of the economy.  I&#039;ve been tracking the…]]></description>
										<content:encoded><![CDATA[<p>Public transport is a great way to assess the Zeitgeist.  Watching commuters transition from iPhones to Samsungs, and from paper books to Kindles, really gives one a sense of how the world is changing.  Advertising is also a great way to measure society; seeing lots of adverts for dodgy loan companies can give you an interesting idea about the direction of the economy.</p>

<p>I've been tracking the rise of QR codes in advertising for several years now.  People keep asking me when NFC will take over for "boring" QR codes - based on the few live NFC examples I've seen in the UK, NFC will be trailing QR for several more years.</p>

<p>Let me talk you through <a href="https://web.archive.org/web/20130715015550/https://www.tap4offers.co.uk/">TAP4offers</a>' latest "effort".</p>

<p>The poster is fairly clear about what to expect - although I initially thought that I'd have to stretch to the top of the carriage to scan the NFC tag!
<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/06/Tap4-Train.jpg" alt="Tap4 Train" width="600" height="262" class="aligncenter size-full wp-image-8331"></p>

<p>Thankfully, that's not the case.  Beside every exit were these combined NFC / QR / SMS stickers.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/06/Tap4-Train-Door.jpg" alt="Tap4 Train Door" width="600" height="412" class="aligncenter size-full wp-image-8332">
The NFC tag and QR code each had a unique tracking URL, so the owner of the service (<a href="https://twitter.com/GunarsTAP4">Gunars Vucens</a>) can see which method is being used the most.  Judging from the URL and the printed information, I would guess each train carriage has a unique code.</p>

<p>Once the code is scanned - this happens.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/06/Tap4-Screenshot-fs8.png" alt="Tap4 Screenshot" width="600" height="948" class="aligncenter size-full wp-image-8330"></p>

<p>What - as the kids say - The Fuck?  I've no idea how much it costs to do a deal with South West Trains - but someone has wasted their money!</p>

<p>This is the <a href="https://shkspr.mobi/blog/2013/04/clear-channels-nfc-mistake/">same mistake that Clear Channel made on their QR/NFC posters</a>.</p>

<p>Why bother with this? Seriously?  What's the point of installing all these codes?  They've been there for months - disappointing everyone who interacts with them.</p>

<p><a href="https://web.archive.org/web/20130718122310/http://shkspr.mobi/blog/2013/06/how-not-to-run-an-interactive-advertising-campaign-tap4offers/"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/06/archived-tweets-fs8.png" alt="3 Tweets complaining about the crappy experience." width="1080" height="1588" class="aligncenter size-full wp-image-52450"></a></p>

<p>Despite the advertiser's promise of a relaunch, nothing seems to be happening with these codes.</p>

<blockquote class="social-embed" id="social-embed-330326653135896578" 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/gunnars_v" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRkQCAABXRUJQVlA4IDgCAADQCwCdASowADAAPrVOoEunJCMhpyyQ4BaJagCdMr2D57tdbnHdv3z2fn/rPOM+OQ94zw1fc3qWmUX/Zcn1kR4JWWWnwnmaL9dUJ+ABy6W+YzPp5SIv8BYgq7xj6CWdKAhLtrDbQi0AAP73ebclb0e1Q2lmB7FrzB3clUts/9aEdQ73NNCl3yAXVl88uhkJYf0Pgvt4Midt8KLIeRp21iHV6+Urw1+59Ha3uc2AABS3mkp0sAI+IcBQEYS9wVxQDAgG4m+zwaoAYr8D3KP7zgafeygLLzvSbE4sFIWt8PDbwrZoGiburoHr23O4hmPWITBKuwQxyD8QFv+3gXjFD1E5zEK/R3f0UcL1yBoJgx1ERzLZB+hAhZ7SKs+0rSzBl9Z90EV9xkaF9ZU39htPbrShu3nRO3nYSE22ZWS/5A1nOscYIeLcUbtm8obGAL4wGJmuKuGK9ttcQa89q50acoEwwJ3ZRGknwInLWJVnt4aOVJP0RTAKLQbEGus34n5VdsCVIxR06xeAc88hF1+BQl9nPP/ESk/3gX5mVTCEDPI79DAVwkY4S64x7ejS5dZ+u829SQWiT75Q8Tu7s/JU0z7qRxrSkisLIst9yEx7IwV89/o+mbfAEiFkEZA3Vfjh8tZmUBiqvwt/ffQxOPtlx3p8vv8IHpfQdqv+qGUq0RVXaal4+PB8pNa9yObCao13golbdkYZQvgkoCgCt/F1/dotQGrZkuRhec5YzLwsfGkqNqDRHeE2MAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Gunars</p>@gunnars_v</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">New and upcoming <a href="https://twitter.com/hashtag/TAP4offers">#TAP4offers</a> is due to change and expand rapidly in following weeks, keep and eye out! <a href="https://twitter.com/hashtag/nfc">#nfc</a> <a href="https://twitter.com/hashtag/tap4">#tap4</a> <a href="https://twitter.com/hashtag/offers">#offers</a></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/gunnars_v/status/330326653135896578"><span aria-label="1 likes" class="social-embed-meta">❤️ 1</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="2013-05-03T14:23:05.000Z" itemprop="datePublished">14:23 - Fri 03 May 2013</time></a></footer></blockquote>

<h2 id="logo-problems"><a href="https://shkspr.mobi/blog/2013/06/how-not-to-run-an-interactive-advertising-campaign-tap4offers/#logo-problems">Logo Problems</a></h2>

<p>As well as the general uselessness of the destination, there is another flaw with the service.</p>

<p>Firstly, there's yet another NFC logo!  <a href="http://www.gsma.com/mobilenfc/wp-content/uploads/2012/11/Proxama-Use-Cases-for-Mobile-NFC.pdf">Proxima's report to the GSMA</a> already identified half a dozen common logos.
<a href="http://www.gsma.com/mobilenfc/wp-content/uploads/2012/11/Proxama-Use-Cases-for-Mobile-NFC.pdf"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/06/Proxama-Use-Cases-for-Mobile-NFC-fs8.png" alt="Proxama-Use-Cases-for-Mobile-NFC-fs8" width="600" height="476" class="aligncenter size-full wp-image-8334"></a>
<a href="https://web.archive.org/web/20130624145209/http://www.gsma.com/mobilenfc/news-information-resources/nfc-contactless-marks">GSMA NFC Logo</a>, <a href="https://nfc-forum.org/uploads/Branding-and-Marks/NFC_N_Mark_Guidelines.pdf">NFC Forum's N-Mark</a>, <a href="https://web.archive.org/web/20130725033547/http://www.clearchannel.co.uk/press-centre/news/2012/03/30/nfc-technology-the-appetite-exists-but-not-the-knowledge/">ClearChannel's NFC Mark</a>, etc. etc.</p>

<p>So, overall, a pretty pathetic effort.</p>

<p>If NFC is to overcome its significant obstacles - price, hardware requirements, lack of public awareness - the campaigns underpinning it <em>must</em> be better than this.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=8329&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2013/06/how-not-to-run-an-interactive-advertising-campaign-tap4offers/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Clear Channel's NFC Mistake]]></title>
		<link>https://shkspr.mobi/blog/2013/04/clear-channels-nfc-mistake/</link>
					<comments>https://shkspr.mobi/blog/2013/04/clear-channels-nfc-mistake/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 17 Apr 2013 11:00:36 +0000</pubDate>
				<category><![CDATA[badvertising]]></category>
		<category><![CDATA[advertising]]></category>
		<category><![CDATA[clear channel]]></category>
		<category><![CDATA[nfc]]></category>
		<category><![CDATA[qr]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=8070</guid>

					<description><![CDATA[I&#039;ve talked before about advertising hoardings with combined NFC &#38; QR codes.  It looks like Clear Channel - the advertising behemoth - is getting into the game.  Spotted all over London are these bus stops with built in advertising poster.  Look on the right hand side, and you&#039;ll see the interactive element.    It&#039;s pretty well designed, although the disclaimer &#34;standard network rates apply&#34;…]]></description>
										<content:encoded><![CDATA[<p>I've talked before about <a href="https://shkspr.mobi/blog/2012/12/qr-and-nfc-living-in-harmony/">advertising hoardings with combined NFC &amp; QR codes</a>.  It looks like Clear Channel - the advertising behemoth - is getting into the game.</p>

<p>Spotted all over London are these bus stops with built in advertising poster.  Look on the right hand side, and you'll see the interactive element.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/04/Bus-Stop-with-QR-NFC-540x1024.jpg" alt="Bus Stop with QR NFC" width="540" height="1024" class="alignnone size-large wp-image-8071"></p>

<p><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/04/Clear-Channel-NFC-QR.jpg" alt="Clear Channel NFC QR" width="150" height="476" class="alignleft size-full wp-image-8073"> It's pretty well designed, although the disclaimer "standard network rates apply" seems a little redundant - and weirdly placed.  The QR code is oddly rotated, but that's just my personal preference.</p>

<p>The QR code is large enough to scan easily in broad daylight.  If the code was integrated with the poster, it would also been backlit which would have been helpful when it is dark.  The NFC scanned easily - once I'd flipped my phone's settings on.</p>

<p>Using a call to action of "Tap" and "Scan" assumes that the users will know what to do - and how to get an app if they need it.</p>

<p>The QR and the NFC both go to unique URLs - helpful for Clear Channel to see from where the hits are coming.</p>

<p>But what happens when you scan the hybrid QR/NFC?</p>

<p>This abomination....</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/04/CCNFC.png" alt="CCNFC" width="300" height="438" class="alignnone size-full wp-image-8072">

<p>What The Juddering Fuck?  Why on Earth would you deploy dozens of these interactive adverts and then not point them anywhere useful?  Even if the campaigns aren't ready, couldn't Clear Channel point to their YouTube Channel, or their Twitter feed, or <strong>anything!</strong></p>

<p>Some people are going to interact with this poster and come to the conclusion that there's nothing worthwhile to be gained by attempting to scan again.</p>

<p>Clear Channel are really shooting themselves in the foot by deploying this before their technology is ready.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=8070&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2013/04/clear-channels-nfc-mistake/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Lambeth's Brilliant QR Codes]]></title>
		<link>https://shkspr.mobi/blog/2013/04/lambeths-brilliant-qr-codes/</link>
					<comments>https://shkspr.mobi/blog/2013/04/lambeths-brilliant-qr-codes/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Fri, 12 Apr 2013 11:00:39 +0000</pubDate>
				<category><![CDATA[qr]]></category>
		<category><![CDATA[government]]></category>
		<category><![CDATA[planning]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=8004</guid>

					<description><![CDATA[Strolling along London&#039;s Southbank the other day, I came across one of those new-fangled information posts.  Crudely stuck to it was a decidedly old-fashioned piece of paper bearing a planning notice.    But! My my! What&#039;s that in the lower left corner? A QR code!    Unsurprisingly, scanning the code takes you directly to the planning application on the web.  Although the site isn&#039;t specifically…]]></description>
										<content:encoded><![CDATA[<p>Strolling along London's Southbank the other day, I came across one of those new-fangled information posts.  Crudely stuck to it was a decidedly old-fashioned piece of paper bearing a planning notice.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/04/Lambeth-QR-Planning-Poster.jpg" alt="Lambeth QR Planning Poster" width="600" height="537" class="alignnone size-full wp-image-8006">

<p>But! My my! What's that in the lower left corner? A QR code!</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/04/Lambeth-QR-Detail.jpg" alt="Lambeth QR Detail" width="600" height="450" class="alignnone size-full wp-image-8005">

<p>Unsurprisingly, scanning the code takes you directly to the planning application on the web.  Although the site isn't specifically designed for mobile, it's light weight enough to access even on a low powered phone.  The planning application lets you view and make comments, read the planning application and any associated documents, and track its progress.  All rather nifty!</p>

<p>This is close to a perfect use-case for local government use of QR technology.</p>

<ul>
    <li>QR codes are free (libre and gratis) meaning there's no extra expense for tax payers.</li>
    <li>Increases engagement with the community.</li>
    <li>Reduces friction between citizens and state.</li>
    <li>There's a great call to action (although I got confused when it said "view the application" and thought it might try to install something on my phone!)</li>
</ul>

<p>So, well done Lambeth for trying something innovative.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=8004&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2013/04/lambeths-brilliant-qr-codes/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[A Small QR Tip]]></title>
		<link>https://shkspr.mobi/blog/2013/01/a-small-qr-tip/</link>
					<comments>https://shkspr.mobi/blog/2013/01/a-small-qr-tip/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 17 Jan 2013 13:01:36 +0000</pubDate>
				<category><![CDATA[qr]]></category>
		<category><![CDATA[QR Codes]]></category>
		<category><![CDATA[scanning]]></category>
		<category><![CDATA[small]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=7398</guid>

					<description><![CDATA[One of my hobbies is looking for QR codes by leafing through the free papers which blight the city of London.  Yes, I lead a tragic existence, but it keeps me off the streets - so let me be, eh?  Most of the QR codes that I see now are pretty good.  They have clear explanatory text, point to mobile websites, and generally follow the Ten Commandments for QR codes.  But, every so often I spot one…]]></description>
										<content:encoded><![CDATA[<p>One of my hobbies is looking for QR codes by leafing through the free papers which blight the city of London.  Yes, I lead a tragic existence, but it keeps me off the streets - so let me be, eh?</p>

<p>Most of the QR codes that I see now are pretty good.  They have clear explanatory text, point to mobile websites, and generally follow the <a href="https://shkspr.mobi/blog/2011/05/you-are-too-stupid-to-use-qr-codes-correctly/">Ten Commandments for QR codes</a>.</p>

<p>But, every so often I spot one which really shouldn't have been let out in the wild.  A property company (who shall remain nameless to spare their blushes) printed this QR code at the bottom of an advert - beside the logos showing how green and ISO compliant they are.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/01/Very-Small-QR-Printing-Nail.jpg" alt="Very Small QR Printing Nail" width="600" height="552" class="size-full wp-image-7399">

<p>Wow! It's not that I have monster-sized fingers - that QR code really is tiny.</p>

<p>Let's zoom in and take a look at what the newspaper printing process has done to the code.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/01/Very-Small-QR-Printing.jpg" alt="Very Small QR Printing" width="600" height="575" class="size-full wp-image-7400">

<p>As we can see, the printing resolution just isn't sufficient for a code as tiny as this.  The fragile pixels become an inconsistent mess, straight lines go wobbly, and the ink bleeds into the whitespace.</p>

<p>QR codes need unambiguous pixels with a clear delineation between content and space.  Lines need to be straight, squares need to be square, and the contrast between colours needs to be high.  This QR code fails on all levels.</p>

<p>Even if this code had been laser printed onto premium white paper, it would still be too small for many cameras to scan.  It would require a macro focus that is lacking in all but high end devices.</p>

<p>One of the most important rules of QR codes is simply "test".  This code just doesn't work.  It could lead to the greatest mobile experience known to humanity - but if a user can't actually get to it, all is for naught.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=7398&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2013/01/a-small-qr-tip/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Why QR Codes Are Perfect For The Internet of Things]]></title>
		<link>https://shkspr.mobi/blog/2013/01/why-qr-codes-are-perfect-for-the-internet-of-things/</link>
					<comments>https://shkspr.mobi/blog/2013/01/why-qr-codes-are-perfect-for-the-internet-of-things/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 08 Jan 2013 12:35:55 +0000</pubDate>
				<category><![CDATA[qr]]></category>
		<category><![CDATA[internet of things]]></category>
		<category><![CDATA[nfc]]></category>
		<category><![CDATA[QR Codes]]></category>
		<category><![CDATA[rfid]]></category>
		<category><![CDATA[salt and pepper]]></category>
		<category><![CDATA[usability]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=7320</guid>

					<description><![CDATA[My first QR code post of 2013!  I&#039;m a long term fan of QR codes.  I know some people don&#039;t like the idea of augmenting reality with specific tags for computer vision - but I do.  Some people prefer RFID/NFC.  Others still prefer dedicated augmented video apps.  As I&#039;ve written many times before, QR codes have several substantial advantages over alternate technologies.       QR is a free and open…]]></description>
										<content:encoded><![CDATA[<p>My first QR code post of 2013!</p>

<p>I'm a <a href="https://shkspr.mobi/blog/category/qr/">long term fan of QR codes</a>.  I know some people don't like the idea of augmenting reality with specific tags for computer vision - but I do.  Some people prefer <a href="https://shkspr.mobi/blog/2011/03/the-problem-with-rfid/">RFID/NFC</a>.  Others still prefer dedicated augmented video apps.</p>

<p>As I've written many times before, QR codes have several substantial advantages over alternate technologies.</p>

<ul>
    <li>QR is a free and open standard.</li>
    <li>Compatible with every phone with a camera.</li>
    <li>No need to build or use a dedicated app.</li>
    <li>Free to generate.</li>
</ul>

<p>Today, in the canteen, I think I have found the quintessential example of just how radical the open simplicity of QR codes is.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/01/Salt-and-Pepper-QR-Codes.jpg" alt="Salt and Pepper QR Codes" width="500" height="525" class="alignnone size-full wp-image-7323"></p>

<p>Tiny sachets of salt an pepper.  Created in their millions.  Given away for free the world over.  Each stamped with a unique ID which can be recognised easily by a computer.</p>

<p>For scale, this is how small they are.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/01/Pepper-pack-with-QR-code.jpg" alt="Pepper pack with QR code" width="500" height="391" class="alignnone size-full wp-image-7322"></p>

<p>Now, I'll be the first to admit that a website about salt is not the most riveting thing in the world. But that's exactly the point!
<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/01/Salt-Website.png" alt="Salt Website" width="320" height="546" class="alignleft size-full wp-image-7321">  The costs associated with setting this up are close to zero.  Amortized over every sachet it's probably less than the cost of a grain of salt.</p>

<p>There's no opportunity cost lost - what else could you stick on the side of a packet that small?</p>

<p>I like the fact that I can instantly see nutritional information and can certainly see it being more useful on larger items.  But, again, that's the point. QR codes are free - so you might as well stick them on <strong>everything</strong>.</p>

<p>It's this dual freedom - free to generate and free to print - which makes QR codes ubiquitous.</p>

<p>The main problem with <a href="https://shkspr.mobi/blog/2011/03/the-problem-with-rfid/">NFC</a> (aside from lack of readers, inability for a user to tell a tag is present, proximity needed, etc) is <strong>cost</strong>.  Even bought in bulk, those little RFID chips have a price.  Buying 20,000 of them to stick on salt packets is an extravagance an unlikely to see any ROI to offset the cost of buying the chips and changing the manufacturing process to incorporate them.  Not to mention that the chips can't be recycled easily.</p>

<p>QR Codes? Black ink.  If you're already printing onto a surface, QR codes don't require any retooling or any equipment purchases.</p>

<p>I know that in our modern world we often strive for technical excellence, innovation, and quality.  However, where there are two relatively compatible technologies, it is usually the cheaper technology which wins.</p>

<blockquote>
In many of the more relaxed civilizations on the Outer Eastern Rim of the Galaxy, the Hitchhiker's Guide has already supplanted the great Encyclopaedia Galactica as the standard repository of all knowledge and wisdom, for though it has many omissions and contains much that is apocryphal, or at least wildly inaccurate, it scores over the older, more pedestrian work in two important respects. First, it is <em>slightly cheaper</em>; and second, it has the words "DON'T PANIC" inscribed in large friendly letters on its cover.
    —Hitchhiker's Guide to the Galaxy
</blockquote>

<p>The <a href="http://en.wikipedia.org/wiki/Internet_of_Things">Internet of Things</a> will be powered - in part - by QR codes.  Try not to get too upset about it.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=7320&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2013/01/why-qr-codes-are-perfect-for-the-internet-of-things/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
	</channel>
</rss>
