Wednesday, December 01, 2010

Denying A Program To Connect To A Network

Imagine that one day you download a free password manager on your windows machine, and use it to store all your passwords for online banking accounts, emails, etc.

Knowing that this same executable is capable of connecting to the internet and doing different things like connecting to a server and checking for updates...

Imagine that one day the guy developing the tool inserted some malicious code to forward password information in your password manager.

Paranoid thinking? But can we blame paranoids, I mean the world is full of negative surprises that only paranoids were able to predict.

Better than blaming, is protecting yourself without losing the privilege of the software you want to use. On windows 7, here's how:

1. Go to the Control Panel.
2. Click on the Windows Firewall icon.
3. Make sure that your windows firewall is turned on by clicking on Turn Windows Firewall on or off
4. When this is done, go back to the Windows Firewall and click on "Advanced Settings".
5. Click on "Outbound Rules"
6. On the right, click on "New Rule..."
7. Make sure Program is selected in the radio buttons and click Next.
8. Enter the path of the program exe then click Next.
9. Make sure "Should be Blocked" is selected then click Next.
10. Enter a display name for this rule.
11. Click Finish.
12. Open the desktop tool you want to protect against and select "Check for updates.." in your tool if available. The tool should crash or tell you that it is unable to connect to the internet. No connection available.

Capiche. You're done.

Monday, November 29, 2010

The Google Chrome Dictionary Plugin

I always have trouble finding and installing the google chrome dictionary plugin, therefore, I'm posting this link as a reminder:

The Exercise Every Developer Needs

Exercises for tendonitis and carpal tunnel:

Before its too late.

Tuesday, November 09, 2010

wxWidgets versus Qt?

Both are good frameworks for writing a C++ desktop application. By the way, Qt is used in Google Earth and the Skype application.

For a wonderful comparison between wxWidgets and Qt, read the following:

My final conclusion, Qt wins.

Wednesday, November 03, 2010

Sticky Notes Utility and More...

I've been used to using ATNotes, which is a sticky notes utility that was very light weight but had some frustrations. I'm telling you, writing your todo's on a sticky note on screen is an excellent way to keep your mind fresh and at the same time keeping all your TODOs as a reminder.

However, some frustrations with ATNotes bothered me, so I've started looking for alternatives. Usually I do this be searching on google for "ATNotes alternativeto" (without double quotes), which displays the site.

Luckily, I found a wonderful alternative which is named Stickies. I've installed it and found it great, simple, lightweight and doesn't interfere with your system or registry.

If you still need more alternatives you can check the list on

More interestingly, I found that the company that made this utility also made some interesting utilities which I name a few here:

1. Stickies (The already mentioned sticky note utility).
2. ZBar (multiple task bars for multiple screens)
3. Bart (A wonderful simple backup utility).
4. Caffeine ( A utility that simulates a key press every one minute to avoid your PC from stand by or screen saving).

Sunday, October 03, 2010

Where to find good images for your website?

A good friend of mine named Maximos, originally Rami the 17th gave me this link which is excellente:

Don't look any further.

Tuesday, September 28, 2010

Wednesday, August 25, 2010

Catching up with Nuxeo: Switching from Python to Java

I recently read this article on Summarizing the findings in this post, here's the story.

Nuxeo - an ERP company - took the decision on 2006 to port their core products from Python to Java. Infoq recently got hold of their CEO to discuss how the conversion went and also discussed the merits of static very dynamic typed languages since Nuxeo now tried both.

Summary of reasons to convert to Java
1. The availability of components and frameworks in Java like Hibernate, Lucene and Eclipse makes it much easier to build applications. Although they admint Python is great, it wasn't suitable for the platform they were envisioning to build.
2. The range and depth of the Java libraries was one of the main drivers for switching to Java. The Nuxeo product is using 100 libraries in total, including jBPM, OpenSocial, OAuth for widget inclusion, Apache Shindig, Apache Chemistry for CMIS, JXA-RS, JPA, JDBC, JTA, JSF, Seam and RichFaces.
3. Build system facilities based on Maven, Hudson, JUnit. Supporting Jetty, Tomcat, JBoss and bare OSGi.
4. Market Reasons. The market for java applications is huge. All companies know Java. Most already have java applications running. A lot of companies require Java for their IT. All system integrators have extensive java knowledge.
5. Community Reasons. The community is again, huge. The Java Apache community is tremendous. There are big annual conventions around Java (JavaOne, ApacheCon, Devoxx, Jazoon, etc.) and hundreds of small ones.
6. Specification Reasons. Many technologies in the Java world are based on published specifications that have many implementations and reference implementations promoting clean specs.
7. High availability of tooling for Java. The VM itself, debugging tools, IDEs, monitoring, performance benches, etc.

