<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CE4ARHwyeip7ImA9WhBUFU0.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087</id><updated>2013-05-02T06:55:45.292-07:00</updated><category term="ignite" /><category term="slides" /><category term="meetup" /><category term="javascript" /><category term="sms" /><category term="html5" /><category term="smartwatch" /><category term="monetization" /><category term="tablet" /><category term="sony" /><category term="tropo" /><category term="event" /><category term="conference" /><category term="api" /><category term="resolution" /><category term="demo" /><category term="puzzlepal" /><category term="ghc" /><category term="encryption" /><category term="systers" /><category term="hackathon" /><category term="ios" /><category term="git" /><category term="shell" /><category term="charity" /><category term="animation" /><category term="browser" /><category term="extension" /><category term="classes" /><category term="assets" /><category term="keyboard" /><category term="video" /><category term="layout" /><category term="launch" /><category term="code" /><category term="review" /><category term="rovi" /><category term="update" /><category term="contest" /><category term="women" /><category term="coverage" /><category term="diy" /><category term="drawing" /><category term="speaking" /><category term="smartheadset" /><category term="security" /><category term="photoshop" /><category term="rhok" /><category term="startup" /><category term="htc" /><category term="webcam" /><category term="book" /><category term="kindle" /><category term="source" /><category term="android" /><category term="monkeywrite" /><category term="popcornjs" /><category term="view" /><category term="textview" /><category term="marketing" /><category term="design" /><category term="career" /><category term="projector" /><category term="codechix" /><category term="calligraphy" /><category term="nook" /><category term="talks" /><title>Square Island</title><subtitle type="html">Android development and more.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.sqisland.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.sqisland.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>71</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/sqisland" /><feedburner:info uri="sqisland" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><entry gd:etag="W/&quot;AkIASHkycSp7ImA9WhBUFEg.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-3307888879789458503</id><published>2013-05-01T13:02:00.000-07:00</published><updated>2013-05-01T18:35:49.799-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-01T18:35:49.799-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="event" /><category scheme="http://www.blogger.com/atom/ns#" term="conference" /><category scheme="http://www.blogger.com/atom/ns#" term="talks" /><category scheme="http://www.blogger.com/atom/ns#" term="speaking" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Droidcon Tunis</title><content type="html">&lt;p&gt;
My friend &lt;a href="http://coreylatislaw.com"&gt;Corey Latislaw&lt;/a&gt; spoke at &lt;a href="http://droidcon.tn"&gt;Droidcon Tunis&lt;/a&gt; last year, and really enjoyed it. This year she couldn't make it, but recommended me to the organizer. After a few email exchanges, I made the leap and bought a plane ticket to Tunis!
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Mainz layover&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
There are not a lot of flights from San Francisco to Tunis, and I booked mine with Lufthansa, which had a 11-hour layover in Frankfurt. I took advantage of the time and visited Mainz, the birthplace of Gutenberg.
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/29193292_rJF7kG#2487289142_xNxpsK4"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2487289142_xNxpsK4-S.jpg" border="0" alt="Gutenberg Museum" title="Gutenberg Museum"&gt;&lt;/a&gt;&lt;br/&gt;Gutenberg Museum&lt;/p&gt;

&lt;p&gt;
The Gutenberg Museum showcases the history of printing, with a few rare specimens of the Gutenberg bible. It also covered the printing techniques from East Asia, and there is circular movable type storage stand for Chinese newspaper printing with rows and rows of neatly sorted characters. I had always wanted to see that since a little kid, so it was quite a pleasant surprise to bump into it in Germany.
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Tunis sightseeing&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
I arrived Tunis around midnight, and went for some sightseeing the next day. My first destination was the &lt;a href="http://www.bardomuseum.tn"&gt;Bardo Museum&lt;/a&gt;, which is famous for its collection of Roman mosaics.
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/29193312_DQLr4k#2487290189_kqcr4x2"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2487290189_kqcr4x2-S.jpg" border="0" alt="Roman mosaic at Bardo Museum" title="Roman mosaic at Bardo Museum"&gt;&lt;/a&gt;&lt;br/&gt;Roman mosaic at Bardo Museum&lt;/p&gt;

&lt;p&gt;
I really enjoyed the mosaics. They were made from tiny pieces of colored tiles, depicting the Roman life and mythology in a durable format. Some of the pieces were put on the floor, where they were meant to be, but I still feel like I should not tread on such beautiful art.
&lt;/p&gt;

&lt;p&gt;
After the museum I headed to the medina, the old town of Tunis.
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/29193312_DQLr4k#2487291454_8x2MtMF"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2487291454_8x2MtMF-S.jpg" border="0" alt="Tunis medina" title="Tunis medina"&gt;&lt;/a&gt;&lt;br/&gt;Tunis medina&lt;/p&gt;

&lt;p&gt;
The medina is a maze alleyways lined with blue-and-white houses, traditional markets and towering minarets. I got quite lost in the beginning. Fortunately I found a walking tour map on the wall to orient myself.
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/29193312_DQLr4k#2487291221_XnbjvQn"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2487291221_XnbjvQn-S.jpg" border="0" alt="Map for the medina" title="Map for the medina"&gt;&lt;/a&gt;&lt;br/&gt;Map for the medina&lt;/p&gt;

&lt;p&gt;
It was a lot of fun exploring the nooks and crannies of the medina, stumbling upon an ornate door, a snack vendor hawking traditional sweets, or a group of cats sleeping.
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/29193312_DQLr4k#2487291143_wJ3vRS4"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2487291143_wJ3vRS4-S.jpg" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Carthage and Sidi Bou Said&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
The next day I took a train to visit Carthage and Sidi Bou Said.
&lt;/p&gt;

&lt;p&gt;
My first stop was the Carthage Museum. Not a lot to see here, since most of the mosaics were moved to Tunis. However I really liked the Acropolium next door.
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/29193376_hfsPBn#2487291825_6QKg5dX"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2487291825_6QKg5dX-S.jpg" border="0" alt="Acropolium" title="Acropolium"&gt;&lt;/a&gt;&lt;br/&gt;Acropolium&lt;/p&gt;

&lt;p&gt;
Didn't look like much from the outside, but I love the style inside.
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/29193376_hfsPBn#2487298687_7xVM2qg"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2487298687_7xVM2qg-S.jpg" border="0" alt="Acropolium" title="Acropolium"&gt;&lt;/a&gt;&lt;br/&gt;Acropolium&lt;/p&gt;

&lt;p&gt;
I then walked to the Roman theater and the Roman villa, before ending my tour at Antonine Baths.
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/29193376_hfsPBn#2487299141_HKLfgnc"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2487299141_HKLfgnc-S.jpg" border="0" alt="Antonine Baths" title="Antonine Baths"&gt;&lt;/a&gt;&lt;br/&gt;Antonine Baths&lt;/p&gt;

&lt;p&gt;
The sheer size of the ruins were mind-boggling. The Romans sure loved their baths!
&lt;/p&gt;

&lt;p&gt;
After Carthage I took the train further to Sidi Bou Said, a picturesque little town in blue and white. 

&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/29193376_hfsPBn#2487299315_rf53XCd"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2487299315_rf53XCd-S.jpg" border="0" alt="Sidi Bou Said" title="Sidi Bou Said"&gt;&lt;/a&gt;&lt;br/&gt;Sidi Bou Said&lt;/p&gt;

&lt;p&gt;
It was such a joy to walk around and soak in all the blue and white. Every corner was stunningly pretty.
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/29193376_hfsPBn#2487299500_jV2kgkp"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2487299500_jV2kgkp-S.jpg" border="0" alt="Sidi Bou Said" title="Sidi Bou Said"&gt;&lt;/a&gt;&lt;br/&gt;Sidi Bou Said&lt;/p&gt;

&lt;p&gt;
In the evening I went back to Tunis for a nice traditional meal: couscous.
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/29193312_DQLr4k#2487304133_gc4QnMZ"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2487304133_gc4QnMZ-S.jpg" border="0" alt="Couscous with fish" title="Couscous with fish"&gt;&lt;/a&gt;&lt;br/&gt;Couscous with fish&lt;/p&gt;

&lt;p&gt;
I had a set dinner with appetizer, main course and dessert, only 7.5 dinars. That's less than 5 USD!
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Droidcon Tunis&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
On Saturday I headed to the science city for Droidcon Tunis.
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/29193415_qj4CDb#2487303603_g5n6Mw2"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2487303603_g5n6Mw2-S.jpg" border="0" alt="Droidcon Tunis poster" title="Droidcon Tunis poster"&gt;&lt;/a&gt;&lt;br/&gt;Droidcon Tunis poster&lt;/p&gt;

&lt;p&gt;
The conference opened with a violin performance. Classy!
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/29193415_qj4CDb#2487303036_rhDLxwN"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2487303036_rhDLxwN-S.jpg" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
After a full day of workshops, the organizers made us a nice traditional barbecue. 
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/29193415_qj4CDb#2487303545_C89KNFS"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2487303545_C89KNFS-S.jpg" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/29193415_qj4CDb#2487303510_qX9D9Wr"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2487303510_qX9D9Wr-S.jpg" border="0" alt="BBQ dinner" title="BBQ dinner"&gt;&lt;/a&gt;&lt;br/&gt;BBQ dinner&lt;/p&gt;

&lt;p&gt;
I gave my talk on the next day. The Tunisian crowd is really energetic, and we had lots of audience participation. That's the way I like my talks!
&lt;/p&gt;

&lt;p&gt;
I was going to attend some other talks, but ended up doing some pair programming with a fellow attendee in the hallway.
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/29193415_qj4CDb#2487303884_ZDFWzxF"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2487303884_ZDFWzxF-S.jpg" border="0" alt="Pair programming" title="Pair programming"&gt;&lt;/a&gt;&lt;br/&gt;Pair programming&lt;/p&gt;

&lt;p&gt;
I managed to go to the USB talk by Miki, which was quite a blast. Literally - he brought a missile launcher!
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/29193415_qj4CDb#2487303781_h3nVD6j"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2487303781_h3nVD6j-S.jpg" border="0" alt="Miki demoing the USB missile launcher" title="Miki demoing the USB missile launcher"&gt;&lt;/a&gt;&lt;br/&gt;Miki demoing the USB missile launcher&lt;/p&gt;

&lt;p&gt;
The conference concluded with a rock-and-roll performance. Yup, the Tunisians sure know how to have fun. They are such a friendly crowd, but also very driven to advance their technical skills. The energy made all the difference. Thank you Taher and the volunteers for putting this together!
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Epilogue&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
After the conference we all went out for coffee. And then the organizers wanted to show us some traditional food, so we drove around town in the middle of the night, finally found a place still open, for some phenomenal ojja merguez. It was so yummy that we simply could not stop eating!
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/29193415_qj4CDb#2487304326_2VjkLRk"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2487304326_2VjkLRk-S.jpg" border="0" alt="Ojja merguez" title="Ojja merguez"&gt;&lt;/a&gt;&lt;br/&gt;Ojja merguez&lt;/p&gt;

&lt;p&gt;
&lt;i&gt;Bonus link: more &lt;a href="http://chiuki.smugmug.com/Vacation/Droidcon-Tunis"&gt;photos&lt;/a&gt; from the trip.&lt;/i&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/QV28whmlsk0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/3307888879789458503/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2013/05/droidcon-tunis.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/3307888879789458503?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/3307888879789458503?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/QV28whmlsk0/droidcon-tunis.html" title="Droidcon Tunis" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><thr:total>3</thr:total><georss:featurename>Tunis, Tunisia</georss:featurename><georss:point>36.84956891644739 10.188426182708781</georss:point><georss:box>36.84798041644739 10.185904682708781 36.851157416447386 10.190947682708781</georss:box><feedburner:origLink>http://blog.sqisland.com/2013/05/droidcon-tunis.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UBSHYzeip7ImA9WhBQEkQ.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-8007346567611879795</id><published>2013-03-14T15:14:00.000-07:00</published><updated>2013-03-14T15:14:19.882-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-14T15:14:19.882-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="event" /><category scheme="http://www.blogger.com/atom/ns#" term="conference" /><category scheme="http://www.blogger.com/atom/ns#" term="talks" /><category scheme="http://www.blogger.com/atom/ns#" term="speaking" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>ConFoo</title><content type="html">&lt;p&gt;
Before I started speaking I always wonder how people know about the conferences. Turns out most information is still disseminated in the traditional way: word of mouth. And that is how I heard about &lt;a href="http://www.confoo.ca"&gt;CooFoo&lt;/a&gt;: from other speakers. Specifically, I heard about it when I was in Amsterdam for &lt;a href="http://blog.sqisland.com/2012/06/dutch-mobile-conference.html"&gt;Dutch Mobile Conference&lt;/a&gt;. They told me ConFoo is a very well-run conference covering a variety of technologies, and they treat speakers very well. So I &lt;a href="http://www.twitter.com/confoo"&gt;followed ConFoo on Twitter&lt;/a&gt;, waited for the CFP, and submitted three talks. Two of the got accepted, which brought me to Montreal two weeks ago.
&lt;/p&gt;

&lt;h2&gt;Ten tracks&lt;/h2&gt;

&lt;p&gt;
I was a bit overwhelmed when I first looked at the program. There are ten tracks going on at the same time! Lots and lots of different technologies, and I often wanted to go to two talks in the same slot.
&lt;/p&gt;

&lt;center&gt;
&lt;a href="http://2.bp.blogspot.com/-ckYpCW9Gwyk/UUI4egIH0qI/AAAAAAAAAcE/EsUh_6-BBVo/s1600/TenTracks.jpg" imageanchor="1" &gt;&lt;img border="0" src="http://2.bp.blogspot.com/-ckYpCW9Gwyk/UUI4egIH0qI/AAAAAAAAAcE/EsUh_6-BBVo/s320/TenTracks.jpg" /&gt;&lt;/a&gt;
&lt;/center&gt;

&lt;p&gt;
When there were conflicts, I often picked based on speakers. I know both &lt;a href="http://www.sandimetz.com"&gt;Sandi Metz&lt;/a&gt; and &lt;a href="http://www.kytrinyx.com"&gt;Katrina Owen&lt;/a&gt; are great speakers, so I made sure went to their talks. They have great content in their talks, but they also pay great attention to delivery, bringing us on a journey through out the talk.
&lt;/p&gt;

&lt;p&gt;
I also tried to go to talks which will expand my horizons. &lt;a href="http://confoo.ca/en/2013/session/creative-machines"&gt;Creative Machines by Joseph Wilk&lt;/a&gt; was a great example. I got to hear about &lt;a href="http://en.wikipedia.org/wiki/AARON"&gt;AARON&lt;/a&gt;, a machine that was trained by a painter over 40 years. The results are quite amazing.
&lt;/p&gt;

&lt;center&gt;
&lt;a href="http://3.bp.blogspot.com/-zHQIo7A6Q9o/UUI5KqhYgRI/AAAAAAAAAcY/-NvmWLfYvhc/s1600/AARON.jpg" imageanchor="1" &gt;&lt;img border="0" src="http://3.bp.blogspot.com/-zHQIo7A6Q9o/UUI5KqhYgRI/AAAAAAAAAcY/-NvmWLfYvhc/s320/AARON.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;
Sample work by AARON
&lt;/center&gt;

&lt;h2&gt;Overview and deep dive&lt;/h2&gt;

&lt;p&gt;
I gave two talks at ConFoo: &lt;a href="http://www.sqisland.com/talks/fluid-android-layouts"&gt;Fluid Android Layouts&lt;/a&gt; and &lt;a href="http://www.sqisland.com/talks/caching-strategies-for-mobile-apps"&gt;Mobile Caching Strategies&lt;/a&gt;. &lt;a href="http://www.sqisland.com/talks/caching-strategies-for-mobile-apps"&gt;Mobile Caching Strategies&lt;/a&gt; is a high-level talk, no code at all, so I knew it would work well in a general conference like ConFoo. 
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.sqisland.com/talks/fluid-android-layouts"&gt;Fluid Android Layouts&lt;/a&gt; is a deep dive, and I found it difficult to cater to the different levels of experience in the audience. To make sure everyone can follow along, I went over some Android basics at the beginning. But I also provided code samples so the Android developers in the crowd had something to take home.
&lt;/p&gt;

&lt;h2&gt;Well-run conference&lt;/h2&gt;

&lt;p&gt;
ConFoo covers so many topics, and yet manages to keep the environment very intimate. There was plenty of opportunities to mingle with everyone, including very nice sit down lunches everyday.
&lt;/p&gt;

&lt;center&gt;
&lt;a href="http://3.bp.blogspot.com/-4yBkikEKB98/UUI4obMD29I/AAAAAAAAAcQ/U0uqDvcOdqg/s1600/Lunch.jpg" imageanchor="1" &gt;&lt;img border="0" src="http://3.bp.blogspot.com/-4yBkikEKB98/UUI4obMD29I/AAAAAAAAAcQ/U0uqDvcOdqg/s320/Lunch.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;
Nice lunch!
&lt;/center&gt;

&lt;p&gt;
There were volunteers at each session to help the speakers set up, give timing signals, and collect feedback forms at the end. Overall everything is well-communicated, and the organizers make sure everyone is having a good time. Bravo!
&lt;/p&gt;

&lt;center&gt;
&lt;a href="http://3.bp.blogspot.com/-vuNKznzA54k/UUJLWwXigFI/AAAAAAAAAcg/JBWeeAAGpQU/s1600/Organizers.jpg" imageanchor="1" &gt;&lt;img border="0" src="http://3.bp.blogspot.com/-vuNKznzA54k/UUJLWwXigFI/AAAAAAAAAcg/JBWeeAAGpQU/s320/Organizers.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;
The organizers
&lt;/center&gt;

&lt;h2&gt;Sugar Shack&lt;/h2&gt;

