Monday, February 26, 2007

The Problem With Technical People .. Business Wise

In the software business, the main problem with technical people when it comes to finding 'the idea', is that they easily deviate in their thinking processes from the main objective which is usually building a profitable business.

Instead of thinking rationally about 'how could my idea turn into a business', they easily end up in the thinking processes of 'how could my idea fulfill my creative and technological demands'.

This puts them through misjudgements leading to completely ignoring really good ideas while researching different market niches for reasons like "the idea didn't tick", "wasn't creative enough", "wasn't technically difficult", or simply "I dont like it". They forget the main purpose of the idea which is "creating a business", a growing profitable money generating business, they forget the whole purpose.

I'm not saying that technical people should change their mindset, I'm one of them, and I just cant. If the idea aint technologically stimulating enough, I find it hard to continue. But my advice for any technical person would be the following:

1. Business Value. Make sure there is a commercial value and your idea's category exists.

2. Love your idea. You're not a business person, so money isn't your main driver. Its the idea itself, so make sure you're convinced, you love it and you'll finish it.

3. Use your idea. It would be an excellent advantage to be your own customer and use your idea continuously, this will guarantee future enhancements and growth.

4. Always stay in touch with business minds. You need business advice, so take as many as you can from marketing, sales, software blogs, etc.

With all this advice, and I'm telling you, chances are so limited for you, you'll be wasting alot of time until anything good happens.

Whether you like it or not, business people are the best when it comes to spotting a good idea (or even coming up with one). Their main motivator is money generation, so, if the chosen idea is a good money generator, then they will already be in enough love with their idea to accomplish it and they'll use it as long as it generates money. Their idea's growth will be completely based on market needs.

Bottom line, we - the technical people - suffer from a major bug when it comes to business thinking. This bug can be simply stated as:

"Our passion for technology and our love for creativity deviates us away from good money generating business ideas, we suffer from this bug, business people dont, we'll have to live it, business people wont."

Saturday, February 24, 2007

In search for a good technical site or magazine.

I'm looking for a good technical site with some interesting articles. I can hardly find any, i'm not looking for code only articles, but rather a technical site with a diversity of subjects concerning the different issues in the technical industry.