The results of the new Nuxea java based platform
1. Performance scales of about 10 to 100 times more.
2. In terms of features, its around 4 times the scope of what had been.
3. In terms of developer compatibility and ease-of-use, its about the same, but with alot more tooling experience.
4. Doubling or even tripling the capabilities of the old platform.

How customers reacted?
1. 80% were okay with the change.
2. For those organizations that didn't want to move, the community stepped forward to ensure their ongoing support (the open source advantage).

Merits of Python versus Java (Merits of Dynamic versus Static typing)
Merits of Python and Java is a subset of the merits of Dynamic versus Statically typed languages. Lets see what both sides have to say.

Advocates of Dynamyic types languages argue that they are faster to code in, since the languages are inherently more expressive.

Advocates of Static typed languages argue that time saved in development using Dynamic languages is time lost in testing. This is because the lack of type information makes testing harder. In addition, dynamic languages are generally slower than statically typed languages and thus tend to be more expensive to scale.

Nuxeo Opinion on Static and Dynamic Languages
In Nuxeo's case, they tried both dynamic and static languages to write their large scale product that consists of thousands of classes and hundreds of thousands of lines of code. Nuxeo's CEO says: Without a doubt, statically typed languages are better for such applications and yield many benefits giving you:

1. An IDE with proper autocompletion
2. An IDE that knows all the uses of a given method or field in all of your classes thus vastly improving search and refactoring.
3. Many compile time checks.
4. Tools that find patterns and bugs in your code.
5. Tools that extract documentation based on the actual types in your code. This is because a statically typed language will explicitly indicate the type of an argument passed to a function. This is rarely a hindrance and always good documentation. Dynamism on the other hand doesn't bring you anything except for less typing of the argument types.

What about the advantages of dynamic languages?
IMHO, dynamically typed languages are useful only for tiny applications or fast written scripts that perform different tasks.

Another interesting thought that comes up when debating dynamism versus static languages, is an analogous subject that has sparked myriads of debates in the United States when Obama's administration applied a new set of regulations on businesses (which in some people's opinions is freedom limiting).

I've spotted this interesting analogy from comments placed by the visitors on the same article discussing the new regulated economy.

Chat Abbreviations and IMHO

Nowadays, people are using chat abbreviations very frequently to save time and typing along with emoticons.

What surprised me recently is a very popular abbreviation used widely on the internet that I never read or used before. Its "IMHO", from the letters used and the "O" at the end, I first thought that it is an international organization of some type. But when I looked it up, I discovered that what IMHO really stands for is:

"IMHO = In My Humble Opinion"

So you can now safely add IMHO to your set of chat abbreviations including LOL, BRB, NP, BR.

Wednesday, July 14, 2010

How BP Handles a Coffee Spill

Simulating how BP handled it's oil spill on a smaller scale scenario ... a coffee spill.

Disclaimer: If you didn't follow the news then you wont get it.

Sunday, July 11, 2010

A good Drupal alternative?

Frankly, I'm quite fedup with Drupal.

My plan is to find an alternative. And here's my research findings.

I bumped into the following excellent CMSs that I would like to try out:

1. Concrete 5 (PHP using Zend Framework)
2. BrowserCMS (Ruby on Rails)
3. Silver Stripe (PHP using Sapphire)
4. modx (PHP)
5. Frog CMS (PHP)
6. MiaCMS
7. CMS Made Simple
8. TextPattern
9. ImpressCMS

Well, I think all of them are excellent. I really likes the Concrete 5 video preview though.

Also have a look at this top chart:

In search for a User, Group, Role & Security Java Library

I've been longing for a Java library that would cover all the needs of authorization and authentication within an application in a sensible manner. The library shouldn't require huge EJB structures and should allow being used within a POJO context.

I've searched and found three useful libraries:
3. Spring Security

The one that drives my curiosity the most is Apache Ki. Seems very promising.

Thursday, January 28, 2010

Jobless, need money, why not freelance from home?

You can start freelancing effectively using these websites:

One day, I'll need these websites badly.