&lt;p&gt;
With three conference days and ten tracks, there were a lot of speakers. The organizers arranged quite a few activities for us, one of which is to visit a traditional sugar shack. It was an hour drive from Montreal, in an idyllic setting among the snow.
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/28361328_69rQNT#2401172053_93d5XHX"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2401172053_93d5XHX-S.jpg" border="0" alt="Sugar shack" title="Sugar shack"&gt;&lt;/a&gt;&lt;br/&gt;Sugar shack&lt;/p&gt;

&lt;p&gt;
We sat down in a wooden cabin and ate everything with maple syrup: bread, soup, sausages, frittata, meat balls, pancakes, coffee, just everything. I got to hang out with many different speakers, and not surprisingly, I already knew a few of them through various conferences, notably &lt;a href="http://blog.sqisland.com/2012/06/dutch-mobile-conference.html"&gt;Dutch Mobile Conference&lt;/a&gt;.
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/28361328_69rQNT#2401172191_VZ53zbg"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2401172191_VZ53zbg-S.jpg" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Nuit Blanche&lt;/h2&gt;

&lt;p&gt;
I decided to stay an extra night to do some sightseeing. It happens to be &lt;a href="http://www.montrealenlumiere.com/nuit-blanche-en/"&gt;Nuit Blanche&lt;/a&gt;, the winter celebration. There were activities all over the city. We started by exploring the underground passageways, which were running an art exhibition. My favorite is by Baillat Cardell &amp;amp; Fils, which consists of a box with a mirror and a few tubes in front of it. But it was cleverly arranged that it looks like you are gazing into a tunnel. 
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/28361328_69rQNT#2401167360_6GM4G8q"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2401167360_6GM4G8q-S.jpg" border="0" alt="Ici" title="Ici"&gt;&lt;/a&gt;&lt;br/&gt;Ici&lt;/p&gt;

&lt;p&gt;
We came up from underground and went to a square sprinkled with glowing snowballs. They were translucent ping-pong balls stuffed with an LED light, and so much fun to play! People juggled them, buried them in snow, and of course, threw them at each other. Such a brilliant idea! 
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/28361328_69rQNT#2401167820_GCSFn6c"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2401167820_GCSFn6c-S.jpg" border="0" alt="LED snowballs" title="LED snowballs"&gt;&lt;/a&gt;&lt;br/&gt;LED snowballs&lt;/p&gt;

&lt;p&gt;
At 9 o'clock there were fireworks. Afterwards we mingled among the crowd and checked out the various food vendors. The most interested one had open fire pits. People bought sausages and marshmallows to roast in them.
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/28361328_69rQNT#2401168695_MDxXF8C"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2401168695_MDxXF8C-S.jpg" border="0" alt="Open fire pit" title="Open fire pit"&gt;&lt;/a&gt;&lt;br/&gt;Open fire pit&lt;/p&gt;

&lt;p&gt;
There was so much going on I couldn't describe it all. We saw fire dances, light shows, projections, blacksmithing, glass blowing... the whole city was awake until the wee hours. We couldn't believe it when we got back to the hotel - it was already 2am!
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/WdXChBbG9Rc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/8007346567611879795/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2013/03/confoo.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/8007346567611879795?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/8007346567611879795?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/WdXChBbG9Rc/confoo.html" title="ConFoo" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-ckYpCW9Gwyk/UUI4egIH0qI/AAAAAAAAAcE/EsUh_6-BBVo/s72-c/TenTracks.jpg" height="72" width="72" /><thr:total>2</thr:total><georss:featurename>Montreal, QC, Canada</georss:featurename><georss:point>45.4994059976693 -73.56482862442022</georss:point><georss:box>45.4980149976693 -73.56735012442022 45.5007969976693 -73.56230712442022</georss:box><feedburner:origLink>http://blog.sqisland.com/2013/03/confoo.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUBQXo_eip7ImA9WhBTE0U.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-3398398318379183703</id><published>2013-02-04T13:49:00.000-08:00</published><updated>2013-02-08T21:04:10.442-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-08T21:04:10.442-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ios" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Learning iOS as an Android developer</title><content type="html">&lt;p&gt;As a veteran Android developer, I have always been curious about the iOS platform. Is Objective-C hard to learn? Is it really much easier to make beautiful UI in iOS?&lt;/p&gt;

&lt;p&gt;I decided that the best way is to write an app on both platforms and compare. An app that I actually launch, so I experience the whole process, from coding to UI design to distribution. The result is &lt;a href="http://www.heartcollageapp.com"&gt;Heart Collage&lt;/a&gt;, available on both &lt;a href="https://itunes.apple.com/us/app/heart-collage/id596966251"&gt;Apple App Store&lt;/a&gt; and &lt;a href="http://play.google.com/store/apps/details?id=com.heartcollageapp.core&amp;referrer=utm_source%3Dblog%26utm_medium%3Dlink%26utm_campaign%3Dios"&gt;Google Play&lt;/a&gt;.&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://www.heartcollageapp.com" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img class="borderless" border="0" height="400" width="400" src="http://3.bp.blogspot.com/-Q7clSs1DOtc/URAnL9jBMjI/AAAAAAAAAbY/dd84Deh7Xh8/s400/blue_rounded.png" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;Here are my thoughts after learning iOS for two months.&lt;/p&gt;

&lt;h1&gt;The setup&lt;/h1&gt;

&lt;p&gt;I wrote an universal app in iOS 6, with auto layout and storyboard. I chose iOS 6 for the new functionalities like &lt;code&gt;UICollectionView&lt;/code&gt; and &lt;code&gt;UIActivityViewController&lt;/code&gt;. Auto layout and storyboard trickled down from the iOS 6 decision. Since I was on the latest version, I may as well take advantage of the latest tools.&lt;/p&gt;

&lt;h1&gt;Learning curve&lt;/h1&gt;

&lt;p&gt;The first three weeks were painful. Not only I did not know anything, but I lacked the vocabulary to ask questions. I would search for something and find 5 Stack Overflow threads, all of which sounding kind of related to what I need, but not really. It was really frustrating.&lt;/p&gt;

&lt;p&gt;But things changed on the third week. By then I knew which classes I was using, so I prefixed all my image manipulation searches with &lt;code&gt;UIImage&lt;/code&gt;, navigation searches with &lt;code&gt;UINavigationController&lt;/code&gt;. I also had some basic understanding of how things were organized, and was able to skim and judge if a particular thread was relevant.&lt;/p&gt;

&lt;p&gt;Once I knew how to find answers on the internet, development speed really picked up. I felt like I was actually coding, instead of walking into a wall.&lt;/p&gt;

&lt;h1&gt;UI Editing&lt;/h1&gt;

&lt;p&gt;Initially I thought I would really be bothered by all the square brackets in Objective-C, but I got used to the syntax fairly quickly. What tripped me up was Interface Builder / Storyboard.&lt;/p&gt;

&lt;p&gt;In both iOS and Android, there are two ways to specify layout: xml and code. The difference is that Android has readable xml. Not so much in iOS.&lt;/p&gt;

&lt;p&gt;Both systems use unique ids to refer to the various components. In Android, you define the id like this:&lt;/p&gt;

&lt;pre class="prettyprint xml"&gt;
&amp;lt;Button android:id=”@+id/start_button” /&amp;gt;
&lt;/pre&gt;

&lt;p&gt;The build system gathers all the id tags and generate unique ids in Java:&lt;/p&gt;

&lt;pre class="prettyprint java"&gt;
public static final class id {
  public static final int start_button=0x7f08003b;
}
&lt;/pre&gt;

&lt;p&gt;To refer to a view in your code, use &lt;code&gt;findViewById&lt;/code&gt;:&lt;/p&gt;

&lt;pre class="prettyprint xml"&gt;
Button startButton = (Button) findViewById(R.id.start_button);
&lt;/pre&gt;

&lt;p&gt;In iOS, the storyboard directly generates the unique ids in the xml:&lt;/p&gt;

&lt;pre class="prettyprint xml"&gt;
&amp;lt;button id="vMl-QF-OAb" /&amp;gt;
&lt;/pre&gt;

&lt;p&gt;To refer to a view in your code, you first define an IBOutlet in your .h file, go to the storyboard, right-click drag your view into the view controller. This assumes you have already told storyboard that this particular window is linked to that view controller, otherwise the IBOutlet will not show up.&lt;/p&gt;

&lt;p&gt;It all makes sense after the fact, but when I first started I would drag and drag and drag and not be able to link the views. Sometimes I forgot to specify the view controller. Other times I forgot to add the IBOutlet. On late nights I forgot it’s right-click drag, not just drag.&lt;/p&gt;

&lt;p&gt;The most difficult part is that I cannot compare my implementation with sample code because it is all visual. In Android I would diff the whole project, code and xml and all, to find out what I missed. The XML produced by Interface Builder / Storyboard is not diff friendly at all.&lt;/p&gt;

&lt;h1&gt;Built-in Components&lt;/h1&gt;

&lt;p&gt;Once I got the ropes around UI editing, I can build the various screens for the app. People claim that the built-in components in iOS are much more beautiful than Android, but the gap has significantly narrowed since Ice Cream Sandwich. Sure, the iOS &lt;code&gt;UIPickerView&lt;/code&gt; is still much more delightful to use than the Android &lt;code&gt;Spinner&lt;/code&gt;, but the basic components like buttons are pretty much on par.&lt;/p&gt;

&lt;p&gt;There was one thing that was much much easier to use on iOS than Android: the camera preview. Heart Collage shows a square camera preview for you to pose. In iOS, I can ask for a preview window in any aspect ratio, and the system crops the camera feed automatically. In Android? The system stretches the camera feed to the aspect ratio of the preview. To make a square camera preview I had to make the preview window the same aspect ratio as the camera feed, and cover up some parts so it appears to be a square. It was really involved. Who wants a distorted camera feed anyway? Cropping is the right thing to do.&lt;/p&gt;

&lt;p&gt;For the rest I almost always find direct correspondences: &lt;code&gt;ImageView&lt;/code&gt; maps to &lt;code&gt;UIImageView&lt;/code&gt;, &lt;code&gt;TextView&lt;/code&gt; maps to &lt;code&gt;UILabel&lt;/code&gt;, &lt;code&gt;ListView&lt;/code&gt; is roughly &lt;code&gt;UITableView&lt;/code&gt;, and &lt;code&gt;GridView&lt;/code&gt;... well &lt;code&gt;GridView&lt;/code&gt; is interesting. Up until iOS 5 there is no built-in grid view. You have to use a &lt;code&gt;UITableView&lt;/code&gt; and layout the cell on each row yourself. I was shocked when I heard that. Guess I’m spoiled by Android? We have that since version 1! Fortunately &lt;code&gt;UICollectionView&lt;/code&gt; was introduced in iOS 6, and unlike Android, it is okay to target the latest OS release because most users upgrade very quickly.&lt;/p&gt;

&lt;p&gt;This brings us to the famous fragmentation debate. &lt;/p&gt;

&lt;h1&gt;Fragmentation&lt;/h1&gt;

&lt;p&gt;There are two kinds of fragmentation: OS version and device form factor. &lt;/p&gt;

&lt;h2&gt;OS version&lt;/h2&gt;

&lt;p&gt;iOS is definitely better positioned against OS version fragmentation, since Apple is the sole manufacturer of all iOS devices and they completely control the OTA schedule.&lt;/p&gt;

&lt;h2&gt;Device form factors&lt;/h2&gt;

&lt;p&gt;Until recently the device form factor was pretty uniform. There is Retina and Non-Retina, that’s it. Different density, same aspect ratio. Same aspect ratio means you can still use a coordinate-based layout system and align your views in Interface Builder.&lt;/p&gt;

&lt;p&gt;Everything was peachy until iPhone5. Suddenly there is a different aspect ratio, and Apple needed something more powerful than struts and springs. The solution is Auto Layout.&lt;/p&gt;

&lt;p&gt;Auto layout is a declarative way to specify the positions of your views. Instead of saying, put this image 240 pixels from the top, you say, center vertically. The system computes the xy-coordinates based on your constraints, so it adapts well to different form factors.&lt;/p&gt;

&lt;p&gt;Auto layout sounds good on paper, but it is really clunky to use in practice. In Interface Builder, you still drag and drop your views, and XCode tries to guess your intention. Most of the time it gets it wrong, so I have to remove the automatically generated constraints and create my own. I also tried doing it in code, but it is very verbose, and very easy to make mistakes. The &lt;a href="http://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/AutolayoutPG/Articles/formatLanguage.html"&gt;visual format&lt;/a&gt; helps a bit, but most of the time I want to center my views, and there is no way to specify that in ASCII.&lt;/p&gt;

&lt;p&gt;This is the time when I really really miss Android. The system was designed from day one to handle multiple form factors, and you are introduced to concepts like &lt;code&gt;match_parent&lt;/code&gt; and &lt;code&gt;wrap_content&lt;/code&gt; from the very beginning. I declare my layout in xml, spell out relationship among the the views with human-readable ids, and I can easily verify my rules whenever I need to add a view. In iOS I am always doubtful when I drop in a new view. What did it do to the existing views? It is so tedious to click through them one by one and examine all the constraints.&lt;/p&gt;

&lt;p&gt;Perhaps there is a better way. But all my iOS developer friends started before iOS 6, before auto layout was available. They declare their views in code, compute the frames by hand, and basically run their own layout algorithms. And there is no reason to convert once you have a system in place, so I am on my own on the auto layout front.&lt;/p&gt;

&lt;h1&gt;Intents&lt;/h1&gt;

&lt;p&gt;Another thing I miss about Android is the intent system. Both for navigation and integration.&lt;/p&gt;

&lt;h2&gt;Navigation&lt;/h2&gt;

&lt;p&gt;For Heart Collage, I capture your poses with the camera, then replace the camera activity with the view collage activity, showing the mosaic. Here is what I do in Android:&lt;/p&gt;

&lt;pre class="prettyprint java"&gt;
Intent intent = new Intent(this, ViewCollageActivity.class);
startActivity(intent);
finish();
&lt;/pre&gt;

&lt;p&gt;In other words, I add the view collage activity onto the activity stack, and remove the camera activity by calling finish(). &lt;/p&gt;

&lt;p&gt;It took me a very long time to figure out how to do that in iOS. In storyboard, most of the time you push a new view controller onto the stack by adding a segue to a button. You can also push a manual segue, which is what I do after the camera snaps all the photos. The tricky part is, how do I pop the old view controller? If I push first, the old view controller is no longer on top on the stack, so you cannot pop it. If I pop first, the old view controller is no longer on the stack, and I am not allowed to ask for a segue from it.&lt;/p&gt;

&lt;p&gt;This is the moment when I doubt if it was wise to go with storyboard. It seems to be designed for very simple navigation needs, and even my 4-screen app is too complicated for it. I ended up popping one level higher with a flag to automatically forward me to view the collage. Bit of a hack, but I was too far deep into storyboard to back out and recreate all the views in xib. Especially since I have no way of copying and pasting the layouts, so I have to drag and drop everything again.&lt;/p&gt;

&lt;h2&gt;Integration&lt;/h2&gt;

&lt;p&gt;After you make a Heart Collage, the app lets you share it with your friends. This is super easy on Android. I just create an Intent saying that I want to share an image, and the system automatically generates the list of installed apps that can handle that. It’s an elegant way to have a personalized and extensible experience. Users can share their collages with any apps they prefer, and I don’t even need to know they use that app, let alone creating a new integration point.&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-lNQbMhZuC-U/URAo7lLqYsI/AAAAAAAAAbk/Sb-y59CY2sw/s1600/share-full.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img class="borderless" border="0" height="400" width="230" src="http://3.bp.blogspot.com/-lNQbMhZuC-U/URAo7lLqYsI/AAAAAAAAAbk/Sb-y59CY2sw/s400/share-full.png" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;For sharing, iOS 6 provides a similar functionality with &lt;code&gt;UIActivityViewController&lt;/code&gt;. I set up the message and image, and it brings up a list of options for sharing. The big difference is the list is curated by Apple, and not extensible by the user. So everybody will see Sina Weibo as an option, whether they care about it or not. &lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-SJUXj5mrQQc/URApEWj59vI/AAAAAAAAAbw/GGsF8OgnUfs/s1600/share.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img class="borderless" border="0" height="400" width="190" src="http://1.bp.blogspot.com/-SJUXj5mrQQc/URApEWj59vI/AAAAAAAAAbw/GGsF8OgnUfs/s400/share.png" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;This is where Android really shines, the seamless integration among apps, and as a result a very personalized experience.&lt;/p&gt;

&lt;h1&gt;Distribution&lt;/h1&gt;

&lt;h2&gt;Beta testing&lt;/h2&gt;

&lt;p&gt;Finally my app was ready for beta testing. Yay!&lt;/p&gt;

&lt;p&gt;Here are the steps for both platforms:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Android&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
&lt;ol&gt;
&lt;li&gt;Compile the apk&lt;/li&gt;
&lt;li&gt;Email it to some friends&lt;/li&gt;
&lt;li&gt;There is no third step&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;iOS&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
&lt;ol&gt;
&lt;li&gt;Collect UUID from friends&lt;/li&gt;
&lt;li&gt;Create provisioning profile from iOS dev portal&lt;/li&gt;
&lt;li&gt;Add UUID for each new test device&lt;/li&gt;
&lt;li&gt;Download provisioning profile from iOS dev portal&lt;/li&gt;
&lt;li&gt;Compile ipa&lt;/li&gt;
&lt;li&gt;Email provisioning profile and ipa&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;

&lt;p&gt;The most painful part is that I have to manually add each test device on the provisioning portal, and then download it to my local disk to compile the ipa. So tedious.&lt;/p&gt;

&lt;p&gt;The flip side though, I know exactly who can run my app, and I don’t need to worry about leaks. For Android, once you send out an apk you have no idea where it will go. And there isn’t really a good way to limit the distribution.&lt;/p&gt;

&lt;h2&gt;Release&lt;/h2&gt;

