Username:
B
I
U
S
"
url
img
#
code
sup
sub
font
size
color
smiley
embarassed
thumbsup
happy
Huh?
Angry
Roll Eyes
Undecided
Lips Sealed
Kiss
Cry
Grin
Wink
Tongue
Shocked
Cheesy
Smiley
Sad
page  1234567891011121314151617181920 -> 1 ... 20 ->
--
--
List results:
Search options:
Use \ before commas in usernames
Edit history:
SMK: 2012-12-29 09:57:52 pm
SMK: 2012-12-29 09:57:04 pm
SMK: 2012-12-29 09:55:34 pm
SMK: 2012-05-08 09:04:34 pm
SMK: 2012-01-11 03:38:07 pm
SMK: 2012-01-11 03:38:00 pm
SMK: 2012-01-11 03:37:40 pm
SMK: 2012-01-01 07:43:23 pm
SMK: 2011-12-31 02:29:27 pm
SMK: 2011-11-19 08:38:43 pm
SMK: 2011-11-19 08:38:42 pm
SMK: 2011-11-19 08:38:39 pm
SMK: 2011-11-19 08:38:38 pm
SMK: 2011-11-19 08:36:12 pm
SMK: 2011-11-19 08:36:11 pm
SMK: 2011-11-19 08:33:19 pm
SMK: 2011-07-20 06:33:44 pm
SMK: 2011-07-19 07:50:26 pm
SMK: 2011-07-13 07:13:36 pm
SMK: 2011-07-13 07:13:19 pm
SMK: 2011-06-19 04:58:51 pm
SMK: 2011-06-19 04:56:59 pm
SMK: 2011-04-24 12:37:22 pm
SMK: 2011-01-15 03:11:13 pm
SMK: 2011-01-12 08:40:50 pm
SMK: 2011-01-12 06:35:31 pm
SMK: 2011-01-03 06:56:20 pm
SMK: 2011-01-03 01:21:31 pm
SMK: 2010-12-30 11:14:36 am
SMK: 2010-12-24 09:02:19 am
SMK: 2010-12-23 12:08:36 am
mikwuyma: 2010-12-21 12:23:35 pm
SMK: 2010-12-16 11:14:24 pm
*edit* Last updated Dec 29th, 2012 */edit*

A new version is availiable:

http://inlovewithladyada.com/files/tracker-app.zip

Unzip everything in the archive anywhere, and then run 'SDA_DonationTracker.exe'. 

**Original Post**:

So, I've posted about this before some, but I'm told the links get lost. 

Basically last year, managing donations was a bit of a pain, especially when donations were to name characters or auctioning off choices. EmptyEye suggested that we use a database, and so I was bored this fall and wrote this, a Java program that I'm hoping (praying) will help even a little to keep track of things.  Its written in Java because that's the only program I have any experience writing GUIs and DB stuff with (I typically do systems-level stuff in C++).

Basically, its a GUI program that keeps track of how much each person has donated, and can attach individual donations to 'bids' (which is what I called putting money towards something, like character naming).  From what I can remember from the marathon, i.e., sitting in a corner desperately trying to keep track of donations for 13 FF6 characters, this should make things much easier. 

You can get it from here:

http://home.cc.umanitoba.ca/~umkiazyk/files/dmanag.zip

Just download and unzip the entire archive somewhere, then double-click on the 'dmanag.jar' file.  Assuming you have Java installed and set up, it should run.  If not, well, then install Java.  It has no documentation, so if you want to take a look at it, be prepared to play around with it and try to figure stuff out, or PM me (I know I don't post much, but I'm always checking my PMs).  I'll try dredging up some explanations I sent to mike in a PM.

If you're super cool, you can get it from my git repo:

*edit* the URL I previously gave was for SSH, which wouldn't work unless you had registered a publickey with github.  This URL is for public, but read-only, access.  If you do want to have write access, PM me.
git://github.com/Hippocrates/dmanag.git
git://github.com/Hippocrates/pheidip.git
Thread title:  
Edit history:
SMK: 2010-12-16 11:10:56 pm
Here's the best I can do explaining it:

