Archived news items from February 2006
Since this is old news, some links may be broken.
A friend from church has a kid involved in Destination ImagiNation (DI), and they asked if I'd help out as a judge for the competition, which is two weeks from today. So this morning I rolled out of bed much earlier than usual for our only training session. Things got a slow start because of fears about icy roads, but it looks like it'll be a lot of fun.
Then I went up to school and starting coding more on "speeding up grading".
At Leander ISD, we use GradeSpeed to keep our grades in. It's not bad for a web-based application, although the user interface leaves a little to be desired in some places. And it uses Microsoft's .NET framework, so it will only run in Internet Explorer.
The program does have one major flaw, however (in my opinion). The program won't import from anything. We're talking about what's essentially a spreadsheet customized for teachers but can't import from Microsoft Excel. Nor CSV files. Not even Notepad. You can copy-and-paste values into it, but only a single number at a time. That's right: you can't even paste in a column of numbers.
As you can imagine, this is pretty frustrating for me, since I've spent several years working on my own MeWare gradebook software that's highly optimized for the way I grade things. And since I've written it, I can export in any format at all. So if GradeSpeed could import from anything, then I could just export my own gradebook in that format and import all the grades without having to re-key.
So, a few months ago I started playing with AutoIt v3, which is "a freeware BASIC-like scripting language designed for automating the Windows GUI and general scripting. It uses a combination of simulated keystrokes, mouse movement and window/control manipulation in order to automate tasks in a way not possible or reliable with other languages."
Back in October spent a couple of days working with it and was able to get it automatically launching Internet Explorer, loading up GradeSpeed, and logging in for me, but that was it.
Today I spent about five hours, and I was able to programmatically change from one class period to another, create new assignments, and at the end, paste at least one column of grades read in from a file. There's still quite a bit of work needed, but I think I've got enough now that I can babysit it into entering all my gradebook data from this term by Wednesday afternoon.
So many things aren't "automated" yet, but at least I can paste in a column of values without having to re-key them. I hope to get to spend more time tomorrow evening working on it and I should be able to work on it Monday evening until I drop. Got my fingers crossed.
As most of you know, today was National Singleness Awareness Day. It has become a custom for me to bring "consolation" doughnuts to school for students not in any sort of dating relationship. Since I'd bought a Krispy Kreme fundraising card for $10 a while back, I was able to get a free dozen for every dozen I bought. Thus six dozen Krispy Kreme donuts only set me back $17 or so, which is a small price to pay to bring a glimmer of comfort into the lives of many of my lonely students.
I also got a surprise SA-Day gift from my pastor: he and some folks at church took up a collection to buy me a $250 year's subscription to eHarmony. So I spent it. I don't usually post about that sort of thing here, but it was noteworthy and is appreciated. If something significant develops, I may let you know.
Oh, and perhaps Java isn't the best language in which to write a Sudoku solver. I found several sample puzzles today that weren't solved by my naive technique, so I added a fairly simple rule to handle some different cases. It should have taken a dozen lines of code; two dozen at most. It took nearly 100. So either I've designed things incorrectly (and I almost certainly have) or Java isn't best for dealing with lots of interrelated sets of numbers and tuples. A competent LISP programmer could probably do it in eight lines of code. Showoff.
So my Computer Science III students are working on a Sudoku solver. Today we just did a Sudoku worksheet by hand to get them familiarized with the concept and started on a simple checker program: given an allegedly-solved puzzle, make sure that no rules were broken.
Since I'm caught up on grading and since Sudoku is fun I've actually been working a little ahead of the kids on this one; I'd written the checker a few days ago. Tonight, then, after finishing up MST3K's take on Manos: Hands of Fate, I went to work on the solver itself.
As I write this (and I'll be stopping for the evening) I've got a dumb solver that does, in fact, solve easy puzzles. In this case, the only solving scheme I've got is "once you've got a number (such as one of the givens), remove that number from consideration in every other cell in the same row, every other cell in the same column, and every other cell in the same block." In an easy puzzle, just doing this for the givens will pin down a few other numbers to just one possibility. I then repeat the process for those numbers and so on until nothing changes.
So far this techique has completely solved the two puzzles I've thrown at it, but both came from a website that'd labelled them 'easy'. Exactly.
Music went very well this morning. Rocking and rolling, even.
Once I got home from church I put on a crock pot of beans, which (along with their close friends 'rice') frequently end up being my dinner. Crock pots are awesome, because they circumvent the whole 'watched pot' conundrum. By factoring out the supervision side of things, boiling (and thus, cooking) is presumably enhanced.
With beans in process, I went to school to grade. Which, as per usual, involved me spending an hour or so coding more refinements to the process and half an hour grading. Now I've added draggability to my grade sheet so I can place things as necessary to minimize the total number of printed pages. I'd planned to code this myself, but a severe bout of incompetence-slash-laziness set in, so I just downloaded Kurt Grigg's dragdrop.js.
His lightweight code doesn't support the idea of a handle, which is a HTML child element that drags the parent around, so at some point in the future I may switch to the (much) heavier-weight script.aculo.us, which features much smarter dragging functionality but also 150k of things I'm not really interested in. Or, I may just hack the handle behavior into the code I'm currently using.
Once I finished coding and grading I went back home and stir-fried some vegetables and put together a couple of rice/stir-fry lunch packages for the week. I'd done this before with a pre-packaged 'stir-fry vegetables and sauce' thingy that was tasty but fairly expensive. So this time I'd bought just a cheap bag of frozen vegetables and a cheap packet of stir-fry seasoning. I haven't tasted the finished product yet, but everything smelled fairly promising.
Oh, and you may have noticed (if you have a wide browser window) that I restricted the maximum width of the text on these lines. I suspect it'll make things easier to read if you don't have to follow across so far; there's probably a good usability reason newspapers and magazines break their pages up into narrower columns. let me know if you disagree.
I know I'd claimed to have a longish update in the works about speeding up grading, and I still do. The update is much more clear with screenshots and such, so I'm currently held up until I can get a student to take some photos of me grading. Apologies.
I'm not sure I even remember what has gone on the last three weeks. This past week was Leander ISD's annual Continuous Improvement Conference, and so I got caught up on grading and the kids didn't have to show up until Thursday.
And let me tell you, folks, I could totally handle year-round school if I only had a two-day workweek. Totally.
More tweaks to the grading scripts at school. I'm almost to the point where I've got nothing left to do but actually grade things.
Eric Sink has an incredibly appropriate essay called Yours, Mine and Ours where he talks about the difference between software you write for yourself versus software you write for others. And all my gradebook stuff is "MeWare" if I've ever seen it.