“You have an astonishing variety of knowledge.”

That was from one of my housemates. I’d just told him that I was preparing for an interview with an ESL school. He was confused because, as far as he knew, I was specializing in programming. (Which is funny, because I’m just beginning that madness!) I told him that nope, I also have a certification in teaching English as a Foreign Language/Second Language. He was impressed, and it got me thinking. There’s a Heinlein quote that ends with: “Specialization is for insects.”

Now, there are a ton of things that are going on in America right now – and several of them can be boiled down to a deep and severe concern that, put simply, when it comes to the future, our country is completely and utterly screwed. The “why” depends on who you ask – some would say it’s because of the Muslims. Others would say immigrants. Others would say that it’s because of people who say those kind of things. Personally, I think that our country’s got a bright future, with the caveat that we’ve got to acknowledge the importance of a broad education.

I know, I know. There’s a chorus of people who shout “WHY WOULD I EVER NEED [“algebra”, “Shakespeare”, “C++”] in [“teaching English”, “programming”, “burger flipping”]. (That should probably be a hash, but in order for that to make sense, you’d have to run a program and — fuhgeddaboutit.) And, you know, that’s where the problem lies. Agreed, we need a lot more focus on the maths and sciences in grade school. Speaking as someone who was semi-boned by moving to Tennessee from the much-better school districts in Ohio, if I’d experienced a better framework for learning, say, even long division, there might be a better chance that I wouldn’t experience mortal fear upon looking at a multi-step equation. However, for every hard-skills course we have, we also need a soft-skills class.

Think about it: How many engineers do you know that are  brilliant at coding, but cripplingly awkward?

Obviously, there’s a world of difference between etiquette and analyzing a literary piece. However, there was a study floating around – and I’d link it if I remembered where I first saw it – that showed the connection between empathy between people and reading high literature. That is, as mind-numbing as Joyce is, he puts you utterly and totally in another person’s shoes. While programming is obscenely utilitarian and useful, there’s not a lot of human interaction in there – learning Ruby may exercise your logic muscles, but it won’t make you think about whether calling your nemesis a “whackoff” would be a good idea.

And so, I think that idea of the renaissance man, that idea that “a human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly” – in Heinlein’s words – is central to being a human. The jack-of-all-trades may not make a six-figure salary as, say, a dermatologist specializing in teen acne treatment, but he will be able to wear many, many hats in the course of a day.

And, perhaps it’s just because I’m trying to justify my slow (by my self-destructive standards) progress learning all this programming shiz, but I think there’s a lot to be said for that. Specialization is indeed for insects – or robots. After all, we create the robots so we don’t have to spend our time screwing bolts into things, or glueing windshields into newly-constructed vehicles, or whatever else you want to talk about. We make the bots so we can be free to enjoy life – theoretically, of course. What more often happens is the heavy hand of the free market then lowers wages, cuts hours, and busts unions. But, I don’t think that’s the fault of the bots – but let’s not talk politics in this space.

That comes later!

Ruby and Language

Languages are a weird thing. You’re born with one, work very hard to become proficient in it – regardless of the dialect – and then utterly forget the hard work that you put into learning it. In high school and college, you’ll start learning a foreign language and, inevitably, complain that it’s too hard. Why? Because you’ve forgotten how hard it was to learn English.

Now, consider programming languages. Even one of the most organic – Ruby – takes a lot of hard work to get down. Even the basics. Let’s assume that you, like me, are trying to learn it as your first programming language. (This is ignoring the fact that I used to work with ActionScript in high school. That was nine years ago and I was never able to use it outside of the one programming class I took.) You’ll go through exercises, and you’ll work very hard at them. You’ll work on problems posited by the exercises and, eventually, after working out that yes- it can be that simple, you’ll work on another tutorial. Because that’s how you – like me – learn: Beat it into your head over and over until it sticks.

So, I’m on – what – tutorial number four now? It’s called Ruby in 100 Minutes. So, I’m going through classes and methods – again – and decide that the program they’re asking me to write is too simple. Why? Because it doesn’t take into account the fact that, in English, if you have the article “a” preceding a word beginning with vowel, it becomes “an.” So, easy peasy, work in a quick check in the class to fix the program so that the does just that and move on.

Nope. What I found was that, for whatever reason, I could not figure out what to do. I knew there was a method that did exactly what I needed, and I knew I could check the first letter of the string (by using [0] and appending it to the argument), but something wasn’t clicking.

It was driving me nuts. Surely I could at least do this. Didn’t matter if I was doing it in a circuitous way, but after minute thirty, I was doing separate if/elsif/else checks for each vowel.

And then I stumbled across the problem at StackOverflow: Ruby does not have a “starts_with?” command. It does, however, have “start_with?” This boggled my mind. Why would they do this? Where was the logic? What madness was this?!

Well, the creator of Ruby had been asked that before and gave some answer that made it seem that he thought having the command be “starts_with?” would imply the second-person, third-perspective, or some such nonsense. I thought about how crazy that was, because in what world does that make sense? (Yes, I know. Recursive argument.) Then I thought about two things: 1) Rails has “starts_with?” (I think), so the point is moot if you’re developing in Rails; 2) This isn’t English. This is Ruby. This is a different language altogether, albeit one that happens to share the same characters as English and, in some instances, similarities with English. It is, to use an analogy, like you’re writing in another Romance language. (Albeit one that doesn’t do that whole ‘artistic thought’ thing and instead opts for pure logic.)

Now, has that helped me learn the language? Kinda. I mean, I don’t suddenly know everything about Ruby, and I acknowledge that it’s going to take a lot more work until I’m proficient in it, but I think knowing that – providing myself with a frame of mind, in other words – is helpful.

Anyway, other than having minor freakouts about still being unemployed after a month of being in Portland, and not getting call backs from temp agencies (ohgodamithatunqualifiedforeverythingohgodohgodohgodohgod), that’s what I’ve been up to.

Oh! Also! The internet works at the house now! I can’t do crap with it on my Mac partition, because the Ralink drivers for my usb dongle are garbage, but still!