Best Article Ever

I googled « things to do with ruby » and the top hit brought me a nice article listing « 15 things for a ruby beginner ». It seemed pretty useful and there was definitely a bunch of stuff that I hadn’t heard of but thought I should look into. As I kept reading through each item though, I became to feel overwhelmed.
And then I got to item #15:
« If you are overwhelmed by this document or any links referenced from here, just ignore it. Remember the 10,000 hours rule. Happily go about writing code the way you know best! And write a bit more code. »

Just the encouragement I needed! Yep, this article was the best.

I’m no entrepreneur.

The other day, I saw that my friend PLum had innovated a wallet which not only holds but can even charge a phone! Is a frivolous product? Absolutely! Does it solve anything but first world problems? Absolutely! But what of the fact that he conceived of such a product, saw it through to completion and has successfully managed to mass market it? I can’t deny it: I’m impressed — and, dare I say, perhaps even a little envious.

But let’s face it. I have no entrepreneurial drive — none, whatsoever. Might I have thought of a similar product as my friend? Sure, why not? Do I have the skills to make such a project happen? Well, if he could figure out how to do so, why not I as well? Would I ever do what he did being the driving force behind bringing a brand new project to the world? Probably not. 

Why not? Well, take his product for example. Suppose I had thought of making his high-tech wallet first. That’s not a totally unrealistic supposition: I know how much people use their phones; I know how a battery won’t stand a full day of heavy use; and I know that people keep there phones in wallet. Okay, but then would I even begin research to figure out how I could create and kickstart such a project? No, probably not.

Why not? I would think it’s too frivolous. That the world wouldn’t really benefit from it’s creation, nor I from going through the motions of creating it. (Okay, I probably would learn something from trying to create it. But without passion for the final product —  I would rather spend my time learning in other ways.)

This lack of drive is kind of unfortunate. It’s a lack of drive not just for physical products, but also digital ones too I think. Surely, by now I could have my own cool blog or youtube channel. But I don’t.

So, then since I won’t be an entrepreneur, I can’t flourish on my own like PLum. So what can I do? What position can I put myself in such that I will flourish? Well, I’ve noticed that I take well to other people’s causes. If I am assigned a task, then I can take it on as my own and do my best with it as PLum with his own creations. To that extent, I might do well to join the army or become a monk. In joining the army or becoming a monk, I would have a lifelong career where I’m always told what to do. There would always be room for advancement if I did my work well. So I could never reasonably think that I was stuck in a rut. And it seems they’ll accept just about anyone into their ranks as long as you’re willing to start at the bottom (which I think would only be fair). So I wouldn’t have to fret to much about the application process (unlike every other job out there, except for those which require no skill, no training, and have no room for advancement).

Perhaps then I should devote my life to one of those career paths (monk or army man). But did you notice? My explanation of why I have entrepreneurial drive was far from air tight. True, I wouldn’t have made Wallet One, and I wouldn’t run a channel like EatYourKimchi. But there are some independent projects which I might come up with and carry through by myself: I might develop a new recipe for myself or for use in a restaurant, I might learn to code, I might learn a new language. I’m no entrepreneur in the traditional, commercial sense. But there are some original projects which I’m driven to work on. 

I think for now then the choice of being a monk or an army man I’ll relegate to the position of back-up plan. In the mean time, I’ll be doing whatever I find interesting, even if it doesn’t seem to have any immediate commercial value. What interests me less (those more traditional entrepreneurial projects) I’ll leave to other people.

 

Addendum: (As a side note, I think it’s interesting to note how at one time PLum seemed to look up to me. Now I admire him.)

Perhaps every strength is a weakness.

I’m very committed to what I do. If I am to be a student, I commit myself fully to my courses. I make sure that I don’t take too many courses so that I can give my all to the one’s that I am taking. I also refrain from involving myself in extracurricular activities (read: part time jobs, volunteer work, school clubs, etc). The end result of all of this is that for the time I am a student, I am an excellent student. But, at the same time, I miss out on other experiences which might make me a more rounded person or allow me to find a job. The key, I suppose would be to learn some balance.

After a while, everything becomes routine.

Eventually, everything becomes routine. That need not be a bad thing. In fact, for work, that’s a good thing. It brings about high performance and efficiency.

My position as tenor of the quartet at Holy Rosary might as well have been my first singing gig ever. When I first started out, I worried constantly that when Sunday came I just wouldn’t be able to sing the notes that I needed to sing. I would worry that that I hadn’t practiced my music enough and that I would make a mistake (even if I had practiced every day). And all that worrying kept me from sleeping on Saturday nights, as I would think my way through the music line by line, again and again.