&lt;p&gt;And now, the final moment - release to store. No anxiety for Android at all. Just upload, wait for an hour or so, and it’s live. For iOS, there is the review process.&lt;/p&gt;

&lt;p&gt;I want to release Heart Collage before Valentine’s Day, so I submitted at the end of January. There should be plenty of time, but the &lt;a href="https://developer.apple.com/appstore/resources/approval/guidelines.html"&gt;potential rejection&lt;/a&gt; was stressing me out. I was so relieved when the app got approved the first try, in 6 days. Jubilation!&lt;/p&gt;

&lt;h1&gt;Verdict&lt;/h1&gt;

&lt;p&gt;I have been mostly pointing out the difference between iOS and Android. But at the end of the day, they are more similar than different. In terms of technology, at least. The verdict is still out on the money. Is it true that iOS users are more willing to pay for apps? Which platform will generate more revenue? That will be the driving force for my decision to spend time on iOS vs Android, and the numbers are still out. Will Heart Collage get more downloads on &lt;a href="https://itunes.apple.com/us/app/heart-collage/id596966251"&gt;iOS&lt;/a&gt; or &lt;a href="http://play.google.com/store/apps/details?id=com.heartcollageapp.core&amp;referrer=utm_source%3Dblog%26utm_medium%3Dlink%26utm_campaign%3Dios"&gt;Android&lt;/a&gt;? We shall see.&lt;/p&gt;

&lt;p&gt;
&lt;i&gt;
Many thanks to &lt;a href="http://www.cyrilmottier.com"&gt;Cyril Mottier&lt;/a&gt; and &lt;a href="http://radtastical.com/"&gt;Tim Burks&lt;/a&gt; for reviewing the draft of this article.
&lt;/i&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;i&gt;
Wanna check out &lt;a href="http://www.heartcollageapp.com"&gt;Heart Collage&lt;/a&gt;? Download it here:
&lt;/i&gt;
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://play.google.com/store/apps/details?id=com.heartcollageapp.core&amp;referrer=utm_source%3Dblog%26utm_medium%3Dlink%26utm_campaign%3Dios" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img class="borderless" border="0" height="60" width="202" src="http://2.bp.blogspot.com/-DLubV8_hpso/UQ7NGkrHBNI/AAAAAAAAAbA/Gx76LgpfFfY/s400/google_play_store.png" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://itunes.apple.com/us/app/heart-collage/id596966251" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img class="borderless" border="0" height="60" width="202" src="http://3.bp.blogspot.com/-0MLGmDJEwaA/UQ7LeMTWPdI/AAAAAAAAAa0/btZE0F8Qxhg/s400/apple_app_store.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/EpPtIh38mFU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/3398398318379183703/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2013/02/learning-ios-as-android-developer.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/3398398318379183703?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/3398398318379183703?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/EpPtIh38mFU/learning-ios-as-android-developer.html" title="Learning iOS as an Android developer" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-Q7clSs1DOtc/URAnL9jBMjI/AAAAAAAAAbY/dd84Deh7Xh8/s72-c/blue_rounded.png" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://blog.sqisland.com/2013/02/learning-ios-as-android-developer.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEDRHs8eSp7ImA9WhNaGU8.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-4113395205446652181</id><published>2013-02-01T12:49:00.000-08:00</published><updated>2013-02-03T12:51:15.571-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-03T12:51:15.571-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="launch" /><category scheme="http://www.blogger.com/atom/ns#" term="ios" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Heart Collage launched</title><content type="html">&lt;p&gt;
Super excited that I just launched my app &lt;a href="http://www.heartcollageapp.com"&gt;Heart Collage&lt;/a&gt;, just in time for Valentine's Day!
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://www.heartcollageapp.com" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="400" width="400" src="http://2.bp.blogspot.com/-oscm6IipIUM/UQ7LMmCnjZI/AAAAAAAAAao/aEIcKvgWmY0/s400/blue_square.png" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
The app shows you how to pose for each part, snaps the shots one by one, and stitch them all together into a Heart Collage. I love watching people pose for the various parts of the heart - it's hilarious!
&lt;/p&gt;

&lt;p&gt;
Get the app from &lt;a href="http://play.google.com/store/apps/details?id=com.heartcollageapp.core&amp;referrer=utm_source%3Dblog%26utm_medium%3Dlink%26utm_campaign%3Dlaunch"&gt;Google Play&lt;/a&gt; or &lt;a href="https://itunes.apple.com/us/app/heart-collage/id596966251"&gt;Apple App Store&lt;/a&gt;, and let me know what you think!
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://play.google.com/store/apps/details?id=com.heartcollageapp.core&amp;referrer=utm_source%3Dblog%26utm_medium%3Dlink%26utm_campaign%3Dlaunch" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img class="borderless" border="0" height="60" width="202" src="http://2.bp.blogspot.com/-DLubV8_hpso/UQ7NGkrHBNI/AAAAAAAAAbA/Gx76LgpfFfY/s400/google_play_store.png" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://itunes.apple.com/us/app/heart-collage/id596966251" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img class="borderless" border="0" height="60" width="202" src="http://3.bp.blogspot.com/-0MLGmDJEwaA/UQ7LeMTWPdI/AAAAAAAAAa0/btZE0F8Qxhg/s400/apple_app_store.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/BRlbqy07OnM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/4113395205446652181/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2013/02/heart-collage-launched.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/4113395205446652181?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/4113395205446652181?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/BRlbqy07OnM/heart-collage-launched.html" title="Heart Collage launched" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-oscm6IipIUM/UQ7LMmCnjZI/AAAAAAAAAao/aEIcKvgWmY0/s72-c/blue_square.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.sqisland.com/2013/02/heart-collage-launched.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcHQ3g4eCp7ImA9WhNUEE4.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-545378746492318339</id><published>2013-01-01T00:45:00.000-08:00</published><updated>2013-01-01T00:47:12.630-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-01T00:47:12.630-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="speaking" /><title>2012: Year of Speaking</title><content type="html">&lt;p&gt;
Happy New Year! 2012 has been wonderful to me. I started out with the goal of &lt;a href="http://blog.sqisland.com/2012/01/new-year-resolution-be-public-speaker.html"&gt;becoming a public speaker&lt;/a&gt;, with the specific goal of 5 lightning talks and 3 full-length lectures. While I came short on the lightning talks (4 instead of 5), I went way beyond on the lectures (13 instead of 3), speaking at far away places like &lt;a href="http://blog.sqisland.com/2012/11/droidcon-london.html"&gt;London&lt;/a&gt;, &lt;a href="http://blog.sqisland.com/2012/11/droidcon-bucharest.html"&gt;Bucharest&lt;/a&gt; and &lt;a href="http://blog.sqisland.com/2012/11/devoxx.html"&gt;Antwerp&lt;/a&gt;. You can see all my talks at &lt;a href="http://www.sqisland.com/talks/"&gt;my speaking profile&lt;/a&gt;. (Yup, I have a speaker profile!)
&lt;/p&gt;

&lt;p&gt;
Besides giving talks, I also wrote a few blog posts on speaking:
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://blog.sqisland.com/2012/01/you-can-speak-at-conference-too.html"&gt;You can speak at a conference too&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blog.sqisland.com/2012/06/how-to-be-confident-speaker.html"&gt;How to be a confident speaker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.sqisland.com/2012/12/why-do-i-speak-at-conferences.html"&gt;Why Do I Speak At Conferences?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
All in all, I consider it mission accomplished!
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;New Resolution?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
I really enjoy public speaking, and will continue to do so in 2013 and beyond. I wanted to set a new goal for the new year, but I couldn't come up with a crisp one like last year. Here are a few of my candidates:
&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Mentor others to speak at tech conferences&lt;/li&gt;
&lt;li&gt;Give a keynote speech&lt;/li&gt;
&lt;li&gt;Write a book&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;b&gt;Mentoring&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
Mentoring others is a great goal, but I have difficulty coming up with a measurable result. Initially I thought, "put 3 people on stage", but I suspect I won't be the sole reason someone is speaking, so it is really hard to quantify.
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Keynote&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
Keynote speech is an interesting goal. Keynotes open conferences, address to a large crowd with a diverse background, and have everybody take home a learning or two. It is quite a daunting task. My aspiration would be to give a keynote speech that is deeply rooted in my technical knowledge, but unveil general life lessons. I have no idea how I would write a speech like that, and even if I do, keynotes don't have open call for speakers, so I have no idea how I would be invited to deliver one. The lack of a game plan makes me uneasy, but perhaps that's the kind of goal I should shoot for?
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Book&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
For the book, I'd like to write an advanced Android book that expands on my various talks. The main holdback for this goal is the time. I have spoken to many tech book authors, and all of them told me it is a lot of work. More work than you think, and then some more. I have so many projects going on that I am not sure if I should take on such a big goal.
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;No Resolution&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
In the end I decided I won't have a new year resolution. I will still mentor others to speak, think about my pie-in-the-sky keynote, and test the writing waters with a chapter or two. But I won't have a resolution with a &lt;code&gt;font-size: 1.8em&lt;/code&gt; measurable result like last time ^_^
&lt;/p&gt;

&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/xY4mOh5L_Xc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/545378746492318339/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2013/01/2012-year-of-speaking.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/545378746492318339?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/545378746492318339?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/xY4mOh5L_Xc/2012-year-of-speaking.html" title="2012: Year of Speaking" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://blog.sqisland.com/2013/01/2012-year-of-speaking.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8CQHg_fSp7ImA9WhNWEUw.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-3302988456372521538</id><published>2012-12-09T21:35:00.000-08:00</published><updated>2012-12-09T21:37:41.645-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-09T21:37:41.645-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="event" /><category scheme="http://www.blogger.com/atom/ns#" term="conference" /><category scheme="http://www.blogger.com/atom/ns#" term="talks" /><category scheme="http://www.blogger.com/atom/ns#" term="speaking" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>AnDevCon IV</title><content type="html">&lt;p&gt;
It's &lt;a href="http://www.andevcon.com"&gt;AnDevCon&lt;/a&gt; time again! My &lt;a href="http://www.sqisland.com/talks/android-custom-components"&gt;Android Custom Components&lt;/a&gt; talk was really popular at &lt;a href="http://blog.sqisland.com/2012/05/andevcon-3.html"&gt;AnDevCon III&lt;/a&gt;, so I decided to give it again. On top of that, I had to a two-part session to discuss Android UI, both lecture and hands-on workshop. 
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Murphy's Law&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
I prepared my talks a few weeks ahead of time, so I was pretty chill about the conference. But as Murphy's Law dictates, anything that can go wrong will go wrong. On Monday of the conference week, my laptop died. My talks were on Wednesday and Thursday. Needlessly to say, I was completely thrown off course. I was so stressed that I had nightmares on Monday night. 
&lt;/p&gt;

&lt;p&gt;
Tuesday I took the laptop to the Apple Store, and they had to ship it out for the repairs. My slides were all online, but I still needed a machine to project them. Fortunately I found a friend who lent me a laptop, and I installed Photoshop trial for the demo in my session.
&lt;/p&gt;

&lt;p&gt;
Since I didn't want to install too many new programs on my friend's computer, I took a break from programming on Tuesday night. Instead, I baked cookies to bring to the conference.
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-awQMgwIb0Fg/UMUCBQKcXMI/AAAAAAAAAZo/V9FCpvT7zZ8/s1600/IMG_20121204_225112.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="400" width="300" src="http://1.bp.blogspot.com/-awQMgwIb0Fg/UMUCBQKcXMI/AAAAAAAAAZo/V9FCpvT7zZ8/s400/IMG_20121204_225112.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
Same as &lt;a href="http://blog.sqisland.com/2012/05/andevcon-3.html"&gt;AnDevCon III&lt;/a&gt;, I gave away bugdroid-shaped cookies to encourage participation, and people loved it.
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Beautiful Android on a Shoestring&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
My first session was &lt;a href="http://www.sqisland.com/talks/beautiful-android"&gt;Beautiful Android on a Shoestring&lt;/a&gt;. I shared my experience in creating beautiful Android apps without knowing how to draw, introducing concepts like xml drawable, text shadow, shaders, custom fonts etc. I am especially proud of using icon fonts for scalable icons, a concept I borrowed from the web.
&lt;/p&gt;

&lt;p&gt;
After showing the Android techniques, I switched gears and showcased my favorite website to get color schemes, fonts, icons etc:
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://0to255.com/"&gt;0to255.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://colorschemedesigner.com/"&gt;colorschemedesigner.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.fontsquirrel.com/"&gt;fontsquirrel.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.google.com/webfonts"&gt;Google Web Fonts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.fontello.com/"&gt;fontello.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.subtlepatterns.com/"&gt;subtlepatterns.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://android-ui-utils.googlecode.com/hg/asset-studio/dist/index.html"&gt;Android Asset Studio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.glyphish.com/"&gt;Glyphish icons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.thenounproject.com/"&gt;The Noun Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://openclipart.org/"&gt;Open Clipart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.icomoon.io/"&gt;IcoMoon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://appdevwiki.com/"&gt;AppDevWiki&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
I recorded the talk with my phone:
&lt;/p&gt;

&lt;center&gt;
&lt;iframe width="420" height="315" src="http://www.youtube.com/embed/1hQzYDCm95A" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;

&lt;p&gt;
Unfortunately the video did not capture the slides. But fear not, I used &lt;a href="http://popcornjs.org/"&gt;Popcorn.js&lt;/a&gt; to embed the video to the &lt;a href="http://www.sqisland.com/talks/beautiful-android"&gt;slide deck&lt;/a&gt;. Play the embedded video on the top right corner, and the slides will advance automatically to match. Check it out: &lt;a href="http://www.sqisland.com/talks/beautiful-android"&gt;http://bit.ly/BeautifulAndroid&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Hands-on Icon Creation&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
I led a hands-on Photoshop workshop right after &lt;a href="http://www.sqisland.com/talks/beautiful-android"&gt;Beautiful Android on a Shoestring&lt;/a&gt;. I know very little about Photoshop, but I felt that what I learnt from the &lt;a href="http://blog.sqisland.com/2012/01/graphic-design-for-engineers.html"&gt;Graphic Design for Engineers&lt;/a&gt; workshop was super useful, and I want to share that with other developers. I had a relatively small class, which was great because I could check and make sure everyone was following along. 
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Android Custom Components&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
The next day I gave my &lt;a href="http://www.sqisland.com/talks/android-custom-components"&gt;Android Custom Components&lt;/a&gt; talk. This is my fourth time giving this talk, so I was very comfortable with the material. Still, every talk is a live performance, and the audience is always different. I really enjoyed the interaction.
&lt;/p&gt;

&lt;p&gt;
Since I already recorded the talk at &lt;a href="http://blog.sqisland.com/2012/05/andevcon-3.html"&gt;AnDevCon III&lt;/a&gt;, I did not set up my video taping this time. Here is the recording from May:
&lt;/p&gt;

&lt;center&gt;
&lt;iframe width="420" height="315" src="http://www.youtube.com/embed/DhGP4J5u_mI" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;

&lt;p&gt;&lt;b&gt;Attending sessions&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
My three talks were clashing with a lot of the other sessions I wanted to attend, and I was a bit disappointed about it. Fortunately I managed to catch the Android concurrency talk, which was jam packed with information. I was live tweeting since it is too good to keep to myself! Here are a few of the tweets:
&lt;/p&gt;

&lt;blockquote class="twitter-tweet"&gt;&lt;p&gt;If you choose to use AsyncTask, make it static and pass Activity as WeakReference to avoid Activity leaks - Doug Stevenson at &lt;a href="https://twitter.com/search/%23AnDevCon"&gt;#AnDevCon&lt;/a&gt;&lt;/p&gt;&amp;mdash; Chiu-Ki Chan (@chiuki) &lt;a href="https://twitter.com/chiuki/status/277176134129565696" data-datetime="2012-12-07T22:21:54+00:00"&gt;December 7, 2012&lt;/a&gt;&lt;/blockquote&gt;
&lt;script src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;

&lt;blockquote class="twitter-tweet"&gt;&lt;p&gt;Use LocalBroadcastManager to publish progress from Loader to Activity - Doug Stevenson at &lt;a href="https://twitter.com/search/%23AnDevCon"&gt;#AnDevCon&lt;/a&gt; | Probably can use event bus too?&lt;/p&gt;&amp;mdash; Chiu-Ki Chan (@chiuki) &lt;a href="https://twitter.com/chiuki/status/277182856172802048" data-datetime="2012-12-07T22:48:37+00:00"&gt;December 7, 2012&lt;/a&gt;&lt;/blockquote&gt;
&lt;script src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;

&lt;blockquote class="twitter-tweet"&gt;&lt;p&gt;Use CountDownLatch to block the Loader thread to wait for the result from an asynchronous API - Doug Stevenson at &lt;a href="https://twitter.com/search/%23AnDevCon"&gt;#AnDevCon&lt;/a&gt;&lt;/p&gt;&amp;mdash; Chiu-Ki Chan (@chiuki) &lt;a href="https://twitter.com/chiuki/status/277183985736622081" data-datetime="2012-12-07T22:53:06+00:00"&gt;December 7, 2012&lt;/a&gt;&lt;/blockquote&gt;
&lt;script src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;

&lt;p&gt;&lt;b&gt;Great conference&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
Once again I had a great time at &lt;a href="http://www.andevcon.com"&gt;AnDevCon&lt;/a&gt;. It's really cool to hang out with so many Android developers. Definitely check it out if you work with Android!
&lt;/p&gt;









