Thursday, October 13, 2005

The company, dateem, and physics modeling - I

The past few months, I've been busying myself in starting a new startup. My two partners and I have abandoned our jobs (both of them were working at IBM Egypt for the last few months) and started to lay plans and continue work in our main product (the yet unnamed physics engine).

Meanwhile we realize how immensely greater challenge it is to plan and manage your own work in the real world. But that's what we were looking for, challenge, weren't we?

Yeah, mostly ... most of all I wanted to do thing the way I see right, not the way some company's process states is right. Some advised us to delay this risky plan, but we believe the risk is now at a minimum, we have nothing to lose, thus, nothing on this earth can crash us short of us realizing our profound incapability.

So I've been lately pondering about a lot of issues concerning starting a new software company, while reading some really nice articles like Eric Sink's "Making more mistakes" and Paul Graham's essays, esp. "Starting a startup" and "Beating the average".

Hell!! I need to know a lot, about marketing and market research, sales and pricing strategies, general management, while still trying to learn about my profession, being a good software craftsman is probably my most principal objective.

I guess the next year will be a pretty tough one.

Monday, October 10, 2005

My Mini

For so long I wanted to get a Mac. The elegance of the operating system has always allured me, but it was simply too expensive. Lately and at last, I got a Mac-Mini, the cheapest one, as good as any for me, it's the OS that I'm concerned about.

I had panther for a couple of days before I installed tiger, so I'll mainly speak about my tiger experience.

First of all, the installation is really, really painless! (linux folks come see and learn ;-P)

I think the desktop is really nice, maybe a bit less practical than windows and roughly as practical as a nicely configured linux :) the UI is a bit sluggish as it is famed to be, but is really beautiful. Fast user switching, Expose, the dashboard, etc. all combine to deliver a rich user experience.

Programming the Mac:

What really concerned me, was the development on the mac, as i am writing these lines, the interactive python shell is opened in a window just beside. OS X comes with perl and python (and even Ruby!)which is very convenient for me. But the new thing I experienced was Xcode.

I found Xcode 2.0 to be really nice, supporting multiple types of projects... I'm not expert yet, .. and it's not MS Visual Studio (I think it will soon be very competitive though) but the Interface Builder is very neat. Well, I think I can manage to bear using it for a large project. (but i would rather join in its development :) )

What really exited me was the classes, the Cocoa framework, the OO wrappers for the Max OS X functionality, and having worked long enough with Microsoft's MFCs, I must say I was amazed. Cocoa shouldn't be compared with MFCs, I think it's way more deeply object oriented (which would surely reflect also on the performance though, MFCs are really thin wrappers, therefore they do not impose a lot of performance overhead), the design is very neat, object oriented design principles are evident in every aspect of the library, I don't know much about it yet, but I say it's to be compared with the .net framework, or the java class libraries, only this time it is native. Language, Objective-C was a shock for me in its own accord, for the first time out of the scripting world (i.e. python, perl, ruby, etc) I face dynamic typing, late binding and object orientation with such elegance. Again, it is comparable to Java or Smalltalk, but this time it runs native on the machine.

Well, I'm sure the following period will hold a lot for me to learn, and I might change my mind :), but then I'd surely tell ya ;)

Angels and Demons

I feel especially lazy. Having just returned from a thrilling journey across Rome in the company of Robert Langdon. In other words, I have just finished Dan Brown's beautiful novel "Angels and Demons". It's simply beautiful, full of mysteries and theological debates. Compared to its more dominant successor "The Davinci Code" I think "Angels and Demons" is emotionally richer, although surely less controversial.

The novel contains a very intelligent dialogue between religious faith and scientific faith.

You can find a nice comparison between both kinds of faith in this article:

Two Different Kinds of Faith: A Rant.

But I would like to point out that religious faith must not be blind. There can be reasoned, enlightened, regularly questionable and renewable religious faith IMHO.

Saturday, October 08, 2005

Python vs. Ruby

I've been sleeping too long in the arms of C++, and lately I've been searching for a dynamic language to adopt. Having written some perl and php myself, read some python and heard a lot of good stuff about ruby, it shouldn't be a problem for me to adopt any of them for simply playing around. But what I'm really looking for is a long (marriage-like) relationship, where I will try to know all the intricacies of the language at hand and use it for my d-d hacking. So I actually find it very hard to decide. Perl is probably the most hackerish, but also ugliest and hardest to read (I believe READING code is a very important thing). Php seems only competent in developing fast and smart web pages with its HUGE library of functionality.

Python and Ruby on the other hand, seem to be both very competent, both seem to be elegant, OO, rapid, and have a nice learning curve. I don't have that kind of time to learn both languages by heart just to judge and choose one, so I looked for online reviews and comparisons, (googled: python vs. ruby) and was greatly disappointed. The human kind seems to be still in its dark ages. Neutrality and subjectivity seem to have disappeared from the planet. People seem to be blindly biased (i.e. being biased without knowing they actually are) to what they know better. And of course this is not just about programming languages.

Well, I'll probably give python a try first, seems to be more mature, with more culture, user base and bindings (bindings for OpenGL, OGRE anyone?) and wider adoption (jython for java runtime and a .net version)

Thursday, October 06, 2005

At last!

I've intended to do this for what seems like ages :)
I finally fooled my own lazyness to set this up.
Better late than never, I tell myself.