According to this website, I'm 19.4 years old, and will live for about 54 more years. Of course their calculation didn't factor in the fact that I'm a Quantum Immortal :)
28 September 2007
19 September 2007
15 September 2007
Google Around The World
Google made a video representing how an email message gets around the world. The video is made up of bits and pieces filmed by people all around the world.
Amusing watch.
13 September 2007
WoW Birth Control
http://www.youtube.com/watch?v=cbU1EBYh0ZQ
I solved the problem by hooking my gf to WoW :)
06 September 2007
05 September 2007
Famous Death Quotes
"This is no time to make new enemies." - when askd to forswear Satan :)
Link
03 September 2007
The Design of MS Paint
http://www.youtube.com/watch?v=Hxx2KcPWWZg
Took me a while to figure out this is not real.
Practical Database in C#
Today I took Eli's challenge (whether he intended it as such or not not :).
Among other things, he mentioned on his blog his opinion that LISP is a more powerful programming language than C#. He offered Practical as an example of LISP's power. Practical is a very simple database built using very few lines of codes.
The challenge I took on myself is to code Practical in C# and compare the implementation with the one given in LISP.
It took me 2-3 hours to read the link on Practical and code it in C#, and I wrote a great deal more lines of code than what I saw in the LISP code. So in a simple contest, C# (or just me as a coder) lost.
However, here are my thoughts:
- About 80% of the code I wrote is general purpose. It simulates abilities already existing in LISP. General-purpose classes I wrote are:
- ConsoleReader - Reading any class from the Console.
- DefaultFormatter> and ListFormatter - Pretty-print any object or list.
- Functors - Functors in C# are called delegates. I didn't find (nor looked too hard) for functions to combine, negate and manipulate delegates - so I wrote some.
- MoreXmlSerializer - As a naming convention, I like to name MoreFoo any class that contains methods that I believe should have been in Foo from the start, where Foo is some class supplied by the framework. Starting at C# 3.0, the ability to add methods to existing classes is supported, so I could adjust the naming convention accordingly.
- StringConverter - Convert a string to to a given (dynamic) type.
Besides this code, the actual Practical C# code is very small and concise. - ConsoleReader - Reading any class from the Console.
- The C# code is type safe. I'm not aware of type-safety in LISP, though as I said I'm not a LISP pro.
- The code I wrote is in C# 2.0. Some new features in C# 3.0 should help make it a bit more concise (especially lambda expressions and LINQ).
I think this experiment didn't change my opinion greatly. Yes, functional programming is good. It exists in C# as well as in LISP. Yes, LISP handles lists very well. But, not everything is life (or in programming) should be represented as a list.
I'm attaching my code here. If you have suggestions or comments, please let me know. Also, once I install Visual Studio 2008 (I'll probably wait for the final release), I might try coding this in C# 3.0 and see how it helps the cause.
02 September 2007
Good Programmers
See a discussion on the selection of programming languages on Eli's Blog, and my note about general qualities of good programmers.