&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/Zh8PRsW36gY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/3302988456372521538/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2012/12/andevcon-4.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/3302988456372521538?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/3302988456372521538?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/Zh8PRsW36gY/andevcon-4.html" title="AnDevCon IV" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-awQMgwIb0Fg/UMUCBQKcXMI/AAAAAAAAAZo/V9FCpvT7zZ8/s72-c/IMG_20121204_225112.jpg" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Hyatt Regency SFO</georss:featurename><georss:point>37.59389969988332 -122.36531496047974</georss:point><georss:box>37.59311319988333 -122.36654896047973 37.59468619988332 -122.36408096047974</georss:box><feedburner:origLink>http://blog.sqisland.com/2012/12/andevcon-4.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQBRXo_eSp7ImA9WhNXFUo.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-3553289224192726432</id><published>2012-12-03T15:06:00.000-08:00</published><updated>2012-12-03T15:12:34.441-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-03T15:12:34.441-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="speaking" /><title>Why Do I Speak At Conferences?</title><content type="html">&lt;p&gt;
I have been asked by many people why I speak at conferences. I know I enjoy it tremendously, but it took me a while to pinpoint why. Here are my top three reasons.
&lt;/p&gt;

&lt;p style="font-size: 1.4em"&gt;&lt;b&gt;Share Knowledge&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
First and foremost, I want to share what I know. As a developer I face new challenges every day, often scouring the internet for hours to figure out how to implement a new feature or get rid of that mysterious bug. I don't want my effects to go wasted. I keep a blog to share my findings, but sometimes I feel like I am talking to the void.
&lt;/p&gt;

&lt;p&gt;
At a conference I have a live audience. I get instant feedback, perhaps a puzzled look that nudges me to explain in a different way, or a knowing smile that tells me I struck a chord. It is truly rewarding to see that sparkle of understanding, to know that you have made a difference.
&lt;/p&gt;

&lt;p style="font-size: 1.4em"&gt;&lt;b&gt;Network effortlessly&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
After you give a talk, people come to you during lunch and coffee breaks. They heard you speak, thank you for the great talk, and want to discuss more. These conversations are way more interesting than your typical small talk, and I have met many wonderful people this way. As a speaker, networking becomes effortless because people come to me, and focused too, because they come to me knowing my interests. No more wandering aimlessly, shaking hands and collecting business cards without knowing why.
&lt;/p&gt;

&lt;p style="font-size: 1.4em"&gt;&lt;b&gt;Be visible&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
As much as you would like to believe in a meritocratic society, unseen achievements are, by definition, not recognized. By stepping on stage and sharing your knowledge, you are seen as an expert. I know this at the back of my head, but I am still amazed by the wonderful opportunities that presented themselves to me since I started speaking.
&lt;/p&gt;

&lt;p&gt;
One thing I did not expect about my visibility was that it was not just about me. I did not set out to defy the coder stereotype, but the truth is, I am not white, and I am not male. Every time I step on stage, I assert my identity as a software engineer, as a woman, as a speaker with a Cantonese-British-American accent, as someone who laughs at the smallest little thing, as myself. By being visible, I make it a bit easier for the next person who is working against the subconscious assumptions of what it means to be a software engineer, I push the envelope a little bit forward, towards a more diverse workforce in our industry.
&lt;/p&gt;

&lt;p style="font-size: 1.4em"&gt;&lt;b&gt;Wanna speak?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
I cannot believe that I only started speaking this year. And I cannot figure out why I never thought of doing it before. Perhaps you would like to give it a shot as well? Who knows, you may love it as much as I do.
&lt;/p&gt;

&lt;p&gt;
There are many resources out there, &lt;a href="http://weareallaweso.me"&gt;We Are All Awesome&lt;/a&gt; and &lt;a href="http://speakup.io"&gt;speakup.io&lt;/a&gt; being two. I have given a talk on &lt;a href="http://www.youtube.com/watch?v=MLdhamQlFfg"&gt;how to come up with talk topics&lt;/a&gt;, and also written a blog post on &lt;a href="http://blog.sqisland.com/2012/06/how-to-be-confident-speaker.html"&gt;how to be a confident speaker&lt;/a&gt;. I'd love to share more, so let me know if there is something specific you want to hear about!
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/vgWZZOoC-ZE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/3553289224192726432/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2012/12/why-do-i-speak-at-conferences.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/3553289224192726432?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/3553289224192726432?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/vgWZZOoC-ZE/why-do-i-speak-at-conferences.html" title="Why Do I Speak At Conferences?" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.sqisland.com/2012/12/why-do-i-speak-at-conferences.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUECR308fCp7ImA9WhNXEUk.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-1279160917067379219</id><published>2012-11-22T20:25:00.000-08:00</published><updated>2012-11-28T15:01:06.374-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-11-28T15:01:06.374-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="assets" /><category scheme="http://www.blogger.com/atom/ns#" term="encryption" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Android: Jelly Bean forward locks paid apps</title><content type="html">&lt;p&gt;
Today, a &lt;a href="http://play.google.com/store/apps/details?id=com.monkeywriteapp.write"&gt;Monkey Write&lt;/a&gt; user complained that sound wasn't working on the workbooks he bought. I sell workbooks as separate paid apps on Google Play, which supplies data to the main app. Most of the data is retrieved via a &lt;code&gt;ContentProvider&lt;/code&gt;, but for the sound the main app simply reaches out to the other apk and loads the sound file from its assets:
&lt;/p&gt;

&lt;pre class="prettyprint lang-java"&gt;
Context workbookContext = context.createPackageContext(
    packageName, 0);
AssetFileDescriptor afd = workbookContext.getAssets().openFd(
    "pronunciations/" + soundFile + ".ogg");
&lt;/pre&gt;

&lt;p&gt;
This depends on the resources and assets of an app being world-readable. But from the logcat, it seems that the main app could not find the sound file in the asset folder of the workbook app:
&lt;/p&gt;

&lt;pre class="prettyprint"&gt;
java.io.FileNotFoundException: pronunciations/kou3.ogg
 at android.content.res.AssetManager.openAssetFd(Native Method)
 at android.content.res.AssetManager.openFd(AssetManager.java:331)
&lt;/pre&gt;

&lt;p&gt;
I searched and searched on the internet to no avail, until I verified with the user that sound works fine for the free workbooks he downloaded. By including the word "paid" in my queries, I found a &lt;a href="http://stackoverflow.com/questions/12716607/accessing-assets-of-other-android-app-on-jelly-bean"&gt;StackOverflow post&lt;/a&gt; with this critical bit of information:
&lt;/p&gt;

&lt;blockquote&gt;
Paid apps on JB devices are 'forward locked'. This means that the APK is split in two parts -- one with public resources, and one with private ones and code, which is not readable by other apps. 

I haven't looked into how files are split in detail, but the problem you are seeing suggests that assets are part of the private APK.
&lt;/blockquote&gt;

&lt;p&gt;
More importantly, he provided a way to test forward locking without going through Google Play: &lt;code&gt;adb install -l myapp.apk&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
With that, I managed to reproduce and fix the problem. Since the assets of the paid app is no longer world-readable, I use a &lt;code&gt;ContentProvider&lt;/code&gt; to read the sound file and have the main app query for it. The user has downloaded the updates from Google Play and verified that sound now works for paid workbooks. Yay!
&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/2hFOOs2fbuM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/1279160917067379219/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2012/11/android-jelly-bean-encrypts-paid-apps.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/1279160917067379219?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/1279160917067379219?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/2hFOOs2fbuM/android-jelly-bean-encrypts-paid-apps.html" title="Android: Jelly Bean forward locks paid apps" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://blog.sqisland.com/2012/11/android-jelly-bean-encrypts-paid-apps.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8MRHs6fSp7ImA9WhNWEEQ.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-4011549112986522312</id><published>2012-11-18T12:13:00.000-08:00</published><updated>2012-12-09T14:41:25.515-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-09T14:41:25.515-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="event" /><category scheme="http://www.blogger.com/atom/ns#" term="conference" /><category scheme="http://www.blogger.com/atom/ns#" term="talks" /><category scheme="http://www.blogger.com/atom/ns#" term="speaking" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Devoxx</title><content type="html">&lt;p&gt;
The grand finale for my &lt;a href="http://blog.sqisland.com/2012/10/europe-speaking-tour.html"&gt;Europe speaking tour&lt;/a&gt; is &lt;a href="http://www.devoxx.com/"&gt;Devoxx&lt;/a&gt;. And grand is the right word for it.
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;A grand conference&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
Devoxx took place in Metropolis, the second largest cinema complex in Europe. The AV system is amazing. Gorgeous floor to ceiling projection with live video of the speaker on the left and slides on the right, plus a beautiful outer space background. Just stunning.
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-0ZR2ZfKRe5A/UKk71O5UhPI/AAAAAAAAAYI/yUpYlO5Bbkc/s1600/IMG_8295.JPG" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-0ZR2ZfKRe5A/UKk71O5UhPI/AAAAAAAAAYI/yUpYlO5Bbkc/s400/IMG_8295.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
As if that is not grand enough, &lt;a href="https://twitter.com/Stephan007"&gt;Stephan&lt;/a&gt; and team sprinkled the conference with panache. A troupe of Nao robots opened the conference with a dance, a motorcyle vroomed on stage in the middle of a keynote, celebrity speakers wearing giant hats... really good fun.
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-2KhNFcT5tyk/UKk7gQZ9dqI/AAAAAAAAAX8/2YJNPMZVopc/s1600/IMG_8292.JPG" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-2KhNFcT5tyk/UKk7gQZ9dqI/AAAAAAAAAX8/2YJNPMZVopc/s400/IMG_8292.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;
Nao robots
&lt;/div&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-tnS4CpKHFI0/UKk8M1Fae5I/AAAAAAAAAYU/FJdatlPMb3M/s1600/IMG_8313.JPG" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-tnS4CpKHFI0/UKk8M1Fae5I/AAAAAAAAAYU/FJdatlPMb3M/s400/IMG_8313.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.javaposse.com"&gt;Java Posse&lt;/a&gt; with their signature hats
&lt;/div&gt;

&lt;p&gt;&lt;b&gt;Android talks&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
I first heard about Devoxx from watching an Android talk on Parleys by Romain and Chet. Seems to cover many difference facets of Java, Android being one of them. In May I saw Romain and Chet in person at &lt;a href="http://blog.sqisland.com/2012/05/andevcon-3.html"&gt;AnDevCon III&lt;/a&gt;, and asked them about Devoxx. That's when I decided to apply to speak there. Lo and behold, I got accepted!
&lt;/p&gt;

&lt;p&gt;
Google delivered many awesome Android sessions at Devoxx, with &lt;a href="http://twitter.com/crafty"&gt;Nick&lt;/a&gt; and &lt;a href="http://twitter.com/geekyouup"&gt;Rich&lt;/a&gt; holding a hands-on workshop on the SDK, &lt;a href="http://twitter.com/romainguy"&gt;Romain&lt;/a&gt; and &lt;a href="http://twitter.com/chethaase"&gt;Chet&lt;/a&gt; talking about Jelly Bean, &lt;a href="http://twitter.com/droidxav"&gt;Xavier&lt;/a&gt; and &lt;a href="http://twitter.com/tornorbye"&gt;Tor&lt;/a&gt; talking about the build system.
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-BnkthiNM_BY/UKk_lUM1VDI/AAAAAAAAAZQ/fq_AKgzo7gc/s1600/ChetRomain.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-BnkthiNM_BY/UKk_lUM1VDI/AAAAAAAAAZQ/fq_AKgzo7gc/s400/ChetRomain.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;
Chet and Romain talking about the &lt;a href="https://twitter.com/chiuki/status/268299331889668096"&gt;developer options in Android 4.2&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;
There were many great talks from non-Googlers as well. &lt;a href="http://twitter.com/piwai"&gt;Pierre-Yves Ricau&lt;/a&gt; talked about &lt;a href="http://androidannotations.org/"&gt;Android Annotations&lt;/a&gt;, &lt;a href="http://twitter.com/jakewharton"&gt;Jake Wharton&lt;/a&gt; showed us the open source libraries used at Square etc.
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-FZ-j4X0XJ-w/UKk8fAN7H0I/AAAAAAAAAYg/p0AoSGI2Xus/s1600/IMG_8308.JPG" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-FZ-j4X0XJ-w/UKk8fAN7H0I/AAAAAAAAAYg/p0AoSGI2Xus/s400/IMG_8308.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;
Jake talking about open source Android libraries
&lt;/div&gt;

&lt;p&gt;
And then there is me, the ex-Googler! I talked about &lt;a href="http://www.sqisland.com/talks/android-custom-components"&gt;Android Custom Components&lt;/a&gt;, and people really liked it.
&lt;/p&gt;

&lt;script src="//storify.com/chiuki/devoxx-talk-feedback.js"&gt;&lt;/script&gt;&lt;noscript&gt;[&lt;a href="//storify.com/chiuki/devoxx-talk-feedback" target="_blank"&gt;View the story "Devoxx talk feedback" on Storify&lt;/a&gt;]&lt;/noscript&gt;

