Archive for the ‘Blog’ Category

The 500 Programming Language Challenge

Monday, July 27th, 2009

Are you a programmer? If so, then I have a challenge for you. I want you to become a programming linguist.

While making (somewhat slow so far) progress on my goal to program in 500 programming languages, it occurred to me that this could be a much more interesting project if I got more people involved.

I’m still aiming for my goal of writing about and in 500 different programming languages, but here’s my challenge to other programmers:

Write 500 different programs, in 500 different programming languages.

That’s it, that’s the whole challenge, well, with a couple of rules, I suppose:

  1. The 500 programs must be written after reading this post. No fair counting them if you’ve already (somehow) written 500 programs in 500 different languages, so they have to be new.

  2. The programs need to be semi-non-trivial. Something a little more advanced than “Hello, world.” To use one of my previous programs as an example, an implementation of the game of life is a semi-non-trivial program. Ideally the example will demonstrate some of the strengths of the language, as well.

  3. They languages used need to be different languages. It doesn’t count if you write in 500 different dialects of Basic, for example.

  4. Share your results with the world. Either post them on your own blog or put them on github, or whatever, just get them out there so other programmers can see and learn from them.

  5. Deadline: there isn’t one. Since this is a fairly long-term project, and I know varying people have varying amounts of free time for such a thing, I’m not putting any sort of cap on this. I’m shooting for 3 years or less to completion, but it could just as easily be a ten-year goal, or a one-year goal for someone particularly insane/enthusiastic.

  6. Winner: there also isn’t one. The idea is to encourage as many people as possible to do this. However, there is sure to be some recognition for the first one to accomplish the goal. I mean, seriously, how many people have written in 500 different programming languages?

So, it’s ok if you write some of them in languages you’ve written in before, but you need to write a new program, and it needs to at the very least do something more interesting than “Hello, world” or “99 Bottles of beer”

I’d love to see people take this challenge to an interesting extreme, such as writing a programming that does the same thing in 500 different languages, or writing only in esoteric programming languages.

I’ll put up a gallery and perhaps do interviews with/profiles of any developers who participate in the challenge.

Become a Programming Linguist

In my mind, there are 3 different kinds of programmers: the single-language programmer, the typical programmer, and the polyglot programmer.

The single-language programmer

This programmer is either very picky, very new to programming, or not someone who programs for a living. The latter two are acceptable, the former one really isn’t.

I would neither like to work with someone who refuses to program in anything but Haskell nor someone who refuses to program in anything but Visual Basic (though out of the two I’d pick the Haskell programmer).

If you’re new to programming, or don’t plan on doing it much, it’s acceptable to only know one language, but if you even only plan on writing Ruby On Rails or PHP web-apps for the rest of your life, you should probably at least know JavaScript and SQL as well.

The typical programmer

This programmer has learned a few programming languages, perhaps the Ruby/PHP, JS, and SQL mentioned above. This programmer knows everything they need to do their current job, and hopefully enough to do it **well*.

The typical programmer isn’t too afraid to pick up a new language when they feel a need to do so. Generally this need is brought up by work demands or growing tired of the language they use primarily.

Still, this programmer tends to stay away from “weird” programming languages, be they functional, stack-based, or simply something with an odd syntax compared to what they are used to. Such languages seem like they would be too much work to learn, without any practical benefit for this programmer who already has a good list of languages that do what they need.

With this self-inflicted limitation, the typical programming is truly missing out on some profound, powerful knowledge that they could gain if they even just took a little time to understand these foreign paradigms, let alone actually program in them.

The polyglot programmer

This programmer loves programming, and more importantly, loves programming languages.

The polyglot programmer doesn’t let as trivial a thing as “not needing to” prevent them from learning a new programming language. They seek out new paradigms and techniques and revel in their ability to apply what they learn from one language to a language they already know, thus making them a better programmer.

This programmer understands that there is a reason for every programming language design decision (even if that reason is “we didn’t think about it too much”), and can’t wait to try out a new language feature they’ve as-yet not encountered.

A polyglot programmer can apply for jobs that a typical programmer can only scoff at for requiring “one of those weird programming languages” that they could never be bothered to learn, and they can more quickly learn a new language that their current job might require because they have a better understanding of programming languages in general.

A programming linguist is basically a very-well-versed polyglot programmer, one who can pick up a new language in a day if there is any good documentation for it

The goal

The goal here isn’t to learn and become an expert at all of the 500 different programming languages. The goal is to be exposed to 500 different programming languages, to glean a bit of knowledge, to open one’s mind to new ways of looking at and solving problems, and to ultimately become a better programmer.

