<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Wil Tan &#187; mobile</title>
	<atom:link href="http://dready.org/blog/category/mobile/feed/" rel="self" type="application/rss+xml" />
	<link>http://dready.org/blog</link>
	<description>musings on internationalized identifiers: domain names, OpenID, TLDs</description>
	<lastBuildDate>Thu, 15 Dec 2011 03:42:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Emoji Encoding Conversion between Carriers</title>
		<link>http://dready.org/blog/2009/02/01/emoji-encoding-conversion/</link>
		<comments>http://dready.org/blog/2009/02/01/emoji-encoding-conversion/#comments</comments>
		<pubDate>Sat, 31 Jan 2009 17:52:05 +0000</pubDate>
		<dc:creator>wil</dc:creator>
				<category><![CDATA[japan]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[unicode]]></category>
		<category><![CDATA[emoji]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://dready.org/blog/?p=215</guid>
		<description><![CDATA[I remember reading about Apple supporting emoji on the iPhone OS 2.2. Now that I&#8217;ve upgraded, I decided to try it out but for could never find it after hunting through the keyboard preferences. Googling showed that these cute little emoticons are only available for Softbank users. Thankfully, Steven Troughton-Smith has figured out that by [...]
No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.macrumors.com/iphone/2008/10/05/iphone-2-2-includes-hidden-japanese-emoji-icons/"><img src="http://dready.org/blog/wp-content/uploads/2009/02/175357-emoji.jpg" alt="" title="emoji on iPhone" width="320" height="480" class="alignnone size-medium wp-image-216" /></a></p>
<p>I remember reading about Apple supporting <a href="http://dready.org/blog/2009/01/30/emoji-in-unicode/">emoji</a> on the iPhone OS 2.2. Now that I&#8217;ve upgraded, I decided to try it out but for could never find it after hunting through the keyboard preferences. Googling showed that these cute little emoticons are only available for Softbank users. Thankfully, <a href="http://blog.steventroughtonsmith.com/2008/11/how-to-enable-emoji-systemwide.html">Steven Troughton-Smith</a> has figured out that by editing a file on your iPhone backup, the &#8220;emoji&#8221; option suddenly shows up under <em>Settings</em> -&gt; <em>General</em> -&gt; <em>Keyboard</em> -&gt; <em>International Keyboards</em> -&gt; <em>Japanese</em>!</p>
<p>Now that I have the ability to enter these emoji on my iPhone, I figure I&#8217;d try it out by sending an email to myself. Alas, all I get is a list of of boxes. Time to look at the message content (relevant fields):</p>
<p><span id="more-215"></span></p>
<pre>
Content-Type: text/plain;
  charset=cp932;
  format=flowed
Content-Transfer-Encoding: base64
X-Mailer: iPhone Mail (5G77)
Mime-Version: 1.0 (iPhone Mail 5G77)
Subject: trying out emoji
Date: Sat, 31 Jan 2009 19:11:03 +0800

aGV5IHRoZXJlIPGQDQoNCvWc9d3wSPB78unzR/SY9Jv3RPCW9vnwlQ==
</pre>
<p>ok, pretty strange that it&#8217;s sent in <a href="http://en.wikipedia.org/wiki/Code_page_932">cp932</a> encoding, but we&#8217;ll see:</p>
<pre>
&gt;&gt;&gt; from base64 import b64decode
&gt;&gt;&gt; s = b64decode('aGV5IHRoZXJlIPGQDQoNCvWc9d3wSPB78unzR/SY9Jv3RPCW9vnwlQ==')
&gt;&gt;&gt; s
'hey there \xf1\x90\r\n\r\n\xf5\x9c\xf5\xdd\xf0H\xf0{\xf2\xe9\xf3G\xf4\x98\xf4\x9b\xf7D\xf0\x96\xf6\xf9\xf0\x95'
&gt;&gt;&gt; s.decode('cp932')
u'hey there \ue10b\r\n\r\n\ue407\ue448\ue008\ue03b\ue220\ue23b\ue347\ue34a\ue528\ue055\ue520\ue054'
&gt;&gt;&gt;
</pre>
<p>The Unicode code points look like they do correspond to the Softbank private use ones, so I&#8217;m going to use the <a href="http://code.google.com/p/emoji4unicode/">emoji4unicode</a> package to convert it to HTML. The following Python script will convert it to the various carrier&#8217;s representation:</p>
<pre>
import emoji4unicode
import carrier_data

s = b64decode('aGV5IHRoZXJlIPGQDQoNCvWc9d3wSPB78unzR/SY9Jv3RPCW9vnwlQ==')
uni = s.decode('cp932')

sd = carrier_data.GetSoftbankData()
dd = carrier_data.GetDocomoData()
kd = carrier_data.GetKddiData()

emoji4unicode.Load()
def find_symbol(pua, carrier):
    for sym in emoji4unicode.GetSymbols():
        uni = sym.GetCarrierUnicode(carrier)
        if uni and uni == pua:
            return sym

def map_symbol(sym, carrier, cdata):
    uni = sym.GetCarrierUnicode(carrier)
    if not uni: # no mapping for this carrier
        return sym.GetTextFallback()
    else:
        if uni.startswith("&gt;"): # mapped
            if len(uni) &gt; 5:
                raise Exception, "cannot handle this yet"
            uni = uni[1:]

        return cdata.SymbolFromUnicode(uni).ImageHTML()

softbank = []
docomo = []
kddi = []

for u in uni:
    hex = "%04X" % ord(u)
    if u &gt; '\x7F':
        sym = find_symbol(hex, "softbank")

        softbank.append(sd.SymbolFromUnicode(hex).ImageHTML())
        kddi.append(map_symbol(sym, "kddi", kd))
        docomo.append(map_symbol(sym, "docomo", dd))
    elif u == '\n':
        softbank.append('&lt;br /&gt;')
        kddi.append('&lt;br /&gt;')
        docomo.append('&lt;br /&gt;')
    else:
        softbank.append(u)
        kddi.append(u)
        docomo.append(u)

print "Softbank:&lt;br /&gt;", ''.join(softbank).encode('utf-8')
print "&lt;hr /&gt;KDDI:&lt;br /&gt;", ''.join(kddi).encode('utf-8')
print "&lt;hr /&gt;DoCoMo:&lt;br /&gt;", ''.join(docomo).encode('utf-8')
</pre>
<p>Results below:</p>
<div style="background: #333">
<strong>Softbank</strong>:<br /> hey there <img src=http://creation.mb.softbank.jp/web/img/E101/E10B_20.gif></p>
<p><img src=http://creation.mb.softbank.jp/web/img/E401/E407_20.gif><img src=http://creation.mb.softbank.jp/web/img/E401/E448_20.gif><img src=http://creation.mb.softbank.jp/web/img/E001/E008_20.gif><img src=http://creation.mb.softbank.jp/web/img/E001/E03B_20.gif><img src=http://creation.mb.softbank.jp/web/img/E201/E220_20.gif><img src=http://creation.mb.softbank.jp/web/img/E201/E23B_20.gif><img src=http://creation.mb.softbank.jp/web/img/E301/E347_20.gif><img src=http://creation.mb.softbank.jp/web/img/E301/E34A_20.gif><img src=http://creation.mb.softbank.jp/web/img/E501/E528_20.gif><img src=http://creation.mb.softbank.jp/web/img/E001/E055_20.gif><img src=http://creation.mb.softbank.jp/web/img/E501/E520_20.gif><img src=http://creation.mb.softbank.jp/web/img/E001/E054_20.gif>
</div>
<div style="background: #333">
<strong>KDDI</strong>:<br /> hey there <img src=http://www001.upp.so-net.ne.jp/hdml/emoji/e/254.gif></p>
<p><img src=http://www001.upp.so-net.ne.jp/hdml/emoji/e/444.gif><img src=http://www001.upp.so-net.ne.jp/hdml/emoji/e/489.gif><img src=http://www001.upp.so-net.ne.jp/hdml/emoji/e/94.gif><img src=http://www001.upp.so-net.ne.jp/hdml/emoji/e/342.gif><img src=http://www001.upp.so-net.ne.jp/hdml/emoji/e/184.gif><img src=http://www001.upp.so-net.ne.jp/hdml/emoji/e/5.gif><img src=http://www001.upp.so-net.ne.jp/hdml/emoji/e/243.gif><img src=http://www001.upp.so-net.ne.jp/hdml/emoji/e/437.gif><img src=http://www001.upp.so-net.ne.jp/hdml/emoji/e/249.gif><img src=http://www001.upp.so-net.ne.jp/hdml/emoji/e/252.gif><img src=http://www001.upp.so-net.ne.jp/hdml/emoji/e/713.gif><img src=http://www001.upp.so-net.ne.jp/hdml/emoji/e/246.gif>
</div>
<div style="background: #333">
<strong>DoCoMo</strong>:<br /> hey there <img src=http://www.nttdocomo.co.jp/service/imode/make/content/pictograph/extention/images/74.gif width=16 height=16></p>
<p><img src=http://www.nttdocomo.co.jp/service/imode/make/content/pictograph/basic/images/143.gif width=16 height=16>[サンタ]<img src=http://www.nttdocomo.co.jp/service/imode/make/content/pictograph/basic/images/68.gif width=16 height=16><img src=http://www.nttdocomo.co.jp/service/imode/make/content/pictograph/extention/images/53.gif width=16 height=16><img src=http://www.nttdocomo.co.jp/service/imode/make/content/pictograph/basic/images/129.gif width=16 height=16>[<][イチゴ][ナス][サル]<img src=http://www.nttdocomo.co.jp/service/imode/make/content/pictograph/extention/images/69.gif width=16 height=16>[イルカ][クジラ]
</div>
<p>As you can see, DoCoMo has the least number of emoji&#8217;s, so many of the characters like &#8220;Santa&#8221;, &#8220;Strawberry&#8221;, &#8220;Eggplant&#8221;, &#8220;Monkey&#8221;, &#8220;Dolphin&#8221; and &#8220;Whale&#8221; are substituted by the fallback text format.</p>
<p>Do note that the python script is not optimized at all, and loops through every emoji in the database for each character it needs to convert. Also, if you need such functionality in your application, there are various libraries out there that already does the mapping well. This is just an experiment.</p>
<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://dready.org/blog/2009/02/01/emoji-encoding-conversion/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Emoji to be encoded in Unicode</title>
		<link>http://dready.org/blog/2009/01/30/emoji-in-unicode/</link>
		<comments>http://dready.org/blog/2009/01/30/emoji-in-unicode/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 16:48:46 +0000</pubDate>
		<dc:creator>wil</dc:creator>
				<category><![CDATA[japan]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[unicode]]></category>
		<category><![CDATA[emoji]]></category>
		<category><![CDATA[i18n]]></category>

		<guid isPermaLink="false">http://dready.org/blog/?p=208</guid>
		<description><![CDATA[The Unicode Technical Committee is working on encoding emoji (絵文字) in the Unicode Standard and ISO10646. It has spurred loads of discussions on the Unicode mailing list with more than a handful of forked threads, leading to fundamental questions like whether we should even encode them, and what constitutes a character. Not to worry, the [...]
No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>The Unicode Technical Committee is working on encoding <a href="http://en.wikipedia.org/wiki/Emoji">emoji</a> (絵文字) in the Unicode Standard and ISO10646. It has spurred loads of discussions on the <a href="http://www.unicode.org/cgi-bin/CurrentArchive.pl">Unicode mailing list</a> with more than a handful of forked threads, leading to fundamental questions like whether we should even encode them, and what constitutes a character.</p>
<p>Not to worry, the Unicode consortium is a veteran when it comes to dealing with the hairy issues of creating standards that work across languages, cultures and geographic regions. They simply can&#8217;t please everyone.</p>
<p>To me, the motivation for this is clear &#8212; interoperability. The current state of affairs in the Japanese mobile industry leaves a lot to be desired: across the carriers, there exist different sets of supported emoji&#8217;s, different private-use characters, substitution mappings, and code pages (user-defined characters in Shift_JIS, really). As one can imagine, the results is chaos, and as I software engineer, I really don&#8217;t want to imagine what those poor software engineers have to do to make it &#8220;just work&#8221; when a message cross the carrier boundaries.</p>
<p>To illustrate my point, let&#8217;s look at what Google does when you send a message with some emoji characters from GMail to each of DoCoMo, Softbank, and au.</p>
<p><a href="http://dready.org/blog/wp-content/uploads/2009/01/gmail-emoji.png"><img src="http://dready.org/blog/wp-content/uploads/2009/01/gmail-emoji.png" alt="" title="Emoji experiment on GMail" width="500" height="580" class="alignnone size-full wp-image-209" /></a></p>
<p><span id="more-208"></span></p>
<p>The screenshot above is for DoCoMo, but I also repeated the experiment for Softbank and au. From the bounce message, one can easily tell that what is saved as a sent message and what gets actually transmitted to each of the carriers&#8217; SMTP server are all distinct in their encodings.</p>
<p>What&#8217;s saved in Gmail when you click on &#8220;Show original&#8221; embeds the graphics using standard mime techniques (<code>multipart/related</code> with CID URIs a.k.a <a href="https://www.ietf.org/rfc/rfc2111.txt">RFC 2111</a>) with an extension attribute called <em>goomoji</em> in the HTML version, which carries part of Unicode private use character assigned for it. For example, the crab <img src="https://mail.google.com/mail/e/1E3" alt="crab [カニ]" /> is assigned <code>U+FE1E3</code> in Google, so its <code>goomoji</code> value is <code>1E3</code>.</p>
<p>What&#8217;s sent to DoCoMo is a different story altogether:</p>
<p>It&#8217;s a standard <code>multipart/alternative</code> message with 2 parts: <code>text/plain</code> and <code>text/html</code>, both encoded in Shift_JIS. Decoding the <code>text/plain</code> part gives:</p>
<pre>
&gt;&gt;&gt; import base64
&gt;&gt;&gt; sjis = base64.b64decode("W4NKg2pd+aT56ApYT1hPIIFfKF4tXimBXgoKaHR0cDovL3hyaS5uZXQvPXdpbAo=")
&gt;&gt;&gt; sjis
'[\x83J\x83j]\xf9\xa4\xf9\xe8\nXOXO \x81_(^-^)\x81^\n\nhttp://xri.net/=wil\n'
&gt;&gt;&gt; print sjis.decode("shift_jis", 'ignore')
[カニ]
XOXO ＼(^-^)／

http://xri.net/=wil
</pre>
<p>Since DoCoMo doesn&#8217;t have the <a href="http://en.wikipedia.org/wiki/Decapoda">decapods</a> in their emoji set, it gets encoded as <a href="http://www.unicode.org/~scherer/emoji4unicode/snapshot/full.html#e-1E3">カニ (Japanese for crab) in square brackets</a>. Next comes the double musical notes <a href="http://www.unicode.org/~scherer/emoji4unicode/snapshot/full.html#e-814"><img src="https://mail.google.com/mail/e/814" alt="musical notes メロディ" /></a>, which is assigned a user defined Shift_JIS value of F9A4 in DoCoMo (explains why I had to pass the &#8216;ignore&#8217; parameter to the decode method above, Python has no way to map that that sequence to Unicode and therefore barfs). Same goes for the tulip <img src="https://mail.google.com/mail/e/03D" alt="Tulip チューリップ" />. Ignoring the plain text &#8220;XOXO&#8221;, the last emoticon is a <em>hug face</em> <img src="https://mail.google.com/mail/e/35D" alt="hug face emoticon ＼(^-^)／" />, which <a href="http://www.unicode.org/~scherer/emoji4unicode/snapshot/full.html#e-35D">Google assigned a code point to</a> but none of the carriers use a graphic to represent. In fact, this is mapped to a Kao-moji (顔文字 &#8211; &#8220;face words&#8221;).</p>
<p>For au (KDDI), the message was also sent in <code>multipart/alternative</code> with  <code>text/plain</code> and <code>text/html</code> parts but this time encoded in ISO-2022-JP. Similar situation here, where crab =&gt; [カニ], KDDI&#8217;s version of ISO-2022-JP for the musical notes and tulip emoji, and kaomoji for the hugs.</p>
<p>Similar deal for Softbank, but the <code>charset</code> specified is <code>PDC</code>, but it smells just like Shift_JIS with user-defined characters to me.</p>
<p>I hope by now you have an appreciation of the kind of fiddling that Google engineers had to do in order to get their messages to display properly on Japanese mobile phones, just because the carriers decided to go invent their own mappings and character sets. It&#8217;s no wonder that <a href="http://google-opensource.blogspot.com/2008/11/emoji-for-unicode-open-source-data-for.html">Google</a> and Apple, with its recently announced emoji support in iPhone, are among those supporting this effort.</p>
<p>The ongoing work can be found <a href="http://sites.google.com/site/unicodesymbols/Home/emoji-symbols">here</a> and all the emoji&#8217;s is available <a href="http://www.unicode.org/%7Escherer/emoji4unicode/snapshot/utc.html">here</a> and <a href="http://www.unicode.org/%7Escherer/emoji4unicode/snapshot/full.html">here</a> in gory details.</p>
<p>If I had the time and luxury (read: paid) to participate, I would. I wish them all the best and hope to see a good set of emoji&#8217;s in Unicode soon.</p>
<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://dready.org/blog/2009/01/30/emoji-in-unicode/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>On Mobile OpenID in Japan</title>
		<link>http://dready.org/blog/2009/01/02/mobile-openid-in-japan/</link>
		<comments>http://dready.org/blog/2009/01/02/mobile-openid-in-japan/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 06:12:24 +0000</pubDate>
		<dc:creator>wil</dc:creator>
				<category><![CDATA[japan]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[openid]]></category>

		<guid isPermaLink="false">http://dready.org/blog/?p=190</guid>
		<description><![CDATA[This presentation by =zigorou (Toru Yamaguchi) titled &#8220;Considering OpenID for Mobile&#8221; (Thanks =peterd and =nat) is particularly interesting for me due in part to MojiPage as well as my dabblings in various OpenID implementations. Knowing that mobile usability is an important topic for OpenID implementors and users, and the rest of world probably has a [...]
No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>This presentation by <a href="http://xri.net/=zigorou">=zigorou</a> (Toru Yamaguchi) titled <a href="http://www.slideshare.net/zigorou/mobile-openid-presentation">&#8220;Considering OpenID for Mobile&#8221;</a> (Thanks <a href="http://identity4all.blogspot.com/">=peterd</a> and <a href="http://www.sakimura.org/en/">=nat</a>) is particularly interesting for me due in part to <a href="http://mojipage.com">MojiPage</a> as well as my dabblings in various OpenID implementations.</p>
<p>Knowing that mobile usability is an <a href="http://markmail.org/message/u6iaukohm2de7jsy">important</a> <a href="http://factoryjoe.com/blog/2008/01/13/the-openid-mobile-experience/">topic</a> for OpenID implementors and users, and the rest of world probably has a lot to learn from the Japanese mobile ecosystem, I decided to exercise my Japanese skills and extract some points out of the slides (no, I&#8217;m not going to, nor qualified enough to do a full translation. Try Google for that). Please note that this is merely a best-effort translation and any error you find is likely to come from my ignorance.</p>
<p>Translated version follows the actual presentation:</p>
<div style="width:425px;text-align:left" id="__ss_838307"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/zigorou/mobile-openid-presentation?type=powerpoint" title="Mobile Openid">Mobile Openid</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=mobileopenid-1229004050692216-1&#038;stripped_title=mobile-openid-presentation" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=mobileopenid-1229004050692216-1&#038;stripped_title=mobile-openid-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View SlideShare <a style="text-decoration:underline;" href="http://www.slideshare.net/zigorou/mobile-openid-presentation?type=powerpoint" title="View Mobile Openid on SlideShare">presentation</a> or <a style="text-decoration:underline;" href="http://www.slideshare.net/upload?type=powerpoint">Upload</a> your own. (tags: <a style="text-decoration:underline;" href="http://slideshare.net/tag/mobile">mobile</a> <a style="text-decoration:underline;" href="http://slideshare.net/tag/openid">openid</a>)</div>
</div>
<ul>
<li><strong>Considering Mobile OpenID</strong>
<ul>
<li>Taking into account Japan&#8217;s unique mobile scenario, explore the feasibility and methods of implementing mobile OpenID</li>
<li>Investigate if the protocol needs to be modified</li>
<li>Look at ways to make use of mobile characteristics to enhance usability</li>
</ul>
</li>
<li><strong>Limitations and Characteristics of Mobile (Devices)</strong>
<ul>
<li><strong>Technical Limitations</strong>
<ul>
<li>maximum URL length</li>
<li>Cookies support</li>
<li>IP address blocks and individual identification number (are we talking about carrier gateway IPs and identification headers?)</li>
</ul>
</li>
</ul>
<ul>
<li><strong>Device Limitations</strong>
<ul>
<li>manual URL entry &#8211; no way <img src='http://dready.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>manual ID/password input seems too difficult</li>
</ul>
</li>
</ul>
</li>
<li><strong>Maximum URL Length &#8212; Carrier Restrictions</strong>
<ul>
<li><strong>DoCoMo</strong>
<ul>
<li>According to <a href="http://www.nttdocomo.co.jp/service/imode/make/content/html/notice/standard/">&#8220;NTT DoCoMo&#8217;s standard / guide for common device capabilities&#8221;</a>&#8230;</li>
<li>Encoded URL maximum length = 512 bytes</li>
</ul>
</li>
</ul>
<ul>
<li><strong>au</strong>
<ul>
<li>From <a href="http://www.au.kddi.com/ezfactory/tec/spec/openappli.html">Open Appli (Java)</a>
<ul>
<li>Maximum 256 bytes and ASCII only</li>
<li>Since this is only for &#8220;Open Appli (Java)&#8221; stuff, this source may not be reliable</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li><strong>SoftBank</strong>
<ul>
<li>From <a href="http://creation.mb.softbank.jp/doc_tool/web_doc_tool.html">Web &amp; Network Technical Information / Development Tool -&gt; HTML Chapter &#8211; 2.5.8 URI Restrictions</a>
<ul>
<li>Roughly 1024 bytes</li>
<li>Since this is only for &#8220;Open Appli (Java)&#8221; stuff, this source may not be reliable</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li><strong>Summary: Assume 256 bytes</strong>
<ul>
<li>Surprisingly small &#8211; is that ok?</li>
<li>As for <em>au</em>, since source code is in Java, should assume at most 512 bytes</li>
</ul>
</li>
</ul>
</li>
<li><strong>URL Length &#8212; Practical Observation</strong>
<ul>
<li>Logging in to pibb using myopenid (with SREG)
<ul>
<li><code>checkid_setup</code> &gt; 567 bytes</li>
<li><code>id_res</code> &gt; 921 bytes</li>
<li><code>checkid_immediate</code> &gt; 430 bytes</li>
</ul>
</li>
</ul>
</li>
<li><strong>URL Length &#8212; Think Harder</strong>
<ul>
<li><acronym title="User Agent">UA</acronym> is used for <a href="http://openid.net/specs/openid-authentication-2_0.html#indirect_comm">Indirect Communication</a>, so we only need to consider <code>checkid_setup</code>/<code>checkid_immediate</code>, <code>id_res</code>/<code>setup_needed</code>/<code>cancel</code></li>
<li><code>checkid_*</code> authentication requests can be done using GET or POST. With POST requests, the URL parameters go into the request body.</li>
<li><code>id_res</code>/<code>setup_needed</code>/<code>cancel</code> comes in the form of HTTP redirect, so GET requests only</li>
<li>Empirically: <code>id_res</code> parameters requires a combined size of 728 bytes + the URL endpoint itself.</li>
</ul>
</li>
<li><strong>Content Body Limitation for POST</strong>
<ul>
<li>According to <a href="http://mobilehacker.g.hatena.ne.jp/ziguzagu/20070919/1190169316" title="HTTP POSTリクエスト時のContent-Body最大長">ziguzagu</a>: minimum 5KB (for DoCoMo PDC) =&gt; should be sufficient</li>
<li>we still need to solve the problem of indirect communication: <code>id_res</code> requires a lot of parameters</li>
</ul>
</li>
<li><strong>Tackling <code>id_res</code></strong>
<ul>
<li>Basics: OP attaches the authentication result as query parameters to the <code>return_to</code> URL and redirects the UA to it. Do we need anything other than the following for signature verification?
<ul>
<li><code>openid.mode</code></li>
<li><code>openid.ns</code></li>
<li><code>openid.response_nonce</code></li>
<li><code>openid.assoc_handle</code></li>
<li><code>openid.signed</code></li>
<li><code>openid.sig</code></li>
</ul>
</li>
<li>According to <a href="http://openid.net/specs/openid-authentication-2_0.html#verification">OpenID Authentication 2.0, Section 11 &#8220;Verifying Assertion&#8221;</a>:
<ul>
<li>The following steps are taken
<ol>
<li>Verifying <code>return_to</code> URL</li>
<li>Verifying discovered information</li>
<li>Checking the nonce</li>
<li>Verifying Signatures</li>
</ol>
</li>
<li>Are the first two steps absolutely necessary?</li>
<li>The basic goal is to verify the data from the OP via indirect communication, it might be good enough to verify signature + nonce in this step?</li>
<li>If we had the ability to verify signature in <code>check_authentication</code>, that might work?</li>
</ul>
</li>
<li>Therefore, adding <code>mode</code>, <code>signed</code>, <code>sig</code>, <code>response_nonce</code> to the URL, we get 468 bytes!</li>
<li>Moreover, if we delegate everything to the OP, we only need <code>response_nonce</code> and <code>op_endpoint</code> =&gt; 289 bytes.</li>
<li><strong>Conclusion</strong>
<ul>
<li>Minimize <code>id_res</code> as much as possible</li>
<li>If we have a method to ask the OP via direct communication (keying off <code>response_nonce</code>), that would work.</li>
<li>We could also obtain parameters like <code>identity</code> and <code>claimed_id</code> from the OP in the same vein</li>
</ul>
</li>
</ul>
</li>
<li><strong>Cookie support in Mobile</strong>
<ul>
<li>DoCoMo doesn&#8217;t support cookies in the first place</li>
<li>au has separate secure/non-secure characteristics (?), and there&#8217;s a pitfall in using cookies in non-secure mode. (Translator&#8217;s note: Not quite sure what this means)</li>
<li>For Softbank, one cannot access cookies in SSL realm in non-SSL pages (much like the secure-characteristic operation)</li>
<li>Therefore, cookies are not quite useful for us</li>
</ul>
</li>
<li><strong>The way that mobile web security works</strong> (Translator&#8217;s note: heavily interpreted)
<ul>
<li>There are published IP blocks that each mobile carrier uses</li>
<li>Unique identification number for the device/subscriber can be provided to the sites (via HTTP header). Used with published IP block, this is an effective way to identify a returning user.</li>
<li>Generally, it&#8217;s better to obtain the subscriber ID rather than device ID
<ul>
<li>imode ID</li>
<li>EZ-number</li>
<li>x-jphone-uid</li>
</ul>
</li>
<li>Instead of cookies, device/subscriber IDs are used for session management</li>
<li>The availability of device/subscriber ID also eases the login process considerably at the OP&#8217;s end (during <code>checkid_setup</code>/<code>checkid_immediate</code>)</li>
</ul>
</li>
<li><strong>What&#8217;s possible with Mobile OpenID</strong>
<ul>
<li>Unified identity for PC and mobile world</li>
<li>Possible ways to link the PC and mobile
<ul>
<li>enabling mobile to as your private information store</li>
<li>enabling mobile for settling payment</li>
</ul>
</li>
</ul>
</li>
<li><strong>Summary</strong>
<ul>
<li>There are challenges:
<ul>
<li>Maximum URL length problem
<ul>
<li>First, URL length needs to be shortened</li>
<li>Still, without fixing the protocol, we could exceed the URL length limit =&gt; counting on =nat for OpenID Authentication 2.1 <img src='http://dready.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
</li>
<li>Unique identification + IP &#8212; increases the convenience of using OpenID on mobile, but one must always remember to update the IP blocks lists.
      </li>
</ul>
</li>
<li>Looking forward to more active discussions on Mobile OpenID next year
    </li>
</ul>
</li>
</ul>
<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://dready.org/blog/2009/01/02/mobile-openid-in-japan/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Domain Tool for iPhone &#8212; whois on the move</title>
		<link>http://dready.org/blog/2008/10/03/domain-tool-for-iphone-whois-on-the-move/</link>
		<comments>http://dready.org/blog/2008/10/03/domain-tool-for-iphone-whois-on-the-move/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 10:32:14 +0000</pubDate>
		<dc:creator>wil</dc:creator>
				<category><![CDATA[dns]]></category>
		<category><![CDATA[domaintool]]></category>
		<category><![CDATA[icann]]></category>
		<category><![CDATA[idn]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[domain]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[whois]]></category>

		<guid isPermaLink="false">http://dready.org/blog/?p=173</guid>
		<description><![CDATA[Introducing DomainTool — an iPhone application for querying domain name whois information. I wrote this to learn iPhone programming (with a certain killer app in mind) as well as to scratch my own itch. Occasionally, I find myself needing to think of a product name or domain name for a web site. Ideas can knock [...]
No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Introducing <a href="http://mdomaintool.com/">DomainTool</a> — an iPhone application for querying domain name whois information. I wrote this to learn iPhone programming (with a certain killer app in mind) as well as to scratch my own itch.</p>
<p>Occasionally, I find myself needing to think of a product name or domain name for a web site. Ideas can knock on my head at any time: at lunch, in the toilet or waiting in the queue. I could note it down on a generic note taker on the phone, or jot it down on a piece of paper, but nothing beats being able to instantly find out if the domain is available and keep track of it in a dedicated app. Hence, DomainTool was born.</p>
<p>As with any great app, it should be simple to use, and addresses a focused need. Thus, you&#8217;ll find the following grand feature list:</p>
<ul>
<li>Query <a href="http://en.wikipedia.org/wiki/WHOIS" title="WHOIS" rel="wikipedia" class="zem_slink">WHOIS</a> servers to find out if a domain name is taken. Similar to the command line whois tool</li>
<li>Bookmark a domain name, and query it again anytime</li>
<li>Supports all TLD that has a published WHOIS server: COM, NET, ORG, BIZ, INFO, CC, JP, CN, TW, KR, MY, SG, PR, DE, EU, and many more!</li>
<li>Supports Internationalized Domain Names (IDN)</li>
</ul>
<p>Some screenshots:</p>
<p><img alt="" src="http://mdomaintool.com/m/images/shot1.jpg" class="alignnone" width="320" height="460" /></p>
<p><img alt="" src="http://mdomaintool.com/m/images/shot2.jpg" class="alignnone" width="320" height="460" /></p>
<p><img alt="" src="http://mdomaintool.com/m/images/shot3.jpg" class="alignnone" width="320" height="460" /></p>
<p><img alt="" src="http://mdomaintool.com/m/images/shot4.jpg" class="alignnone" width="320" height="460" /></p>
<p>By now, I suppose you&#8217;re dying to try it out on your iPhone, and I can certainly sympathize with that. It can be yours for USD0.99 (or the equivalent in your currency) &#8212; 70% of which goes to my coffee bank, and the rest goes to Mr. Jobs.</p>
<p><a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=288873100&#038;mt=8"><strong><big>Get it here!</big></strong></a></p>
<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://dready.org/blog/2008/10/03/domain-tool-for-iphone-whois-on-the-move/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iPhone-blogging</title>
		<link>http://dready.org/blog/2008/07/31/iphone-blogging/</link>
		<comments>http://dready.org/blog/2008/07/31/iphone-blogging/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 00:02:21 +0000</pubDate>
		<dc:creator>wil</dc:creator>
				<category><![CDATA[blogging]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://dready.org/blog/2008/07/31/iphone-blogging/</guid>
		<description><![CDATA[I&#8217;ve always wanted to post to my own blog from the mobile phone rather than using third party blogging platforms. Well, here it is &#8211; wordpress for iphone! Now, if only I can copy and paste the URL for you. No related posts. Related posts brought to you by Yet Another Related Posts Plugin.
No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve always wanted to post to my own blog from the mobile phone rather than using third party blogging platforms. Well, here it is &#8211; wordpress for iphone! Now, if only I can copy and paste the URL for you.</p>
<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://dready.org/blog/2008/07/31/iphone-blogging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