Quote:
The basic idea is this: every time a person gives us a donation, it is tracked as a 'Donation' object in the database.  The way to add a new donation is to select a donor, and hit the ADD DONATION button, and filling in an amount for that donation.  If this is the first time that someone is donating, you will need to add them to the list of donors first, in the 'Donors' tab, by clicking 'ADD DONOR' or whatever that button is, and then filling in their name (I imagine that you'd just use the ID that they're using in chat as their donor name).  Note that there's no formal way of searching the list boxes, at least not yet, but if you click on any list box, and start typing a name, it will auto-match the first entry found, which is probably all that we'll need.

Bids are just the generic name for things that people can pledge money towards.  For example, if you wanted to have people to pay to name Cecil from FFIV, you would go to the 'Bids' tab, and add a new 'bid' (probably called "FFIV - Name Cecil" or something).  Then, as people start making name suggestions, you would track each one as an 'Option' for that bid.  So, someone wants to call Cecil 'SomeGuy', so you add that name as an option to "FFIV - Name Cecil", and you link their donation to that name.  You can do so by going to the Donor tab, and updating their donation (their donations are listed in chronological order), i.e. select the donation, and hit the 'UPDATE BID' button, which will give you the list of bids and options currently in the system.  I originally had a seperate 'Donate' tab to do it all at once, but I think that this will probably be easier in the long run, I can always add it back in later.  You can see how much money each option has received in the 'Bids' tab.

In cases where it's just 'if we get $50 in the next 20 minutes, Mike will play contra shirtless', then you can just make that a single option under the bid, and just link every donation over that time to that bid, and it'll track how much money went towards it (I might add something so that a user can just query how much money was donated over a specific time period, since this is kind of an obtuse way to get the result).

