Wednesday, May 9, 2012

WeGoIgo 2.0 Released!

The new home screen
It is with great pleasure that I finally announce the release of WeGoIgo 2.0! There are still a few things that I plan to add, but I decided that if I kept stalling to add new features, it would never get out the door. I've spent the last couple of weeks testing it, tweaking it, and making last minute changes in an effort to make this release the best Go app on the market.

To anyone who has upgraded to the new version, please feel free to send me feedback-- especially if something doesn't work, or breaks! I did my best to test everything, but the app has many parts-- a lot of which are new or drastically updated in this release-- so it is very possible that I've missed something.

If version 2.0 is news to you, check out my announcement blog post for more details on what has changed. Please be aware that I have increased the price to $2.49. This is still cheaper than almost every other Go app on the market, and I feel the many, many hours I've put into the app deserve the extra change. If you don't agree, then feel free to wait until I update the lite version with the new features :)

That's it for now. I hope you enjoy the new version as much as I do!

Friday, April 20, 2012

Coming soon: WeGoIgo 2.0

Today I've uploaded GnuGo for WeGoIgo version 1.2 onto the market, in anticipation of the release of WeGoIgo 2.0.

Version 2.0 of my Go application for Android represents a huge step forward for the app---and, I think, for Go on Android in general. For this release, I've gutted the original app, taking everything I've learned since I first wrote WeGoIgo and improving it in nearly every way. While reading SGF files may be a bit slower, it is actually way more efficient---using a custom-built database to store large files for quick retrieval with minimal overhead---and way more flexible, and using the official SGF checker code as a base for more "correct" and compatible SGF loading.

In addition to this, I have finally added annotation features---a first, I think, on Android. You will now be able to edit comments, add labels and symbols, and place stones. Furthermore, once you've added comments and annotations to a game, perhaps you want to email it to someone---no sweat! With WeGoIgo 2.0, sharing games your playing or reviewing is just a click away!

Version 2.0 will be coming out very soon! I don't have anything else on my To-do list at the moment and am in the process of testing, trying to iron out any last-minute bugs.

Follow the break for screenshots and a more comprehensive list of updates, changes, and new features. There are a lot!

Saturday, March 24, 2012

DropSpot 1.2

I never got around to posting about the initial release of DropSpot, so I guess I'll just do that now.

If you don't know, DropSpot is an Android app I released recently to easily access and manipulate files on your Android device wirelessly, over wifi, using a modern web browser such as Google Chrome. The key feature of the app, and the reason I created it, is that you can drag-and-drop files from your native file explorer right onto the browser, and have it copy the files to your phone---you can even copy multiple files at once!

I'm posting today because I've released version 1.2 of the app onto the Market (Google Play). This is a relatively small update, but with some (I hope) welcome improvements. First, you can now download entire folders as a zip file. I know I was sometimes frustrated at only being able to download files one-at-a-time, so this should be very useful. Selecting individual files in a folder to download is a feature that I will definitely include at some point, but is not a part of this release.

Next, many users requested that they be able to access their removable SD cards and such. After some research, it seems that many device manufacturers have been including extra SD card slots in their devices---particularly tablets. This is troublesome, because even the most recent versions of the Android API only tell you where the "default" external storage is. Previously, DropSpot hid the internal stuff from you, and only showed you that "default" external drive. This was for convenience and simplicity, since most people don't care about the internals of their device. However, to access some of these alternative external drives, it was important to have that ability.

My compromise is that, by default, folders which cannot be read AND written to are hidden, and when you first open the web interface, it defaults to that "default" external drive. Please see the wiki for more details on finding your external drives.

Last, a handful of crashes reported have been fixed, as well as some web interface bugs. In particular, if your browser does not support the way DropSpot does uploads, it will properly let you know.

Links:
DropSpot Wiki
- DropSpot Google Play Listing ($1.99)
- DropSpot Lite Google Play Listing (Free)

Friday, January 27, 2012

Getting Git-y

Now that BitBucket does free, private Git repositories, I've new going a little crazy adding a bunch of my projects, old and new, to Git repos and pushing them into the cloud for safe keeping.

In the process, I've decided to share some projects publicly on Github, as well. So far I've put up my Software Engineering project from last semester, and the experimental CMS that I wrote in AppEngine Python for my Orchestra's website. I'll probably post the Java Applet that goes with that CMS for publishing the website over SFTP sometime later.

It's nice to see my Github profile looking not quite so forlorn :)

Sunday, August 7, 2011

WeGoIgo 1.16 and GnuGo 1.1

Well, like I promised, I've released v1.16 of my WeGoIgo app and v1.1 of the GnuGo AI app. I haven't made all the changes I wanted to the interface-- I want to take some time to really think through the best way-- but I have made the magnifying glass try to go above your finger instead of to the side. I've also slightly improved the efficiency of the SGF loader, so people who've had trouble loading Kogo's might try to clear their cache and try again. No promises-- it was a very small change-- but you never know!

The biggest thing here, as I said, is the AI. I'm confident that it will be more responsive and more stable-- something I know many people, including myself, have been wanting for some time.

I haven't gotten around to releasing the update for the free version yet-- enjoy the perks, paid users! I changed my system for managing them so it's easier and quicker for developing, but publishing is not quite as automatic. But, since I spend more time developing than I do publishing, I'm happy with the tradeoff.

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!