Tags: programming


It Was An Afternoon, Now It's An Evening

Made it to pharmacy. Made it to nail salon after very annoying wait for wrong bus due to misinformation. Stopped at Appalachian Bluegrass for a nut blank because the slot for the bottom string on the mandolin I was practicing on while waiting for buses crumbled. (Blank is way bigger than I need; gonna have to cut it lengthwise. Anybody local have a band saw and not mind the smell of bone dust too badly?) Stopped at grocery on the way back. Am very tired.

Especially annoying numbers of rude, immature people out and about today. Funny thing, when I hear people laughing and turn around and see a cameraphone pointed at me (with such an exaggerated gesture that it seems my seeing them is half the point), and I bring an SLR to my eye pointed back at them, people freak out. Dayum, either it's acceptable behaviour or it's not, idjits; make up your minds! But suddenly I go from curiosity to something-to-flee once the lens is aimed at them.

Have lined up rides for tomorrow. Tried to avoid pushing myself so hard today that I'll be too beat to cope tomorrow, but with the amount of walking required because of where the bus lines do and don't go, and just being Out And Active fort so long, I'm pretty darned beat. Hope I didn't push toooo hard. Gotta manage to be functional Sunday as well!

Want ABC 2.0 <-> MusicXML converter. Found an ABC 1.6-> MusicXML tool, but a) it dropped three measures when I tested it, b) it barfs on V: tags, and c) the source seems to have been lost and the author is unreachable. Half a mind to start banging one out in C (and wondering whether I could to the MusicXML->ABC direction as a 'sed' script), but already have Too Many Projects in the queue so should try a little longer to find existing tool maintained by Somebody Not Me. Also want shareware or o-s OMR (aka 'music OCR'); closest I've found is 30-day free evaluation of $190 program. Will try that, but will try to time the start of the eval period to maximize usefulness. (Probably worth $190, if I had the spare dough for that sort of thing.

Have found annoying amounds of ABC FUD on chat boards while Googling for tools, as well as an awful lot of "since I don't need that, I can't imagine it's of use to anyone else on the planet either; they should just all use the same proprietary notation tool that I do" attitudes. Feh.

Doh! Should remember to ask about XML conversion on ABC mailing list!

Tentative lead on Volvo wagon. More news ifwhen more news exists.

Difference between now and the long-tiny-nested-paren paragraph before, is today I realize I'm this tired.

Perrine is much more tolerant than I thought she'd be, of the "cat-on-keyboard bad, so if you choose to occupy keyboard zone, it's keyboard-on-cat" rule I've instituted. Though her acceptance or disgusted departure depends somewhat on my typing speed.

I do wish she'd tell me where she hid the mouse I can smell rotting. *sigh*


Trial And Error (First Try)

The difference between learning a language by reading a tutorial, and impatiently diving into it by just looking up a couple of command descriptions in a reference and glancing at some machine-generated code:

[my first experiment with the 'rotate' command in Postscript]

