Little Go 1.1.0 released

Posted on: Mon, 11 Aug 2014 03:41 By: patrick

Little Go 1.1.0 has been released to the App Store today. The GitHub issue tracker has a list of all issues that I worked on for 1.1.0, and here is an excerpt of the changelog with the user-visible changes:

  • The app's user interface has been updated to the iOS 7 look & feel (#204).
  • Drawing for Retina displays has been fixed (#205). Many thanks to Eric O. Lebigot for reporting the issue and giving me the necessary KITB to investigate the problem.

In addition to these changes, another two items that are not user-visible turned out to be major time sinks:

  • I decided to adopt Auto Layout as a replacement for manually calculated view frames (#206). After the usual initial learning curve, the real problems that cropped up were always related to the new iOS 7 bar handling (e.g. when to use view controller properties like edgesForExtendedLayout and automaticallyAdjustsScrollViewInsets). In a desperate last minute effort I even wrote my own implementation of a split view controller because I simply could not get UIKit's UISplitViewController to work reliably (issue 236 has the details).
  • In a fit of complete insanity I decided to rewrite the app's board drawing code, with the goal to reduce memory usage when the board is zoomed in (issues 212, issue 214 and issue 215). This took me another month to complete, but the scheme succeeded beautifully - ignoring the memory gobbled up by Fuego, peak memory usage dropped from 170 MB to 67 MB (measuring "dirty size" with the "VM Tracker" instrument). For details check out the Research document, section "Memory usage after adding tiling").

Last but not least, I had a hard time analyzing crash reports. In the 6 months since the 1.0.0 release I received 230 crash reports. Roughly 70% of these seem to originate from the same root cause, which unfortunately I have been unable to pinpoint. A major part of my difficulties was that crash log symbolication provided me with an impossible stack trace, i.e. the last code line in the Little Go source code could not have invoked the UIKit method that was shown by the stack trace. I don't understand the details of the symbolication process, so I can't even guess how something like that is possible (except, of course, a wrong .dSYM file, but I can guarantee that this not the case!). Anyway, very frustrating, and I hope I will find the bug in the next version.

Software Projects
Article Styles

Little Go 1.0.0 released

Posted on: Fri, 10 Jan 2014 15:38 By: patrick

Little Go 1.0.0 has been released to the App Store a couple of days ago. The GitHub issue tracker has a list of all issues that I worked on for 1.0.0, and here is an excerpt of the changelog for the visible features changes:

  • Superko is back (it was disabled in 0.12.0), but simple Ko remains the default. You can select the Ko rule when you start a new game (#169).
  • Little Go now supports area scoring (#30). I implemented this mostly out of necessity because I realized that Fuego does not properly support territory scoring. That's also the reason why area scoring is now the default scoring rule.
  • Accurate scoring is now possible because stones can be marked to be "in seki" during scoring (#190).
  • A little goodie that I wanted to implement for a long time is the display of player influence, aka territory statistics (#18).

These features, however, were not why it took me so long (over 3 months) to finish the 1.0.0 release. Rather it were the things that changed under the hood:

  • Upgrading to Xcode 5 cost me quite a bit of time (and a lot of nerves!) until I realized how I could get back unit tests to run. Initially I also tried to upgrade from OCUnit to XCTest, but had to abandon the effort because I am still using the 6.1 SDK. This Stack Overflow question summarizes my troubles.
  • I completely rewrote the 3rd party software build process to use Git submodules. For this I had to learn about Git submodules in general, and in particular about svn2git so that I could mirror the Fuego Subversion repository with Git. The end result is the fuego-on-ios repository on GitHub, which is intended to provide other people with a base for creating their own Fuego builds for iOS.
  • Last but not least, I decided to upgrade from Fuego 1.1 to the trunk version of the Fuego source code. This gave me a nasty surprise because the trunk version of Fuego uses much more memory in its default configuration than Fuego 1.1 did. So much memory, in fact, that Little Go becomes unusable for iOS devices with 256 MB of memory, and unstable for iOS devices with 512 MB memory. Although I soon found out how to reduce memory usage, a lot of effort went into making sure that Fuego works correctly with this low-memory configuration. The results are published on the Fuego wiki.

Implementing most of these technical changes were not fun, and thus releasing version 1.0.0 has not been an occasion of joy, but rather one of relief. In the end, I must admit, that my motivation was so drained, and I was so weary of the whole thing, that I pushed the release to the App Store without a lot of testing. I hope my users will forgive me for this.

Software Projects
Article Styles

Added Flattr buttons

Posted on: Sat, 28 Sep 2013 14:41 By: patrick

Yesterday I decided to start using Flattr on a regular basis. The intention is to be mainly a supporter, but I certainly won't refuse if someone insists on sending a flattr my way ☺. As a consequence, you now see a "Flattr this" button at the bottom of every page on this website - you can use this to express your general approval of the site. If you like a particular post, you can also use the button on that post. This being a Drupal site, Flattr integration naturally is realized with the Flattr module. The documentation for the module is a bit sparse, so I wrote a few notes about its configuration on my wiki.

Little Go "sales" statistics

Posted on: Sun, 15 Sep 2013 23:47 By: patrick

Little Go 0.12.0 has now been in the App Store since September 11, i.e. 4 days. I thought this would be a good opportunity to publish a few numbers from the iTunes Connect sales statistics:

  • Number of updates on the first 4 days: 976, 5537, 1785 and 1211. This shows that the majority of people are updating on the second day.
  • The total number of updates is 9509. I wouldn't go so far as saying that these people are all actively playing Little Go, but at least they haven't deleted the app yet, so it's probably reasonable to assume that this is the user base that thinks the app is not a total crap ☺. I expect quite a few updates more in the next couple of days and weeks - for comparison, when I published 0.11.1 in May 2013, the total number of updates in the first 4 weeks was 12724.
  • Since July, between 50 and 100 new devices have downloaded Little Go per day. I don't know how many new users that is, but it's certainly not too bad ☺. Apparently the app is still gaining some interest.
  • Looking at the monthly rates of new downloads, the picture is this: Between August 2012 and January 2013 the rate was steadily climbing from 1315 to a peak of 3415 new downloads per month. Over the last 7 months, the rate then slightly dropped to a monthly average of ca. 2800 new downloads.
  • In 2012 the top 6 markets were USA (3744 downloads), Germany (2678), France (1630), Thailand (1362), the Republic of Korea (1276) and Russia (969). Runner up on 7th place is Turkey (368).
  • In 2013 the picture so far is pretty much the same: France (4517), Germany (3884), USA (3242), Thailand (2234), Russia (1900) and the Republic of Korea (1348). As in 2012 the runner up is Turkey (559).
Software Projects

Little Go 0.12.0 released

Posted on: Sun, 15 Sep 2013 22:18 By: patrick

Little Go 0.12.0 has been released to the App Store a couple of days ago. Since I plan to slow down my development activities on the project soon, the overall focus of the release was on improving the usability of Little Go, and less on adding cool new features.

The GitHub issue tracker has a list of all issues that I worked on for 0.12.0, and here is an excerpt of the changelog for the most notable changes:

  • It is now possible to configure the computer player with a threshold how quickly it will resign a game (#133). For instance, it is now possible to tell the computer player to never resign so that the game can be played out to the very end. This also allows beginners to play with a large handicap on a small board (up until now the computer player would always resign immediately when faced with an overwhelming handicap).
  • When an old board position is viewed, the intersection where the next stone will be placed is now marked with the letter "A" (#101). This can be disabled in the "Board position" settings.
  • Changes to the active profile are now immediately applied to the GTP engine (#123). For instance, it is now possible to change the playing strength or the resign behaviour of the computer player without starting a new game.
  • The user interface for changing the dangerous "Max. memory" profile setting is now vastly improved (#153). The maximum value that can be selected for the setting is now limited to a fraction of the device's physical memory, and the amount of physical memory that the device has is also displayed.

Finally, the GTP engine is configured to no longer recognize positional superko (#171). This is a temporary solution to bring the GTP engine's rules into sync with Little Go's rules. Little Go currently does not recognize superko, so this sync'ing fixes the problem that Little Go lets the user make a superko move which is then rejected by the GTP engine. Many thanks to Brid Griffin for emailing me a bug report that helped me with diagnosing this problem! Note that Little Go will officially support superko in 1.0.

Software Projects
Article Styles

And so they slowly fade away...

Posted on: Sat, 29 Jun 2013 00:23 By: patrick

A few days ago, the news carried a short notice about Richard Matheson's death. I was a bit surprised at first, but then remembered that his novel I Am Legend had recently been remade into a blockbuster movie, so that's why the media know him. Just now I did some research while reading Isaac Asimov's "A Memoir", and so found out that another Science Fiction author, Jack Vance, has passed away a month ago, this time entirely without my noticing. Jack Vance is one of the few SF authors that I absolutely adore, and in the SF field he is rightly famous - but apparently not famous enough in the eyes of the general populace to warrant even the smallest notice in the papers. Just now I feel very sad.

Report from the spam front: Greylisting remains successful!

Posted on: Fri, 07 Jun 2013 22:03 By: patrick

It is now 2½ years since my last post on greylisting, and over 3½ years since I reluctantly started to use this spam prevention technique. I am pleased to report that greylisting remains as successful as it was on day one.

In fact, the situation has even improved since that last post 2½ years ago: The overall spam rate has dropped from 36 to 14 messages per day! It is unclear whether the reason for this is a world-wide decrease in spam mails, or a decrease in "quality" of spam mails, i.e. fewer spam mails make it past the greylisting wall. I don't need to know the exact reason, though, to feel happy about the result: Due to the low overall spam rate, on average only 1.4 messages per day now make it into my inbox. Wow, these days I can even leave my mailbox unattended for a few days without getting flooded - isn't that great?! (compare the current situation to when I only had Spam Assassin and, at the peak, my inbox was inundated by more than 40 new spam messages per day).

For more statistics details, see this wiki page.

Topics

Damon Lindelof getting close to the brink

Posted on: Fri, 17 May 2013 22:23 By: patrick

A long time ago I decided that I would never ever watch another movie directed by Roland Emmerich. Not every movie on my menu must be super quality, plain good entertainment is usually OK, and sometimes I even enjoy to see trash films. But I always felt insulted by the stuff made by Emmerich because he seems to assume that the viewers of his movies (e.g. me) are dumbasses that are happy to see explosions, and never mind the story. So these days Emmerich movies are a no-go for me.

A few days ago I saw Star Trek Into Darkness. After maybe half the movie had passed, I felt how I got angrier and angrier at all the stupid mistakes in the story, until in the end I had to say: What a dumb movie! Then I happened to see the writing credits, and everything became clear: Damon Lindelof has done it again. As a writer this guy just seems to be abysmal, and now he is getting reeeeally close to the brink of my Emmerich hole...

Article Styles
Topics

Little Go 0.11.0 released

Posted on: Fri, 17 May 2013 21:41 By: patrick

Little Go 0.11.0 has been published on the App Store on April 23 2013, almost 4 weeks ago. For some reason I completely forgot to write this announcement, and I also forgot to update the master and develop branches on GitHub. I just fixed this a few minutes ago...

For iPhone users this new release finally brings the long-awaited zooming feature, making it much easier to place stones on large boards. iPad users can also zoom, but this is of much less value, except maybe for the iPad Mini. It is now also possible to display move numbers and coordinate labels, things I originally planned to implement much sooner, but somehow there was always stuff to code that seemed to be more important. So in the end I am not sure how important these two features really are, but they are at least a nice graphical addition to the UI.

Something of which I am sure that it is very useful is the new ability to export and import .sgf files to/from other apps such as Mail or DropBox. Working on these features prompted me to propose this draft of a UTI specification for the .sgf file format, but so far the announcement on the sgf-std mailing list has not received any responses. Ah well, it's probably not the most important thing in the world ☺.

Software Projects
Article Styles
Subscribe to