&lt;p&gt;
(Side note: did you know that &lt;a href=http://storify.com/"&gt;Storify&lt;/a&gt; was started by Belgians?)
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Awesome hallway&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
Although there were many wonderful Android talks, there were spread over 5 days, so for some time slots I ended up sitting out. Which is not a bad thing, because Devoxx has an awesome hallway setup.
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-sujV_r8qzrE/UKk8t9TRDFI/AAAAAAAAAYs/ETpRuOMjfXE/s1600/IMG_8307.JPG" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-sujV_r8qzrE/UKk8t9TRDFI/AAAAAAAAAYs/ETpRuOMjfXE/s400/IMG_8307.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
There were two rows of tables with power strips in the middle. As we all know, developers swarm towards sockets to charge our gadgets, so this is like the well in the village square, where people gather and socialize. On top of that there was no special speaker preparation room, so everyone hang out here, igniting many interesting conversations. This is a brillant setup that every conference should copy!
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Off-season Google I/O&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
As an Android developer, this tweet sums it up pretty well:
&lt;/p&gt;

&lt;blockquote class="twitter-tweet"&gt;&lt;p&gt;It appears &lt;a href="https://twitter.com/search/%23Devoxx"&gt;#Devoxx&lt;/a&gt; has become the official off-season I/O.Too bad it's so far away... &lt;a href="https://twitter.com/search/%23AndroidDev"&gt;#AndroidDev&lt;/a&gt;&lt;/p&gt;&amp;mdash; Dave Smith (@devunwired) &lt;a href="https://twitter.com/devunwired/status/269110241268994048" data-datetime="2012-11-15T16:10:56+00:00"&gt;November 15, 2012&lt;/a&gt;&lt;/blockquote&gt;
&lt;script src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;

&lt;p&gt;
Great sessions, great people, great venue. Yes, it's far away, but I took advantage of that to enjoy some Belgian chocolate and beer. All in all, I'd love to speak at Devoxx again!
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/0W3OZEDBRDU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/4011549112986522312/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2012/11/devoxx.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/4011549112986522312?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/4011549112986522312?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/0W3OZEDBRDU/devoxx.html" title="Devoxx" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-0ZR2ZfKRe5A/UKk71O5UhPI/AAAAAAAAAYI/yUpYlO5Bbkc/s72-c/IMG_8295.JPG" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Antwerpen Metropolis</georss:featurename><georss:point>51.24608796138091 4.41799521446228</georss:point><georss:box>51.24577746138091 4.41737821446228 51.246398461380906 4.41861221446228</georss:box><feedburner:origLink>http://blog.sqisland.com/2012/11/devoxx.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0AARnw5eyp7ImA9WhNREk0.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-4175552834900452024</id><published>2012-11-06T03:29:00.000-08:00</published><updated>2012-11-06T03:35:47.223-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-11-06T03:35:47.223-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="event" /><category scheme="http://www.blogger.com/atom/ns#" term="conference" /><category scheme="http://www.blogger.com/atom/ns#" term="talks" /><category scheme="http://www.blogger.com/atom/ns#" term="speaking" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Droidcon Bucharest</title><content type="html">&lt;p&gt;
After &lt;a href="http://blog.sqisland.com/2012/11/droidcon-london.html"&gt;Droidcon London&lt;/a&gt;, I headed to Romania to speak at &lt;a href="http://ro.droidcon.com"&gt;Droidcon Bucharest&lt;/a&gt;.
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-hUjXJ1RxppY/UJjs3aphIzI/AAAAAAAAAXY/dzqlwwNdhYA/s1600/IMG_7929.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-hUjXJ1RxppY/UJjs3aphIzI/AAAAAAAAAXY/dzqlwwNdhYA/s400/IMG_7929.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
Droidcon Bucharest has a very strong community feel to it. There were about 80 people attending, and each of us introduced ourselves. It started in English, but then people slipped into Romanian. I could guess who were the students since the word in Romanian was really close to English, but it was great when they switched back to English.
&lt;/p&gt;

&lt;p&gt;
From the introductions I gathered that Android is up and coming here in Romania, since there were quite a few student attendees. Around half of the audience said they have never done Android programming. I suppose they would be going to the 3-hour basic Android training in the afternoon.
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Barcamp&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;
Just like Droidcon London, we had Barcamp on the first day. I was a bit shocked when I saw the schedule.
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-cTvoEI5vV5s/UJjtGDaLSlI/AAAAAAAAAXk/7aPvPK8ucuc/s1600/barcamp.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="73" width="400" src="http://2.bp.blogspot.com/-cTvoEI5vV5s/UJjtGDaLSlI/AAAAAAAAAXk/7aPvPK8ucuc/s400/barcamp.png" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
15-minute per session? You need to run them with an iron fist to make sure everybody starts and ends on time. Turns out the schedule was merely a guideline. People talked for as long as they wanted, and the audience could asked as many questions as they had. And that's how a barcamp should be - it's over when it's over, no need to be fixated on the timing. I was just amused that they bothered printing time slots in the schedule when they had no plan to follow it.
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Conference&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
Second day is conference day. I was the first speaker, and as usual I polled the audience before I started. Here only a few people made a custom view before, so I spent a lot of time covering the basics.
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/26371053_tWnzFB#2198720702_CC37trk"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2198720702_CC37trk-S.jpg" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
I noticed that Europeans are not as eager to shout from the audience when I ask questions, but I still wanted some participation, so I was throwing questions at them left and right. By the end they warmed up a bit, and I got a few people to answer loud and clear rather than mumble noncommittally. That made me happy, because it showed me that people are learning.
&lt;/p&gt;

&lt;p&gt;
There was quite a variety of talks at the conference. I really enjoyed the UI makeover by &lt;a href="http://twitter.com/arbuleac"&gt;Eugen Arbuleac&lt;/a&gt; and &lt;a href="http://twitter.com/Electryc"&gt;Andrei Catinean&lt;/a&gt;.
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/26371053_tWnzFB#2198720689_KbhCxCZ"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2198720689_KbhCxCZ-S.jpg" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://twitter.com/roman_mazur"&gt;Roman Mazur&lt;/a&gt; gave an excellent talk on Android REST best practices. I will definitely be studying his &lt;a href="http://code.google.com/p/enroscar/"&gt;open source project&lt;/a&gt; to learn a trick or two.
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/26371053_tWnzFB#2198720787_cfJZzSZ"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2198720787_cfJZzSZ-S.jpg" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Regional event&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
At the end of Droidcon Bucharest the organizers gathered people from different cities to discuss how to foster the Android community in the region. There seems to be a lot of interests from students, and with some professional developers scattered here and there. With events like Droidcon bringing people together, I am sure the Eastern European Android community will flourish.
&lt;/p&gt;

&lt;p&gt;
Here is a picture of me with some awesome Android ladies from Timişoara. It was great fun hanging out with them!
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/26371053_tWnzFB#2198720791_tmNZGmh"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2198720791_tmNZGmh-S.jpg" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;More Droidcon Bucharest coverage&lt;/b&gt;&lt;p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://ro.droidcon.com/blog/day-2-highlights-at-droidcon/"&gt;Offical blog&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.gadget-talk.ro/2012/11/05/a-doua-editie-de-droidcon-bucharest-2012-android-development-a-luat-sfarsit-in-acest-weekend/"&gt;Gadget Talk&lt;/a&gt; (Romanian)
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/Ti3wYuQHCyM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/4175552834900452024/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2012/11/droidcon-bucharest.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/4175552834900452024?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/4175552834900452024?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/Ti3wYuQHCyM/droidcon-bucharest.html" title="Droidcon Bucharest" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-hUjXJ1RxppY/UJjs3aphIzI/AAAAAAAAAXY/dzqlwwNdhYA/s72-c/IMG_7929.jpg" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Hotel Marshall Garden</georss:featurename><georss:point>44.45012237482097 26.099953651428223</georss:point><georss:box>44.44976837482097 26.099336651428224 44.45047637482097 26.10057065142822</georss:box><feedburner:origLink>http://blog.sqisland.com/2012/11/droidcon-bucharest.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04EQX87fCp7ImA9WhNREE0.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-2398051630033860411</id><published>2012-11-03T23:14:00.000-07:00</published><updated>2012-11-03T23:18:20.104-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-11-03T23:18:20.104-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="event" /><category scheme="http://www.blogger.com/atom/ns#" term="conference" /><category scheme="http://www.blogger.com/atom/ns#" term="talks" /><category scheme="http://www.blogger.com/atom/ns#" term="speaking" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Droidcon London</title><content type="html">&lt;p&gt;
The first stop of my &lt;a href="http://blog.sqisland.com/2012/10/europe-speaking-tour.html"&gt;European speaking tour&lt;/a&gt; is &lt;a href="http://uk.droidcon.com"&gt;Droidcon London&lt;/a&gt;.
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-svWjWisaEW0/UJX6MhXZ7PI/AAAAAAAAAWI/ySdPplrvmMA/s1600/IMG_7726.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-svWjWisaEW0/UJX6MhXZ7PI/AAAAAAAAAWI/ySdPplrvmMA/s400/IMG_7726.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
I absolutely loved the conference icons with the droid at London landmarks, and was very happy to see them adorning the venue.
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/26326479_FXn3Hf#2193681299_TQkd228"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2193681299_TQkd228-S.jpg" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Barcamp&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
The first day was Barcamp. I was astonished by the number of people that got on stage to propose a session. What was more amazing was that there were all super high quality. My experience at unconferences was that people come up with ideas on the spot, gather interested parties and hold an informal discussion. But at Droidcon London, people gave well-prepared, full-length presentations. 
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-TDPBKpR5lX8/UJYE9I5tA-I/AAAAAAAAAXA/JPRI3kNgu_E/s1600/robospice.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="118" width="200" src="http://2.bp.blogspot.com/-TDPBKpR5lX8/UJYE9I5tA-I/AAAAAAAAAXA/JPRI3kNgu_E/s200/robospice.png" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
For instance I heard about &lt;a href="https://github.com/octo-online/robospice"&gt;RoboSpice&lt;/a&gt;, a library for asynchronous network requests. Stéphane brought a complete deck, pretty much treating it as a proper conference talk. I was impressed.
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Conference&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
Second day was conference day, and once again it was jam-packed with great talks. There is a lot of tribal knowledge in Android, and at Droidcon London I felt that I was among the village elders, telling us creation myths and war stories.
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-tdhYkviavNM/UJYEACxasDI/AAAAAAAAAWo/IQWlwwG9EYw/s1600/IMG_20121026_110213.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-tdhYkviavNM/UJYEACxasDI/AAAAAAAAAWo/IQWlwwG9EYw/s400/IMG_20121026_110213.jpg" /&gt;&lt;/a&gt;
&lt;br/&gt;SoundCloud jumped through lots of hoops to make streaming work
&lt;/div&gt;

&lt;p&gt;
At my &lt;a href="http://www.sqisland.com/talks/deep-dive-android-custom-components"&gt;talk&lt;/a&gt; I shared my experience using custom components in &lt;a href="https://play.google.com/store/apps/details?id=com.monkeywriteapp.write"&gt;Monkey Write&lt;/a&gt;. It was a mash-up from my &lt;a href="http://www.sqisland.com/talks/fluid-android-layouts"&gt;Fluid Android Layouts&lt;/a&gt; and &lt;a href="http://www.sqisland.com/talks/android-custom-components"&gt;Android Custom Components&lt;/a&gt; talk, and I was very proud that I managed to trim the 1 hour and 45 minutes of material down to 45 minutes. Imagine my surprise when I got an email from the organizers a few days before the conference, informing us that our talks should be 35 minutes long. I stared at my presentation, unable to chop off any more slides, so I decided to go with the full deck. 
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-uhc-BcS4WRg/UJYDjtpfVMI/AAAAAAAAAWc/GQ-P_G1-lIg/s1600/A6I0gzJCEAAKVWD.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-uhc-BcS4WRg/UJYDjtpfVMI/AAAAAAAAAWc/GQ-P_G1-lIg/s400/A6I0gzJCEAAKVWD.jpg" /&gt;&lt;/a&gt;
&lt;br /&gt;
Giving my talk.
Photo credit: &lt;a href="https://twitter.com/galex/status/261829466421071873"&gt;Alexandre Gherschon&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;
At the beginning of my talk I polled the audience for their experience in custom components. As I expected most of them had written one already, allowing me to jump over the basics and went straight for the deep dive. I finished on time, and people came to me afterwards thanking me for sharing the advanced material. Yay!
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Awesome people&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
As always my favorite part of conferences is meeting awesome people, and Droidcon London definitely delivered on that front. Most the attendees I met care deeply about perfecting their craft, and we had many interesting technical discussions in the hallway. I got to hang out with quite a few speakers as well. It was like going to Hollywood and casually chatting with celebrities. Totally awesome.
&lt;/p&gt;

&lt;p&gt;
Droidcon London has a great vibe, and I attribute it to the enthusiastic organizers. The amazing lineup attracted developers from all over Europe, and it was rather magical to hang out with so many awesome people. Thank you very much for such a great conference!
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-Ly3pop5Jc0A/UJYELP6tpzI/AAAAAAAAAW0/zogFhsmPphU/s1600/IMG_20121026_185039.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-Ly3pop5Jc0A/UJYELP6tpzI/AAAAAAAAAW0/zogFhsmPphU/s400/IMG_20121026_185039.jpg" /&gt;&lt;/a&gt;
&lt;br/&gt;
Droidcon London organizers
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/E4yugdOESYU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/2398051630033860411/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2012/11/droidcon-london.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/2398051630033860411?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/2398051630033860411?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/E4yugdOESYU/droidcon-london.html" title="Droidcon London" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-svWjWisaEW0/UJX6MhXZ7PI/AAAAAAAAAWI/ySdPplrvmMA/s72-c/IMG_7726.jpg" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Business Design Centre</georss:featurename><georss:point>51.535605102356 -0.10600090026855469</georss:point><georss:box>51.533135602356005 -0.11093640026855468 51.538074602356 -0.10106540026855469</georss:box><feedburner:origLink>http://blog.sqisland.com/2012/11/droidcon-london.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQESH49eSp7ImA9WhJaF0s.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-750726891840951814</id><published>2012-10-08T23:04:00.000-07:00</published><updated>2012-10-08T23:15:09.061-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-10-08T23:15:09.061-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="women" /><category scheme="http://www.blogger.com/atom/ns#" term="event" /><category scheme="http://www.blogger.com/atom/ns#" term="conference" /><category scheme="http://www.blogger.com/atom/ns#" term="ghc" /><category scheme="http://www.blogger.com/atom/ns#" term="talks" /><category scheme="http://www.blogger.com/atom/ns#" term="speaking" /><title>Grace Hopper Celebration: Speaking and Connecting</title><content type="html">&lt;p&gt;
&lt;a href="http://gracehopper.org"&gt;Grace Hopper Celebration&lt;/a&gt; is my favorite conference of all times. Every time I go, I learn new things, make new friends, and come home energized. This year I am very honored to be accepted as a speaker, to share my experience as a female software engineer.
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Letter to my younger self&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
The title of my talk is &lt;a href="http://gracehopper.org/2012/event/letter-to-my-younger-self-things-i-wish-i-knew-when-i-first-started-working/"&gt;Letter to my younger self: Things I wish I knew when I first started working&lt;/a&gt;. I have made so many mistakes in my career that I wish I could go back and point myself in the right direction. Alas, I do not own a TARDIS, but I could pass the information to current students.
&lt;/p&gt;

&lt;p&gt;
Once I came up with the talk idea, I invite two friends, Rupa Dachere and Christina Schulman, to present with me. They have quite a bit more experience than me, and we weave our stories together into the talk.
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/25824674_krXS8R#2137854346_wM3FtCj"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2137854346_wM3FtCj-S.jpg" border="0" alt="Me, Christina and Rupa" title="Me, Christina and Rupa"&gt;&lt;/a&gt;&lt;br/&gt;Me, Christina and Rupa&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Speaking to a full house&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
When we got to the conference, we were rather surprised by the room assigned to our session. It was quite big, with 350 chairs (yes we counted). We anxiously watched people slowly filling the room, until all the chairs were all taken. Every single one of them. The ushers were actually turning people away!
&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://chiuki.smugmug.com/gallery/25824674_krXS8R#2137854606_fmbNXJV"&gt;&lt;img src="http://chiuki.smugmug.com/photos/2137854606_fmbNXJV-S.jpg" border="0" alt="View from the stage" title="View from the stage"&gt;&lt;/a&gt;&lt;br/&gt;View from the stage&lt;/p&gt;

&lt;p&gt;
We divided the talk into three parts: career, networking and negotiations. For negotiations, we lightened the mood quite a bit by demonstrating the techniques with skits. People loved it.
&lt;/p&gt;

&lt;center&gt;
&lt;iframe width="480" height="270" src="http://www.youtube.com/embed/RMnJoB9LT6A" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;

&lt;p&gt;
We were ruthless in cutting material from the talk to make sure we leave plenty of time for questions, for I always felt that is the best part of GHC sessions, the interaction at the end.
&lt;/p&gt;

&lt;p&gt;
All in all the session went really well. It was a pity we didn't record the whole talk, but our session blogger, &lt;a href="https://twitter.com/lexyholloway"&gt;Lexy Holloway&lt;/a&gt;, types unbelievably quickly. She has a very comprehensive &lt;a href="http://dynamicdoula.blogspot.com/2012/10/letter-to-my-younger-self-things-i-wish.html"&gt;session report&lt;/a&gt; that is practically the transcript!
&lt;/p&gt;

&lt;p&gt;
For more information on our talk, here is a collection of links:
&lt;a href="http://bit.ly/ghc12-letter"&gt;http://bit.ly/ghc12-letter&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Data science and cats&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
I was busy rehearsing all the way until our presentation, so I missed quite a lot of sessions. Now that I think about it, I only attended a single one during the whole conference. It was &lt;a href="http://gracehopper.org/2012/event/hilary-mason/"&gt;Short URLs, Big Data: Learning about the World in Realtime&lt;/a&gt; by &lt;a href="http://www.hilarymason.com/"&gt;Hilary Mason&lt;/a&gt;. What an outstanding talk! It was a great balance in technical details, insightful anecdotes, and humorous slides.
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-ZSwFx45bnfc/UHOw51AuPqI/AAAAAAAAAVM/ik_WDu5bjks/s1600/cat-in-chicken-suit.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="299" width="400" src="http://3.bp.blogspot.com/-ZSwFx45bnfc/UHOw51AuPqI/AAAAAAAAAVM/ik_WDu5bjks/s400/cat-in-chicken-suit.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
This slide, for instance, had me laughing uncontrollably. Hilary used it to illustrated that what we share is not what we click. People share links that reflects well on them, but privately they read very different things. Just like the cat dressing up as a chicken, we use sharing to groom a public appearance.
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Hallway Track&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
Although I only went to a single session, I felt I benefited a lot from the conference nonetheless. I love to hang out in the hallway, wave at people I knew from previous conferences, and reconnect. We met over breakfast, lunch, dinner, drinks, even in the swimming pool. Each of us brought friends, made introductions, and expanded the circle of camaraderie. 
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-rxy1lM1FOdQ/UHO6p_dtx-I/AAAAAAAAAVw/Qwtk_QhkMvw/s1600/IMG_0132.JPG" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-rxy1lM1FOdQ/UHO6p_dtx-I/AAAAAAAAAVw/Qwtk_QhkMvw/s400/IMG_0132.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
I am actually very glad that I spent the majority of my time on the hallway track, to connect with women from all walks of technology, to support each other, to celebrate our achievements. This is the best part of Grace Hopper Celebration!
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/nkj6-xMO3MQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/750726891840951814/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2012/10/grace-hopper-celebration-speaking-and-connecting.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/750726891840951814?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/750726891840951814?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/nkj6-xMO3MQ/grace-hopper-celebration-speaking-and-connecting.html" title="Grace Hopper Celebration: Speaking and Connecting" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/RMnJoB9LT6A/default.jpg" height="72" width="72" /><thr:total>2</thr:total><georss:featurename>Baltimore Convention Center</georss:featurename><georss:point>39.28535332633602 -76.6170859336853</georss:point><georss:box>39.28381682633602 -76.6195534336853 39.28688982633602 -76.61461843368531</georss:box><feedburner:origLink>http://blog.sqisland.com/2012/10/grace-hopper-celebration-speaking-and-connecting.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MHRn4yeyp7ImA9WhJaEU0.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-7915266711981208978</id><published>2012-10-01T09:36:00.000-07:00</published><updated>2012-10-01T09:37:17.093-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-10-01T09:37:17.093-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="event" /><category scheme="http://www.blogger.com/atom/ns#" term="conference" /><category scheme="http://www.blogger.com/atom/ns#" term="talks" /><category scheme="http://www.blogger.com/atom/ns#" term="speaking" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Europe Speaking Tour</title><content type="html">&lt;p&gt;
When I set up my goal to &lt;a href="http://blog.sqisland.com/2012/01/new-year-resolution-be-public-speaker.html"&gt;be a public speaker&lt;/a&gt;, I had no idea that it will bring me to far away places like Amsterdam, where I gave a talk at &lt;a href="http://blog.sqisland.com/2012/06/dutch-mobile-conference.html"&gt;Dutch Mobile Conference&lt;/a&gt;. I have applied to a few more European conferences, and to my surprise got accepted by all of them!
&lt;/p&gt;

&lt;p&gt;
The conferences are quite close to each other in terms of time:
&lt;/p&gt;

&lt;div style="clear: both"&gt;
&lt;div class="separator" style="float: left; text-align: center; margin-bottom: 1em"&gt;
&lt;a href="http://uk.droidcon.com" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="180" width="108" src="http://1.bp.blogspot.com/-ekVMZNA6O2g/UGaGahlirqI/AAAAAAAAAT4/0jTFy1Vryq0/s400/bigben.png" /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;table style="float: left; margin-left: 1em"&gt;
&lt;tr&gt;
&lt;td&gt;Oct 25 - 26&lt;/td&gt;
&lt;td&gt;&lt;a href="http://uk.droidcon.com/2012/08/speaker-announcement-chiu-ki-chan-joins-the-droidcon-london-line-up/"&gt;Droidcon London&lt;/a&gt;, UK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nov 02 - 03&lt;/td&gt;
&lt;td&gt;&lt;a href="http://ro.droidcon.com/"&gt;Droidcon Bucharest&lt;/a&gt;, Romania&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nov 12 - 16&lt;/td&gt;
&lt;td&gt;&lt;a href="http://www.devoxx.com/display/DV12/Android+Custom+Components"&gt;Devoxx&lt;/a&gt;, Antwerp, Belgium
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;p style="clear: both"&gt;
I was super excited about the acceptances, but it is taking me a long while to get all the logistics in place. With such long flights it makes more sense for me to stay in Europe, and do some sightseeing between the conferences.
&lt;/p&gt;

&lt;div class="separator" style="clear: both"&gt;
&lt;a href="http://ro.droidcon.com" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="100" width="350" src="http://4.bp.blogspot.com/-fhJYMJvDleM/UGaIFYzCCOI/AAAAAAAAAUE/PU5t_CfIRRU/s400/droidcon_ro.gif" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
For the week between the Romanian and Belgian conferences, I want to try something different. Instead of sightseeing, I am going to work remotely. I am looking into AirBnB for lodging right now, but it would be even more awesome if I can stay with a local developer. That way I can really get a feel of the tech scene over there, and live like a local.
&lt;/p&gt;

&lt;div class="separator" style="clear: both"&gt;
&lt;a href="http://www.devoxx.com" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"&gt;&lt;img border="0" height="120" width="320" src="http://2.bp.blogspot.com/-qL1QJAbTWxE/UGaMNY2wXBI/AAAAAAAAAUc/4wCDHndbpyM/s320/devoxx.png" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p style="clear: both"&gt;
The only problem is, I don't know anyone in Brussels. Or Gent. Or Bruges. Or Antwerp. Which is why I am writing this blog post right now. Do you know anyone in the greater Brussels area with a spare bed or sofa? I'll be repaying the kindness in Chinese language lessons or Android programming help, whichever is preferred :-)
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/M8hSlQ0MYhk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/7915266711981208978/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2012/10/europe-speaking-tour.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/7915266711981208978?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/7915266711981208978?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/M8hSlQ0MYhk/europe-speaking-tour.html" title="Europe Speaking Tour" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-ekVMZNA6O2g/UGaGahlirqI/AAAAAAAAAT4/0jTFy1Vryq0/s72-c/bigben.png" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://blog.sqisland.com/2012/10/europe-speaking-tour.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEGSXk4cSp7ImA9WhJaEEo.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-2028493868399119150</id><published>2012-09-30T23:23:00.000-07:00</published><updated>2012-09-30T23:23:48.739-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-09-30T23:23:48.739-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="update" /><category scheme="http://www.blogger.com/atom/ns#" term="puzzlepal" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Puzzle Pal: Substring extractor</title><content type="html">&lt;p&gt;
I was at &lt;a href="http://www.elevatetutoring.org/puzzlehunt2012/index_rerun.html"&gt;BANG 33&lt;/a&gt; yesterday, and one of the puzzles involved extracting words out of other words. We did the extraction by hand at the game, but today I set down at my desk and added a substring extractor to Puzzle Pal. 
&lt;/p&gt;