The learning curve was steep. But within it a couple months it all became routine. I was still learning a lot every time I went into the church for a practice or a rehearsal, but the experience of having performed (as in, done my job) gave me confidence. With confidence, my worries subsided, and without my worries, I could sleep better, practice less, and, ultimately, perform better (in both senses of the word).

I was a bad singer without that routine. With it, I was quite competent (though still not a real tenor — meh).

(As a side note, that singing gig was great but kind of rough. I’m really not a tenor. It occurred to me during that year that perhaps I should step down to allow someone more competent to take on the position. But that wouldn’t be a good idea unless someone could be found, and in a hurry, which did not seem overly likely. And so, I stuck to my commitment singing until the end of the year. After that — well, a summer was long enough for my conductor to find a replacement, and I didn’t have to worry about having to come back.)

I think I’m making good progress

Though on the whole satisfied, the Ruby tutorial I worked through left me a little worried as I thought it might have left out some key theoretical concepts in computer science. What? I don’t know. I’m only beginning to learn computer science now. This thought mainly stems from noticing that the tutorial did not introduce induction, which I had heard elsewhere is a key concept in computer science. 
On the other hand, I’m not sure this is a rational worry, in the sense that it just doesn’t seem productive to worry that you haven’t been taught something important. At least for now, my adventures in the land of coding will be messy, but if something goes wrong, no one will get hurt. So, I guess I might as well do as Ms Frizzle suggests: « Take chances, make mistakes, and get messy! »

There’s always more than one way to skin a cat.

Étiquettes

I’m learning about procs, blocks, and lambdas in Ruby and I come across this sentence:

Remember: there’s always more than one way to do something in Ruby.

So, I wonder to myself, what’s the point of having redundancy into an artificial language? It would be ridiculous, I think, to ask the same question of a natural language, as in a natural language there is no reason why. But an artificial is completely under the control of a few. So why the redundancy? I think it’s because it makes the language more user-friendly. It’s like in propositional logic where having a disjunction or a conditional is redundant when you already have a negation and a conjunction. Sure, we could just write ‘the negation of the conjunction of a negated P and a negated Q’. But the same logical phrase is so much more transparent when we just write ‘P or Q’. This is the reason why redundancy in a language is good, albeit not strictly necessary.
It also occurs to me now that perhaps artificial languages are not necessarily within the complete control of a few programmers working together. If those working on the same language are sufficiently numerous or sufficiently many, it seems reasonable to believe that more than one person or group of people would come up with different ways of doing the exact same thing or something comparable, and then that both ways get adopted, as I imagine happens with natural languages.

The sentence which inspired this entry also seemed odd to me in this way. Why would they need to impress upon me that there are always multiple ways of doing the same thing in Ruby? or Why is it important to remember this? I imagine it’s important to know and remember this so that I don’t end up looking for more differences between different ways than there actually are. This will allows for greater understand of the language, and in looking at other people’s code hopefully being able to see what they’re doing even if it’s not written the same way I would have written it.

Juggler

An exciting idea just occurred to me. I suspect it would be possible to make a program in DrRacket which, when run, would produce a gif of juggler juggling whatever pattern the user wished. Of course, such technology already exists, so there’s no need per se for me to make such a program to visualize whatever pattern I might think of, but I think it would be an interesting excercise.
As I currently envision it, the goal of the programming process would be to define a function which I would call juggle which will take in a single argument, a list (of numbers). Juggle would apply + to them before asking whether the remainder of the sum divided by the number of elements in the list is equal to zero. If it is not, juggle will simply return false. If, on the other hand, the remainder is zero, then juggle will produce my desired gif.
A problem: I suspect I’ve been introduced to enough in this course such that if I mastered all of it, I could (with effort) accomplish this project, but I’m not entirely certain that that is the case. At any rate, I certainly haven’t mastered everything—not well enough anyway. One thing I’m not sure I really know how to use is big-bang. I suspect that function would be a necessary part of juggle and though of course I have some idea of what it does, I don’t think I’m currently in the position to be writing my own code with big-bang.
And of course we might point out numerous other difficulties I might have, for instance, that I don’t know how to get objects to move in any way other than to rotate. Still, it’s an interesting thought, I think, even if I never pursue it any further.

Graduation

I’ve been wavering back and forth between whether I want to graduate in the spring next year or not. But now I think the choice is clear. It’s been an important few years, being at UofT. But now it is time for this to end, and, more importantly, for a new life to begin.
In the words of so many protagonists from so many predictable action movies–« Let’s finish this! »