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)
Saturday, March 24, 2012
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.
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!
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:
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!
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. |
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.
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.
Subscribe to:
Posts (Atom)