Friday, July 27, 2007

woot - done!

I found the problem. Apparently I had told it to run the edit code *again* at the end of the verification, thinking this was necessary to keep it in edit mode, and I didn't have to do that.

So I'm ready to roll with it. What's left for the project:
- run down any more reports that are needed
- writing the user guide
- training

Logging 24 hours work so far and the user guide will probably take about 3-4 hours. The coding hours were more than that, of course, but since I've never had formal training in interface, learning time is required, and I don't feel right including that in the cost.

I don't have the same sense of accomplishment I did when I finished writing Sonia, but then again, the project still has the stuff above to do, and I'm sure that other things will come up as the program is used. But still, I feel good that the coding is done, and I think I've anticipated most problems. Of course, the proof will come through use. Users can always think of the oddest way to do something then convince themselves that is the correct and only way to do it.

Thursday, July 26, 2007

about ready for beta

Most everything is finished now and just needs some polish. There's one serious problem remaining -- I need to locate my verification routine in just the right place. This is one of the problems when you don't fully know what to do and you swipe the wizard code to do the dirty work for you. The wizards are written to act as a tight unit, so adding things can be a little tricky.

The add record button creates a blank record then stops. It starts moving again when the user hits the button, now labeled "Save," again. If it fails verification, I need it to stop again. However, right now it essentially does a revert - it dumps the record along with any data that has been already added, and goes back to the record displayed before you hit the add button. But it leaves the button labels alone, so it still says "Save," only we're on the wrong person now.

Two things I'm finding surprisingly hard to find are complete code examples and overviews of common procedures. You'd think there would be tons of these things out there. MSDN simply sucks: it's just a half-step up from manuals that name the menu items you'd click to run a command, but don't explain why or when you would use it.

When you get these individual bits and pieces, it's hard to know where the task falls within a multi-step process. For example, let's say you want to display a report in a maximized window. Apparently, you have to define the window in memory, activate it, show it, open your report. After the user prints, you have to deactivate it then release it from memory. However, help has no overview like this. There's an entry for defining windows, one for activating, one for showing, etc., but there's no one page that lists all the steps required for the process to be done properly and cleanly.

I did find code on the internet to create and release my print window, but there have been several such tasks. Fortunately I've managed to get most answers through this miracle that is the internet, where people give their time and share their knowledge to help others.

Thursday, July 19, 2007

coding 2

The program is starting to fall together pretty nicely. After meeting with the people who want it, I had to make some structural changes, which caused me to look at it with fresh eyes. After eliminating a few things, the problems I was having earlier melted away.

So the major part is behind me with only these left:
- some maintenance code to check for orphans and pack the tables
- one or two more reports (I'm sure this number will grow)
- iron out the process for reselecting the remote database. The records I'm keeping are stored by year, and corresponding to that is the live data in Access. When the user changes years, this file needs changing as well to match.

Here's to overtime.

Sunday, July 15, 2007

religious diatribe

Oy yoy, some born-agains are difficult to bear. I just had a conversation with an evangelical who, upon learning my religious background (Catholic), proceeded to tell me the ways in which it's wrong. (Good thing I didn't claim to be Wiccan or a practicing Jew.) Up till then I had been respectful of his views, telling him if that's what he believed, that was fine, and I was sure his God would do as he said.

I did not receive respect in kind. Religious intolerance is historically speaking a primary cause of strife of the worst sort.

My basic questions to someone of the Christian persuasion are:
- do you believe in God
- do you obey the commandments set down in the Pentateuch/Exodus
- do you follow the golden rule (treat your neighbor as you would yourself wish to be treated)

If a person does all the above (not thinks they do, but actually does), they're headed for Christian heaven. It doesn't matter if you're born-again, Catholic, Lutheran, or name your variety.

Dissing other forms of Christianity is an act of intolerance, complacency, and arrogance. It's merely wanting to be in some exclusive Heaven Club, above others: they are chosen and everyone else isn't, regardless of how good they are, because they are the wrong kind of Christian or not Christian at all. And they claim to feel sorry for those people, but with little sincerety: definitely a joyful schadenfreude.

All Christians believe in essentially the same god. Claiming that one specific sect has the sole rope to heaven is ridiculous. Creating rules beyond the basics up there is a human action, not divine. When humans think they know what God says and try to impose their thoughts on others, they are essentially trying to take the place of God. This contradicts the basic assumption that only God is divine.

We can't really know what God is thinking. We don't know if God puts on glasses and a fake beard, and goes by the name of Allah or Y-V- elsewhere.

Here's a good quote from Babylon 5, paraphrased: You know that classic contradiction about whether God can make a stone so heavy he can't lift it? He did: he made humans.

Sunday, July 08, 2007

coding

This is what happens when you have to write an application only once every three or four years: you forget everything. All the connections and significances of various terms get lost.

Most of it works good. It stores records of students being bad and what actions were taken to make up for it. You can do all the basic things, like add/edit/delete records and print reports. The slick part is that it connects via ODBC to the live student database, so when you pick a kid from the live list it will copy all the demographics in: name, phone number, school, etc. Saves on typing, and error potential. All the user needs to do is add the incident date, the offense, and the resolution.

All that works, except I'm having a hell of a time setting up the drop-down menu for the school number and tying that to the field next to it (school name). The data source for the menu is the main table (actually a view) but when you edit, the drop-down gets its choices from a different table (actually a cursor). As it stands right now, adding/editing a record it does fine, but when you scoot through the table, the school number doesn't match the corresponding school name.

Enough websearching and it should come sooner or later.