<?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>GirlieMac! Blog &#187; iPhone</title>
	<atom:link href="http://girliemac.com/blog/category/iphone/feed/" rel="self" type="application/rss+xml" />
	<link>http://girliemac.com/blog</link>
	<description>Web and Mobile Development</description>
	<lastBuildDate>Tue, 27 Dec 2011 22:05:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Open Web Camp III</title>
		<link>http://girliemac.com/blog/2011/07/19/open-web-camp-iii/</link>
		<comments>http://girliemac.com/blog/2011/07/19/open-web-camp-iii/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 01:18:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[GirlieMac! News]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Nokia]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[Palm]]></category>
		<category><![CDATA[WAP]]></category>
		<category><![CDATA[WebKit]]></category>
		<category><![CDATA[WinMo]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[w3c]]></category>

		<guid isPermaLink="false">http://girliemac.com/blog/?p=244</guid>
		<description><![CDATA[I had this wonderful opportunity to speak at OpenWebCamp III at Stanford University on this weekend, and I feel very honor to be there with so many [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fgirliemac.com%252Fblog%252F2011%252F07%252F19%252Fopen-web-camp-iii%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fis.gd%2FpQQxJS%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Open%20Web%20Camp%20III%20%23mobile%20%23w3c%22%20%7D);"></div>
<p><img src="http://girliemac.com/blog/wp-content/uploads/2011/07/owc-logo-orig.png" alt="owc-logo" />
<p>I had this wonderful opportunity to speak at <a href="http://openwebcamp.org/" target="_blank">OpenWebCamp III</a> at Stanford University on this weekend, and I feel very honor to be there with so many great speakers and attendees. </p>
<p>Apparently, I have been doing mobile development longer than most of people, I picked the subject on developing mobile web, and how it has been changed and what we can do next.</p>
<p>I covered the topics including:</p>
<ul>
<li>How the mobile development has changed from WML, XHTML-MP, HTML4 and finally HTML5 with CSS3
<li>Legacy to HTML5: using input attributes to make easier for a user to type on phone
<li>Dealing with smarter phones: Viewport and Media-queries
<li>High DPI display: CSS pixel != Device pixel
<li>Device API
</ul>
<p><a href="http://girliemac.com/slides/owc3/" target="_blank">My slides, &#8220;WAP to HTML5: Mobile web &#8211; past, present, and future&#8221; is available in html5</a>, not Powepoint or Keynotes so I couldn&#8217;t post it on SlideShare!</p>

]]></content:encoded>
			<wfw:commentRss>http://girliemac.com/blog/2011/07/19/open-web-camp-iii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simulating MacOS Dock-like menu with CSS3</title>
		<link>http://girliemac.com/blog/2010/06/02/simulating-macos-dock-like-menu-with-css3/</link>
		<comments>http://girliemac.com/blog/2010/06/02/simulating-macos-dock-like-menu-with-css3/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 06:14:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Sandbox]]></category>
		<category><![CDATA[WebKit]]></category>

		<guid isPermaLink="false">http://girliemac.com/blog/?p=173</guid>
		<description><![CDATA[Since my original &#8220;CSS Aqua button&#8221; written last year, I have seen more and more fan CSS3 UI mimic of MacOS components around! I think I have [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fgirliemac.com%252Fblog%252F2010%252F06%252F02%252Fsimulating-macos-dock-like-menu-with-css3%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Simulating%20MacOS%20Dock-like%20menu%20with%20CSS3%22%20%7D);"></div>
<p><img src="http://girliemac.com/blog/wp-content/images/dock-screenshot.jpg" alt="css3 Dock screenshot"/></p>
<p>
Since my original &#8220;CSS Aqua button&#8221; written last year, I have seen more and more fan CSS3 UI mimic of MacOS components around! I think I have seen some Mac docks too, but as I remember they all use jQuery.<br />
So I was thinking about making one only with CSS.
</p>
<p>Initially I thought it was easy &#8211; let&#8217;s make an hovered icon larger like 200%, and make siblings in 150% of the original size using CSS sibling selector, and done! A piece of cake, huh? &#8211; Then I realized I made a mistake. The adjacent-sibling selector apply to an element which is immediately <em>after</em> the element in markup, not both before and after.<br />
Oh well, so I needed to write a minimal JavaScript (so you don&#8217;t need to import a whole JS library) to add a class name to the element comes before the hovered object.</p>
<p>Anyway, here&#8217;s the <a href="http://girliemac.com/sandbox/dock.html" target="_blank">live-demo!</a> (Try it with the the latest Webkit Nightly or Safari 4) for the best experience!), and I&#8217;ll show you how I did-
</p>
<h3>Markup (Simplified)</h3>
<p>Let&#8217;s create menu items as a list.</p>
<pre class="html">
<code>
&lt;div id="dock-container"&gt;
  &lt;div id="dock"&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;a href="http://android.com"&gt;&lt;img src="images/dock-icons/android.png"/>&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://palm.com"&gt;&lt;img src="images/dock-icons/palm.png"/&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;...
  &lt;/ul&gt;
  &lt;div class="base"&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
</code>
</pre>
<p>The list should be displayed horizontally by setting the style to <code>#dock li {display:inline-block}</code>. Please see the source code from the demo for the details.
</p>
<h3>Magnify the icon with CSS transform</h3>
<p>
<img style="border:1px solid #666;" src="http://girliemac.com/blog/wp-content/images/dock-tutorial.png" align="right"/>First, let&#8217;s define the dock icon animation with css transition.<br />
The origin of the transform has to set to bottom, so the icon doesn&#8217;t scale from the middle of the icon. (Diagram #1).</p>
<p>I used only a webkit extension for this example but you can use <code>-moz</code> and <code>-o</code> extensions, for Firefox and Opera respectively.</p>
<p>Then, set the hover state &#8211; use css transform to scale the icon image up to 200%. Also you need to add some margin otherwise the enlarged icon overlaps with neighboring icons!
</p>
<pre class="css">
<code>
#dock li img {
  width: 64px;
  height: 64px;
  -webkit-box-reflect: below 2px
		    -webkit-gradient(linear, left top, left bottom, from(transparent),
		    color-stop(0.7, transparent), to(rgba(255,255,255,.5))); /* reflection is supported by webkit only */
  -webkit-transition: all 0.3s;
  -webkit-transform-origin: 50% 100%;
}
#dock li:hover img {
  -webkit-transform: scale(2);
  margin: 0 2em;
}
</code>
</pre>
<h3>Magnify adjacent icons</h3>
<pre class="css">
<code>
#dock li:hover + li img,
#dock li.prev img {
  -webkit-transform: scale(1.5);
  margin: 0 1.5em;
}
</code>
</pre>
<p>To magnify the icon at the right hand side of the hovered icon (Diagram #2), all you need to do is define the scale with using a CSS adjacent-sibling selector, E + F (an F element immediately preceded by an E element).</p>
<p>For the icon at the left (Diagram #3), ss I mentioned earlier, there is no css to get the <em>previous</em> sibling, so I need to rely on JavaScript.<br />
I used the DOM node interface, <code>previousElementSibling</code> to access the sibling node. <code>previousElementSibling</code> should be supported by Webkit, Opera and Firefox.</p>
<p>Basically what I am doing here is that get the mouseovered object (should be an img element), find the parent li element (the immediate parent should be an a-alement, not a li, so get a&#8217;s parent! Check the HTML code again!), find the previous sibling li, then give a classname &#8220;prev&#8221; so I can apply the style.<br />
Don&#8217;t forget to remove the class name as mouseout, otherwise the icon stays large.
</p>
<pre class="js">
<code>
function addPrevClass (e) {
  var target = e.target;
    if(target.getAttribute('src')) { // check if it is img
      var li = target.parentNode.parentNode;
      var prevLi = li.previousElementSibling;
      if(prevLi) {
        prevLi.className = 'prev';
      }

      target.addEventListener('mouseout', function() {
        prevLi.removeAttribute('class');
      }, false);
  }
}
if (window.addEventListener) {
  document.getElementById("dock").addEventListener('mouseover', addPrevClass, false);
}
</code>
</pre>
<p>For more details with the fancy CSS3 effects (e.g. the gradient and 3D-transform to create the &#8220;base&#8221; of the dock), please see the source code of the <a href="http://girliemac.com/sandbox/dock.html" target="_blank">demo page!</a></p>

]]></content:encoded>
			<wfw:commentRss>http://girliemac.com/blog/2010/06/02/simulating-macos-dock-like-menu-with-css3/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>I Can Has iPhone App on App Store</title>
		<link>http://girliemac.com/blog/2009/12/29/i-can-has-iphone-app-on-app-store/</link>
		<comments>http://girliemac.com/blog/2009/12/29/i-can-has-iphone-app-on-app-store/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 03:17:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[App]]></category>
		<category><![CDATA[GirlieMac! News]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPod]]></category>

		<guid isPermaLink="false">http://girliemac.com/blog/?p=126</guid>
		<description><![CDATA[Finally, I have my app, called iCanHasLOL published on App Store! Actually the app was reviewed within 24 hours by Apple, although I&#8217;ve heard it would usually [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fgirliemac.com%252Fblog%252F2009%252F12%252F29%252Fi-can-has-iphone-app-on-app-store%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22I%20Can%20Has%20iPhone%20App%20on%20App%20Store%22%20%7D);"></div>
<p>Finally, I have my app, called <a href="itms://itunes.apple.com/us/app/icanhaslol/id348582423?mt=8">iCanHasLOL published on App Store</a>!<br />
Actually the app was reviewed within 24 hours by Apple, although I&#8217;ve heard it would usually take 2 weeks. </p>
<p>I mentioned that I had been writing an iPhone app using Appcelerator before, and an app was almost ready to go. However, I was not able to publish it with the particular contents so I re-wrote the app and re-created some graphics to finish up this brand-new app.</p>
<p>This is free of charge also ad-free (for now, at least!) so <a href="itms://itunes.apple.com/us/app/icanhaslol/id348582423?mt=8">get your copy</a> now!</p>
<div align="center">
<object width="245" height="496" ><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=8146081&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=ff0179&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=8146081&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=ff0179&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="245" height="496"></embed></object>
</div>

]]></content:encoded>
			<wfw:commentRss>http://girliemac.com/blog/2009/12/29/i-can-has-iphone-app-on-app-store/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>iPhone Cocoa App development with JavaScript</title>
		<link>http://girliemac.com/blog/2009/12/05/iphone-cocoa-app-development-with-javascript/</link>
		<comments>http://girliemac.com/blog/2009/12/05/iphone-cocoa-app-development-with-javascript/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 22:01:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[App]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[SDK]]></category>

		<guid isPermaLink="false">http://girliemac.com/blog/?p=114</guid>
		<description><![CDATA[Hello, I have neglected my blog since September although there have been some blog-worthy events like N900 meetup (plus Droid experience and new Fennec demo. See the [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fgirliemac.com%252Fblog%252F2009%252F12%252F05%252Fiphone-cocoa-app-development-with-javascript%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22%20iPhone%20Cocoa%20App%20development%20with%20JavaScript%22%20%7D);"></div>
<p>Hello, I have neglected my blog since September although there have been some blog-worthy events like <a href="http://tnkgrl.wordpress.com/2009/11/01/nokia-n900-meetup/" targtet="_blank">N900 meetup</a> (plus Droid experience and new Fennec demo. See the videos by Tnkgrl from the link!), California Data Camp, release of <a href="http://www.net2streams.net/" target="_blank">Net2Streams Pro</a> (the streaming radio app for Palm WebOS I helped writing) etc&#8230; Well, I keep microblogging on Twitter almost daily basis so <a href="http://twitter.com/girlie_mac" target="_blank">follow me</a> if you&#8217;d like!</p>
<p>One of the interesting I have been independently doing is that writing an app for iPhone with JavaScript, and this time, not an web app but a &#8220;native&#8221; Cocoa app. Yes I said a native iPhone app in JavaScript! But how? -I used this excellent open-source platform, called <strong>Titanium</strong> by <a href="http://www.appcelerator.com/" target="_blank">Appcelerator</a>! Without bothering Obj.C or Java, Titanium allows developers to write iPhone and Android apps with the familiar web technology.</></p>
<p>So, as a test run, I have created the iCuteoverload app for iPhone again. (Originally, I made the web app for iPhone, using <a href="http://code.google.com/p/iui/" target="_blank">iUI</a> in 2007)<br />
I will not release this app on AppStore -not because of the technical issue but the agreement with the business decision. (Yes, this app contents are not mine and copyrighted!) But I should be able to show the video capture as a demo to tell you what Titanium can do for web devs like me!</p>
<div align="center">
<object width="245" height="503"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7231908&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=ff0179&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=7231908&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=ff0179&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="245" height="503"></embed></object>
</div>

]]></content:encoded>
			<wfw:commentRss>http://girliemac.com/blog/2009/12/05/iphone-cocoa-app-development-with-javascript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Classification of Mobile Browsers</title>
		<link>http://girliemac.com/blog/2009/09/22/classification-of-mobile-browsers/</link>
		<comments>http://girliemac.com/blog/2009/09/22/classification-of-mobile-browsers/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 03:00:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Nokia]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[Palm]]></category>
		<category><![CDATA[WAP]]></category>
		<category><![CDATA[WebKit]]></category>
		<category><![CDATA[WinMo]]></category>

		<guid isPermaLink="false">http://girliemac.com/blog/?p=93</guid>
		<description><![CDATA[Today, I am not going to post some CSS3 tricks on Webkit, or stuff like that. Instead, I post a list mobile browsers, since I am often [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fgirliemac.com%252Fblog%252F2009%252F09%252F22%252Fclassification-of-mobile-browsers%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Classification%20of%20Mobile%20Browsers%20%22%20%7D);"></div>
<p>Today, I am not going to post some CSS3 tricks on Webkit, or stuff like that. Instead, I post a list mobile browsers, since I am often asked about mobile / WAP browsers by engineers, product managers, and mobile-curious or mobile-newbie people.
<p>I gathered 30+ major browsers I have worked with (plus a few I have never even seen), and categorize by the markup that browsers can render &#8211; WML, CHTML, XHTML-MP, and HTML4.</p>
<p>So, here you go. If you find some mistakes, let me know!</p>
<style type="text/css">
			#mobile-browsers table {width: 500px; margin-bottom: 1em; border-right: 1px solid #999;border-bottom: 1px solid #999;}
			#mobile-browsers table tr td,
			#mobile-browsers table tr th {margin: 0; padding: 3px; border-left: 1px solid #999;}
			#mobile-browsers table tr.first td {border-top: 1px solid #999;}
		</style>
<div id="mobile-browsers">
<table>
<tr style="background-color:#ebb06a;">
<th colspan="2">WML Browsers (WAP 1.x)</th>
</tr>
<tr>
<td width="40%">Openwave earliy browsers 4.x </td>
<td>&nbsp;</td>
</tr>
<tr class="first">
<td>Early Nokia browser</td>
<td>&nbsp;</td>
</tr>
<tr class="first">
<td>Early Obigo browser</td>
<td>&nbsp;</td>
</tr>
</table>
<table>
<tr style="background-color:#bbda78;">
<th colspan="2">CHTML Browsers (Common in Japan)</th>
</tr>
<tr>
<td width="40%" rowspan="2">CHTML browsers</td>
<td>Compact-HTML browsers</td>
</tr>
<tr>
<td>Compact NetFront</td>
</tr>
<tr class="first">
<td>i-mode browsers (CHTML / XHTML) </td>
<td>NTT Docomo</td>
</tr>
</table>
<table>
<tr style="background-color:#f2a1d3">
<th colspan="2">XHTML Browsers (WAP 2.x &#8211; XHTML-MP / WML)</th>
</tr>
<tr>
<td rowspan="2" width="40%">WebKit</td>
<td>Nokia S40</td>
</tr>
<tr>
<td>Nokia S60 &#8211; earlier versions, or &#8220;Services&#8221; browser</td>
</tr>
<tr class="first">
<td rowspan="2">NetFront by Access</td>
<td>Palm Blazer 3.x -</td>
</tr>
<tr>
<td>Sony Ericsson WAP browser</td>
</tr>
<tr class="first">
<td>Blazer by Handspring</td>
<td>original browsers before accured by Palm</td>
</tr>
<tr class="first">
<td rowspan="5">Openwave 6.x</td>
<td>Siemens</td>
</tr>
<tr>
<td>Sharp</td>
</tr>
<tr>
<td>Sanyo</td>
</tr>
<tr>
<td>Motorola</td>
</tr>
<tr>
<td>Toshiba</td>
</tr>
<tr class="first">
<td>Blackberry by RIM</td>
<td>Blackberry browser- earlier version ~4.3? (<a href="http://docs.blackberry.com/en/developers/subcategories/?userType=21&#038;category=BlackBerry+Browser" target="_blank">*</a>)</td>
</tr>
<tr class="first">
<td>Obigo by Teleca</td>
<td></td>
</tr>
<tr class="first">
<td>Polaris by InfraWare</td>
<td></td>
</tr>
<tr class="first">
<td>Helio</td>
<td></td>
</tr>
<tr class="first">
<td>Motorola MIB</td>
<td></td>
</tr>
</table>
<table>
<tr style="background-color:#91e0f1;">
<th colspan="2">HTML Browsers</th>
</tr>
<tr>
<td width="40%" rowspan="7">WebKit</td>
<td>Nokia S60 3rd gen., &#8220;Web&#8221; Mini-map browser</td>
</tr>
<tr>
<td>Apple Mobile Safari</td>
</tr>
<tr>
<td>Google Android </td>
</tr>
<tr>
<td>Palm WebOS </td>
</tr>
<tr>
<td>Iris, by Torch Mobile (now RIM)</td>
</tr>
<tr>
<td>Bitstream Bolt (Proxy)</td>
</tr>
<tr>
<td>MOTOMAGX (Motorola Linux devices)</td>
</tr>
<tr class="first">
<td rowspan="4">Gecko</td>
<td>Mozilla Minimo (dead?)</td>
</tr>
<tr>
<td>Mozilla Fennec</td>
</tr>
<tr>
<td>Maemo (aka MicroB)</td>
</tr>
<tr>
<td>Skyfire</td>
</tr>
<tr class="first">
<td rowspan="4">Opera (proxy)</td>
<td>Opera Mobile</td>
</tr>
<tr>
<td>Opera Mini</td>
</tr>
<tr>
<td>Nintendo DSi</td>
</tr>
<tr>
<td>Nintendo Wii</td>
</tr>
<tr class="first">
<td>Blackberry by RIM</td>
<td>Blackberry browser ver.4.6+ (I am not sure about 4.4 and 4.5)</td>
</tr>
<tr class="first">
<td>Microsoft Internet Explorer (was Microsoft Pocket IE) </td>
<td>(earlier versions do not support CSS?)</td>
</tr>
<tr class="first">
<td rowspan="4">NetFront 3.x ?</td>
<td>Sony Ericsson browsers</td>
</tr>
<tr>
<td>Sony PlayStation / PSP browsers</td>
</tr>
<tr>
<td>Palm Blazer 4.x</td>
</tr>
<tr>
<td>Amazon Kindle</td>
</tr>
<tr class="first">
<td>Teleca</td>
<td>Teleca Browser V3.x ? (LG Voyager)</td>
</tr>
<tr class="first">
<td>Danger (now by Microsoft)</td>
<td>Sidekick</td>
</tr>
</table></div>
<p>I have categorized only with the markup type, and did not sub-categorize these browsers. However, if I would, I may want to grade XHTML-MP devices with page memory size (=&#8221;deck size&#8221;, yes I said deck size), and screen resolution for UI design purpose. </p>
<p>To grade full-HTML browsers, you need to spend massive time and effort on testing rendering capability with CSS, and Javascript DOM compatibility, events, etc.  Actually, PPK  has done excellent work on mobile browser testing, so you can simply visit <a href="http://www.quirksmode.org/m/" target="_blank">Quirksmode.org</a>!</p>

]]></content:encoded>
			<wfw:commentRss>http://girliemac.com/blog/2009/09/22/classification-of-mobile-browsers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Webkit CSS 3D + Local DB Demo</title>
		<link>http://girliemac.com/blog/2009/09/03/webkit-css-3d-local-db-demo/</link>
		<comments>http://girliemac.com/blog/2009/09/03/webkit-css-3d-local-db-demo/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 06:37:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Sandbox]]></category>
		<category><![CDATA[WebKit]]></category>

		<guid isPermaLink="false">http://girliemac.com/blog/2009/09/03/webkit-css-3d-local-db-demo/</guid>
		<description><![CDATA[Ever since I heard of Snow Loepard&#8217;s hardware-accelerated CSS, I wanted try some cool CSS animation for Safari 4. So after installing Snow Leopard, I spent about [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fgirliemac.com%252Fblog%252F2009%252F09%252F03%252Fwebkit-css-3d-local-db-demo%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Webkit%20CSS%203D%20%2B%20Local%20DB%20Demo%22%20%7D);"></div>
<p><img src="http://girliemac.com/blog/wp-content/images/css3d.jpg" alt="css 3D screenshot"/></p>
<p>Ever since I heard of Snow Loepard&#8217;s hardware-accelerated CSS, I wanted try some cool CSS animation for Safari 4.</p>
<p>So after installing Snow Leopard, I spent about a day and half to try creating my first 3D animation with Flickr API.<br />
Honestly, I wasn&#8217;t sure where to get started to make some cool 3D effect, so what I did was I tried to reproduce the one on webkit.org example and modify a lot by trial and error approach.<br />
Also, I have been freqently asked about how I did with &#8220;My Favorites&#8221; feature on <a href="http://girliemac.com/blog/2009/08/29/pretty-cute-suite-another-cute-app-for-pre-from-me/">my Palm Pre app</a> (which is also a WebKit-based), so I throw the HTML5&#8242;s local storage demo with this 3D demo.
</p>
<p>So here, you can try my <a href="http://girliemac.com/sandbox/flickr_3d.html" target="_blank">CSS 3D and Local DB Demo</a>!!!<br />
Be sure to view this demo on Safari 4, iPhone Safari, or WebKit Nightly! This doesn;t seem to work on other Webkit-based browsers such as Chrome and Palm.
</p>
<p>I am not going to write a whole tutorial how to replicate this animation but I try to explain some examples.</p>
<h3>Spin a Wheel!</h3>
<p>Look at one of the flicke photo wheel on my demo. This is a combination of a few different animation.<br />
Let&#8217;s focus on the small wheel inside. This is the snippet of HTML of the wheel:</p>
<pre class="html">
<code>

&lt;div id="gallery"&gt;
  &lt;div id="pic01"&gt;&lt;img src="..."/&gt;&lt;/div&gt;
  &lt;div id="pic02"&gt;&lt;img src="..."/&gt;&lt;/div&gt;
  ... (10 more imgs)
&lt;/div&gt;	

</code>
</pre>
<p><img src="http://girliemac.com/blog/wp-content/images/coordinate.png" alt="3D Cood" align="left"/><br />
OK, for now, let&#8217;s ignore how each photo is rendered to form a loop, and just focus on the animation of one div, #gallery (= a wheel). A band of photos is ratating clockwise around Y-axis.<br />
This means the animation starts as <code>-webkit-transform: rotateY(0);</code> and goes around an circle for a whole 360 degree. <code> -webkit-transform: rotateY(-360deg);</code>.<br />
Use positive if you want to rotate in opposite direction.<br />
I set the whole circle completion span as 60 seconds in linier motion and the animation goes infinite. </p>
<p>This diagram from <a href="http://developer.apple.com/safari/library/documentation/InternetWeb/Conceptual/SafariVisualEffectsProgGuide/Transforms/Transforms.html" target="_blank">Apple&#8217;s Safari Reference Library</a> explains coordinates.</p>
<p>So the css for this movement is defined as:</p>
<pre class="css">
<code>
#gallery {
  -webkit-transform-style: preserve-3d;
  -webkit-animation: spinY 60s linear infinite;
}
</code>
</pre>
<pre class="css">
<code>
@-webkit-keyframes spinY {
  from { -webkit-transform: rotateY(0);}
  to   { -webkit-transform: rotateY(-360deg);}
}
</code>
</pre>
<p>Use 3D style, <code>-webkit-transform-style: preserve-3d;</code>to give 3D illusion. I set the initial perspective in its parent div as <code>-webkit-perspective: 380;</code>.<br />
It gives you an illusion of the depth. You can make the value lower to make it look more up-close to you.<br />
The unit of perspective should be &#8220;px&#8221;, but it looks like you&#8217;d better remove it for iPhone.</p>
<p><img src="http://girliemac.com/blog/wp-content/images/css3d_pers200.png" alt="perspective 200"/> <img src="http://girliemac.com/blog/wp-content/images/css3d_pers400.png" alt="perspective 400"/><br />
<img src="http://girliemac.com/blog/wp-content/images/css3d_pers500.png" alt="perspective 500"/> <img src="http://girliemac.com/blog/wp-content/images/css3d_pers0.png" alt="perspective 0"/></p>
<p>To figure out how to render each photo in loop, also other animations, please look at the source code of my demo.</p>
<p>Also, I will write about how to use HTML 5&#8242;s local storage sometimes later!</p>
<h3>References</h3>
<ul>
<li><a href="http://webkit.org/blog/386/3d-transforms/" target="_blank">3D Transforms</a> by Webkit.org</li>
<li><a href="http://webkit.org/blog/130/css-transforms/" target="_blank">CSS Transforms (2D)</a> by Webkit.org</li>
<li><a href="http://webkit.org/blog/138/css-animation/" target="_blank">CSS Animation</a> by Webkit.org</li>
<li><a href="http://www.w3.org/TR/css3-3d-transforms/" target="_blank">CSS 3D Transforms Module Level 3</a> W3C Working Draft</li>
<li><a href="http://developer.apple.com/safari/library/documentation/InternetWeb/Conceptual/SafariVisualEffectsProgGuide/Transforms/Transforms.html" target="_blank">Safari Reference Library -Transforms</a> by Apple</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://girliemac.com/blog/2009/09/03/webkit-css-3d-local-db-demo/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>iPhone App &#8211; MuniApp for San Francisco Muni riders!</title>
		<link>http://girliemac.com/blog/2009/08/08/iphone-app-muniapp-for-san-francisco-muni-riders/</link>
		<comments>http://girliemac.com/blog/2009/08/08/iphone-app-muniapp-for-san-francisco-muni-riders/#comments</comments>
		<pubDate>Sun, 09 Aug 2009 00:44:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[App]]></category>
		<category><![CDATA[GirlieMac! News]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPod]]></category>
		<category><![CDATA[UI/UX]]></category>

		<guid isPermaLink="false">http://girliemac.com/blog/2009/08/08/iphone-app-muniapp-for-san-francisco-muni-riders/</guid>
		<description><![CDATA[Ta-da, finally there&#8217;s an app for that! &#8211; I mean an iPhone native app that I involved is available on App Store! This app is called, MuniApp, [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fgirliemac.com%252Fblog%252F2009%252F08%252F08%252Fiphone-app-muniapp-for-san-francisco-muni-riders%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22iPhone%20App%20-%20MuniApp%20for%20San%20Francisco%20Muni%20riders%21%22%20%7D);"></div>
<p align="center"><img src="http://girliemac.com/blog/wp-content/images/muniapp.png"/></p>
<p>Ta-da, finally there&#8217;s an app for that! &#8211; I mean an iPhone native app that I involved is available on App Store!
<p>This app is called, MuniApp, and this gives you access to San Francisco’s MUNI transit system on the go with real time predictions for buses, metro and cable cars.</p>
<p>I have worked on some UI and icons, while my friend Alberto has coded all the Obj.C. We are both SF residents and rely on MUNI pretty frequently and we do use this app on daily basis. Honestly, this is really simple and useful app <img src='http://girliemac.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>The official website for MuniApp is at <a href="http://www.obapp.com/muniapp" target="_blank">www.obapp.com/muniapp</a></p>
<p>To directly go to App Store on iTunes, <a href="itms://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=323516756&#038;mt=8&#038;s=143441">go to this link!</a></p>

]]></content:encoded>
			<wfw:commentRss>http://girliemac.com/blog/2009/08/08/iphone-app-muniapp-for-san-francisco-muni-riders/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Find Your Tweeting Neighbor on iPhone with GeoLocation</title>
		<link>http://girliemac.com/blog/2009/06/21/find-your-tweeting-neighbor-on-iphone-with-geolocation/</link>
		<comments>http://girliemac.com/blog/2009/06/21/find-your-tweeting-neighbor-on-iphone-with-geolocation/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 02:20:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Sandbox]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[WebKit]]></category>

		<guid isPermaLink="false">http://girliemac.com/blog/2009/06/21/find-your-tweeting-neighbor-on-iphone-with-geolocation/</guid>
		<description><![CDATA[iPhone OS 3.0 is now available, and developers can take advantage of the newly introduced geolocation feature in Safari browser. To try it out quickly, I used [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fgirliemac.com%252Fblog%252F2009%252F06%252F21%252Ffind-your-tweeting-neighbor-on-iphone-with-geolocation%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Find%20Your%20Tweeting%20Neighbor%20on%20iPhone%20with%20GeoLocation%22%20%7D);"></div>
<p><img src="http://girliemac.com/blog/wp-content/images/neighbortweet.png" alt="screenshot"/></p>
<p>iPhone OS 3.0 is now available, and developers can take advantage of the newly introduced <strong>geolocation</strong> feature in Safari browser.</p>
<p>To try it out quickly, I used Twitter Search API again to create a tiny test app called, <a href="http://girliemac.com/geo" target="_blank"/>NeighborTweet</a>, which enable you to find out who are tweeting in your neighborhood. Basically, what it does is that obtain your location, and pass the latitude and longitude data to Twitter search and display the result tweets.</p>
<p>Try it out on your iPhone with:<br />
Short URL <a href="http://girliemac.com/geo" target="_blank"/>http://bit.ly/K0ZaE</a><br />
or<br />
<a href=http://qrcode.kaywa.com/img.php?s=8&#038;d=http%3A%2F%2Fgirliemac.com%2Fgeo">This QR Code</a> with scanning app like BeeTagg.</p>
<p>If you are interested in learning more on Twitter search API and geocode, please read <a href="http://apiwiki.twitter.com/Twitter-Search-API-Method%3A-search" target="_blank">Twitter Wiki</a>.</p>
<p>OK, now here&#8217;s the code.<br />
To find out your location with Geolocation class is simple &#8211; you just call <code>getCurrentPosition()</code> method. This initiates an asynchronous request to detect the user&#8217;s position.</p>
<pre class="js">
<code>
navigator.geolocation.getCurrentPosition(someFunction)
</code>
</pre>
<p>Get latitude and longitude, by using <code>coords</code> instance:</p>
<pre class="js">
<code>
latitude = position.coords.latitude;
longitude = position.coords.longitude;
</code>
</pre>
<p>Here&#8217;s an actual code I used to create the sample app:</p>
<pre class="js">
<code>
if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(function(position) {
    callback(position.coords.latitude, position.coords.longitude);
  });
} else {
  alert("Geolocation services are not supported by your browser.");
} 

function callback(lat,lon){
  // twitter search json-p callback
  var geocode = "&#038;geocode=" + lat + "%2C" + lon + "%2C1mi";
  var fullUrl = url + geocode;
  ...
}
var url = "http://search.twitter.com/search.json?callback=getTweets";

function getTweets (json) {
  // display json data
  ...
}
</code>
</pre>
<h3>References</h3>
<p>Geolocation References:</p>
<ul>
<li><a href="http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariWebContent/GettingGeographicalLocations/GettingGeographicalLocations.html" target="_blank">Safari Reference Library &#8211; Getting Geographic Locations</a> &#8211; Apple Developer Connection</li>
<li><a href="https://developer.mozilla.org/En/Using_geolocation" target="_blank">Using geolocation</a> &#8211; Mozilla Developer Center</li>
<li><a href="http://www.w3.org/TR/geolocation-API/" target="_blank">Geolocation API Specification</a> &#8211; W3C Working Draft</li>
</ul>
<p>More References:</p>
<ul>
<li><a href="http://apiwiki.twitter.com/Twitter-Search-API-Method%3A-search" target="_blank">Twitter Search API Wiki</a></li>
<li><a href="http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/" target="_blank">Remote JSON &#8211; JSONP</a></li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://girliemac.com/blog/2009/06/21/find-your-tweeting-neighbor-on-iphone-with-geolocation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobile Safari for iPhone 3 includes Geolocation</title>
		<link>http://girliemac.com/blog/2009/06/01/mobile-safari-for-iphone-3-includes-geolocation/</link>
		<comments>http://girliemac.com/blog/2009/06/01/mobile-safari-for-iphone-3-includes-geolocation/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 23:45:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[WebKit]]></category>

		<guid isPermaLink="false">http://girliemac.com/blog/2009/06/01/mobile-safari-for-iphone-3-includes-geolocation/</guid>
		<description><![CDATA[Although W3C&#8217;s document, The Geolocation API Specification is still in draft state and not yet finalized, major browsers are working to support this functionality and as we [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fgirliemac.com%252Fblog%252F2009%252F06%252F01%252Fmobile-safari-for-iphone-3-includes-geolocation%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Mobile%20Safari%20for%20iPhone%203%20includes%20Geolocation%22%20%7D);"></div>
<p>Although W3C&#8217;s document, <a href="http://www.w3.org/TR/geolocation-API/" target="_blank">The Geolocation API Specification</a> is still in draft state and not yet  finalized, major browsers are working to support this functionality and as we all expected, Mobile Safari is not an exception.</p>
<p>According to <a href="http://blogs.computerworld.com/iphones_safari_browser_to_include_geolocation_0" target="_blank">ComputerWorld blog</a>, the geolocation API has been implemented for the upcoming API. Apparently, Seth of ComputerWorld tried the test webpage, built by Doug Turner for Mozilla on a 3.0B5 iPhone&#8217;s Mobile Safari.<br />
This screenshot is grabbed from the CompWorld&#8217;s blog.<br />
<img src="http://girliemac.com/blog/wp-content/images/compWorld_iphone_geo.png" /> </p>
<p>Obviously I don&#8217;t have access to the new iPhone so I just tested the test page  (<a href="http://people.mozilla.org/~dougt/geo.html" target="_blank">http://people.mozilla.org/~dougt/geo.html</a>) using Geolocation API <code>watchPosition()</code> method, on Mozilla 3.5. (And this should works similarly on Fennec too. I wish I could try on an actual device!)</p>
<p><img src="http://girliemac.com/blog/wp-content/images/ff35_geo01.png"/><br/><br />
<img src="http://girliemac.com/blog/wp-content/images/ff35_geo02.png"/></p>
<p>I am using my old PowerBook G4, with Comcast,. Since this Mac is not equipped with GPS device, Firefox gathers information about nearby wireless access points and computer’s IP address.</p>
<p>Nice! I can&#8217;t wait to see this working on iPhone!<br />
Especially, NextMuni.com with location enabled, that tells me where I am and where the nearest bus stop!</p>

]]></content:encoded>
			<wfw:commentRss>http://girliemac.com/blog/2009/06/01/mobile-safari-for-iphone-3-includes-geolocation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>QuirksMode on Mobile!</title>
		<link>http://girliemac.com/blog/2009/04/27/quirksmode-on-mobile/</link>
		<comments>http://girliemac.com/blog/2009/04/27/quirksmode-on-mobile/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 04:51:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Nokia]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[WebKit]]></category>
		<category><![CDATA[Yahoo!]]></category>

		<guid isPermaLink="false">http://girliemac.com/blog/2009/04/27/quirksmode-on-mobile/</guid>
		<description><![CDATA[One of the recent awesome news for mobile web developer is that &#8220;the browser guy&#8221; Peter-Paul Koch, known as PPK of Quirksmode.org has jumped onto mobile world, [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fgirliemac.com%252Fblog%252F2009%252F04%252F27%252Fquirksmode-on-mobile%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22QuirksMode%20on%20Mobile%21%22%20%7D);"></div>
<p>
One of the recent awesome news for mobile web developer is that &#8220;the browser guy&#8221; Peter-Paul Koch, known as PPK of <a href="http://quirksmode.org";; target="_blank">Quirksmode.org</a> has jumped onto mobile world, backed up by Vodafone. (See his <a href="http://www.quirksmode.org/blog/archives/browsers/mobile/" target="_blank">blog</a>).
</p>
<p>
I have been working for mobile phones since I joined Nokia in 2005, then Yahoo! later, I have been frustrated with luck of information on mobile browsers. Although Nokia was pioneering sharing information on S60 WebKit browsers, still there was not enough so I had to run many tests by myself without much help from anybody else, and recorded some quirks found a little bit at the time. So PPK&#8217;s work on  <a href="http://quirksmode.org/m/table.html" target="_blank">compatibility test table</a> is the one of the best resource I can have!
</p>
<p>Anyway, PPK made his visit to Yahoo! last week and the video of his presentation is now on <a href="http://yuiblog.com/blog/2009/04/27/video-ppk-jsevents/" target="_blank">YUI Theater</a>!<br />
<object width="480" height="375"><param name="movie" value="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.40" /><param name="allowFullScreen" value="true" /><param name="AllowScriptAccess" VALUE="always" /><param name="bgcolor" value="#000000" /><param name="flashVars" value="id=13163203&#038;vid=4943143&#038;lang=en-us&#038;intl=us&#038;thumbUrl=http%3A//l.yimg.com/a/p/i/bcst/videosearch/8540/84355927.jpeg&#038;embed=1" /><embed src="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.40" type="application/x-shockwave-flash" width="480" height="375" allowFullScreen="true" AllowScriptAccess="always" bgcolor="#000000" flashVars="id=13163203&#038;vid=4943143&#038;lang=en-us&#038;intl=us&#038;thumbUrl=http%3A//l.yimg.com/a/p/i/bcst/videosearch/8540/84355927.jpeg&#038;embed=1" ></embed></object></p>
<p>Also, his slides are availabe at SlideShare:<br/></p>
<ul>
<li><a href="http://www.slideshare.net/pp.koch/yahoo-1337458" target="_blank">Yahoo presentation: JavaScript Events</a></li>
<li><a href="http://www.slideshare.net/pp.koch/google-presentation-the-open-web-goes-mobile" target="_blank">Google presentation: The Open Web goes mobile<br />
</a></li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://girliemac.com/blog/2009/04/27/quirksmode-on-mobile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