(Y'all can probably guess what I was trying for, right?)

Each time I go into a machine-generated PostScript file to tweak something (most recently to make six measures in the middle of a piece of music grey instead of black), the "I should really get off my ass and learn this language like I meant to do a decade ago instead of just poking at it" button gets pressed a little harder. If I weren't in the middle have so many other projects all distracting me from each other, maybe I'd get there.

Let's see how far I get this time. Though a couple of raster graphic formats I noticed are tugging at my attention today as well...

I hope to get around to replying to LJ comments later today, but I might get my head stuck in one of these projects, or I might get to see [info] anniemal, so no promises. By the way, the fan is running. I didn't have axle grease, but I figured petrolatum[*] was closer to that than anything else in the house (and the residue full of hair and dust that I wiped off when I disassembled it supported the axle grease idea). I'm giving it a nice little burn-in to see whether it burns up.

[*] I'll save you the trouble of looking it up: petroleum jelly, Vaseline. Cool word though, innit?



"There are only two kinds of programming languages: those people always bitch about and those nobody uses." -- Bjarne Stroustrup

[And a happy Beltane to my friends celebrating it!]


Warning: Invalid argument supplied for foreach()

Okay, I cannot figure out how to make foreach() iterate over an array of objects, assigning keys to a loop variable, in PHP4. Either what I'm trying to do constitutes abuse of the foreach() control structure, or I need more sleep. (I'm hoping it's the second of those two possibilities and will make more sense by this afternoon.)



Not 'Visually' Oriented?

I'm trying to use Visual C++ for the first time. I want to test something under Windows. Usually if I want to write anything in C I just do it all under Linux/Unix. (Hmm. I wonder whether any of the distros in the house include a Windows cross-compiler...)

So far, I've decided that this user interface is designed for folks who have really huge monitors set to many many dpi.

(And so far I still don't care for working in an IDE. I see all the potential advantages, starting with the "click on a compiler error message and have the editor cursor jump to the relevant line" thing, but I keep getting irritated at having to navigate an extra layer of UI, not having 'vi' as my editor, not having complete control of how windows are arranged on the screen (or on different screens -- editing on one computer and compiling on a different one is something I've done for decades), and not having my usual shortcuts handy. I don't know whether I just haven't found the right IDE yet, I'm more sensitive to the flaws in current IDEs, or I'm just too set in my ways and need to get over it. In the 1980s I used Turbo Pascal and Turbo C, and very quickly found out how to invoke the compilers from the command line so I could skip the IDE and work more quickly. The only thing I used their default UI for was the debugger. Every time I read about IDE features, I think an IDE really ought to make things easier for me, but so far they just feel like they're getting in my way.)


... though actually, they don't look all the same.

I'm looking through old code -- I wrote some of it more than ten years ago -- and as a result I have an earworm. A song I'm sure several of you know.

Little boxes
In the listing
Little boxes
Made of asterisks...

But I'm feeling just a wee bit smug about being able to look at code that I haven't even glanced at in about that long, and know exactly why it's doing what it's doing, and what I was thinking when I wrote it that way. I was starting to feel a little silly about the degree to which I've been documenting the things I've been working on this month, but after looking at decade-old programs and noticing how much sense they make with the help of those little boxes made of asterisks, I don't feel silly about spending more time commenting than coding after all.

(In contrast, there are a couple programs I didn't comment to my usual standards, and I'm no longer sure what they even try to do, much less how. Ew.)

Now if I could be so organized about anything in my life other than source code ...



Are any of my friends using Guido Gonzato's 'abcpp' (ABC preprocessor) program? If so, would any of you find it handy to be able to define an actual substitution macro on the command line? (That is, "-name=value" which would be equivalent to "#define name value" in the input file, rather than just "-name" by itself which means "this name is defined but has no substitution value".)

If so, I've got a version that does that. Yay open source.


Got my head stuck ...

Got my head quite thoroughly stuck in a computer problem/project and lost track of a) time, b) my own fatigue level, c) the temperature, d) my own hunger. Yah, the short translation is that I was "in hack mode", but the way my body is, that's gonna cost me later. And there was some place else I'd really intended to be today. Oops.

But I've got a spiffy new system for handling sheet music for pick-up bands in the future, I learned more about 'make' than I'd gotten around to before, and it's commented.

