Part of the joy of being an intern comes from having hour limits for a given pay period. I recently managed to get myself a six day weekend due to the aforementioned limits, and this is day three.
So the battery came I went home for the weekend to go fix my Rio Karma. Everything went quite well. It was annoying that the battery happens to be soldered to the device itself, but whatever, it was only two connections. The new battery works and that makes me happy. However, when taking the device apart over a week ago to get at the battery board, I managed to snap off the lock-switch. I don’t know who designed it, but I’m surprised that the switch didn’t break during manufacturing. It’s the tiniest thing, and is held together by a miniscule span of plastic. At any rate, I didn’t manage to have the patience to glue it back together, so my Karma’s now forever in the unlocked position, not that I even used the switch in the first place. I’m just happy that it works again and won’t suffer a battery-crushing-the-mostly-irreplaceable-hard-drive death like it would have, had this gone unnoticed. I don’t want an iPod, and it’s going to stay that way for a long time.
Tonight as I was investigating support for my Rio Karma
in Linux, I pressed down on it lightly while it was accessing the drive and it made a horrible whirring noise.
Obviously, this was not a good sign, so I looked at the case more carefully and lightly tried it again.
Same thing. The case seemed to be bulging slightly at the bottom, and I knew that it had never made these
sounds before, so I did what any concerned, out-of-warranty product owner would. I disassembled it.
As it turns out (and as can be seen in the picture to the right) the battery was bulging. This is the
second most common issue to plague this device, the first being a broken hard drive. So, I’m kinda lucky,
as it seems that Hitachi isn’t making the IDE interface drives that this uses anymore. I bought a replacement
battery on eBay and well, I’ll see how things go once it comes.
Over the recent holiday break, I began writing a synthesizer. Mostly it was out of wanting to learn how, and also just because I thought it’d be a fun time. It finally has support for MIDI input and some rudimentary documentation. It’s actually two components, libwaffle, which is the actual modular synthesizer, and a frontend called Breakfast. Waffle came out of my needing something for the ScoreCode interpreter I wrote to power, and it’s the core of Breakfast. It’s a modular synthesizer that offers enough modules to do interesting things, although it could probably use more. It also doesn’t allow for feedback loops as the final module graph needs to be a DAG that feeds into a single output module. Waffle outputs to a single Jack output port, although that might change in the future.
Breakfast is an interactive environment for working with Waffle. It has textual commands for managing patches and the linking of parameters to actual events. It uses ALSA for MIDI, and is pretty robust. Patches are programmed in Lua and loaded at runtime. The essential idea is that Breakfast makes Waffle actually useful.
Right now, neither is available on the project wiki. They’re both in states that I’d rather not have in the wild, not to mention that I haven’t come up with licenses to use for either. As far as I know, there’s only one person who’s getting a copy of both, and he’s also part of the reason why I coded them. If you can’t live without having a copy of it, then e-mail me and I’ll send you GPL licensed versions of both.
Throughout my life, I’ve learned and used a great number of programming languages. That list as it stands now is something like BASIC, C, C++, C#, Java, Haskell, Lua, Oz/Mozart, Pascal, PHP, Prolog, Python, Scheme, Visual Basic, and probably a few that I’ve forgotten. Over time, I’ve come to the conclusion that (no, don’t kill me, it’s not what you think) BASIC is one of the greatest languages ever created. Why, you might ask? Well, for one, it’s an interpreted language. That means that error messages and program results are produced much faster than with compiled languages (no, really, it’s still true today). BASIC also has rather potent string processing (for being what it is) and a good library of base functionality. What this lends to the language is the ability to be used as a RAD platform for algorithms and problem solving, and that is exactly how the high school I went to managed to win the WNEC High School programming competition so many times. Other teams would use C, C++, or Java, and we’d be cranking away on the BASIC (maybe Pascal if we needed data structures), and we’d be done a good hour before everyone else. Why? Because it didn’t take 45 seconds for it to tell us we mistyped something.
Enough nostalgia though. Even though I’m somewhat older and somewhat wiser, I still use interpreted languages for prototyping. Although, my weapon of choice is now Lua (which if you know me will just make you groan… but it really is a great language). The fact that I can forget about the type of numbers if I’m prototyping something mathematical, the fact that I can make pretty much any data structure and not worry about pointer issues, and the fact that errors are returned rather quickly (although not until it encounters them) just makes it so much more worth it to use than the language that I’d eventually be writing the final program in (if that’s the case). I know that there are a lot of people that feel this way about their own favorite interpreted/scripting language, and this is exactly the way it should be. Everyone who has to do any sort of processing work with computers, or any sort of scripting or parsing, or any other ordinary, every-day computerized task should learn and use scripting languages. It’s worth it that much. Whether you want to use Lua, Perl, PHP, Python, or some other language is irrelevant. Just do yourself a favor and make life easier: let go of the shackles that compiled languages bind you in, and start enjoying programming again (or for the first time).