It doesn’t matter if after this, you never touch any of the 500 languages ever again, just the act of coming to understand the language enough to write a program in it will have altered your mind enough to make a lasting impact, especially for languages which are different from the “norm” of what you are used to.

Will you accept this challenge?

If so, let me know in the comments or an email.

If not, let me know why not. I’d love to hear from you either way.

Photo-as-you-are Meme

Friday, September 19th, 2008

This guy told me to do this. So I did. I don’t think resizing counts as editing. I don’t think anyone would appreciate downloading a 3264 × 2448 pixel image.

  1. Take a picture of yourself right now.
  2. Don’t change your clothes, don’t fix your hair…just take a picture.
  3. Post that picture with NO editing.
  4. Post these instructions with your picture.

Time Tracking with GTimeLog

Sunday, July 27th, 2008

So I’ve recently started doing some on-the-side contracting work for a relative, so I need to keep track of the time I spend on various tasks.

After some looking around, I decided to give GTimeLog a try, because it seemed to be exactly what I needed without anything extra. I especially like how it has a nice, simple, text-based file format, so I can write my own scripts to fiddle with it if I feel so inclined.

It also has support for launching your favorite mail program to send of daily, weekly, or monthly reports, or export reports as CSV to a spreadsheet program, both of which could come in handy depending on the situation.

I would surely recommend any programmer I know to give it a try for any contract work they might be doing. Well, I suppose anyone I know who’s doing computer-based contract work, really.

The interface looks like the following (click for a larger image):

(more…)

Wordpress 2.5.1 Borked Maintenance Mode

Monday, May 19th, 2008

I was going to write a nice blog post during lunch today, but I ran into some issues which I had to spend the time fixing instead.

Before I did the upgrade, I enabled Maintenance Mode.

Then I did the upgrade.

Then I couldn’t do anything.

None of the pages which I tried to go to, including upgrade.php and wp-admin, would load. All of them gave me Maintenance Mode messages. Now that I look at the plugin page, it seems it was only compatible up to version 2.3 of WordPress…

Whoops.

So I had to figure out how disable a Wordpress plugin manually. A bit of mysql command line and php deserialize and serialize later, I was back up, with my lunch hour all but completely consumed.

So here’s my post for the day, much later and probably less interesting.

New Day Resolution

Wednesday, December 19th, 2007

I’ve decided that the New Year’s Resolution is just another way to procrastinate, which is why I’ve invented the New Day Resolution.

Well, I just did a Google search and it seems I’m not the first person to coin the term. I must be onto something though!

What’s a New Day Resolution? Is there something you want to improve about yourself? Well, if it’s too late to do anything about today, wake up tomorrow morning and look forward with determination to make that improvement. Don’t worry about yesterday or the day before that, because each day is a new day.

It’s something like that. For me, today, it’s as simple as making this blog post. Hopefully for someone else these same words that I’m writing now are inspiration enough to do something as simple and personally meaningful as well.

Why wait until the end of the year to make plans to improve yourself? It’s a good excuse to put something off until the end of the year, that’s why! “Oh, I’ll stop smoking at the end of the year” or “I’ll lose weight starting January 1st”

No.

Do it now. Not everything, of course, that would be too stressful, but don’t put things off so long. Make a list, start checking things off, keep track of your progress. Be sure to keep any promises you make to yourself!

As you get better at keeping all these little promises to yourself, you’ll be able to handle more of them at once without feeling bogged down. Basically, you’ll be accelerating toward your goals, which makes the progress feel much more impressive.

I have another post already partially written about progress and a nice driving metaphor to go along with it, but I’m going to save that for later because I’m feeling pretty sick and I need to go take a nap. (Taking better care of myself: another new day resolution!)

I’m posting though, because my new day resolution for the day is to post in my blog at least 4 times a week, preferably at least every other day. I posted two days ago, so now I’m posting today.

Newscorp Buying Beliefnet?

