<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Thoughts that aren’t going anywhere.</description><title>Parentheticals &amp; Excursions</title><generator>Tumblr (3.0; @tomgibara)</generator><link>http://blog.tomgibara.com/</link><item><title>Betan - sharing beta Android apps</title><description>This weekend I finished work on the first version of Betan. It’s an application that allows me...</description><link>http://blog.tomgibara.com/post/862609143</link><guid>http://blog.tomgibara.com/post/862609143</guid><pubDate>Mon, 26 Jul 2010 21:10:01 +0100</pubDate><category>android</category><category>betan</category><category>beta</category><category>apk</category><category>share</category><category>release</category></item><item><title>Returning dynamically generated resources </title><description>As promised in an earlier post about intents I’m sharing a tip on how to return dynamically...</description><link>http://blog.tomgibara.com/post/779006479</link><guid>http://blog.tomgibara.com/post/779006479</guid><pubDate>Wed, 07 Jul 2010 02:18:47 +0100</pubDate><category>android</category><category>java</category><category>linux</category><category>programming</category><category>contentprovider</category></item><item><title>Froyo first impressions: All good</title><description>Although I’ve been building Android 2.2 (Froyo) from source, I’ve been too busy to play...</description><link>http://blog.tomgibara.com/post/748935059</link><guid>http://blog.tomgibara.com/post/748935059</guid><pubDate>Tue, 29 Jun 2010 09:28:32 +0100</pubDate><category>android</category><category>froyo</category></item><item><title>An Intent to Pick Daisies</title><description>One of my favourite things about the Android platform is how easily application can share data using...</description><link>http://blog.tomgibara.com/post/747018321</link><guid>http://blog.tomgibara.com/post/747018321</guid><pubDate>Mon, 28 Jun 2010 22:43:07 +0100</pubDate><category>daisy garden</category><category>programming</category><category>android</category><category>daisy</category><category>java</category></item><item><title>A poor bit of user interface design in the twitter widget for...</title><description>&lt;img src="http://26.media.tumblr.com/tumblr_l41s4v4etE1qzfrczo1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;A poor bit of user interface design in the twitter widget for android in an otherwise a well designed and intuitive application.&lt;/p&gt;

&lt;p&gt;What do you think the “Update” button is going to do?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Submit the text in the “What’s Happening?” box?&lt;/li&gt;
&lt;li&gt;Refresh the current tweets?&lt;/li&gt;
&lt;li&gt;Something else…&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Yes, it’s 3.&lt;/p&gt;

&lt;p&gt;It can’t be 1. As android developers will understand, you can’t usefully put an editable text view into a widget (the Google Search is not a bona-fide widget). So the designers/developers have followed the pattern of showing the “Create Tweet” activity when the text view is clicked. This works really nicely.&lt;/p&gt;

&lt;p&gt;And it isn’t 2 either. Even though the twitter website, and the rest of the android application, refer to the action as “Tweet”, the “Update” button does exactly the same thing here. It duplicates the action of clicking in the textbox. This is wrong on three counts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The language is inconsistent with the rest of the application, for no benefit.&lt;/li&gt;
&lt;li&gt;It reinforces the expectation that the text box can be typed-into, it can’t.&lt;/li&gt;
&lt;li&gt;It robs the user of space to perform a useful action, like actually updating the tweet stream&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;What prompted me to post this is actually a second (and I feel more significant) issue with the app: there is no “About” screen, no information about how to contact the developer, not even any confirmation that it was developed or licenced by twitter.&lt;/p&gt;

&lt;p&gt;I would have emailed my observations instead of posting them, but they weren’t courteous enough to provide their contact details.&lt;/p&gt;</description><link>http://blog.tomgibara.com/post/700382365</link><guid>http://blog.tomgibara.com/post/700382365</guid><pubDate>Tue, 15 Jun 2010 09:41:00 +0100</pubDate><category>twitter</category><category>ui</category><category>android</category></item><item><title>The Android Market has its deficiencies. I don’t think...</title><description>&lt;img src="http://26.media.tumblr.com/tumblr_l410qpx0vz1qzfrczo1_500.png"/&gt;&lt;br/&gt; Change notification&lt;br/&gt;&lt;br/&gt; &lt;img src="http://24.media.tumblr.com/tumblr_l410qpx0vz1qzfrczo2_500.png"/&gt;&lt;br/&gt; Change dialog&lt;br/&gt;&lt;br/&gt; &lt;img src="http://28.media.tumblr.com/tumblr_l410qpx0vz1qzfrczo3_500.png"/&gt;&lt;br/&gt; Change dismissed&lt;br/&gt;&lt;br/&gt; &lt;p&gt;The Android Market has its deficiencies. I don’t think anyone would deny that. One of the niggles is that there’s no place to list the changes between application versions.&lt;/p&gt;