&lt;p&gt;
While I was at it, I also bundled the wordlist into the main app, and updated the UI to use action bar.
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-7AUFhTrXNY4/UGk1Pv2TUvI/AAAAAAAAAU0/2mozUtrW_6g/s1600/substring.png" imageanchor="1" style="margin-right:1em; margin-bottom:1em"&gt;&lt;img border="0" height="400" width="225" src="http://1.bp.blogspot.com/-7AUFhTrXNY4/UGk1Pv2TUvI/AAAAAAAAAU0/2mozUtrW_6g/s400/substring.png" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
If you find Puzzle Pal useful, please review it on &lt;a href="https://play.google.com/store/apps/details?id=com.sqisland.android.puzzlepal"&gt;Google Play&lt;/a&gt;. You can also leave a comment here if you have ideas for other solvers and decoders.
&lt;/p&gt;

&lt;p&gt;
Happy puzzling!
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/kD_smGxAGFQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/2028493868399119150/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2012/09/puzzle-pal-substring-extractor.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/2028493868399119150?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/2028493868399119150?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/kD_smGxAGFQ/puzzle-pal-substring-extractor.html" title="Puzzle Pal: Substring extractor" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-7AUFhTrXNY4/UGk1Pv2TUvI/AAAAAAAAAU0/2mozUtrW_6g/s72-c/substring.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://blog.sqisland.com/2012/09/puzzle-pal-substring-extractor.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0AAQHkyfCp7ImA9WhJbEUw.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-1143758607756240711</id><published>2012-09-19T21:35:00.000-07:00</published><updated>2012-09-19T21:35:41.794-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-09-19T21:35:41.794-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="source" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="view" /><title>Android: Swipe Image Viewer with ViewPager</title><content type="html">&lt;p&gt;
A few months ago I &lt;a href="http://blog.sqisland.com/2012/07/android-swipe-image-viewer.html"&gt;complained that there is no standard widget for a swipe image viewer&lt;/a&gt;. I just &lt;a href="https://twitter.com/chiuki/status/248208238078734337"&gt;asked about it on Twitter&lt;/a&gt;, and discovered that &lt;a href="http://developer.android.com/reference/android/support/v4/view/ViewPager.html"&gt;&lt;code&gt;ViewPager&lt;/code&gt;&lt;/a&gt; is what I wanted.
&lt;/p&gt;

&lt;p&gt;
I updated my &lt;a href="https://github.com/chiuki/android-swipe-image-viewer"&gt;github project&lt;/a&gt; with a &lt;code&gt;ViewPager&lt;/code&gt; implementation, and it's so much simpler. On top of that, the images slide as your finger swipes across the screen, giving a much more satisfactory feedback.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/YcqWfiOL9VE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/1143758607756240711/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2012/09/android-swipe-image-viewer-with-viewpager.html#comment-form" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/1143758607756240711?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/1143758607756240711?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/YcqWfiOL9VE/android-swipe-image-viewer-with-viewpager.html" title="Android: Swipe Image Viewer with ViewPager" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><thr:total>6</thr:total><feedburner:origLink>http://blog.sqisland.com/2012/09/android-swipe-image-viewer-with-viewpager.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4CSHk9fyp7ImA9WhJVEE8.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-6432984710336038261</id><published>2012-08-25T23:10:00.000-07:00</published><updated>2012-08-26T15:42:49.767-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-26T15:42:49.767-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="extension" /><category scheme="http://www.blogger.com/atom/ns#" term="source" /><category scheme="http://www.blogger.com/atom/ns#" term="browser" /><title>Browser extensions workshop</title><content type="html">&lt;p&gt;
&lt;a href="http://www.codechix.org/"&gt;CodeChix&lt;/a&gt; held a &lt;a href="http://codechix-browser-extensions.eventbrite.com/"&gt;Browser Extensions workshop&lt;/a&gt;, led by &lt;a href="http://sharonminsuk.com/"&gt;Sharon Minsuk&lt;/a&gt;. She described what browser extensions are, showed us a few demos, and then we had some hands-on coding exercises. &lt;/p&gt;

&lt;p&gt;
I toyed with browser extensions briefly, but stopped because I couldn't figure out how to include jquery. After the workshop today I got inspired again, and wrote my first extension to add tooltips for airport codes.
&lt;/p&gt;

&lt;p&gt;
Say you are reading some forum post with lots of airport codes:
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-4ne0GK6gQHk/UDm7rIqHjRI/AAAAAAAAATU/pDPSIQtDumE/s1600/airport-codes-before.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="88" width="351" src="http://3.bp.blogspot.com/-4ne0GK6gQHk/UDm7rIqHjRI/AAAAAAAAATU/pDPSIQtDumE/s400/airport-codes-before.png" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
My extension will add an airplane icon after each 3-letter airport code. Hover over the airplane gives you the name and location of the airport:
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-jZhLJhkcN9c/UDm70e3_JBI/AAAAAAAAATg/fjxR2BMD9iI/s1600/airport-codes-after.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="92" width="350" src="http://4.bp.blogspot.com/-jZhLJhkcN9c/UDm70e3_JBI/AAAAAAAAATg/fjxR2BMD9iI/s400/airport-codes-after.png" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
The code is on github: &lt;a href="https://github.com/chiuki/airport-tooltip-extension"&gt;https://github.com/chiuki/airport-tooltip-extension&lt;/a&gt;. You can also download the &lt;a href="https://github.com/downloads/chiuki/airport-tooltip-extension/airport-tooltips.crx"&gt;packaged extension&lt;/a&gt; directly.
&lt;/p&gt;

&lt;p&gt;
The parsing is pretty crude, and I didn't use any jquery at the end. 
&lt;/p&gt;

&lt;p&gt;
It only took me an hour or so to make the extension, and I'm quite happy with the results. Thank you &lt;a href="http://sharonminsuk.com/"&gt;Sharon&lt;/a&gt; for the excellent workshop!
&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/SKV-wiDbyjw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/6432984710336038261/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2012/08/browser-extensions-workshop.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/6432984710336038261?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/6432984710336038261?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/SKV-wiDbyjw/browser-extensions-workshop.html" title="Browser extensions workshop" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-4ne0GK6gQHk/UDm7rIqHjRI/AAAAAAAAATU/pDPSIQtDumE/s72-c/airport-codes-before.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.sqisland.com/2012/08/browser-extensions-workshop.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUARnszfip7ImA9WhJWGUw.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-5729551207426980707</id><published>2012-08-25T09:30:00.000-07:00</published><updated>2012-08-25T09:30:47.586-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-25T09:30:47.586-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="git" /><category scheme="http://www.blogger.com/atom/ns#" term="shell" /><title>Bash prompt</title><content type="html">&lt;p&gt;
After attending the &lt;a href="http://www.youtube.com/watch?v=7pgq0Yc3bJg"&gt;Cool Git Tricks&lt;/a&gt; talk by &lt;a href="http://twitter.com/cczona"&gt;Carina Zona&lt;/a&gt; at &lt;a href="http://www.meetup.com/Women-Who-Code-SF/events/74861212/"&gt;Women Who Code Lightning Talk&lt;/a&gt; this Tuesday, I decided to add &lt;code&gt;git status&lt;/code&gt; to my bash prompt.
&lt;/p&gt;

&lt;script src="https://gist.github.com/3430887.js?file=.bashrc"&gt;&lt;/script&gt;

&lt;p&gt;
Here is how it looks like in action:
&lt;/p&gt;

&lt;p style="background-color: #fff; padding: 8px;"&gt;
&lt;code&gt;
&lt;font color="black"&gt;chiuki@moomin&lt;/font&gt;  
&lt;font color="#52BBC8"&gt;09:50&lt;/font&gt; 
&lt;font color="#4B42E3"&gt;~/github/android-square-view&lt;/font&gt; 
&lt;font color="#52BBC8"&gt;master&lt;/font&gt; 
&lt;font color="#5BBE31"&gt;$&lt;/font&gt;
&lt;/code&gt;
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;username@hostname&lt;/code&gt;: Basic info.
&lt;/li&gt;
&lt;li&gt;
Time: I show time in my prompt so I can start a long-running job and go to lunch. The prompt will be displayed the moment the job returns, so I can subtract and see how long it took.
&lt;/li&gt;
&lt;li&gt;
Current directory: Gives me some context.
&lt;/li&gt;
&lt;li&gt;
git branch: I show it in blue when I am in master, purple otherwise.
&lt;/li&gt;
&lt;li&gt;
git status: I show a red star if the current directory is dirty.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;$&lt;/code&gt;: The color indicates if the last command was successful. Green for success, red for failure.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
So if I'm on the &lt;code&gt;release&lt;/code&gt; branch, has pending changes, and the last command failed, my prompt would look like this:
&lt;/p&gt;

&lt;p style="background-color: #fff; padding: 8px;"&gt;
&lt;code&gt;
&lt;font color="black"&gt;chiuki@moomin&lt;/font&gt;  
&lt;font color="#52BBC8"&gt;10:05&lt;/font&gt; 
&lt;font color="#4B42E3"&gt;~/github/android-square-view&lt;/font&gt; 
&lt;font color="#D550D3"&gt;release&lt;/font&gt;&lt;font color="#C43520"&gt;*&lt;/font&gt;
&lt;font color="#C43520"&gt;$&lt;/font&gt;
&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
What do you show on your shell prompt?
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/iotEFUAsoWs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/5729551207426980707/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2012/08/bash-prompt.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/5729551207426980707?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/5729551207426980707?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/iotEFUAsoWs/bash-prompt.html" title="Bash prompt" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://blog.sqisland.com/2012/08/bash-prompt.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMGSX84cCp7ImA9WhJWFkU.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-8860224712260662037</id><published>2012-08-22T19:17:00.001-07:00</published><updated>2012-08-22T19:20:28.138-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-22T19:20:28.138-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="event" /><category scheme="http://www.blogger.com/atom/ns#" term="talks" /><category scheme="http://www.blogger.com/atom/ns#" term="speaking" /><category scheme="http://www.blogger.com/atom/ns#" term="career" /><title>Develop your voice</title><content type="html">&lt;p&gt;
When I first started working, I was happily learning all kinds of new stuff: source control, working in a team, unit testing, etc, etc. After two years or so, I felt quite comfortable as a software engineer, but I had no idea how to grow further. I have since discovered that the most important thing is to develop your voice, and here is my lightning talk on the topic:
&lt;/p&gt;

&lt;center&gt;
&lt;iframe width="427" height="240" src="http://www.youtube.com/embed/6JFB22Rj5yc" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;

&lt;br/&gt;

&lt;iframe src="http://www.slideshare.net/slideshow/embed_code/14023826" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px" allowfullscreen&gt; &lt;/iframe&gt; &lt;div style="margin-bottom:5px"&gt; &lt;strong&gt; &lt;a href="http://www.slideshare.net/chiuki/develop-your-voice" title="Develop your voice" target="_blank"&gt;Develop your voice&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="http://www.slideshare.net/chiuki" target="_blank"&gt;Chiu-Ki Chan&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;

&lt;/center&gt;

&lt;p&gt;&lt;b&gt;Voice&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
Voice is an interesting word, because it encompasses so many things. It's your vision, your direction, what you believe in and what you stand for. Voice also implies that it needs to projected, that you need to let other people know what you are trying to do.
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Others don't know more than you&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
How many times were you in a conversation, forming an opinion, someone spoke and you discarded your thoughts? The distinguishing characteristic of someone who has found his voice is that he talks. He is using his voice, but that does not mean that he knows more than you. Be aware of that so you can listen critically and form your own opinion.
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Delete "I think"&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
Email is a great way to build up your voice. Before you send out any emails, delete phrases like "I think", "I believe", "Maybe we should do it". They dampen your voice, and make you sound weaker than you actually are.
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Reply to group emails&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
When someone poses a question to your team mailing list, reply. Don't go off and research for half an hour to come up with the perfect response. Just tell them the steps you were planning to take, and the expected outcome. As your name appears more and more on the mailing list, people think about you more, and will start asking for your opinion.
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Sit at the table&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
Your team has regular meetings, right? Don't hide in the back row and bury your head behind your laptop. Sit at the table, and make a presence. Better yet, sit next to your boss. That takes courage, which sends a very strong signal. Also, your boss will probably turn around and ask you for your opinion, so you don't have to shout and wave to get your voice heard.
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Learn to say no&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
To develop your voice, you need to focus on what matters the most, and stay on course. There are a million things that people want you to do, and you need to push back on the ones that don't matter. In the process you will learn to defend your position and vocalize your priorities. 
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Let your voice lead you&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
Realize that you have something to contribute, make a presence in emails and meetings, and defend your position. Slowly but surely your voice will emerge. Let that guide your career, with confidence and a sense of purpose.  
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/TCdD8baJUJ4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/8860224712260662037/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2012/08/how-to-develop-your-voice.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/8860224712260662037?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/8860224712260662037?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/TCdD8baJUJ4/how-to-develop-your-voice.html" title="Develop your voice" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/6JFB22Rj5yc/default.jpg" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>PARISOMA</georss:featurename><georss:point>37.7735338 -122.4159227</georss:point><georss:box>37.7719648 -122.41839019999999 37.775102800000006 -122.4134552</georss:box><feedburner:origLink>http://blog.sqisland.com/2012/08/how-to-develop-your-voice.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMEQH06cSp7ImA9WhJWEk4.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-534243034165776930</id><published>2012-08-17T11:38:00.000-07:00</published><updated>2012-08-17T12:06:41.319-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-17T12:06:41.319-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="event" /><category scheme="http://www.blogger.com/atom/ns#" term="conference" /><category scheme="http://www.blogger.com/atom/ns#" term="talks" /><category scheme="http://www.blogger.com/atom/ns#" term="speaking" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>That Conference</title><content type="html">&lt;p&gt;
I have been actively seeking public speaking opportunities, which led me to places that I'll never visit otherwise. For instance, I was just in Wisconsin Dells, the venue of the inaugural &lt;a href="http://www.thatconference.com"&gt;That Conference&lt;/a&gt;. 
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Getting there&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
Since it was the first year, there wasn't much guideline for talk submission. The topic was "Web, Cloud and Mobile", so anything goes. I submitted a few Android talks, and got accepted. But since the conference has so many speakers, they don't have funds to cover the travel expense of the speakers. As an independent consultant, time is literally money, since I only bill the hours I work for my clients. To travel out-of-town and be at a conference is already quite expensive in terms of time, and I just couldn't get myself to pay for the flights and hotels as well.
&lt;/p&gt;

&lt;p&gt;
I was going to withdraw from the speaker roster, then realized that I am probably not alone. I have been working hard to convince more women to step up and give tech talks, and I wonder how many of them hesitate because of travel costs. This is a problem money can solve, and a very concrete thing companies can do to support women in technology.
&lt;/p&gt;

&lt;p&gt;
With that in mind, I started emailing various companies. I got worse than "no" for an answer, for they simply ignored me. Well, at least I tried, I told myself. Two months later, I got a response from &lt;a href="http://www.etsy.com/hacker-grants"&gt;Etsy Hacker Grants&lt;/a&gt;, saying that they would love to send women to speak at tech conferences! I was very pleasantly surprised.
&lt;/p&gt;

&lt;p&gt;
At this point I have already given away my speaker slot at &lt;a href="http://www.thatconference.com"&gt;That Conference&lt;/a&gt;, but they are running &lt;a href="http://en.wikipedia.org/wiki/Unconference"&gt;Open Space&lt;/a&gt; sessions at the conference, and suggested that I came to present my Android talk there. Sure, I said, but I also asked them to put me on the backup speaker list in case there were cancellations. And sure enough, somebody cancelled, and I was back as a camp counselor aka official speaker.
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-XQAFxbnRoNk/UC6T6d-peQI/AAAAAAAAAS8/p8gevTKoYQo/s1600/badge.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-XQAFxbnRoNk/UC6T6d-peQI/AAAAAAAAAS8/p8gevTKoYQo/s400/badge.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;&lt;b&gt;The crowd&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
Given that the topics were "Web, Cloud and Mobile", I was really surprised that this turns out to be a very Microsoft heavy conference. I don't really get much exposure to Windows technologies in the Bay Area, so I took advantage of the situation and went to a session on building Metro applications. But as the day went on, I had this guilt feeling that I wasn't learning enough to justify taking time off to come to the conference.
&lt;/p&gt;

