Thursday, December 24, 2009

Hahaha!

http://www.joeydevilla.com/2009/12/16/how-fanboys-see-operating-systems/ http://www.rubyinside.com/holiday-fun-how-programming-language-fanboys-see-each-others-languages-2911.html

Tuesday, January 13, 2009

w00t! The BDFL is Python history blogging!

Python's Design Philosophy:
First of all, Python was originally conceived as a one-person “skunkworks” project – there was no official budget, and I wanted results quickly, in part so that I could convince management to support the project (in which I was fairly successful). This led to a number of timesaving rules:
  • Borrow ideas from elsewhere whenever it makes sense.
  • “Things should be as simple as possible, but no simpler.” (Einstein)
  • Do one thing well (The "UNIX philosophy").
  • Don’t fret too much about performance--plan to optimize later when needed.
  • Don’t fight the environment and go with the flow.
  • Don’t try for perfection because “good enough” is often just that.
  • (Hence) it’s okay to cut corners sometimes, especially if you can do it right later.

Saturday, January 3, 2009

If Languages were ...

Via Lambda the Ultimate. My favorite is "If Languages were Religions":

C would be Judaism - it's old and restrictive, but most of the world is familiar with its laws and respects them. The catch is, you can't convert into it - you're either into it from the start, or you will think that it's insanity. Also, when things go wrong, many people are willing to blame the problems of the world on it.

. . .

C# would be Mormonism - At first glance, it's the same as Java, but at a closer look you realize that it's controlled by a single corporation (which many Java followers believe to be evil), and that many theological concepts are quite different. You suspect that it'd probably be nice, if only all the followers of Java wouldn't discriminate so much against you for following it.

. . .

Lisp would be Zen Buddhism - There is no syntax, there is no centralization of dogma, there are no deities to worship. The entire universe is there at your reach - if only you are enlightened enough to grasp it. Some say that it's not a language at all; others say that it's the only language that makes sense.

Haskell would be Taoism - It is so different from other languages that many people don't understand how can anyone use it to produce anything useful. Its followers believe that it's the true path to wisdom, but that wisdom is beyond the grasp of most mortals.

. . .

Perl would be Voodoo - An incomprehensible series of arcane incantations that involve the blood of goats and permanently corrupt your soul. Often used when your boss requires you to do an urgent task at 21:00 on friday night.

. . .

Ruby would be Neo-Paganism - A mixture of different languages and ideas that was beaten together into something that might be identified as a language. Its adherents are growing fast, and although most people look at them suspiciously, they are mostly well-meaning people with no intention of harming anyone.

Python would be Humanism: It's simple, unrestrictive, and all you need to follow it is common sense. Many of the followers claim to feel relieved from all the burden imposed by other languages, and that they have rediscovered the joy of programming. There are some who say that it is a form of pseudo-code.

Wednesday, November 19, 2008

The 56, 5 Book Meme

These operators allow the specification, selection, and modification of fonts (descriptions of typefaces) and provide the means to render characters from those fonts onto the page.
PostScript™ Language Reference Manual, Adobe Systems Incorporated

Pass it on:

1. Grab the nearest book.

2. Open it to page 56.

3. Find the fifth sentence.

4. Post the text of the sentence in your journal along with these # instructions.

5. Don't dig for your favorite book, the cool book, or the intellectual one: pick the CLOSEST.

Saturday, October 25, 2008

Announcing better-makefiles

Today I created a new open source project, better-makefiles. It's a makefile schema that's significantly better than what most projects use.

I had two ideas, and I rubbed them together to make this. The first idea is Recursive Make Considered Harmful, Peter Miller's 1997 paper that argues that you shouldn't run make in each directory of the project. Instead, you should run it at the project root and let it see dependencies through the whole project. That lets make get the dependency analysis right, and it runs faster too. But do use include files to keep make's info near the files.

The second idea is that I'd really like to get rid of as much noise as possible in the per-directory files. I got it down to this.

Sample Dir.make:

   dirs := sub1 sub2             # there are two subdirectories.
   programs := foo               # build one program, foo.
   libs := libfoo                # build one library, libfoo.

   foo_cfiles := foo.c           # build foo from foo.c...
   foo_libs := libbar            # ... and from libbar.  (make will find it.)

   libfoo_cfiles := lf.c other.c # build libfoo from two source files.
That's it. Exactly zero boilerplate, just an explicit description of everything make should build.

Four stars. kbob says check it out.

Thursday, October 9, 2008

First Post!

checkman invited me to join this 'blog this morning. Thanks, Casey. It's great to be here. I've been writing a Scheme interpreter in my spare time recently. It's just one of those things a guy's got to do sometimes. I've written a little about it in my own 'blog. Here are some links. I'll keep working on it and writing about it occasionally. I'll have to figure out what to post here and what to post there.

Tuesday, October 7, 2008

Google Chrome and Disk Activity

So far, I've been really impressed with Google Chrome, the new Web browser from Google.  As others have pointed out, it doesn't deliver all the features and extensibility of Firefox.  But, given that it is still in beta, it is relatively mature and stable.  That should not be too much of a surprise because it is built using pre-existing components, such as Apple WebKit, which have been around long enough to have achieved stability.
At my work, all new Web projects are now being tested against Chrome in addition to the other popular browsers we are required to support (MSIE, Firefox, Safari, and sometimes Opera).  That's because we recognize that, before too long, Chrome will likely have significant market share, and we will be required to support it too.
But, one thing that really concerned me about Chrome was that, every so often, my hard drive would go crazy with activity, and my computer would become nearly unusable.  I went searching for an answer, and naturally this problem has been reported and solved by others.  According to this source and this source, (and probably other more authoritative ones) the secret is to disable the "phishing and malware protection" option (see Customize > Options > Under the Hood > Security).  Having done that, the problem instantly went away for me.  I cannot recommend this solution for others however, for obvious reasons.  
This problem should underscore the fact that one should not use a Web browser for general Web surfing if it is not yet mature (e.g. Chrome) or it is has a long history of security problems (e.g. MSIE).  I do use MSIE to visit some Web sites if they use a media plugin that is not supported in other browsers (e.g. Netflix Watch Instantly), but I never use it for general surfing.
It will be exciting to see Chrome mature, because it will surely influence future Web browser development, and, over time as new ideas introduced in Chrome are implemented across the industry, it will likely change the way we experience the Web.