The prizes tab is, well, not very good.  The idea I has was that you could enter every prize you were going to give away, and then you can use the filtering options at the bottom to get the list of all people who donated within a specific time period, or who have donated but haven't received a prize yet, or who have donated more than a specific amount (not yet implemented), and then you can pick a random person from that set (or the person at the top of the list, since it's sorted by amount donated), and assign a prize to that person (probably will add a way to track donor's address to).  I'm not too sure how well this prize system will work out; I'm just trying to remember how we allocated prizes last time.  If worst comes to worst, I'll add a manual SQL query option, and you can just get me or somebody else who knows SQL to do something fancy.


Again, please PM me if you have questions, I do not bite.  Or better yet post it here.
Edit history:
Rakuen: 2010-12-16 11:30:43 pm
Weegee Time
Suggestions:
*Make it possible to actually search on the search tab.  There's a lot of white space at the bottom too, you could move everything down a little and expand the user listbox a bit.  4 rows is a little hard to read/scroll through.

*Change Delete Bid to Delete Donation, since that's what the user is actually doing.

*Currently on the donation page, if you click a Bid but NOT an option, it will accept the donation.  I'd say an error dialogue asking the user to either clear selection or select an option might be good to prevent accidental entries one way or the other.

*Error messages for deleting records need to be more user friendly.  Not everyone is going to understand what an Integrity Constraint violation means and what they need to do to properly delete it.  The same is true for clicking assign on an already assigned prize.

*Make it more self-documenting.  For example, on the Prize page, say those options at the bottom are for filtering donations.  I know people have the chance to get familiar beforehand, but it's best to avoid any confusion.

That's all I can think of for right now.  It's a nice little app you've got going, it just needs a little more polish. :]
Quote from Rakuen:
*Make it possible to actually search on the search tab.  There's a lot of white space at the bottom too, you could move everything down a little and expand the user listbox a bit.  4 rows is a little hard to read/scroll through.

Is this just in reference to the size, or do you mean add a search dialog as well?  I can easily make it larger, good call.

Quote from Rakuen:
*Change Delete Bid to Delete Donation, since that's what the user is actually doing.

Sorry, that was a typo, fixed.

Quote from Rakuen:
*Currently on the donation page, if you click a Bid but NOT an option, it will accept the donation.  I'd say an error dialogue asking the user to either clear selection or select an option might be good to prevent accidental entries one way or the other.

Good call, I'll fix that.

Quote from Rakuen:
*Error messages for deleting records need to be more user friendly.  Not everyone is going to understand what an Integrity Constraint violation means and what they need to do to properly delete it.  The same is true for clicking assign on an already assigned prize.

lol, this was something that I was hoping to avoid.  Basically, every SQL implementation in Java has its own way of presenting errors, and I haven't looked too far into what the one I'm using does, so I've just been dumping out their messages.  I guess I'll have to fix this now, grr. (FWIW, unique constraint means that something already has that name, integrity constraint means something else in the database refers to the thing you're trying to delete, and check constraint means that you entered an invalid value (negative donation amount for example).

Quote from Rakuen:
*Make it more self-documenting.  For example, on the Prize page, say those options at the bottom are for filtering donations.  I know people have the chance to get familiar beforehand, but it's best to avoid any confusion.

This is probably my weakest area in terms of program design, but I'll try.

Quote from Rakuen:
That's all I can think of for right now.  It's a nice little app you've got going, it just needs a little more polish.

Thanks for the suggestions! 
@'a little more polish': They say that the first 90% of the product takes 90% of your development time, and then the last 10% of the product takes 90% of your development time.  There are no typos in that sentence.
Weegee Time
Quote:
Is this just in reference to the size, or do you mean add a search dialog as well?  I can easily make it larger, good call.

I meant add a search box as well, if it's possible.  If it's a lot of work, you might put it off.  It's just being able to search becomes more useful as the list of names grows longer.

Quote:
lol, this was something that I was hoping to avoid...

Heh, yeah, I know what the SQL error means.  Here's an idea though.  The only error that should be able to trigger in the deletion is the constraint violation... I think.  So just change the message you put in the dialogue box to be more meaningful.  If it's not the only error, maybe parse the returned string for "Integrity constraint violation"?  Either way would avoid having to get under the hood.

Quote:
@'a little more polish': They say that the first 90% of the product takes 90% of your development time, and then the last 10% of the product takes 90% of your development time.  There are no typos in that sentence.

Yep, I'm very familiar with with the way software development goes.  Took me a week to get a simple report app approved. >_>
Bloody Java. It's even a pain to find whatever you need to install to get the bloody applications running.
Anyone have a link?
Exoray
If you're only looking to run the jar and not compile anything yourself, the runtime environment is all you need.
Installing it doesn't help. I still can't run the jar file. Nothing happens.
And I'm not looking to develop and compile anything Java for the rest of my life hopefully. So I'll just avoid the SDK. Once is more than enough.
This lists how to set up the file association for java in windows if the installation did not do so:

http://stackoverflow.com/questions/394616/running-jar-file-in-windows

Or, assuming that you have java's bin directory in your system's PATH, you can also invoke it from the command line using:

java -jar dmanag.jar

I'm sorry to hear about the java animosity; I'm just so used to all the weirdness that I don't really think about it anymore.  PM me if you need any help.
Alright, now I can run it. But it doesn't work:

Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56)
Caused by: java.lang.RuntimeException: Error: Table not found: DONOR in statement [SELECT Name FROM Donor]
        at data.ConnectionManager.processException(ConnectionManager.java:74)
        at data.ConnectionManager.processSQLException(ConnectionManager.java:69)
        at data.ColumnFieldSearch.searchField(ColumnFieldSearch.java:45)
        at gui.SearchPanel.update(SearchPanel.java:108)
        at gui.SearchPanel.setFieldSearch(SearchPanel.java:98)
        at gui.DonorsTab.<init>(DonorsTab.java:98)
        at gui.MainWindow.<init>(MainWindow.java:35)
        at main.Main.main(Main.java:12)
        ... 5 more

Seems to be something wrong with the database? Not created? Does it have to exist somewhere perhaps?
Yes, the database is in the file ./database/db.script  (i.e. relative to your current working directory).  Make sure you unpack the 'database' folder from the zip archive as well and put it in the same directory as the jar file.
Edit history:
Mystery: 2011-01-21 01:33:53 pm
Ah, now it works. I just extracted the whole package.
But that java gui is ugly as always >_<
Oh well. At least it works Smiley
My feelings on The Demon Rush
Thanks for telling me you updated this since you PMed me SMK! Wink

This program works a lot better now than when you gave it to me, but there's some stuff that could definitely be worked out.

Sooo questions/suggestions:

-Search tab should be renamed. I'm thinking rename it to Donations. I mean, you can't even search in the search tab anyway. Having a search would be nice.

-Updating the donation amount also changes the time donated. I'm not sure that's the best idea, since we could have screwed up a donation amount, and we have to update it hours later because we overlooked.

-I have no idea what, "exclude if already won" does. Maybe if you explain what that means, we can figure out a better name for that check box.

-You should probably specify that the bottom two drop down menus for the before and after check boxes are hours and minutes, because I stared at them blankly for a good minute or two before I knew what they meant.

-Speaking of Before and After, do we really need a selectable year and month? All of our donations will be coming in January 2011.

-The Prize tab buttons need a bit more context. For example, the remove button doesn't specify whether it's removing the prize or the person assigned to the prize (yes, I know it's doing the latter, but the button is vague).

-Also, when you hit random in the prizes section, the program should automatically scroll to whoever is selected. Having to scroll up and down to find who was selected is really annoying, and will only be more annoying when we have hundreds of donators during the marathon.

-This was mentioned before, but you should make the error messages friendlier and easier to read for people who don't program.

This program is looking pretty nice so far, it's just like what Rakuen said, the program just needs a little cleaning up before we use it.

BTW, if anyone wants to do commentary and look at chat this marathon, you must learn how to use this program.
Edit history:
Rakuen: 2010-12-20 02:05:46 pm
Weegee Time
Quote from mikwuyma:
Search tab should be renamed. I'm thinking rename it to Donations. I mean, you can't even search in the search tab anyway. Having a search would be nice.

Actually, a better idea is to rename that tab to Donators (since that's what it really is) and then change the name of the Donate tab to Donations.

Quote from mikwuyma:
-I have no idea what, "exclude if already won" does. Maybe if you explain what that means, we can figure out a better name for that check box.

Clicking that checkbox filters out anyone who has already won a prize.

Quote:
Speaking of Before and After, do we really need a selectable year and month? All of our donations will be coming in January 2011.

This is probably done so the app can be used for more than just this marathon.  Otherwise, you'd have to edit constants and recompile the code for every single marathon.  I can see this being useful to other groups, so I'd say leave them in.
Ah, I had hoped to have something ready by tonight.
By alas, the gods are not willing. Out of time.
Oh well. Look forward to it tomorrow. It will be awesome. I hope.
Talk to the Hand
Mike, are we not doing roundtable commentary again? :|
Edit history:
mikwuyma: 2010-12-20 03:38:58 pm
mikwuyma: 2010-12-20 03:38:42 pm
My feelings on The Demon Rush
No, we're doing roundtable commentary, but if you want to look at the chat and handle donations, you have to learn how to use the donation app.

EDIT: Would it be worth having an email column in the donators tab (currently search tab)? I think it would help save us some time from looking at the chipin later.

Also, if you can't help how updates work when it comes to the date and time, is there a way to manually overwrite them?
Quote from mikwuyma:
-Search tab should be renamed. I'm thinking rename it to Donations. I mean, you can't even search in the search tab anyway. Having a search would be nice.

What exactly would you like in said searching?  Like, just pop up a dialog where you can type in a name and it will list out the closest matches?  I'll try adding something and you can tell me what you think.

Quote from mikwuyma:
-Updating the donation amount also changes the time donated. I'm not sure that's the best idea, since we could have screwed up a donation amount, and we have to update it hours later because we overlooked.
+++
Also, if you can't help how updates work when it comes to the date and time, is there a way to manually overwrite them?

You mean to say that when you update the donation's amount, you want the time to be changed as well?  Its not impossible: I was previously using the time of the donation as its primary key, but that can easily be changed, I'm just not sure about what the benefit of changing the time is?

Quote from mikwuyma:
-I have no idea what, "exclude if already won" does. Maybe if you explain what that means, we can figure out a better name for that check box.

-You should probably specify that the bottom two drop down menus for the before and after check boxes are hours and minutes, because I stared at them blankly for a good minute or two before I knew what they meant.

-Speaking of Before and After, do we really need a selectable year and month? All of our donations will be coming in January 2011.

-The Prize tab buttons need a bit more context. For example, the remove button doesn't specify whether it's removing the prize or the person assigned to the prize (yes, I know it's doing the latter, but the button is vague).

Like I said, there's a lot of problems with the prizes tab, mostly because I don't think of these kinds of things when programming it myself.  Month and year can be changed because otherwise I'd have to wait until January before actually being able to test it. Tongue

Quote from mikwuyma:
-Also, when you hit random in the prizes section, the program should automatically scroll to whoever is selected. Having to scroll up and down to find who was selected is really annoying, and will only be more annoying when we have hundreds of donators during the marathon.

I've fixed this, and I'll put it on the site when I finish fixing the other stuff.

Quote from mikwuyma:
-This was mentioned before, but you should make the error messages friendlier and easier to read for people who don't program.

I'll get to this once I've pushed out the other fixes.  I'm not avoiding it, I just haven't gotten around to it yet (I just got back last night).

Quote:
Would it be worth having an email column in the donators tab (currently search tab)? I think it would help save us some time from looking at the chipin later.

I can add it as an optional field in the donor object, what exactly is the e-mail used for, paypal id?

Also, Mystery, you're being awfully mysterious.

Again, thanks all for the feedback.
My feelings on The Demon Rush
Searching: Yes, that's exactly what I want, if this marathon is anything like the last one, we'll have hundreds of donators.

Search tab name: See what Rakuen said, Donators is a much better name for it.

Quote from SMK:
You mean to say that when you update the donation's amount, you want the time to be changed as well?  Its not impossible: I was previously using the time of the donation as its primary key, but that can easily be changed, I'm just not sure about what the benefit of changing the time is?


No, that's exactly what I don't want it to do. Currently it does change the time when you update a donation.

Changing Month and Year: Fair enough. Tongue

Errors: Makes sense. You want the program to work before you work on the other stuff.

Email: Paypal id, and more importantly, a way to contact the person after the marathon.
Quote from mikwuyma:
Searching: Yes, that's exactly what I want, if this marathon is anything like the last one, we'll have hundreds of donators.

k, I'll see what I can do.

Quote from mikwuyma:
Search tab name: See what Rakuen said, Donators is a much better name for it.

Actually, did you know that Donators is not a word?  The correct term is Donors (I didn't know that until I started working on this).  In any case, fixed.

Quote from mikwuyma:
Quote from SMK:
You mean to say that when you update the donation's amount, you want the time to be changed as well?  Its not impossible: I was previously using the time of the donation as its primary key, but that can easily be changed, I'm just not sure about what the benefit of changing the time is?

No, that's exactly what I don't want it to do. Currently it does change the time when you update a donation.

Then that would be a bug.  However I'm not seeing anything like that happen on my end.  Can you give the steps you took to make that occur?
My feelings on The Demon Rush
Actually, I'm not sure how I caused that bug because I can't recreate it. I just remember doing it with Ben. :-/

BTW, is there a reason we can't delete the donors, is it because those donors are pre-loaded into the program?
Edit history:
SMK: 2010-12-20 05:56:13 pm
SMK: 2010-12-20 05:53:03 pm
A donor cannot be deleted if they have any internal links (i.e. if they have made a donation or won a prize): try deleting donors that have no donations, or deleting all their donations, then the donor.  This is by design, to avoid accidentally losing data (the idea was that you'd only be deleting donors when you first created them, if you made a spelling mistake or something).  I can change it to make the delete button require a secondary confirmation, and then it'll delete all data associated with that donor.

Also, do you have any preference for searching heuristics?  I was thinking something along the lines of

Given the string "SMK"

search for "S?M?K*"

Where ? represents 0 or 1 character, and * represents 0 or more characters.

such that SMK will match:

SMK
SMYK
smakly
somekindofgreen
My feelings on The Demon Rush
That would work for searching. I don't really know searching heuristics, though.
Quote from mikwuyma:
That would work for searching. I don't really know searching heuristics, though.

Neither do I. Tongue  There's a lot of research papers on the topic apparently, but I don't really want to waste too much time trying to make anything fancy.

In any case, I submitted some updates.  Any recommendations for the search dialog (maybe if you know of a good approx-string search algorithm that I can implement in less than an hour or so), or anything else in the app, please send them my way.
Weegee Time
I'd say that's not a bad version of searching you came up with.  At some point difficulty with searching for a name falls on the person for having a ridiculous name.  For example, people who spell their names in 1337.