&lt;p&gt;
That all changed in the evening. I went to dinner with a bunch of people, one of whom works on both iOS and Android. We discussed image caching on Android, geolocation on iOS, and just talked shop in general. And that was so much fun.
&lt;/p&gt;

&lt;p&gt;
The next day I went to an Open Space session on Android game programming. I wanted to attend the session because of Android, but also because the guy who proposed the session shares a last name with a very good friend of mine back in the Bay Area. Turns out he is his brother!
&lt;/p&gt;

&lt;p&gt;
I felt quite lonely as an Android developer in the sea of Windows folks, so this session was really cool. It brought the 8 of us together in this 600-person conference, and we had a great time exchanging tips on Android programming. Yay Open Space!
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.sqisland.com/talks/fluid-android-layouts"&gt;My talk&lt;/a&gt; was on the last day, and around 15 to 20 people attended, some from the Open Space session. I gave the same talk in &lt;a href="http://vimeo.com/41823197"&gt;Chicago&lt;/a&gt; already, but each crowd is different, and we drilled down to different parts of the talk. Overall it went really well.
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Social&lt;/b&gt;&lt;/p&gt;

&lt;a href="http://www.thatconference.com"&gt;That Conference&lt;/a&gt; was held in a &lt;a href="http://www.kalahariresorts.com/wi"&gt;waterpark&lt;/a&gt;, and it was reserved for the attendees on Tuesday night from 10:30pm to 1:30am. There was a long break from dinner until the waterpark party, so we went back to the Open Space room and played &lt;a href="http://en.wikipedia.org/wiki/Race_for_the_Galaxy"&gt;Race for the Galaxy&lt;/a&gt;.

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-pEC4OyWkh5w/UC6J_vX9UiI/AAAAAAAAASs/EJHx8RSRr1E/s1600/IMG_6982.JPG" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-pEC4OyWkh5w/UC6J_vX9UiI/AAAAAAAAASs/EJHx8RSRr1E/s400/IMG_6982.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
It is a pretty hefty game to learn, but I had confidence in my fellow conference attendees, and I think everyone enjoyed the game.
&lt;/p&gt;

&lt;p&gt;
10:30pm rolled along, and off to the waterpark we went. I haven't been to a waterpark for such a long time! I tried all the slides, and went on the vertical drop 3 times. It was tons of fun. I brought my diving camera and filmed one of the rides:
&lt;/p&gt;

&lt;center&gt;
&lt;iframe width="420" height="236" src="http://www.youtube.com/embed/a98b-6ZJx_Q" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;

&lt;p&gt;&lt;b&gt;Conclusions&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
Overall I had a pretty good time at &lt;a href="http://www.thatconference.com"&gt;That Conference&lt;/a&gt;. The official sessions were not very appealing to me, but the people made up for it. I know I will be keeping in touch with a few of them, and that is what I call meaningful connections.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/Qtog2Cy-qok" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/534243034165776930/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2012/08/that-conference.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/534243034165776930?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/534243034165776930?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/Qtog2Cy-qok/that-conference.html" title="That Conference" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-XQAFxbnRoNk/UC6T6d-peQI/AAAAAAAAAS8/p8gevTKoYQo/s72-c/badge.jpg" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Kalahari Resorts</georss:featurename><georss:point>43.571077 -89.77051</georss:point><georss:box>43.5595725 -89.790251 43.5825815 -89.750769</georss:box><feedburner:origLink>http://blog.sqisland.com/2012/08/that-conference.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8EQHsycSp7ImA9WhJXEUw.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-2532672159136504590</id><published>2012-08-04T13:04:00.000-07:00</published><updated>2012-08-04T13:06:41.599-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-04T13:06:41.599-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sony" /><category scheme="http://www.blogger.com/atom/ns#" term="smartwatch" /><category scheme="http://www.blogger.com/atom/ns#" term="smartheadset" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Tally Counter for Smart Watch and Headset</title><content type="html">&lt;p&gt;
I've been trying to come up with an app for my 
&lt;a href="http://blog.sqisland.com/2012/07/sony-smart-wireless-headset.html"&gt;Sony Smart Wireless Headset pro&lt;/a&gt;, and like I mentioned in my &lt;a href="http://www.youtube.com/watch?v=MLdhamQlFfg"&gt;Ignite talk&lt;/a&gt;, I often get new ideas when I swim. This time, however, it was quite literal. I was handing my pass to the clerk at the counter, and he clicked on his tally counter to keep track of how many people went swimming that day. That is perfect for the headset! It just needs one button to operate, which the headset has a big one in front, somewhere to show the counter, which the headset can do on its display.
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-PCYMR0OitgQ/UB18-buuWVI/AAAAAAAAASE/rKLhGxC0e_s/s1600/headset-demo.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="400" width="250" src="http://3.bp.blogspot.com/-PCYMR0OitgQ/UB18-buuWVI/AAAAAAAAASE/rKLhGxC0e_s/s400/headset-demo.png" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
After the made the app on the headset I decided to put it on the watch as well. Initially I used the same style, but then I realized the watch has a color screen, so I added some gradients to give it a background that looks like the dial on an odometer. 
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-HIM40CRyfwg/UB19gB5B0FI/AAAAAAAAASU/P1TFYnUXbWA/s1600/watch-demo.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="400" width="250" src="http://1.bp.blogspot.com/-HIM40CRyfwg/UB19gB5B0FI/AAAAAAAAASU/P1TFYnUXbWA/s400/watch-demo.png" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
I did some user testing: gave the watch and headset to my husband to try. The headset was great, he said, because the button gave him tactile feedback, so he knew he clicked successfully without looking. Maybe I could add vibration to the watch? It was a really great idea. Besides giving tactile feedback, the vibration made a little buzz, and it happens to emulate the sound of a real tally counter. It was really satisfactory to tap on the watch and hear the count go up.
&lt;/p&gt;

&lt;p&gt;
See it in action in this video:
&lt;/p&gt;

&lt;center&gt;
&lt;iframe width="420" height="236" src="http://www.youtube.com/embed/Vx-EsjvlUXk" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;

&lt;p&gt;
Get this extension for free from Google Play:
&lt;a href="https://play.google.com/store/apps/details?id=com.sqisland.smartwatch.counter"&gt;Tally Counter for SmartWatch&lt;/a&gt;.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/ZlDo_s2Rzio" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/2532672159136504590/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2012/08/tally-counter-for-smart-watch-headset.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/2532672159136504590?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/2532672159136504590?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/ZlDo_s2Rzio/tally-counter-for-smart-watch-headset.html" title="Tally Counter for Smart Watch and Headset" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-PCYMR0OitgQ/UB18-buuWVI/AAAAAAAAASE/rKLhGxC0e_s/s72-c/headset-demo.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.sqisland.com/2012/08/tally-counter-for-smart-watch-headset.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcMSHY6eCp7ImA9WhNWFkk.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-7812656669908838271</id><published>2012-07-30T16:12:00.000-07:00</published><updated>2012-12-15T22:41:29.810-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-15T22:41:29.810-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="source" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="view" /><title>Android: Swipe Image Viewer</title><content type="html">&lt;p style="background: #ffee8b; border: 2px solid #fcd116; padding: 1em"&gt;
&lt;b&gt;EDIT&lt;/b&gt;: I have a much simpler implementation with &lt;a href="http://blog.sqisland.com/2012/09/android-swipe-image-viewer-with-viewpager.html"&gt;&lt;code&gt;ViewPager&lt;/code&gt;&lt;/a&gt;, and the &lt;a href="https://github.com/chiuki/android-swipe-image-viewer"&gt;github project&lt;/a&gt; has been updated. See post &lt;a href="http://blog.sqisland.com/2012/09/android-swipe-image-viewer-with-viewpager.html"&gt;here&lt;/a&gt;.
&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;
I have a &lt;code&gt;GrideView&lt;/code&gt; of images, which enlarges to full screen when you tap on any image. When I showed it to my friend he swiped to get to the next image, but that did not do anything because I was just using a plain old &lt;code&gt;ImageView&lt;/code&gt;. I looked around for a standard widget to do that, and couldn't find any. So I unwillingly rolled my own solution: &lt;a href="https://github.com/chiuki/android-swipe-image-viewer"&gt;http://github.com/chiuki/android-swipe-image-viewer&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
I show the image in an &lt;a href="http://developer.android.com/reference/android/widget/ImageSwitcher.html"&gt;&lt;code&gt;ImageSwitcher&lt;/code&gt;&lt;/a&gt;. It contains two views, one displays the current image, and the other one holds the image to swap in. I lifted the gesture listener code from the &lt;a href="https://github.com/CyanogenMod/android_packages_apps_Gallery"&gt;Android Gallery app&lt;/a&gt;:
&lt;/p&gt;

&lt;pre class="prettyprint lang-java"&gt;
private class SwipeListener extends SimpleOnGestureListener {
  private static final int SWIPE_MIN_DISTANCE = 75;
  private static final int SWIPE_MAX_OFF_PATH = 250;
  private static final int SWIPE_THRESHOLD_VELOCITY = 200;

  @Override
  public boolean onFling(MotionEvent e1, MotionEvent e2, 
      float velocityX, float velocityY) {
    try {
      if (Math.abs(e1.getY() - e2.getY()) &gt; SWIPE_MAX_OFF_PATH)
        return false;
      // right to left swipe
      if (e1.getX() - e2.getX() &gt; SWIPE_MIN_DISTANCE
          &amp;&amp; Math.abs(velocityX) &gt; SWIPE_THRESHOLD_VELOCITY) {
        moveNextOrPrevious(1);
      } else if (e2.getX() - e1.getX() &gt; SWIPE_MIN_DISTANCE
          &amp;&amp; Math.abs(velocityX) &gt; SWIPE_THRESHOLD_VELOCITY) {
        moveNextOrPrevious(-1);
      }
    } catch (Exception e) {
      // nothing
    }
    return false;
  }
}&lt;/pre&gt;

&lt;p&gt;
&lt;code&gt;moveNextOrPrevious()&lt;/code&gt; swaps in the previous or next image with the appropriate animation:
&lt;/p&gt;

&lt;pre class="prettyprint lang-java"&gt;
private void moveNextOrPrevious(int delta) {
  int nextImagePos = mCurrentPosition + delta;
  if (nextImagePos &lt; 0) {
    mOverscrollLeft.setVisibility(View.VISIBLE);
    mOverscrollLeft.startAnimation(mOverscrollLeftFadeOut);
    return;
  }
  if (nextImagePos &gt;= mImages.length) {
    mOverscrollRight.setVisibility(View.VISIBLE);
    mOverscrollRight.startAnimation(mOverscrollRightFadeOut);
    return;
  }

  mImageSwitcher.setInAnimation(
    delta &gt; 0 ? mSlideInRight : mSlideInLeft);
  mImageSwitcher.setOutAnimation(
    delta &gt; 0 ? mSlideOutLeft : mSlideOutRight);

  mCurrentPosition = nextImagePos;
  mImageSwitcher.setImageResource(mImages[mCurrentPosition]);
}&lt;/pre&gt;

&lt;p&gt;
Notice how I show an overscroll grow when the user reaches the start or the end of the list of images. I make it visible immediately, and then use an animation to fade it away.
&lt;/p&gt;

&lt;p&gt;
Right now all the logic is in &lt;a href="https://github.com/chiuki/android-swipe-image-viewer/blob/master/src/com/sqisland/android/swipe_image_viewer/MainActivity.java"&gt;&lt;code&gt;MainActivity&lt;/code&gt;&lt;/a&gt;. I thought about encapsulating the viewer code into a custom view and bundling it into a jar file, but I am not sure how many people will find it useful, so laziness got the better of me. If you want to get a jar file to reuse this code, please let me know.
&lt;/p&gt;

&lt;p&gt;
Until then, here is the source code:
&lt;a href="https://github.com/chiuki/android-swipe-image-viewer"&gt;http://github.com/chiuki/android-swipe-image-viewer&lt;/a&gt;.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/dtjzho3m9Ks" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/7812656669908838271/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2012/07/android-swipe-image-viewer.html#comment-form" title="14 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/7812656669908838271?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/7812656669908838271?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/dtjzho3m9Ks/android-swipe-image-viewer.html" title="Android: Swipe Image Viewer" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><thr:total>14</thr:total><feedburner:origLink>http://blog.sqisland.com/2012/07/android-swipe-image-viewer.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUNRnk-eip7ImA9WhJQEUU.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-503693375606119210</id><published>2012-07-24T18:31:00.000-07:00</published><updated>2012-07-24T19:28:17.752-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-07-24T19:28:17.752-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="speaking" /><title>#weareallawesome for public speaking</title><content type="html">&lt;p&gt;
Every Tuesday at 1pm Pacific Time &lt;a href="http://weareallaweso.me/2012/06/23/public-speaking-office-hours.html"&gt;We Are All Awesome holds office hours&lt;/a&gt; on &lt;a href="http://webchat.freenode.net/?channels=weareallawesome"&gt;#weareallawesome on freenode&lt;/a&gt;. This week I asked &lt;a href="http://twitter.com/lornajane"&gt;Lorna Mitchell&lt;/a&gt; to share her experience at OSCON.
&lt;/p&gt;

&lt;div style="background-color:#e6facd; font-family: monospace;"&gt;
&lt;b&gt;lornajane&lt;/b&gt;: I have never been to OSCON before, and I got two talks accepted that were kinda out of my league (I just submitted in the vague hope that something would happen)&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: What do you mean by out of your league?&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: both were scheduled on the same day - and they both went well!!!  One of them was so full they shut the doors 5 minutes early&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: chiuki: they were topics I didn't feel expert on&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: ah&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: but topics people want to hear&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: yes, exactly&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: what are the topics?&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: I am very good at writing abstracts now - I have lots of practice at that!  It was a PHP 5.4 talk (which actually was quite fun) and one about REST&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: I am expert in REST but I hate speaking about it because it's contraversial and that part of the industry seems to make a habit of flaming and then I get upset&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: the rest of my week was amazing, I've never been to Portland before and I loved it&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: were there pointed questions at the REST talk?&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: I met new friends and caught up with old ones, attended talks and tutorials in all kinds of technologies that I know nothing about, met loads of exhibitors and had fun at the parties&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: chiuki: almost none.  I mean, I got some questions laid down as a challenge, but I gave my (not-the textbook-version) opinion and the guy thanked me for my input&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: cool&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: so no flaming, then&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: none!&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: actually the OSCON crowd were all very friendly.  I didn't know what to expect which was maybe fuelling my fears&lt;br/&gt; 
&lt;/div&gt;

&lt;p&gt;
I was curious about topics to submit, and Lorna has some insights:
&lt;/p&gt;

&lt;div style="background-color:#e6facd; font-family: monospace;"&gt;
&lt;b&gt;chiuki&lt;/b&gt;: Any tips on submitting proposals to OSCON? What kind of topics go well?&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: chiuki: it seems to be complicated, because there are tracks, so you're sort of submitting to subconferences&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: so I aimed my talks firmly at the PHP track, and I know those people (and I stalked them on twitter!)&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: That's a good way to look at it, to treat each track as a subconference&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: I bet each track has its own review committee too&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: chiuki: it exactly does&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: I'm well-known in the PHP community so I pitched two talks to them (which they took) and one more general one (which didn't get in)&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: the general one for a different track?&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: yeah, it was like "algorithms for a geek lifestyle" or something like that&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: oh I remember now&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: I actually submitted something&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: because I saw a few lifehacker type talks&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: for being an indie developer&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: but got rejected&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: but mostly it was just good, clean tech all the way through&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: next year I'll submit some hardcore Android talks for the mobile track&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: chiuki: definitely do that!&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: I think I got confused by the OS part of OSCON&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: focusing too much on open source&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: Android is open source, but that's not the part I work with&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: they aren't militant about open source&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: so I was trying too hard to cater to the OS part&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: I'm looking at the program&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: my existing Android talks will go really well&lt;br/&gt;
&lt;/div&gt;

&lt;br/&gt;

&lt;div style="background-color:#e6facd; font-family: monospace;"&gt;
&lt;b&gt;chiuki&lt;/b&gt;: I wonder if the twitter stalking helped you got your proposals accepted, lornajane :-)&lt;br/&gt;
&lt;b&gt;cczona&lt;/b&gt;: what was the twitter stalking?&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: chiuki: I don't know!  I figured it didn't hurt :)  Laura told me though that they had loved my proposals and that it was unusual to take two&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: cczona: I know who runs the PHP track at OSCON so I tweeted at her when I submitted, just a little touch to remind her&lt;br/&gt;
&lt;b&gt;cczona&lt;/b&gt;: Good idea.&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: yeah, it's good to get your name in front of people&lt;br/&gt;
&lt;/div&gt;

&lt;p&gt;
&lt;a href="http://twitter.com/rmurphey"&gt;Rebecca Murphey&lt;/a&gt;, &lt;a href="http://twitter.com/cczona"&gt;Carina Zona&lt;/a&gt; and &lt;a href="http://twitter.com/estellevw"&gt;Estelle Weyl&lt;/a&gt; chimed in when we discussed speaker packages:
&lt;/p&gt;