Uh huh, years and years of C programming, and I never bothered with more than the bare basics of 'make' (there was more that I needed to learn to understand what was going wrong with other folks' makefiles when I tried to port things, than I ever used in a makefile of my own), and it's managing sheet music that finally got me to go read the darned tutorial and find out what all else it could do for me. ohiblather recently asked who among her readers considers themselves "artsy/tech hybrids", and to which side of that we think we lean. ( Followup -- a whole lot of folks, of course.)) I've no clue which I'm more of, but today was about geek-in-service-to-art. Sort of. There was also that old gut-level pleasure at Building Tools, and Making Things Work, and Bending Computers To My Will. Now to resist creature feep and tear my head out of the code. (It's not quite drag-and-drop yet ... it can be even more convenient ... I could -- argh! No, no, no. Later.)

Of course, this system is a bit of art that I won't have much chance to show off. It's a little task-specialized, and I'll probably be the only one who ever uses it. But in the back of my brain, I'm already looking for ways to generalize this ...

(One of the things I said in my reply to Debbie was that I'd never really thought about how making art resembled programming, but I'd often noticed how programming felt like Making Art. Well, when you're doing it right, it's not so much "feels like" as "is". Hmm. That's for programmers in general, not just hackers, right? Or is it part of the defining character of hackerdom? My guess is that it's true for other programmers as well, but I don't actually know.)


A Geekly Miscellany

Headache, bad; also lack-of-sleep issues; so I'm not at Balticon today. I'll probably be there tomorrow evening, but don't know yet what time I'll be showing up (playing a gig elsewhere in the afternoon and don't know how late the event will go). Today my plan was to conserve my strength for tomorrow, but a few urgent things had to be done first, and I got sucked into one or two less-urgent tasks as well. So I probably won't get the wheel anniemal found for me modified to attach to the endpin of the double bass by tomorrow ... though there's a small chance of that still.

I've been meaning to install a software development kit for PalmOS -- y'know: cross-compiler, emulator, etc. -- but hadn't gotten around to it. Now my getting around to it has been pushed back a bit farther ... because I stumbled across native development tools that I'll be playing with for a while. I haven't installed OnboardC yet because some glitchy misconfiguration somewhere makes inconvenient things happen every time I hotsync (so I'll do it when I feel like coping with undoing the side effects -- if a local Palm expert wants to help me fix the underlying problem sometime, that'd be great), but before I found that, I'd installed a copy of SmallBASIC. BASIC probably isn't the right tool to try to write an improved ABC viewer in, but I've been tinkering in that direction anyhow. So far I've been playing with the graphics commands and putting together routines for drawing the staves and the symbols. I should be able to do that much more tidily when I get around to switching to C, but hey, I'm still having fun so far. (That'll stop about the time I hit the maximum program size and discove I only have two thirds of a parser coded, or something, I'm sure.)

Having a native language means I don't have to keep uploading the compiled code to the PDA, and it means that I can tinker at the kitchen table or on the toilet or away from home. It means dealing with a single environment.

A native development environment on a PDA also means that much more temptation to skip any semblance of proper, thought-out design and just start coding and see where I wind up. And it means not having a proper editor, having to stroke all the code in using Graffiti instead of typing it, risking God-knows-what side effects of a stray pointer, looking at my code a tiny screenful at time, and discharging the battery in a hurry, so I've still got plenty of reason to install a cross-compiler and develop code under Linux or Windows when I finally decide to take the trouble to hunt down and install all those pieces.

One thing about starting this in BASIC with an expectation of changing to C later is that I can use what I'm doing now as a rough draft and not be upset about ripping up huge chunks of it when I realize there's a better approach. I won't be tempted to salvage anything that should really be thrown away, since I'd still have to re-code it.

Now if I had a native Java development environment on the Clie, I'd have a big incentive to finally get around to teaching myself Java like I'd planned for so long. I'd grab a PalmOS native C++ compiler if I stumbled across one as well. But somehow I cannot bring myself to daydream about having ForTran or COBOL on it ... (OTOH, I wonder how useful Lisp would be on a PDA.)

The other thing that having a BASIC interpreter on the Clie means is that it's convenient to type in that AI program I stole from madbodger *mumble* years ago. :-) That was the first thing I did with it, of course.

I've documented how-many-measures-of-what each track on Home, the second Homespun Ceilidh Band CD, is. This is for dancers who want to know, for example, that the "Saut du Lapin" set is 208 measures long. I'm not sure yet where this info will eventually wind up, but it'll be made available (on our web site, at least). I need to do this for Spinning Reels, our first album, as well.

And now I'm going to read some email and then either close my eyes for a spell or tinker with note-beaming algorithms in BASIC, depending on how much effect this dose of ibuprofen has on my headache.

anniemal talks about guarding my sleep and trying to take care of me when we're together (I can be frustrating to take care of, not because I don't want help, but because I so very much don't want to need taking-care-of ... and because I feel guilty about not being more fun); my feeling better after she'd been here a day or so is quite unlikely to have been mere coincidence. Alas, it only took a couple of days of pushing myself to deal with Things With Looming Deadlines to mess me up again. A couple more things to deal with (after some rest) and tomorrow's gig(s), and then I can try to get back on track in terms of sleep, energy, and pain-management. I did at least have the sense yesterday to not try to squeeze in one more thing I'd really wanted (but not absolutely needed) to get done.

And speaking of looming deadlines, the Pennsic pre-registration deadline is mere days away. If you're going and haven't registered yet, go make sure your group's land allotment includes you.