Monday, December 3rd, 2007
Update: Well, it’s official, Beliefnet has been acquired by “Fox Entertainment Group”. Steve Waldman released [an announcement](http://community.beliefnet.com/video/1411) on Beliefnet via YouTube. Nothing about the price yet.

Apparently Beliefnet is being (or has been) purchased by Newscorp.

Beliefnet, for those who don’t know, is “…the largest spiritual web site.”. And their social network is a place for people to gather and discuss religion. Since religion is something that people tend to be very passionate about, it’s a good basis for an online community.

This is relevant to me due to the fact that I worked on (and continue to work on, occasionally) Beliefnet’s recently-beta-launched social network.

I’m very much interested to see what becomes of this, since it may or may not have a direct (or indirect) impact on my work in the near (or not so near) future.

No, I don’t have any insider information, but I do see it as an interesting topic to talk about.

p.s. I apologise for the relatively content-less and off-topic-ish post, and I promise that I won’t make a habit of it. It’s just that it’s a bit exciting to be potentially involved in something as big as this potentially is. :)

Making Myself Happier With Myself

Saturday, December 1st, 2007

It’s time for some of that fabled “other stuff” mentioned in the headline of this site.

A bit about myself

I’m generally a very calm, laid-back, happy person. I don’t get frustrated too easily and I, by default, don’t let most things bother me.

It’s not for a lack of emotions that causes my general state, it’s an implicit knowledge that getting all flustered and upset and throwing a fit is a generally useless way to deal with a problem. Ignoring a problem won’t make it go away, but if that problem is a bad day at work or a horrible commute home, then you know what? It’s over at the end of the day. There, problem solved, you can forget about it.

The problems

There are, however, things that have bothered me about myself for several years. These are problems which no amount of ignoring will cause to go away. These are the kind of problems which require action.

Here are my two biggest problems:

  1. I am overweight
  2. I procrastinate

(Hey, those rhyme!)

The second problem has most likely caused the first problem to last much longer than it should have (and it was the original source of the problem as well, “Oh sure, I’ll start exercising this summer when I have more free time…”), but soon it will be a problem no more.

The solutions

I’ll cover they ways I’m going about solving my two problems in reverse order, since the second is the root of the first.

Stopping procrastination

There is really a single solution to both of these problems: STOP PROCRASTINATING

How does one do such a thing? Well, do a Google search for stop procrastinating, start reading about the various techniques for avoiding procrastination, spend some time considering which approach would work the best for you. Now, pause for a moment and think about what you are doing: You are procrastinating some more. Realization of a problem, as they say, is the first step toward solving that problem.

My solution to procrastination is fairly simple and seems to be effective for me. The hardest part of any task for me is simply starting it. Once I’ve started something, I want to keep going until I stop. I think this is part of the reason why I avoid starting things for so long. I’ve started to get myself in the habit of action. I still spend too much time thinking about things, looking things up, discussing things with others. But once I realize that I’m procrastinating, I realize that I need to just start doing whatever it is that I want or need to do.

In short, my solution to procrastination:

  1. Learn to recognize when you are procrastinating
  2. When you notice that you are, stop

Once you get in the habit of realization and cessation of your procrastination (I’ve got to stop with this rhyming business), procrastination shouldn’t be as much of a problem. I think in my case, doing anything which I had previously put off gets me into the mood for doing things, and I’ll have a burst of procrastination-free activity.

Losing weight

Okay, so the single solution is to stop stalling and act, but what exactly is the action to take for weight loss? Well, there’s a simple solution to weight loss:

Eat fewer calories than your body is burning.

That’s it. No need to go on a fancy diet, not need for pills or muscle-killing exercise plans. Though exercise is also essential for good health, it is not essential for keeping your ideal weight. They are two separate problems and should be treated as such.

My particular solution was taken from a wonderfully helpful free book, The Hacker’s Diet, by John Walker, the founder of Autodesk. If the fact that he’s a Millionaire/Programmer/Businessman (three things I hope to be someday), isn’t enough to be convincing, how about the fact that he went from 215 pounds to 145 pounds in six months?

I’m not looking to lose weight quite as fast as he did, but I have been losing slightly less than a pound per week since I started actively trying to lose weight. I’ve been overweight for the last four or five years, and all it took was getting started.

One of the really helpful things about the hacker’s diet is the way you track your weight. If you just measure your weight, it will vary wildly depending on how much water (or another soon-to-be-released substance) is in your system. This results in a depressingly squiggly line. If you use a sliding average, the line is much smoother, and reassuringly downward-trended (unless you really are gaining weight, of course).

For an example of this, check out my public weight-loss profile at PhysicsDiet.com or just look at this chart of my weight as of today:

my weight graph

Conclusion

The more I do things which I’ve been planning to do, the more I move away from my habit of procrastination. This blog itself is the result of me finally doing something that I’ve been putting off for quite a while. Soon enough I should be posting about other projects which I’ve wanted to do for a long time, but have been putting off.

It’s definitely worth it to stop procrastinating about stopping procrastinating.