&lt;div style="background-color:#e6facd; font-family: monospace;"&gt;
&lt;b&gt;lornajane&lt;/b&gt;: the main thing with oscon is that they have no speaker package&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: so unless you work for a big company, it's hard to go&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: no financial aid whatsoever?&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: officially, not at all.  In fact they can help out if you ask them, sometimes, but it seems a bit hit and miss&lt;br/&gt;
&lt;b&gt;rmurphey&lt;/b&gt;: how much are oscon tickets and oscon sponsorships?&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: rmurphey: I am not sure, I think the tickets are 1200 USD&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: 1200USD????&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: OMG&lt;br/&gt;
&lt;b&gt;rmurphey&lt;/b&gt;: i am a tad bit puzzled as to why they can't cover speaker costs&lt;br/&gt;
&lt;b&gt;rmurphey&lt;/b&gt;: sell one ticket per speaker, done&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: rmurphey: the speakers are confused about that too&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: rmurphey: most of them are big company people so it's no pain to them&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: OSCON did cover my flight when I asked them to (I'm coming in from Europe and I'm self-employed)&lt;br/&gt;
&lt;b&gt;rmurphey&lt;/b&gt;: good for you for asking lornajane :)&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: rmurphey: actually, estellevw told me to&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: and the devchix helped me find somewhere cheap to stay&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: then the phpwomen helped me with my slides because it was all quite short notice&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: hurrah for women in tech, is all I can say!&lt;br/&gt;
&lt;b&gt;cczona&lt;/b&gt;: yeah&lt;br/&gt;
&lt;b&gt;chiuki&lt;/b&gt;: hurray!&lt;br/&gt;
&lt;b&gt;cczona&lt;/b&gt;: that's a great testament to the support available in the community&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: *and* the systers had a lunch while we were there and I met more cool ladies doing amazing things.  I felt so inspired by everyone's support&lt;br/&gt;
&lt;b&gt;cczona&lt;/b&gt;: :-)&lt;br/&gt;
&lt;b&gt;lornajane&lt;/b&gt;: oscon gives a pass, I should have said that.  But nothing else&lt;br/&gt;
&lt;b&gt;estellevw&lt;/b&gt;: O'Reilly does pay for some speakers. I assume if they want you to speak and don't think you can fund it thru a company.&lt;br/&gt;
&lt;b&gt;rmurphey&lt;/b&gt;: if you would like to read a host of opinions on the topic, &lt;a href="https://gist.github.com/3098860"&gt;https://gist.github.com/3098860&lt;/a&gt;&lt;br/&gt;
&lt;b&gt;rmurphey&lt;/b&gt;: but be warned&lt;br/&gt;
&lt;b&gt;rmurphey&lt;/b&gt;: there are 181 comments&lt;br/&gt;
&lt;/div&gt;

&lt;p&gt;
This is just a sample of the things we discuss on &lt;a href='http://webchat.freenode.net/?channels=weareallawesome'&gt;#weareallawesome&lt;/a&gt;. What do you want to talk about? Come join us some time!
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/FiCrxim4tcg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/503693375606119210/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2012/07/weareallawesome-for-public-speaking.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/503693375606119210?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/503693375606119210?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/FiCrxim4tcg/weareallawesome-for-public-speaking.html" title="#weareallawesome for public speaking" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.sqisland.com/2012/07/weareallawesome-for-public-speaking.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQBR3s6fSp7ImA9WhJRFUQ.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-2037379767670875331</id><published>2012-07-17T23:52:00.000-07:00</published><updated>2012-07-17T23:52:36.515-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-07-17T23:52:36.515-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sony" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Sony Smart Wireless Headset</title><content type="html">&lt;p&gt;
I got a &lt;a href="http://www.sonymobile.com/global-en/products/accessories/smartwatch/"&gt;Sony SmartWatch&lt;/a&gt; from &lt;a href="http://blog.sqisland.com/2012/05/andevcon-3.html"&gt;AnDevCon&lt;/a&gt;, and published two apps on Google Play: 
&lt;/p&gt;

&lt;p&gt;
&lt;a href="https://play.google.com/store/apps/details?id=com.sqisland.smartwatch.slideshow"&gt;Slideshow for SmartWatch&lt;/a&gt;
&lt;/p&gt;

&lt;center&gt;
&lt;iframe width="420" height="315" src="http://www.youtube.com/embed/qWpq7wzpagI" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;

&lt;p&gt;
&lt;a href="https://play.google.com/store/apps/details?id=com.sqisland.smartwatch.fake_call"&gt;Fake Call for SmartWatch&lt;/a&gt;
&lt;/p&gt;

&lt;center&gt;
&lt;iframe width="420" height="315" src="http://www.youtube.com/embed/hFSSMJ1GCbM" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;

&lt;p&gt;
I told Sony about my apps, and as a result they sent me a &lt;a href="http://www.sonymobile.com/global-en/products/accessories/smart-wireless-headset-pro/"&gt;Sony Smart Wireless Headset&lt;/a&gt; to develop more apps!
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-0tAH4_0IjcA/UAZYAMAW_kI/AAAAAAAAARo/ikbJC1gROPk/s1600/IMG_6935.JPG" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="400" width="300" src="http://3.bp.blogspot.com/-0tAH4_0IjcA/UAZYAMAW_kI/AAAAAAAAARo/ikbJC1gROPk/s400/IMG_6935.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
I went to Google Play to get some apps for the headset, and there aren't many available. Here is the Twitter app:
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-6XWpWn8rkOw/UAZYStbMn9I/AAAAAAAAAR0/9H2yktBiwVQ/s1600/IMG_6938.JPG" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-6XWpWn8rkOw/UAZYStbMn9I/AAAAAAAAAR0/9H2yktBiwVQ/s400/IMG_6938.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
The headset has a display, a microphone, and comes with an SD card to store your music. Besides playing music from the SD card, you can listen to the radio, and stream music from your phone or computer. It also has quite a few buttons:
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Back key/Menu key&lt;/li&gt;
&lt;li&gt;Previous key&lt;/li&gt;
&lt;li&gt;Music key/Select key&lt;/li&gt;
&lt;li&gt;Next key&lt;/li&gt;
&lt;li&gt;Action key&lt;/li&gt;
&lt;li&gt;Power key&lt;/li&gt;
&lt;li&gt;Volume controls&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;


&lt;p&gt;
With earphones and microphone, a display, and all these buttons, I'm sure there is a cool app waiting to be written. Guess it's time to study the &lt;a href="http://developer.sonymobile.com/cws/devworld/technology/smart-extras/smart-extension-sdk"&gt;SDK&lt;/a&gt;!
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/UteWHDk_zvU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/2037379767670875331/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2012/07/sony-smart-wireless-headset.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/2037379767670875331?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/2037379767670875331?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/UteWHDk_zvU/sony-smart-wireless-headset.html" title="Sony Smart Wireless Headset" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/qWpq7wzpagI/default.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.sqisland.com/2012/07/sony-smart-wireless-headset.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMBSXo8eSp7ImA9WhJSEUU.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-4874527529660946270</id><published>2012-07-01T15:54:00.000-07:00</published><updated>2012-07-01T15:57:38.471-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-07-01T15:57:38.471-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="video" /><category scheme="http://www.blogger.com/atom/ns#" term="ignite" /><category scheme="http://www.blogger.com/atom/ns#" term="event" /><category scheme="http://www.blogger.com/atom/ns#" term="talks" /><category scheme="http://www.blogger.com/atom/ns#" term="speaking" /><category scheme="http://www.blogger.com/atom/ns#" term="hackathon" /><title>Public speaking mid-year score card</title><content type="html">&lt;p&gt;
Can you believe it's July already? I started the year with a resolution to &lt;a href="http://blog.sqisland.com/2012/01/new-year-resolution-be-public-speaker.html"&gt;be a public speaker&lt;/a&gt;, with the specific goal of giving 5 lightning talks and 3 full-length lectures. Let's see the mid-year score card!
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Lightning talks&lt;/b&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
April 2, 2012: &lt;a href="http://www.youtube.com/watch?v=MLdhamQlFfg"&gt;Ignite Where 2012&lt;/a&gt;, San Francisco, CA
&lt;/li&gt;
&lt;li&gt;
June 28, 2012: &lt;a href="http://www.youtube.com/watch?v=u2pnD2ZsEYs"&gt;Ignite Google I/O&lt;/a&gt;, San Francisco, CA
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;b&gt;Full-length lectures&lt;/b&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
April 6, 2012: &lt;a href="http://vimeo.com/41823197"&gt;Fluid Android Layouts&lt;/a&gt;, &lt;a href="http://windycitygo.org/"&gt;WindyCityGo&lt;/a&gt;, Chicago, IL
&lt;/li&gt;
&lt;li&gt;
April 11, 2012: &lt;a href="http://www.sqisland.com/talks/caching-strategies-for-mobile-apps"&gt;Caching Strategies for Mobile Apps&lt;/a&gt;, &lt;a href="http://phillyemergingtech.com/2012"&gt;Philly ETE&lt;/a&gt;, Philadelphia, PA
&lt;/li&gt;
&lt;li&gt;
April 17, 2012: &lt;a href="http://www.sqisland.com/talks/mobile-caching-strategies"&gt;Mobile Caching Strategies&lt;/a&gt;, &lt;a href="http://guestlistapp.com/events/97734"&gt;Twitter Engineering Submit&lt;/a&gt;, San Francisco, CA
&lt;li&gt;
May 16, 2012: &lt;a href="http://www.youtube.com/watch?v=DhGP4J5u_mI"&gt;Reusable Custom Components&lt;/a&gt;, &lt;a href="http://www.andevcon.com/AnDevCon_III"&gt;AnDevCon III&lt;/a&gt;, Burlingame, CA
&lt;/li&gt;
&lt;li&gt;
June 8, 2012: &lt;a href="http://www.sqisland.com/talks/progressive-webview"&gt;Progressive enhancement for Android web apps&lt;/a&gt;, &lt;a href="http://www.mobileconference.nl/"&gt;Dutch Mobile Conference&lt;/a&gt;, Amsterdam, the Netherlands
&lt;/ol&gt;

&lt;p&gt;
Looks like I'm coming short on the lightning talk side, which is quite surprising. I thought it would be more difficult to get accepted to give lectures. Also interesting that all my lightning talks were in &lt;a href="http://www.igniteshow.com"&gt;Ignite&lt;/a&gt; talks, which is way more challenging than the speak-at-a-meetup quick talks I had in mind when I came up with the goals.
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Ignite at Google I/O&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.igniteshow.com"&gt;Ignite&lt;/a&gt; talks are challenging because it follows a very specific format: 5 minutes, 20 slides, auto advancing. The auto-advancing slides is the trickiest bit, since you don't control the rhythm any more. I rehearse way more for Ignite than my full-length lectures, because I need to internalize the timing to sync my speech to my slides. It's almost like lip-syncing!
&lt;/p&gt;

&lt;p&gt;
The first time I gave an Ignite talk was at Where 2012, to a crowd of 30 people or so. I was rather scared of the auto-advancing slides, but I found that I just need to wait until the next slide to appear before transitioning to a new topic.
&lt;/p&gt;

&lt;p&gt;
Ironically, because I felt I did pretty well at my first Ignite, I was more nervous when preparing for my second one. I kept thinking that it was not quite as good. I mentioned that to my friend &lt;a href="http://twitter.com/jewelia"&gt;Julia&lt;/a&gt;, and did a practice run with her. She loved it! I notice that I really feed off the energy from the audience, even if only one person was listening. So the practice run was all I need to get back my confidence.
&lt;/p&gt;

&lt;p&gt;
Ah, confidence is such a fragile thing. I walked into the room, and wow, it's big! It probably seats a thousand people. A thousand people! Plus the event was live streamed. I never spoke to such a large crowd, and I was so ridiculously nervous while waiting for the show to start. Fortunately once I got on stage I was back to my elements.
&lt;/p&gt;

&lt;p&gt;
Here is the recording of the Ignite show at Google I/O. Let me know what you think!
&lt;/p&gt;

&lt;center&gt;
&lt;iframe width="500" height="281" src="http://www.youtube.com/embed/u2pnD2ZsEYs" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/RRdQuXNyZR0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/4874527529660946270/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2012/07/public-speaking-mid-year-score-card.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/4874527529660946270?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/4874527529660946270?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/RRdQuXNyZR0/public-speaking-mid-year-score-card.html" title="Public speaking mid-year score card" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/u2pnD2ZsEYs/default.jpg" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Moscone West</georss:featurename><georss:point>37.783985 -122.4013117</georss:point><georss:box>37.782416500000004 -122.40377919999999 37.7855535 -122.3988442</georss:box><feedburner:origLink>http://blog.sqisland.com/2012/07/public-speaking-mid-year-score-card.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQCQX85cCp7ImA9WhNQGEU.&quot;"><id>tag:blogger.com,1999:blog-8454484600840215087.post-2036292013833687550</id><published>2012-06-19T20:48:00.000-07:00</published><updated>2012-11-25T14:59:20.128-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-11-25T14:59:20.128-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="speaking" /><title>How to be a confident speaker</title><content type="html">&lt;p&gt;
&lt;a href="http://twitter.com/holman"&gt;Zach Holman&lt;/a&gt; posted an excellent article on &lt;a href="http://zachholman.com/posts/what-they-dont-tell-you-about-public-speaking/"&gt;tips and tricks for public speaking&lt;/a&gt;, which got me thinking about my own experience. I have given a few speeches now, and I'd say the most important thing is to be confident. I know, that's like saying you need to breathe in order to stay alive. So here are some practical tips.
&lt;/p&gt;

&lt;p style="font-size:1.4em"&gt;&lt;b&gt;Practice until you are comfortable, but not more&lt;/b&gt;&lt;/p&gt;
   
&lt;p&gt;
I have heard many contradicting advice on practicing: practice until you memorize your speech, don't memorize your slides because the presentation will be stiff, record your speech to find things to improve, etc etc. Truth is, everyone is different, so the rule of thumb is practice to the point you feel comfortable.
&lt;/p&gt;

&lt;p&gt;
Personally I never write down what I plan to say, for I fear that I will miss a sentence when I'm on stage. Instead I use my slides as guidelines and talk over them. This gives spontaneity to my talks, makes them lively. I also don't do speaker notes, but some people swear by them. Again, do what's comfortable for you.

&lt;p style="font-size:1.4em"&gt;&lt;b&gt;Have a mock session&lt;/b&gt;&lt;/p&gt;
   
&lt;p&gt;
Now, how do you make sure you don't over-practice until you beat the life out of your speech? Schedule a practice session! With a solid deadline you will have to stop practicing and actually give your speech.
&lt;/p&gt;

&lt;p&gt;
When you give your mock session, do it for real: hook up your laptop to a projector, and speak to a live audience. This serves many purposes:
&lt;/p&gt;
    
&lt;ul&gt;
&lt;li&gt;
Time your speech. How many minutes do you take to go over a slide?
&lt;/li&gt;
&lt;li&gt;
AV issues. How do you change the resolution of your laptop? If you are playing video, where does the sound go? How is the contrast on the images? Font size OK?
&lt;/li&gt;
&lt;li&gt;
Learn to look at your audience. Connect with them, speak to them, clarify if they look confused. Chances are, you will feel encouraged by their approving nods, and forgot that you were nervous.
&lt;/li&gt;
&lt;li&gt;
Stumble onto random problems, and recover from them. There is never a perfect speech, but knowing that you can get yourself out of a situation is very reassuring.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Most importantly, the practice session proves one thing: you can talk!
&lt;/p&gt;

&lt;p style="font-size:1.4em"&gt;&lt;b&gt;The audience assumes you know more than them&lt;/b&gt;&lt;/p&gt;
   
&lt;p&gt;
You've done your practice session, now you're ready for prime time. It's natural to be nervous, but remember, once you stepped on that stage, you are the expert. People come to listen to you because they want to learn from you. They could go to another talk, chat in the hallway, or stay home to watch TV. But no, they chose to come to your talk, because they believe you can teach them something.
&lt;/p&gt;

&lt;p&gt;
The scale is tipped in your favor because you are on stage. Everybody wants you to shine, so whenever you have self-doubt, remember that.
&lt;/p&gt;
    
&lt;p style="font-size:1.4em"&gt;&lt;b&gt;It is okay to say I don't know&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
You gave your speech, and now comes the terrifying time: questions!
I used to feel like if I don't know the answer I would disgrace myself in front of a crowd. But guess what, it's not a test! You are there to share what you know, not to be a walking encyclopedia. If you don't have a ready answer, just say so. Turn the question to the audience and ask if anyone knows. Usually an interesting discussion will unfold. If not, have them contact you afterwards, and promise to follow up. 
&lt;/p&gt;

&lt;p style="font-size:1.4em"&gt;&lt;b&gt;Just do it&lt;/b&gt;&lt;/p&gt;

&lt;p&gt; 
You cannot learn to ride the bicycle by reading a book. Start small, give a short talk at a local meetup. Be yourself, and go with the flow. You will be alright.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var sc_project=5052645; 
var sc_invisible=1; 
var sc_security="f92fc67a"; 
&lt;/script&gt;
&lt;script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;div class="statcounter"&gt;&lt;a title="blogspot hit counter" href="http://statcounter.com/blogger/" class="statcounter"&gt;&lt;img class="statcounter" src="http://c.statcounter.com/5052645/0/f92fc67a/1/" alt="blogspot hit counter" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/sqisland/~4/QU-uH9tOXc4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sqisland.com/feeds/2036292013833687550/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.sqisland.com/2012/06/how-to-be-confident-speaker.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/2036292013833687550?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8454484600840215087/posts/default/2036292013833687550?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/sqisland/~3/QU-uH9tOXc4/how-to-be-confident-speaker.html" title="How to be a confident speaker" /><author><name>Chiu-Ki Chan</name><uri>http://www.blogger.com/profile/01970007638489793840</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-6U2zKuK8vAs/TsGYNIRZ9VI/AAAAAAAAADg/hoDJB2wtF4I/s1600/chiuki.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://blog.sqisland.com/2012/06/how-to-be-confident-speaker.html</feedburner:origLink></entry></feed>