&lt;p&gt;I think this is very important in Android applications because the limited screen space often necessitates moving access to core application functions into the menu. Users who are already familiar with an application may never discover a new feature that has been added to a menu that they opened once and never since.&lt;/p&gt;

&lt;p&gt;Instead of lamenting the Android Market’s inability to display my application changes to users, I decided that the information was important enough to move in-app; in the past I’ve simply logged changes on my website. The design I settled on was to introduce a small notification at the top of my main application activity - about the size of a mobile ad - that appears if there is change information to present to the user. The user can tap the notification to read details about the changes in the latest version.&lt;/p&gt;

&lt;p&gt;Not all updates will need explanations, so the user may not receive a notification on every update, and users can cancel a notification without bothering to read it. Accidentally dismissing the notification isn’t much of a concern since on the next update the user can page backwards and see the descriptions of previous changes.&lt;/p&gt;

&lt;p&gt;This functionality will be included in the next release of &lt;a href="http://www.tomgibara.com/android/daisy/garden/"&gt;Daisy Garden&lt;/a&gt;. I think it works well and I hope users like it; the use of animations to show and hide the notification adds extra bit of polish. And I’ve implemented it as a library project, so I’ll be able to introduce it into my other Android projects.&lt;/p&gt;

&lt;p&gt;I think every developer should consider adding something similar to their applications.&lt;/p&gt;</description><link>http://blog.tomgibara.com/post/698878479</link><guid>http://blog.tomgibara.com/post/698878479</guid><pubDate>Mon, 14 Jun 2010 23:49:37 +0100</pubDate><category>daisy garden</category><category>design</category><category>ui</category><category>android</category></item><item><title>Sharing is hard to do (safely)</title><description>When I developed Daisy Garden for Android one of my goals was to build a simple environment in which...</description><link>http://blog.tomgibara.com/post/695270957</link><guid>http://blog.tomgibara.com/post/695270957</guid><pubDate>Sun, 13 Jun 2010 23:50:27 +0100</pubDate><category>android</category><category>application</category><category>sharing</category><category>genitals</category><category>daisy garden</category></item><item><title>Double hashing comparison</title><description>After my previous post comparing Java’s regular random number generator to its cryptographic...</description><link>http://blog.tomgibara.com/post/674120782</link><guid>http://blog.tomgibara.com/post/674120782</guid><pubDate>Mon, 07 Jun 2010 21:38:10 +0100</pubDate><category>java</category><category>programming</category><category>hashing</category><category>double hashing</category><category>crinch</category></item><item><title>Multi-hashing effectiveness</title><description>Bloom filters are very easy to implement. Unfortunately, there doesn’t seem to be very much...</description><link>http://blog.tomgibara.com/post/672898521</link><guid>http://blog.tomgibara.com/post/672898521</guid><pubDate>Mon, 07 Jun 2010 13:02:00 +0100</pubDate><category>bloom filters</category><category>java</category><category>programming</category><category>data structures</category><category>hashing</category></item><item><title>Compact Approximators</title><description>Compact approximators are a generalization of Bloom filters, see Wikipedia for introductory reading....</description><link>http://blog.tomgibara.com/post/664922709</link><guid>http://blog.tomgibara.com/post/664922709</guid><pubDate>Sat, 05 Jun 2010 02:11:59 +0100</pubDate><category>compact approximators</category><category>data structures</category><category>crinch</category><category>java</category><category>programming</category><category>bloom filters</category></item><item><title>An dr oi d</title><description>I’m diving back in now, but I’ve been too busy in the past 6 months to engage in any...</description><link>http://blog.tomgibara.com/post/657533695</link><guid>http://blog.tomgibara.com/post/657533695</guid><pubDate>Wed, 02 Jun 2010 21:23:00 +0100</pubDate><category>android</category><category>fragmentation</category><category>rant</category></item><item><title>Bloom filters and Hashing</title><description>Across various software libraries I’ve produced, I have a small number of ad-hoc Bloom filter...</description><link>http://blog.tomgibara.com/post/652979675</link><guid>http://blog.tomgibara.com/post/652979675</guid><pubDate>Tue, 01 Jun 2010 11:58:00 +0100</pubDate><category>java</category><category>guava</category><category>programming</category><category>hashing</category><category>crinch</category></item><item><title>BitVector: a Java class for bit twiddling</title><description>Prior to implementing a BloomFilter along the lines of the interface described in the Guava project...</description><link>http://blog.tomgibara.com/post/642433948</link><guid>http://blog.tomgibara.com/post/642433948</guid><pubDate>Sat, 29 May 2010 03:44:45 +0100</pubDate><category>java</category><category>programming</category><category>BitVector</category><category>crinch</category><category>bits</category></item><item><title>Communicating Progress with Splashdown</title><description>As mentioned in my previous post, I’m currently involved with architecting and implementing a...</description><link>http://blog.tomgibara.com/post/516323146</link><guid>http://blog.tomgibara.com/post/516323146</guid><pubDate>Mon, 12 Apr 2010 20:52:56 +0100</pubDate><category>project</category><category>splashdown</category><category>progress</category><category>chart</category><category>information</category></item><item><title>(been busy)</title><description>I’ve recently been super-busy architecting and implementing a complex B2B system. Consequently...</description><link>http://blog.tomgibara.com/post/516169757</link><guid>http://blog.tomgibara.com/post/516169757</guid><pubDate>Mon, 12 Apr 2010 19:18:55 +0100</pubDate></item><item><title>Something I’d forgotten: colouring-in is fun.</title><description>&lt;img src="http://28.media.tumblr.com/tumblr_kz53ovs3cn1qzfrczo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Something I’d forgotten: colouring-in is fun.&lt;/p&gt;</description><link>http://blog.tomgibara.com/post/443269064</link><guid>http://blog.tomgibara.com/post/443269064</guid><pubDate>Fri, 12 Mar 2010 13:00:00 +0000</pubDate><category>gruffalo</category><category>mouse</category><category>owl</category></item><item><title>A memory efficient Map</title><description>Building on the perfect minimal hash I’ve developed for Java String objects, I’ve...</description><link>http://blog.tomgibara.com/post/441141948</link><guid>http://blog.tomgibara.com/post/441141948</guid><pubDate>Thu, 11 Mar 2010 13:00:00 +0000</pubDate><category>java</category><category>code</category><category>map</category><category>memory</category></item><item><title>Minimal Perfect Hash for Strings</title><description>A minimal perfect hash is simply a bijection between a set of N objects and the first N integers....</description><link>http://blog.tomgibara.com/post/438939809</link><guid>http://blog.tomgibara.com/post/438939809</guid><pubDate>Wed, 10 Mar 2010 13:00:00 +0000</pubDate><category>java</category><category>hashing</category><category>perfect</category><category>minimal</category><category>hash</category><category>code</category></item><item><title>Java Money</title><description>The project that’s been taking up so much of my time recently is to architect a complex B2B...</description><link>http://blog.tomgibara.com/post/436787084</link><guid>http://blog.tomgibara.com/post/436787084</guid><pubDate>Tue, 09 Mar 2010 13:00:00 +0000</pubDate><category>java</category><category>money</category><category>library</category></item><item><title>With just 30 minutes of coding, I knocked out a small - but...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_kytzu4zhxp1qzfrczo1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;With just 30 minutes of coding, I knocked out a small - but pretty inefficient - class to generate an &lt;a href="http://en.wikipedia.org/wiki/Ulam_spiral"&gt;Ulam spiral&lt;/a&gt;. In my plot, dot radius increases with fewer unique prime factors; brightness increases with the total number of prime factors.&lt;/p&gt;

&lt;p&gt;The source code, should anyone want it, is public domain and can be found at:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://gist.github.com/323267"&gt;http://gist.github.com/323267&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s surprising how fast Java can be for one-shot bespoke graphics tasks like this.&lt;/p&gt;</description><link>http://blog.tomgibara.com/post/434606140</link><guid>http://blog.tomgibara.com/post/434606140</guid><pubDate>Mon, 08 Mar 2010 13:00:00 +0000</pubDate><category>ulam</category><category>spiral</category><category>java</category><category>primes</category></item></channel></rss>