I also used to enjoy the Linux Magazine (hard copy), but it is no longer sold in Jordan :( This happened after the war in Lebanon, I presume the main distributor was in Lebanon. Anyways, its too costy (about 12 JDs) but really had a diversity of very interesting subjects. Ofcourse, they provide old issues for articles in their website at

So please, if anyone knows a really good up to date website concerning Java, PHP, C, design articles, tools, components then please drop me a comment.


Friday, February 23, 2007

Monitoring Tools with Zoom In Capabilities

One thing I learned when purchasing, using or even building a monitoring tool is the following:

"Monitoring Tools with no Zoom In Capabilities are Worthless!"
So make sure not to waste your budget or time in any monitoring tool that does not provide zoom features to exactly trace sources. An example would be an httpd weblog analyzer. With all the fancy reports generated using tools on the web, if I just cant click on the graph and zoom in into more detailed information, then thats a big problem.

I'm happy to monitor thirty people entering my website on thursday, but I would like to zoom in the same graph to see at which hours of the day, further zoom in to see which countries where they from, then further zoom in to see which pages a certain visitor has gone through then further zoom in to see the amount of time he stayed on the website. Thats what monitoring tools all about.

Same goes to network monitoring tools, same goes to employee monitoring tools, task tracking tools, code analyzing tools, its just that, you either have a built-in magic zoom button or stop soliciting your monitoring software.

Thursday, February 22, 2007

Stable Software

From a black box perspective, stable software boils up to the following:

1. Good usage of Version Control Systems. Branching revisions, branching features, tagging releasing, merging, detecting flaws from versions logs, histories, comments and generated diffs. After being able to use version control correctly, I'm starting to wonder how I ever by-passed such a requirement.

2. Good Bug Tracking. I'd rather call it 'good issue tracking', since its not always a bug, it could be a required future feature, a priority for the next release, a recommended third party code to use, a small research signifying or recommeding new code structures. Bottom line, being able to track the past, present and future of your software's needs.

3. Good Quality People. Not the ones that randomly click everywhere trying to spot a bug. No, I'm talking about Smart Quality People that can intelligently utilize (or even build) testing tools and automation scripts to consistently be able to test every build and every release in a convenient time without having to repeat the quality cycle all over again. In short, good quality people build good quality assembly lines that result in consistent high quality output for every minor or major release launched.

Tuesday, February 20, 2007

Quote Of The Day

“People make all the difference in the world. Venture capitalists would tell you that they’d rather fund a great team than a great idea. The reason is that if they have a bad idea, great teams can figure out a better one. Mediocre people even with a great idea can screw it up in its execution.”

- Joe Kraus, Founder of Excite and JotSpot
Interviewed by the author of Founders At Work (book)

Monday, February 19, 2007

Trends and Fads

Most ideas start as 'ideas'; abstract implementations existing in a (human's) mind.

The two most obvious patterns signifying an idea's life time are a 'trend' or a 'fad'.

Fads tend to shoot up quickly then suddenly die with no warnings. During their shooting time, fans of fads feel so confident about growing in to a trend, and feel so down when their raging idea diminishes.

Trends on the other hand, are ideas that flourish gradually and strongly replacing any fads they meet in their way. Trends are hard to achieve, and their achievement clearly proves the rigidness of their contained idea.

No matter what the background theme is, fads and trends are reliable recognition patterns that can be consistently used to identify an idea's progress. However, the judgement cant take place until a reasonable amount of time has passed.

From my humble observations, i can say that the fad to trend ratio is 99 to 1, i.e. from every hundred ideas we've got about 1 trend and 99 fads. At least this works fine for product ideas rising from the commercial industry.

Saturday, February 17, 2007

Writing .bat files / Part 1 / Hello World

You create a batch file by writing it in a text file then saving the file with the ".bat" extension at the end, this will tell windows that this is an executable batch file.

Here I will create a text file containing the following and save it as "test.bat":

echo "Hello World, this is my first batch file!"

The word 'echo' is a DOS command that simply tells the command shell to display the text message following it.

You can test your first batch file by opening a command line window. To open a command prompt window there are two ways:

First, you can go to Start > All Programs > Accessories > Command Prompt
Or, you can go to Start > Run then type in 'cmd' and click OK.

Once the command prompt is open, you can run your batch file by typing its name followed by enter:

c:\> test.bat

Make sure to change the directory to the location where the test.bat file was saved, in the above example it assumes it was saved in the C:\ top folder. If it was saved in a different location, e.g. F:\my_folder then you can change directories by typing:

c:\> cd /D F:\my_folder
f:\my_folder> test.bat

The output:
f:\my_folder> echo "Hello World, this is my first batch file!"
"Hello World, this is my first batch file!"

Notice that the string got displayed, but also the command 'echo' got displayed too. To hide the commands being executed you can add "@echo off" at the top of the test.bat file.

@echo off
echo "Hello World, this is my first batch file!"

Now executing test.bat would result in:

"Hello World, this is my first batch file!"

Congratulations, your first batch file is ready. Unfortunately, till now it does nothing interesting other than print a message.

Friday, February 16, 2007

The Art of Delegation Using Batch Automation

For those people whom hate donkey work, I have good news for you... even donkey work has a creative side.

The creativity lies in automating the donkey... in software this means writing code to do the job and writing scripts to handle your book keeping tasks.

Using bash scripts on linux and unix are so common. On windows, people hardly know that a command prompt exists, and that they can make their life much easier by writing batch files.

The first rule of automation says:

"If you repeat anything more than once, then consider
automating it."
Most people fail in committing to this rule due to one of three reasons:

1. They fail to notice that they are repeating the same task.
2. They have so much energy that they dont feel automating is necessary.
3. They dont have the 'know how' of writing automation scripts.

Ironically enough, people that love automation turn out to be the laziest people i ever met. I believe this explains the common phrase "need is the mother of invention", to fulfill their idle needs they start creating tools to work for them.

In the next article, I'll teach you how to write simple batch scripts on windows, part of it is for my own reference and learning curve.

Thursday, February 15, 2007

PHP 6, a revolution or just another evolution?

PHP 6 is on the way. One major feature of this release will be full unicode support with complete backward compatibility (what a mess the php.ini configuration file will turn out to be!).

But, will the core engine differ, will there be something different this time? is it worth a most significant version number jump? PHP 5 has been critisized by many as being a minor evolution to PHP 4 and didn't deserve a version jump, rather than what was initially expected.

See, its not only in PHP, its in all software products, when you jump from Version (X) to Version (X+1) then you'd better be having what justifies this jump, and in my opinion... the only justification is a REVOLUTION (background theme music maestro, plz).

Wednesday, February 14, 2007

I Smell Rotten Code.

Here's my best self-awareness test for detecting areas of self-written rotten-code in my source code. The question you have to ask yourself after finishing a code module is the following:

Are you afraid of looking into the code you wrote for this module?
Are you having any discomfort when it comes to adding extra functionalities to your code?

If the answer to any of the above two questions is yes, then I believe you have a problem and your code needs 'refactoring' (another cool word for 'restructuring').

Tuesday, February 13, 2007

The Problem With The PeePee's

With all the paparazzi surrounding PHP, Perl, Python and Ruby, in my opinion, I see them as lacking a 'major' attribute that I cannot live without. This attribute is extensibility; using existing codebases and libraries written in C and/or Java.

The largest code bases and libraries in the world are either written in C or Java. What use do I get if I cant utilize those libraries? Some might argue that it is possible to call C API from PHP or the others, but have you ever tried writing a PHP extension that wraps a C library? have you tried that in Python? Perl? Ruby?

The amount of learning curve, buggy constructs, and lanuguage intracies you have to deal with make your life suck when it comes to extensibility from those PeePee's (most of them start with the letter P).

Every piece of new hardware, every new database, every robot, each and every mobile device, is guaranteed to provide you a C and/or Java API to communicate with. None have ever provided you with a PHP/Python/Ruby/Perl API. All those API's come as wrapped up contributions of the C or Java version.

This problem does not exist in either C or Java. Java uses the JNI (java native interface) to talk with the C language APIs which could add a learning curve; however, unlike other learning curves, this learning curve aint wasted simply because those two languages are guaranteed to survive for at least the upcoming decade with continuous SDKs sourced out from new technologies.

The PeePee's are useful tools, useful languages, but dont base heavy code bases on them. One day you'll discover that you'll need to start porting your code, let this day be early enough with limited losses.

Saturday, February 10, 2007

Build space ship 'One' before space ship 'Two'

Whenever you have an idea for a library, product, class or anything else, always remember to build space ship one first, stop collecting extrabonanzic features and ideal design methodologies to reach directly to your dream space ship, start with space ship 'one' always.

This means, if its a product, this would be the minimal set of features that will make it usable.

If its a library, this means exposing the minimal set of functions that are sufficient to achieve the main objective of the library.

If its a class, then allow the smallest simplest possible code that'll make it work.

Ofcourse, before you even think of starting to work on Spache Ship 'Two', remember to launch spache ship 'One', or else, you're skipping the advice.

In a product's sense, space ship one is usually your own design, thoughts and implementation. After launching space ship one, people will start giving you feedback on certain conveniences, improvements, enhancements which you should take into account in space ship two.


Nothing more, nothing less, if you cant launch space ship one, dont even think of building a space ship.

Friday, February 09, 2007

Open Source Hidden Facts

1. Open Source software does not imply free usage. Many commercial companies sell there software in open source form, which simply means that the source code is open.
2. GPL Licensed Software is free for use but CANNOT be used in a commercial product.
3. Any software you write that uses GPL licensed software/code is automatically GPL software, they call this the Viral Aspect of GPL.
4. LGPL is different from GPL and stands for "Lesser GPL".
5. LGPL has the advantage that you can include LGPL software code inside your commercial product and also have it in its compiled form.
6. You must always provide GPL software in its open source form, if you do a project that uses GPL software, then your code should also stay open.
7. Apache License has nothing to do with the Apache Webserver, its just a license type that applies to software.
8. An Apache Licensed Software or Library can be used in a commercial product.
9. A BSD Licensed Software or Library can be used in a commercial product.
10. Although you can't use GPL software in a commercial product, but you can sell GPL software with any amount of money you want. As an example, I can now download a GPL software (eg. Kannel Gateway) and sell it to a company for $400'000, totally legal, totally 7alaal.
11. Some software companies provide software products as "Dual Licenses", this means two licenses and depends on the usage. For example, MySQL provides its database as GPL for internal use and provides a commercial license for commercial usage (that you have to pay for).

Tuesday, February 06, 2007

This Week's Quick Peeks

Here I'll mention some interesting tools I came across from friends and websites:

1. Notepad++. A wonderful light-weight and powerful editor program.
2. Create a disposable email that lasts for 15 minutes for use in registration forms. Ver practical.
3. Whats Running. A tool that lets you control your startup programs, and view all system processes, loaded dll's, threads, services, etc. Simple, wonderful and free.
4. Java Excelsior. The best java commercial native compiler on earth for both windows and linux.
5. A site that explains how stuff works.
6. A search engine for developers. Check it out.
7. Handling Back Pain. An interesting article on how to relieve, prevent and exercise to rescue your back. Simple and easy exercises for "Belly Coders" (thats me).
8. A list of the top programming languages. Most recent ranks of who is at the top, is it Java, PHP, C, C++, or * ?

Please donate a comment below to keep this website running.

Monday, February 05, 2007

The Idea, The Money and The Environment

I like this analogy and I think it puts an ends to the world wide debate of whats more important, the idea or the money?

The analogy simply states that an idea is the 'seed', the money is the 'water' and the environment the idea gets implemented in is the 'soil'.

Now, all you have to do to understand the effects of the lack or availability of these elements is by substitution and elimination...

If you have a good idea without enough money or without a suitable environment, then it stays in it's passive form, with no yield.

If you have lots of money without a (good) idea and a suitable environment then your money is in its passive form, with no yield.

If you have a wonderful environment without a (good) idea or enough money, then you're environment is in its passive form, with no yield.

When three of them match, you'll get a wonderful tree. However, without sufficient money, it might take longer to grow, without a matching culture or environment then it will take a lot more time to be accepted, but at the end, without the seed, there's absolutely no tree.

Sunday, February 04, 2007

A Word on Patents

"How powerful are Microsoft patents? No one really wants to know - including Microsoft. A patent is a powerful weapon, but the best use for a powerful weapon is not to pull the trigger but to sit next to it and act like you're going to pull the trigger. Once you use it, you lose the ability to peer silently into the eyes of your opponents and make them shiver with dread. More importantly, you expose yourself to the possibility that the weapon might not even work."

- Joe Casad, Editor in Chief, Linux Magazine, Jan 2007
Describing the threat Microsoft imposes on the Open Source industry.

Whats Running?

One thing I used to hate about Windows in general, was the lack of transparency of processes, services, startup programs, threads, network sockets, etc. There might be some techniques I'm not aware of in viewing all these entities within the system. But I dont think I need to learn any of these hidden techniques after finding this free useful tool by the name of "Whats Running".

Thursday, February 01, 2007

Yours Sincerely

Starting and Ending emails has always been a major issue with myself.

Does 'Yours Sincerely' sound a bit too formal? Shall I use 'Regards' or 'Best Regards'? Maybe 'Best Regards' will give an impression that I'm a bit too excited or something, I'll use 'Regards' instead. What about 'Yours Faithfully'? which will I use, when? What about the name prefix... hmmmmm... "Dear X" sounds so intimate, I barely know her/him, lets use "Hi X" instead, but this sounds too casual too, ok, "Hello X" seems fair enough. What about the prefix? is she a Ms or Mrs? and will he be pissed off if I used his bare name without the Mr/Prof/Highness? I need an ice breaker too, but the only one I can think of is "Hope all is well, ...".

I discovered this article that provides tips that will easily put an end to those confusing 'thought provoking' 'mind squashing' emotions you experience when you write a new email, specially when you're writing to some corporate client trying to look professional enough.