Saturday, August 6, 2011

Updates

It's been a while since I've posted, but I've been pretty busy working for Minus (previously Min.us) developing their Android app, a job which I happily took over from my good friend Colin. Everyone should check out the service-- it's pretty slick. And, they've got a pretty awesome Android app, which should see a pretty good update sometime very soon.

In other news, I've finally found my way back into my WeGoIgo code. It's definitely showing it's age (it was my first published app, and only the second I wrote). There's a lot of rugged stuff that shows how little I really understood about the platform when I first started, and I feel I've really developed as a programmer since I started the project about a year ago. I've already executed several ideas I had for revamping some of the code to make it sturdier and just generally better. The focus for the next release (whenever I have the time to finish some things up) will probably be AI. I've completely re-written the bridge between GnuGo and Android to make it faster, more efficient and stable, etc. I've also scrapped all the logic for the interactions between GnuGo and WeGoIgo and rewritten it, so that should also be significantly more stable. GnuGo will now throw up a Notification while it's running, so there's no doubt about whether it's crashed and just not told you!

I may release just these changes if I don't have time to improve the interface like I want to, but I hope to add some fun enhancements to stone placement and stuff that I think everyone will like.

Look forward to it!

Friday, June 3, 2011

Silence O'Clock 2.1

Just a quick post to note that I've updated Silence O'Clock to fix a pretty weird bug. Sorry for any inconvenience!

If anyone else stumbles on a weird issue where they've got checkboxes attached to views in an ExpandableListView, and expanding/hiding the groups causes the checkboxes to go crazy, you might be doing something like this in your getChildView or getGroupView:

final Item item = getChild(groupPosition, childPosition);
CheckBox enabled = (CheckBox) convertView.findViewById(R.id.enabled);
enabled.setChecked(item.enabled);
// reset with a shiny new listener
enabled.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// do something with "item"
}
});


The problem is that hiding/showing the views actually causes them to be recreated. But, in an effort to be memory friendly, Android just reuses old Views. So, your call to setChecked() is actually firing the old OnCheckedChangeListener that was attached earlier, and which has reference to a different Item.

The easy solution is to just clear the listener with enabled.setOnCheckedChangeListener(null); before you call setChecked(). Easy!

Thursday, May 19, 2011

Silence O'Clock 2.0

A demo of the spiffy effects on the Quick Slice creation widget.
At long last, I've finished a bunch of new features and modifications to my Silence O'Clock app. Besides changing "Silence Period" to "Silence Slice"-- it's alliterative, and I wasn't a fan of the old wording anyway-- the biggest new thing is the addition of "Quick Slice." With Quick Slices, with just a "slice" (in this case, a sliding motion with your finger) and a couple taps, you can set your phone to silent for 15 minutes up to 6 hours, after which your ringtone will automatically be turned back on. This feature is perfect for movies or unscheduled meetings-- you'll miss any calls because you forgot to turn your ringer back on again!

WeGoIgo 1.15

Just uploaded yet another update. Someone requested the ability to pass in Joseki on the reviews, so I thought I'd go ahead and put it in. You can pass through the options menu, a new button that's only enabled if there's a "pass" in the dictionary for the current move, or if there's a "tenuki spot," which is just some label in the bottom corner without a variation associated.

In other news, I've changed handicaps to follow this page: http://senseis.xmp.net/?path=Handicap&page=HandicapPlacement. I think this is more common. If you don't like those, however, I've also added custom handicap placement.

Finally, I've added a bit more SGF/Tsumego compatibility, and updated the visual area calculation to include labels. Also, if it surrounded the board completely, it now shrinks it back down to what you'd expect.

Monday, May 9, 2011

WeGoIgo 1.14

Nothing groundbreaking in today's update for WeGoIgo, but a few fixes and changes that should make those users with small screens smile. You can now choose to view games in "fullscreen" mode, which hides the status bar and, if my emulator is to be believed, grants users with 3-inch QVGA screens just enough elbow room to use the navigation buttons when an ad is on screen. If you've got a nice beefy screen, or have paid for the ad-free version, this will just give you more room to read comments... but that's pretty cool, too, right? I also fixed a bug where, even if the ad slid off screen (which is automatic if any comments are there), you could still click on it somehow. My apologies to anyone affected by this issue for not discovering it sooner!

In other news, I've continued to fiddle with my SGF reading and handling to make them even more forgiving. This is a formal plea to SGF developers or people just writing out their Tsumego problems by hand: Follow the SGF standard specifications! It's easier for all of us. Regardless, this should make WeGoIgo official compatible with at least the kyuu-level tsumego on the venerable goproblems.com. Thanks to Timo for your help finding incompatible sets!

Tuesday, April 12, 2011

WeGoIgo 1.12

Another quick-- but very important-- update for WeGoIgo. The last update changed some things about loading files to be more compatible with poorly formatted files, but I neglected to notice that the change would not be compatible with the loading method used for Joseki (it's different because Kogo is so huge). As a result, an initial load of a Joseki file would get stuck at 0%-- anyone who had installed it and used Joseki before the update should be fine, but another change in the loading made WeGoIgo apparently refuse to read files it created (such as the autosave). These embarassing bugs have all been fixed with this update, so PLEASE grab it if you haven't!


For those of you affected by the Joseki issue, you can to to Preferences > Advanced Preferences > Clear Cache to get rid of the failed Joseki reads. This applies to you if, when you load a Joseki, the board is empty and the comments field at the bottom says "End of recorded path."


Sorry for the inconvenience! Full changelog after the break, as usual.

Saturday, April 9, 2011

WeGoIgo 1.11

Just a quick post to announce that I've (finally) posted version 1.11 of my Go app. I decided to take a break from my class projects and address some issues with loading SGF files that I've been emailed about. Otherwise, the full version is withing spitting distance of 100 downloads, and the lite version is not that much further from 3000. I'm pretty excited! I'll be more excited, though, when I'm done with all the projects I have to do and can back to working more on those I want to do, like this.

Full change log after the break