C Is for ANSI, That’s Good Enough for Me

In a bid to expiate myself, I’m currently reading “The C Programming Language, Second Edition.” Written by Brian Kernighan and Dennis Richie, the inventors of the language, this book is the bible when it comes to learning the language. Most modern languages owe their existence to this one. All modern operating systems are primarily written in C. Most client applications are written with C’s direct descendants. Since I work at a high technology company, it would behoove me to bother trying to learn it again. Most of the high-level languages I’ve used in the past 2 decades cannot match the speed, specificity, and hardware-level capability of C. But these aren’t reasons enough for me to learn it.

When I say “expiate”, I mean to make amends for failing a semester of C in college. In a class of 3 students, it was difficult to stand alongside my classmates and lean on them for support. When they started excelling, I fell behind and somewhere around a month after learning about pointers and indirect references, I just gave up. I swore I’d never bother learning the language again. But that’s all changed now. I could do well if I could wrap my head around it and succeed where I failed before.

What bothers me is I still have a lack of support from my fellow programmers. Even the guys who I thought would support my decision to take up the language again are saying things like, “Man, why are you messing around with C?” or “You must really want to punish yourself.” I say they’re missing the point. I’ve had my time with the high-level languages. I know that I can split a sentence into an array of words in three lines in Perl; I know that doing the same in C would require a bit of memory allocation, a handful of variable declarations, and a set of functions to perform each bit of the search and copy operation. But you know what? I don’t care. I’m getting thrilled with seeing how it all actually happens under the covers of all the other languages.

I want to succeed in this. I want to use C to make stuff that runs fast. I want the chance to flip bits in hardware without needing special libraries. I want to have a shallow learning curve if I decide to go into microcontroller programming. Some people put puzzles together; I have this.

Greasing Wheels

So I’ve finally started pushing the Record button.

The hardest part of making music is learning your instruments and your tools. After picking up all this equipment, it’s taken me some time to get familiar with the basics of my synth, sampler, sound module, drum machine, and DAW software. Five months ago, when I knew a lot less than I do now, every time I pressed Record on the DAW software, it was screwup after screwup after screwup. Frustration rose and overpowered joy, and so I let the music project lie fallow for months.

Until March, when I got the synth. It became a joy again. I got to peck and poke, pushing parameters around, finding sounds, figuring out what that damn thing can do. It became fun and novel again. I had to know more. So I picked up the manual and read it, and started reading the manuals to the rest of my gear. Now I’m getting familiar with it, and that, my friends, is a good, good thing.

I sat at my workstation last night and hammered out a nasty bassline. I recorded the midi of it, learned how to clean it up, loop it, record an audio loop of it. Laid down a track with a GM patch called “Nylon Guitar” (mildly reminiscent of the real thing). Worked up a drum track. (Yeah, I know…Creativity, WOW!) It’s mostly a throw-away track; the vibe is totally not Glass Door material, but I’ll keep punching at it. Each hour spent with it is a new learning experience.

There’s plenty more work to do.

Diarrhea of the Mouth

A character flaw has recently come to my attention. Apparently, I have a tendency to tell stories from my life as an automatic response to memories triggered by the current conversation. You talk about being an english major, and I wax on about the three times I took the same literature class. You bring up multisided dice and I’ll unravel an other-people-story about my old gamer friends carrying suede drawstring baggies everywhere they went. If you say “hey, what’s up?”, I’ll rant about how my job stresses me out because I’m doing this hot project and my manager needs the numbers like yesterday and I really really need some coffee would you please serve me a small light roast I mean dark roast to go wait for here.

What alerted me to this was a conversation with an old friend who was chatting with me about a thing she did and how tough it was. She was venting about the circumstance and seeking some consolation. What resulted was me blabbing about a similar story from my adolescence. I fell into the pattern of the coffeeshop conversation, where you can sit and chat for hours and nothing is really said; it’s more like synchronized monologues. But other people know better than that. She called me out. Said I should write down my stories somewhere. Sell them, make money. Our conversation ended shortly thereafter once I realized I’d insensitively hit her tilt switch, and we haven’t talked much since.

If you notice me doing this kind of thing, call me out on it. Let me know in no uncertain terms that my behavior is annoying. Sure, it’ll hurt like hell emotionally to learn this lesson at such a late stage in my life, but I’ll learn. Eventually, I’ll stop talking and return to being the sounding board everybody wants in their life.