Wednesday, February 07, 2007

Manage Email Traffic With Gmail Filters

My clients ask me to put job ads for them. They expect to receive CVs of interested candidates in their email boxes. So I write the email address of my client in the job ad so that interested candidates can send their CVs to that email box at once.

The problem with this is that I do not get to track how many CVs my client has received as a result of the job ad I had put for him. I get no idea about the results of the job ad. Each time I have to ask my clients about the results, and even then I do not get a full picture still.

I later thought of putting my own email address in the job ad instead of the email address of my client. Now CVs will all come to me first. But given the large number of CVs that each job ad I send creates, manually forwarding each CV that arrives to each client would be a tedious job, not to mention error prone.

Now gmail's filter feature comes to the rescue. First of all, I have set up an auto forward to forward all email coming to my cv @ egypt-it-jobs.com email to go to my gmail account. From there, I have set up a filter for each job ad I post. The each filter forwards all incoming email that was sent to cv @ egypt-it-jobs.com to the appropriate client depending on a numeric code that candidates write in the subject line. Each job ad has a different numeric code and in the job ad I instruct candidates to write it in the subject line of the email that contains their CV.

The only problem with this system is that some candidates do not follow the instructions I have given in the job ad and do not write the job ad code in the subject line of their email when sending their CV to me. Of course in this case the automatic forwarding of the filter does not work and I have to manually forward their email to the correct client. Yet again the percentage of those whom do not follow my clear instructions in the job ad is small. Moreover, usually such candidates either do not possess the ability to read, understand and follows instructions or are not interested enough in the job ad to read it carefully. In both cases such candidates are not really a desirable type of candidates to be selected for the job, so missing their CVs is not a big loss, actually it is a gain, for it saves my client from going through bad CVs.

Other than that, the system has worked great automatically forwarding the incoming candidate CVs to the appropriate client and keeping a copy in my inbox for later review or just to count the number of CVs that have been sent as a result of each job ad.

Tuesday, February 06, 2007

A Massive Database

Google Base might turn out to be the most massive database ever created containing structured data.

If Google Base allowed users to store their structured data there privately and access such data securely then maybe in the future no one will need to keep his own database any more, one can just use the massive Google Base to store his application's structured data! What a thought.

Before getting too excited though about this idea, I don't see any reason why Google might be interested in offering such ability to store their structured data privately in Google Base. However, if Google finds out a way to make this option available to users, then this will change the whole landscape of databases and applications that use databases extensively.

Dig For Code Easily

O'Reilly, the popular publisher of IT books, is releasing an interesting online code search tool that allows you to search for sample code found in the examples of nearly 700 of its books.

With Google Code Search around, one can very easily find a programming function that performs what he needs. I think that such ease of search might entice many computer science students into using it to help them out with their programming assignment. It's a brave new world, I believe it will change the way things are done in the software development world. Google is giving another massive push to open source which is qualitatively different from any other push open source had ever been given.

Refer to the Google Code Search FAQ for more info about its functionality.

Sunday, February 04, 2007

Shared Hosting Challenged by Grid

Media Temple are offering an alternative to shared hosting which they claim is much better without the costs nor the risks of a dedicated server. Grid Server is the new hosting model they are promoting. They claim that grid is better than shared hosting.

The catch, however, is in their GPU (grid performance unit) which charges their customers extra monthly fees if they happen to use more CPU resources. Their model though sounds interesting and is nice to examine.

Second Life 3D Viewer Goes Open Source

Second Life released its 3D viewer as open source.

Friday, February 02, 2007

Google Co-op and Yahoo My Web

As Jimmy Wales, founder of Wikipedia, along with Amazon aim to develop a new search engine challenging both Google and Yahoo, the two search giants are fighting back with innovations of their own.

Jimmy Wales' idea is to develop a search engine that relies heavily on users to refine the search results. Google introduced Co-op to do just that, using users as a source for search results. Yahoo aims at building the same network of users who are building search results through its My Web initiative. Both Yahoo My Web and Google Co-op are still in beta.

My personal opinion is that the push given by Amazon to Jimmy Wales' idea will still not be able to dethrone Google or Yahoo from their high thrones in the search engine kingdom. They will just fight back ferociously with the same idea of Jimmy Wales, using the knowledge of users in an online social networking setting to build and refine their search engine results. The good news is that the push by Jimmy Wales and Amazon however will make the move towards this take place sooner, which means a better search experience for users.

Have a look at Jimmy Wale's budding search engine.

ISO HTML

HTML is a web standard developed by the Word Wide Web Consortium. The ISO has taken HTML and made a neater standard out of it by removing deprecated HTML elements and bringing out a tighter edition of HTML. The ISO HTML standard is called ISO/IEC 15445:2000.

One of the interesting features for instance of ISO HTML is that if you use an <h1> tag you cannot use an <h3> tag directly after it, but you must follow the <h1> tag with an <h2> first then you may use an <h3> after that. I think this gives you the picture and a taste of what ISO HTML is all about. It tries to make HTML more neat by removing deprecated elements and adding some restrictions to come up with a tighter HTML than that of the W3C.

The question remains however on who will be using such a standard and whether it will ever gain popularity on the web. I personally believe it will not, yet still I find it interesting to use it.

Thursday, February 01, 2007

The Resonance Effect in Google Video

An interesting phenomenon in Google Video is the resonance of popular videos. Once a video becomes popular it is show in the top 100 and there it has an even much larger chance of being seen by a large number of members which makes it even more and more popular. Due to this resonance effect many videos once they reach the top 100 tend to stick right there for long, not because they are actually better than new videos but because they have managed to reach the top 100 list and therefore get a boost in popularity just by being among the top 100 list. It's a circular and unfair thing.

Google seems to calculate the popularity of a video by counting the number of users who have clicked on it to view it. Perhaps they have a more complex algorithm for determining popularity including how many people viewed the video till the end as well as other criteria. Yet still the resonance effect dramatically accelerates some videos and keeps them at the top much longer than they deserve.

To counter this effect, Google introduced the Movers & Shakers video list which lists videos that are gaining popularity quickly even if their popularity has not reached a high level, but what counts here is speed of increase in popularity and not the popularity rank itself. This has helped a lot in reducing the resonance effect by giving a higher chance for new videos to climb up the popularity ladder and shake down old videos which had clung for long to the top 100 list due to the resonance effect.

Google then introduced yet another feature to help reduce the resonance effect. If a user is signed in with his Google account when visiting Google Video, his popular list is customized to reflect his own interests depending on his search and video viewing history. This again helped reduce the resonance effect.

The final push that Google has made till now to reduce the resonance effect even more was to introduce Recommendations which again rely on each users video search history yet rely less on the popularity of a video and more on the users own interests.

Although social networks and community driven content, which are said to be part of the buzz word Web 2.0, are expected to give even more democracy to the Internet by letting people decide what is good and what is bad, what is popular and what is not, yet it looks like Google should also work on developing a more robust algorithm to determine the popularity or the 'niceness' of a video on not just rely on simple calculations of how many users have viewed a video.

Perhaps Google should consider adding a feature similar to the fascinating interestingness feature found at Flickr which is able to automatically discover marvelous photos using a complex algorithm.

Creating Email Autoresponders in cPanel

This simple Flash video tutorial from Bluehost shows you how to create an autoresponder for your email from within cPanel.

Wednesday, January 31, 2007

3D Modeling Made Easy

Google SketchUp makes creating 3D models really easy. Check out these interesting SketchUp video tutorials.

Tuesday, January 30, 2007

Windows Vista Launches

Microsoft has finally launched its full range of Windows Vista editions.

24-Hour PHP Competition

What can you develop with PHP in 24 hours? That's what PHPThrowdown aims at finding out. PHPThrowdown is a PHP competition in which contestants compete against one another using PHP during a 24 time frame.

Monday, January 29, 2007

SQLite Rocks

The database management systems in common use are relational client-server databases. MySQL, Oracle, Microsoft SQL Server and many other popular RDBMS are built on the client-server model. SQLite is an interesting departure from that well known model. SQLite is a library that can be embedded within an application and become part of this application. You no longer need to setup, configure and manage a separate DBMS to do database transactions. You can do all this from within your own application without a need for any external system.

Of course SQLite would be suitable for specific purposes only. Most production web applications cannot rely on it. Yet the idea itself of having such a nice way to do database transactions in itself is interesting.

Cairo ICT 2007

The 2007 Cairo ICT exhibition will be held at the Cairo International Conference Center from February 2nd to February 4th, 2007. The exhibition will be accompanied by a forum.

The Cairo ICT 2006 report provides statistics on last years exhibition.

QEDWiki - Easier than Visual Basic

IBM is working an a new revolutionary technology that enables developers to do drag-and-drop web development from within a browser! QEDWiki attempts to make the process of developing common types of web applications extremely easy. QEDWiki can also be used by non-programmers to develop a range of web page types.

Women Can Code Too

Who said that only guys are good at programming? Women too can be good at writing code. Irina Khmelinina is one of the contributors to the open source Zend Framework project.

Version Control in Open Source

CVS had been the classic standard version control system for open source projects. Still many open source projects use CVS as their version control system till this very day. Today, Subversion is the new kid in town. It offers better functionality than CVS and is being used by a growing number of new open source projects.

MVC Design Pattern Gets More Popular

Due to the increased reliance of web application frameworks on the MVC design pattern, it is becoming the most popular object oriented design pattern out there. This is leading also to spreading the concepts of design patterns to the web development community.

IRC Still Alive

Since many years ago, I've kept trying to use IRC but found technical difficulty in doing so. I used to think that IRC was something of the past and is either dead by now or used only by computer geeks. I kept seeing references to IRC rooms though at open source communities for developers to communicate through. Today I said to myself I'll give it another try.

I discovered that the problem was that I was using the popular mIRC program which was not so user friendly actually. I downloaded and installed XChat and was able to do IRC at once. I love it. You can download an XChat version for windows from here.

Saturday, January 27, 2007

Ubuntu

Ubuntu is a Linux distro gaining popularity.

Googlebombs Deactivated

Googlebombs have been around for quite a while. A year ago, Google acknowledged their presence yet mentioned they'll just do nothing about it. Yesterday, however, Google announced the introduction of a new algorithm to its search engine which "minimizes the impact of many Googlebombs." The trick is to show web pages that talk about the particular Googlebomb searched for instead of returning the site that was subject to a Googlebomb attack. Googlebombs look like they will finally be deactivated.

Friday, January 26, 2007

One Laptop per Child

Egypt, India, China and other developing countries have expressed desire to buy one million laptops each from the OLPC program when the laptops become ready. Each laptop costs only $100. The project is supported by MIT, Red Hat, AMD and Google.

Thursday, January 25, 2007

Google Imitates Yahoo! Video

Yahoo! Video is a search tool that helps one search for videos scattered on various websites. Google Video was something different. Google Video acted as some sort of hosting place for video content. Of course you could search for videos using Google Video but you were only able to search for those videos that are hosted on Google Videos itself and not for videos present in the rest of the web.

When Google bought YouTube, the expectation was that Google would in one way or another merge both Google Video and YouTube into one thing. It was expected that YouTube might ultimately be dissolved into Google Video, since both provide essentially the same service which is hosting video content and building video sharing communities on top of that.

Today, Google announced that it would continue supporting YouTube as a separate entity providing video hosting for its video sharing community. On the other hand, Google Video will be refocused to act as a search engine for videos on the whole web. Google Video allowed you to search only content that is hosted on Google Videos itself. Starting from today, it allows you to search for content present on YouTube as well. Later on Google will add more video content providers to its video search and ultimately search all videos found on the web. This brings us to essentially what Yahoo! Videos was doing ever since it first started.

This move sounds reasonable. When you use Google Images it allows you to search the whole web for images. So it's reasonable enough that when you use Google Video it would allow you to search the whole web for videos.

This explanation today by Google clarifies things out. It also explains why Google kept using YouTube instead of Google Video to publish its own videos ever since its acquisition of YouTube. I wonder if the next step would be to disable the hosting of new videos at Google Video and to make this only possible via YouTube. We'll just have to wait and see.

Monday, January 22, 2007

Satyam in Egypt's Smart Village

Satyam, the giant Indian IT company, is starting a 300-seat center in Egypt's Smart Village. Not only is Satyam aiming at capitalizing on the availability of a pool of software engineering talent in Egypt, but it is also eyeing the growing Egyptian IT market. Read more in the Satyam Expands into Egypt article.

Sunday, January 21, 2007

Egypt vs. India in IT Exports

According to Business Today Egypt, Egypt's IT sector was worth $70 million in 2002. Egypt IT exports amounted to $105 million in 2005 while those of India reached $12.2 billion in 2004.

Currently, Egypt's IT industry is valued at $250 million while that of India is valued at $30.4 billion. By 2010, Egypt aims to reach $1.2 billion in IT exports, while India aims to reach $96.9 billion by that time.

I hope these numbers act as a wake up call for Egyptians working in the IT industry and make them realise the potential ahead of us.

AJAX or Flash?

Social networking with a spin. That's what Geni is all about. Family tree web applications are nothing new, but Geni attempts to take them a step further by giving them a social networking spin. The cool thing about Geni is its user interface, not only is it very easy to use and intuitive, but it's also pleasant to use. They use a Flash user interface to achieve such a result.

Google has long pushed AJAX to the limits in order to provide rich user interfaces on the Web. Despite the growing interest in and excitement about AJAX, many cool web applications use Flash to achieve a rich interactive online user experience. Although Google is using AJAX most of its web applications such as gmail, Google Docs & Spreadsheets and Google Maps, yet it's interesting to note that in one of Google's applications they use Flash instead. This application is Google Analytics.

Google Uses Microsoft Colors

Blue, red, yellow and green are the distinctive Google colors. Those same four colors have been Microsoft's colors ever since Windows was launched. Why is Google using the exact same four colors that have been Microsoft's for long? Was it a coincidence? Of course not.

My guess is that grouping those four colors represents a product made to be used by everyone. Windows was launched to be the easy operating system for everyone, not for an exclusive group. Google was launched to be the same, a service that is easy to use by everyone, not an exclusive group. I don't know why those four colors in particular convey this meaning, but sure marketing research experts are the ones that have the answer.

Friday, January 19, 2007

Tag or Label?

Tags are one of the defining elements of Web 2.0. When Google started gmail, it used the term label instead of the term tag. When Google developed the new version of Blogger, it also again used the term labels instead of tags.

I wondered why Google used this term instead of the other popular one. My first impression was that Google is trying to have its own terminology, same thing for instance as when Netscape Navigator had "bookmarks" while Internet Explorer has "favorites", another similar pair of terms in the two browsers is "reload" and "refresh" and so on.

When Google used the term label instead of tags in its new version of Blogger I said to myself this might be to continue on the same tradition of gmail. But I noticed something that made me get puzzled. I found that in Google Docs & Spreadsheets, Google does not use the term label and used the term tag instead! That was really puzzling to me and got me thinking in a different path asking myself if the two terms actually had different meanings.

Perhaps Google is still using the term tag in Google Docs & Spreadsheets as a continuation from its predecessor Writely. I suggest that Google would unify its terminology and use the term label there as well. Or do you think Google should instead go with the rest of the world and use the popular and almost standard term tag in gmail, Blogger and any other of its services?

By the way, Google uses the term labels in Google Bookmarks while it uses the term tags in Google Reader. Is this making the situation more puzzling or is it giving any clues to the existence of some subtle difference between a label and a tag?

In Google Video and in Picasa Web Albums, Google uses the term tag. Are you starting to see a common thread now and a consistent pattern emerging on when to use the term tag and when to use the other term label, or is it getting even more puzzling?

Thursday, January 18, 2007

Web Design Course at Resala

I was delighted today to receive a phone call from Islam who works at the Masr El Gedida branch of Resala. I had previously volunteered to deliver a mini-course in HTML there. He asked me to start a fresh web design course. I really missed Resala having not been there for a couple of weeks. I agreed to deliver the course.

My plan is to start with the basics of HTML, give a little CSS then move on to Dreamweaver. I plan to make the course light and simple. I want it to act as an introduction and to pave the way for a correct start in web design.

The course will start tomorrow Friday 20th of January 2007, God willing. It will be from 1 PM to 3 PM every Friday at the Masr El Gedida branch of Resala. The course is free to attend.

Intel Makes Dust Resistant Computers

Ever sicnce I faced the problem of noisy computers I've been thinking a lot about the amount of heat and dust computers in Egypt go through. These computers are not actually designed for our weather conditions. They are designed for dust-free environments and places with lower temperatures than hours. Both heat and dust accumulated in a computer in Egypt cause it to become more noisy with time, reduce its lifetime and may in extreme cases cause headaches to the user and reduce work efficiency or gaming pleasure.

I've been increasingly thinking about why not someone design a computer specially for our type of environment. A computer that is dust-resistant and can work efficiently in high temperatures. That's why I was delighted to know that Intel is developing computers that can accommodate environments with high temperatures, high humidity and dust. The ruggedized PC was initially designed for India, but other countries are expressing interest in it.

I believe when such dust-resistant computers enter the mainstream Egyptian hardware market they will be a blockbuster.

Wednesday, January 17, 2007

Thousands of Scripts

HotScripts contains thousands of scripts in various server-side scripting languages such as PHP, ASP, Perl, Python and even Ruby on Rails among many others. There are also client side scripts in JavaScript.

A Crash Course in Smarty

I liked this Smarty crash course. Smarty is popular PHP template engine. It has many elements of a good tutorial. It is direct and to the point. It also shows side by side the code and output of that code. This way of illustration is an excellent one for the brain.

PHP Access Control

While looking around for a ready-made way to put some sort of an access control system for my PHP web application I bumped into this open source script that provides PHP Generic Access Control Lists.

Tuesday, January 16, 2007

CakePHP Tutorial

IBM has an interesting tutorial about CakePHP, the popular PHP framework. I usually like IBM tutorials because they are clear and easy to follow.

Excellent Training Concepts

I really lift my metaphorical hat in praise for these excellent training concepts referred to at the Moodle web site. Because I love delivering IT training and had been doing so on a professional basis and now on a volunteering basis, I highly appreciate those concepts mentioned at the Moodle site. I know that those concepts are really true and are the core of what spells out the difference between and good and a bad training course.

MDC 2007 in Cairo

Last year they've learnt the lesson, Microsoft's MDC attracted an extraordinary number of attendees. This year they are making the MDC 2007 attendees fee for 100 LE! That's interesting. This will help reduce the number of attendees, and make some cash at the same time *smiles*.

Joomla!

Joomla! looks like an interesting open source content management system.

Saturday, January 13, 2007

Cool Web Design

Here is a stunning example of what I call cool web design. The gradient background color, the splash of colors at the top left, the simplicity of design, the large space of 'air' in the page to breath in, the links and the fonts all make this web page have a soothing effect on the mind and soul. That's what I call cool web design.

Black Box Testing

This educational video clarifies the difference between various types of software testing, including black box testing, glass box testing, acceptance testing, unit testing, system testing, integration testing and other types of software testing. Watch the Black Box Testing video.

Friday, January 12, 2007

XFN and Social Networking

If you keep a personal blog, you might put links on the side bar linking to other people's blogs. Those people whose blogs you are linking to can be your friends, your colleagues, your relatives ... etc. XFN, or XHTML Friends Network, is a standard way to indicate your relationship with the owner of the blog you are linking to.

The XFN code indicating the relationship between you and the owner of the blog you are linking to is written inside the XHTML anchor tag itself. Here are some examples.

So what's so good about this? If XFN spreads out in links inside blogs and other community web spaces, then a new generation of web applications will emerge able to read such relationships and understand them. This can result in a huge social networking connecting people on the web to one another.

Thursday, January 11, 2007

SMF - An Easy to Upgrade Forum System

SMF is an open source forum system. What I really liked most about SMF is the ease by which you can upgrade to the latest version whenever it is out. In other open source solutions, it is often not easy to upgrade to a newer version. You usually have to download the new version, upload it to your site, then fix some stuff that could have been broken due to the upgrade.

With SMF, each time a new version is out, all you have to do to upgrade to that latest version is to click on a single button inside the admin area of the installed forum system itself, and the magic happens, it self upgrades to the latest version, with no problems taking place. For me, this is perhaps that brightest thing I found in SMF, specially after the headache I had trying to upgrade my Drupal to a new version, loosing my old data in the process.

Wednesday, January 10, 2007

Egypt Going Digital

In it's January 2007 article Year of the Technophiles, Business Today Egypt traces the increased spreading of IT into the Egyptian community.

Egypt IT Exports Reach $700 Million

Egypt IT exports have reached $700 million and are expected to rise up to $1 billion by 2010 according to Gulfnews.

Tuesday, January 09, 2007

Apple Makes Mobile Phones

Apple Computer Inc. has changed its name today to Apple Inc. Apple has revealed the release of its first mobile phone. Apple will be competing with giant players in the mobile phone industry like Nokia and Motorola.

Monday, January 08, 2007

Is PostgreSQL better than MySQL?

I've just read PostgreSQL vs MySQL: Which is better? and found it to be highly interesting.

Death of XML?

Will JSON be the future replacement for XML? XML is markup, JSON is not like markup languages that use . JSON looks more like the C programming language. It is a richer way to describe data and facilitate data exchange between different languages/machines in a standard way.

Some argue that JSON would be a much better alternative than AJAX which relies on XML. Time will prove which technology will win in the future.

Is Google Using Extreme Programming?

Is Google using extreme programming? One of the elements of extreme programming is user stories. Perhaps Google is not using extreme programming as is, but it looks like it is using some similar approach to software development.

First, Google toys with very simple applications with very few features, then adds more features later on based on usage patterns and feedback of users. Take for instance Google Page Creator. The feature set it presents is really minimal. This is not only good for users, making the application easy to use and less confusing by not providing too much choices, but also this is a method for developing applications, by starting with very basic functionality then adding only what users need based on their feedback and usage patterns.

As for user stories, Google tries to collect them using several means, two of which are discussion groups and direct requests for feedback and 'testimonials' in the form of stories. Here are some testimonials about Google Docs & Spreadsheets. In the Google Docs & Spreadsheets Help Group there is a special section dedicated for encouraging you to share your storey about Google Docs & Spreadsheets. Those stories and those testimonials are not for the sake of testimonials, but Google is using them to develop its applications. This is the methodology Google is following. Sure such a methodology is unique, not all applications can be built this way, for Google has a huge user base from which it can sculpture its applications by feeding on their feedback, stories and usage patterns.

Here is another page from Google pausing as a testimonial page, enticing people to share their stories in the hope of getting features there. A top link at the page explicitly calls for users to Share your story with us.

Sunday, January 07, 2007

Bad Web Sites

I came across this article that explains to you how to avoid making a bad web site. It lists many common mistakes bad web sites fall into and gives direction to where one should head when making a web site. I recommend reading it. Actually, it is a chapter in a book with the name Philip and Alex's Guide to Web Publishing.

Friday, January 05, 2007

Visual FoxPro Still Alive

Microsoft Visual FoxPro is still alive till this very day.

Java SE 6

Java SE 6 is currently the latest release of the Java SE platform. Java SE 6 introduces a bunch of new features.

Google Alerts

Google Alerts has bee around for quite a while. "Google Alerts are emails automatically sent to you when there are new Google results for your search terms." That explains what Google Alerts are.

I really find them handy. For instance, I can create an alert with my own name as the search term. Then whenever a website mentions my name Google sends me an alert in my email box. That's pretty cool. I also keep track of topics that interest me, for instance I have an alert for "Google Egypt." I'm able to keep track of anything said on the web about this topic. Go ahead and try using Google Alerts with a search term that interests you.

Thursday, January 04, 2007

Latin America Code Jam

Google announced the Latin America Code Jam. I hope the day comes soon when Google makes it's Code Jam for the Middle East region.

Google uses Perforce SCM for Version Control

As this job ad for Web Developer at Google suggests, Google is using the Perforce SCM System for version control. Many software companies use Microsoft's Visual SourceSafe for version control. Subversion is another popular version control system. The most well known version control system in the open source community is CVS. ClearCase is still another version control system in wide use. Perforce tries to show its advantage by comparing all those popular version control systems.

Faster Web Browsing

Google Web Accelerator claims to make your web browsing experience faster if you are on DSL connection.
Google Web Accelerator uses various strategies to make your web pages load faster, including:
  • Sending your page requests through Google machines dedicated to handling Google Web Accelerator traffic.
  • Storing copies of frequently looked at pages to make them quickly accessible.
  • Downloading only the updates if a web page has changed slightly since you last viewed it.
  • Prefetching certain pages onto your computer in advance.
  • Managing your Internet connection to reduce delays.
  • Compressing data before sending it to your computer.

Sunday, December 31, 2006

Intel Installs WiMAX in an Egyptian Village!

Now this is really cool. Intel connected two public schools and other public services using WiMAX in a village in Egypt. Looks like Egypt villages are starting to go digital!

Thursday, December 28, 2006

Analysis and Design

I couldn't help myself but to point to this well presented analysis and design example. Although it is done for a Ruby on Rails web application, yet the object oriented analysis and design concepts and process presented can be used for any web application developed using other scripting languages and web application frameworks.

RadRails Tutorial

If you've already installed and configured RadRails, here is what appears to be a good RadRails tutorial that goes beyond the fast and simple basics.

RadRails Demo Video

If you are new to RadRails, the popular Ruby on Rails IDE, have a look at this RadRails demo video to get familiar with some of the things it can do and how it does them.

Wednesday, December 27, 2006

Cheat Sheet for Google Search

Here are a couple of interesting operators to use when searching in Google. Have a look at this Google search cheat sheet.

I often use the define: and the site: operators, but I had never used the date: operator, perhaps I should try it as it could be really handy and useful in many cases.

Tuesday, December 26, 2006

CodeGear, A Borland Spinoff

The popular Delphy, JBuilder, C++ Builder and other previously Borland software development tools are no longer Borland tools! Borland has created a spinoff called CodeGear to handle such wildly popular tools.

EasyEclipse for C and C++

Perhaps educational institutions in Egypt teaching C/C++ should stop using the age-old Borland C++ 3.1 or even Borland C++ 4.5 for introducing C/C++ programming to their students. Now EasyEcplipse for C and C++ is an free open source IDE that can get the job done. It is based on the open source Eclipse project.

Integrating RadRails into InstantRails

After downloading and installing RadRails, I was clueless about how to use it with InstantRails. I tried to use RadRails but failed completely. This made me leave RadRails and confine myself to using InstantRails alone from the command line console and the rudimentary file editor that comes with it.

Hearing about how convinient RadRails is, I thought of downloading the Ruby on Rails stack one by one by myself and installing it, first Ruby, then rails and finally downloading and installing MySQL then configuring them all and running them. But that sounded like a headache, after all InstantRails was doing all this for me in a single step.

I then, by accident, came across this clear and simple description of how to configure RadRails to work with InstantRails! Mission accomplished.

Installing ActiveRBAC

I have downloaded and uncompressed InstantRails on my Windows XP system. In order to perform user authentication in my web application, I attempted to install the ActiveRBAC library for Ruby on Rails. Steps for installing ActiveRBAC are detailed in the excellent ActiveRBAC tutorial. However, to further take confusion away from installation steps, I will outline here the final steps I have come up with after some trial, error, failure then success on my side in installing ActiveRBAC on my Windows system.

  1. Start InstantRails.
  2. Open a Ruby console window.
  3. cd your_app_name.
  4. ruby script/plugin discover.
  5. Reply by no to all questions, except the two questions for http://svn.rails-engines.org/ and https://activerbac.turingstudio.com/.
  6. ruby script/plugin install engines.
  7. ruby script/plugin install active_rbac.

Congrats, you're done!

Monday, December 25, 2006

Trying Microsoft Office 2007

Perhaps I'm now a late adopter when it comes to Microsoft technologies and products, yet I just managed to try my hands with Microsoft Word 2007. I have not yet grasped the big change from the previous version of Microsoft Word except for the neater and sleeker interface. The interface looks and feels really cool. I believe also getting rid of the age-old concept of menus is a relatively big step. After all ever since the days of DOS, we've been used to programs using menus. Till this days almost every desktop program uses menus. So replacing traditional menus with this neat new way is quite cool and kind of a change in long standing concepts. This said, I still would like to say that the new way of getting about your tasks done in Microsoft Office 2007 is similar to a great extent to the old menu system, except that you see icons organized in front of you instead of a pull down menu. So in terms of programming, it's not really that different, yet in terms of usability, I believe it is a far concept from the age old pull-down menu style.

RadRails - IDE for Ruby on Rails

RadRails is the leading IDE for Ruby on Rails. RadRails is a far cry from FreeRIDE, the popular Ruby IDE. RadRails is way better. RadRails is based on the IBM-backed open source Eclipse IDE. RadRails is basically a plugin for Eclipse. RadRails is built on RDT, an Eclipse plugin for Ruby, and JRuby, a pure Java implementation of Ruby to work with Eclipse. Go ahead and download RadRAils and experience its magic.

Sunday, December 24, 2006

Wikipedia Challenges Google

The founder of Wikipedia is teaming up with Amazon to create a search engine the competes head-to-head with Google and Yahoo. The new search engine is called Wikiasari. The idea behind the Wikisaria search engine is to to be driven by the same kind of community force that has been driving the Wikipedia.

I personally believe that both Google and Yahoo will be fighting back ferosiously. Google's Co-op, Google Base and Google Apps for Your Domain programs offered by Google will be a strong force by Google in the direction of using the massive user community to help refine search results by classifying and creating content.

Code Igniter - A PHP Framework

As Django is a web application framework for Python, and Rails is a web application framework for Ruby, there is also Code Igniter, which is a web application framework for PHP. Code Igniter appears to be a much better PHP framework than CakePHP.

Converting ASP into PHP

ASP2PHP is a cool tool to convert your ASP code into PHP. Here is how to also convert your Access database into MySQL.

Agile Software Development

Extreme Programming is one of the popular, relatively new, agile software development methodologies. Scrum is another agile methodology that is gaining sweeping popularity. Both Scrum and Extreme Programming share the main concepts of agile software development, but while Extreme Programming focuses more on the details of how to do the programming, Scrum lifts itself a bit towards the project management level. Both methodologies can be used together at the same time: Extreme Programming for the technical part and Scrum as a project management wrapper.

Another agile software development methodology also gaining in popularity is Test Driven Development. There are many other new methodologies rising in popularity, but they all share the same concepts of Agile Methodologies. The Wikipedia has a good article about Agile Software Development.

User Authenticaiton in Ruby on Rails

Unlike in Django, the popular Python web application framework, Rails, again the popular Ruby web application framework, does not offer user authentication out of the box. If you want to do user authentication with Rails, you must use some plugin or write the authentication part of the web application from scratch. There are a number of ways to do authentication in Ruby on Rails. The salted hash loging generator is one popular method to do user authentication in Rails. Another method is the ActiveRBAC. RBAC stands for: Role Based Access Control. The nice thing about ActiveBRAC is that it offers more features the most important of which is allowing users to access parts of the web application based on roles. To get started, try your hands with this well-written ActiveRBAC tutorial.

Saturday, December 23, 2006

Ruby on Rails Forum

Get more familiar with Ruby on Rails and have your Rails questions answered at the Ruby on Rails Forum.

Google Uses Scrum

Google is using the agile Scrum software development methodology.

Google Co-op

Google Co-op is Google's attempt to involve users into enhancing the results of search engines. Google believes, and rightly so, that user involvement and user creating content, tagging and ranking are the necessary supplement to automated computer algorithms. This is the spirit of the highly controversial phrase: Web 2.0.

Second Life - A Real Life Game!

It took me quite some time to grasp the concept behind Second Life. Second Life is kind of a computer game. You can think of it as a multiplayer game. The main difference is that you don't just play with 8 or 10 players, but you are playing it with hundreds of thousands of players at the same time and you can interact with any of them while you are playing the game! Another crucial difference is that the game never ends. You just log in to the game at any time and you find it going on between the massive number of people playing in it. There is no win/loose situation like in regular games.

The interesting thing about Second Life, and similar 'games', is that you can build stuff inside the game. You can build a house, you can talk to other players, you can move around and you can buy things. The mind boggling feature of Second Life is that you can buy things with real money! This concept is the hardest to understand at first when you are new to Second Life. Yet there are people making a lot of money buy building houses for example in Second Life and selling such houses to other players in Second Life! You might think that this is kind of crazy, but think of it as someone painting a picture and selling it. The people who are building or making things inside Second Life and selling them with real money to other players are like those painting a picture then selling this picture or design to others. In Second Life, you buy and sell using artificial money inside the game, but you can later go ahead and exchange such artificial game money with real US dollars. That's the really amazing thing about Second Life and the most difficult concept to grasp at first. You can try Second Life for yourself to be able to better understand the whole concept behind it.

Renting Computer Processors

EC2 is a service offered by Amazon.com. It allows you to rent computing power. Renting hard drives to store your data has been a service offered by many and used by an increasing number of consumers. Now EC2 is offering rent not of storage space, but of computing power. Computing power of course is comprised of computer processors and RAM. The interesting thing about this service is that you can rent computing power as small as a 1.7 GHz processor to as large as thousands of such processors. Such processing power is prices by the hour. A very interesting concept.

Imagine Cup 2007

I hope Egypt programmers manage to win high ranks in Imagine Cup 2007.

ITWorx Web Site Redesigned

I would like to congratulate ITWorx on the recent redesign of their web site. I have long believed they deserved such a redesign. Now their web site more closely reflects their actual size and level. Congrats to the hundreds of Egyptian Software Engineers working at ITWorx.

Friday, December 22, 2006

Ruby Inventor Speaks!

Listen to the Japanese guy who invented Ruby. Yukihiro Matsumoto is the inventor of the Ruby language.

Ruby Developers in Egypt?

I came across this interesting site today, it's called Working with Rails. It is a community web site that allows Ruby on Rails developers to add their names and other info about themselves. I found 6 Ruby on Rails developers listed under the Egypt section of the site. I added myself, so now there are 7 Ruby on Rails developers from Egypt listed at Working with Rails. I hope this number increases many folds as time passes. I'm planning to offer a brief free Ruby on Rails crash-course at Resala, Masr El Gedida branch God willing.

Thursday, December 21, 2006

Steps in Creating a Rails Application

For those new to Rails, here is a proposed sequence of steps to follow in order to make a Ruby on Rails application:

  1. Use the rails command to generate a skeleton for your web application.
  2. Create a database and its tables using MySQL. Make sure to follow Rails conventions in naming tables and table columns.
  3. Use the scaffold generator to automatically create each model and its controller and views.
  4. Manually code relationships between tables into model files.

You can now go ahead and view your web application in the browser after starting the web server.

You can start shaping up your web application from here. Go back to the controllers and views, make needed modifications then go back and view your application in the browser. Keep modifying the application files till your web application is complete and is shaped like what you have in mind.

The above sequence is merely a proposed sequence. It is specially suitable for new comers to Ruby on Rails. Sure there are alternative paths. For instance, one can start by creating an empty database, and use Ruby on Rails migrations to create the tables. One can also go about writing controllers and views by hand without first using the scaffolding features of Rails.

If you would like to use migrations rather than creating the database tables directly with MySQL, then you can follow this alternative approach:

  1. Command line prompt, rails_apps folder: rails appname
  2. MySQL command line console: create database appname_development;
  3. Generate a migration after going to the appname folder: ruby script/generate migration add_tables
  4. Edit 001_add_tables.rb file to define database tables.
  5. rake migrate
  6. For each model (~table): ruby script/generate ModelName
  7. Define relationships between database tables inside model files (appname/app/models/ModelName)
  8. ruby script/server
  9. Open your browser at: http://127.0.0.1:3000/ModelName+'s'

Wednesday, December 20, 2006

From 2D Mouse to 3D Remote

Nintendo has made the Wii Remote, a 3D remote used in playing computer games on its Nintendo's Wii game console. The Wii Remote contains sensors by which it is able to detect motion in 3D and know its position in 3D.

The typical computer mosue only moves on a 2D surface controlling a pointer on a 2D screen. Wii Remote opens the door for wireless 3D controllers that can give users a totally deeper experience. Operating systems in the future might offer a 3D interface with much richer functionality and ease of use than the 2D interfaces offered by the current popular operating systems.

New Blogger Out of Beta

Google has finally released the new version of Blogger out of beta! The new version of Blogger contains a lot of interesting and useful features and is way more convenient in terms of usability and performance than the older version. Take the tour of the new Blogger features.

Migrations in Ruby on Rails

When Ruby on Rails was first released you had to first create a database and all its tables by yourself. If you were using MySQL for instance, you could have created the database and its tables via the command line console or via PHPMyAdmin for instance. You had to do all this outside of Rails then go to Rails in order to start developing your web application.

With the introduction of migrations in Ruby on Rails, now all you have to do is create an empty database without even creating any tables in it. Then you go into Rails and write migrations. Those migrations take care of creating the database tables for you. The really interesting and useful thing about migrations is that you can expand your database by adding more tables or more columns to existing tables in an incremental way. The application would still run smoothly. Most importantly, you can role back to previous states of the database also using migrations. For instance let's say that after you had a database containing a table with 4 columns you made a migration to add a 5th column to that table. You can easily role back to the previous state of the database when it had only 4 columns by using migrations in Ruby on Rails. With complex database structures that have many tables and many columns built in an incremental way, the migration feature of Rails makes it very convenient to go back and forth between different stages of the database without worrying about spoiling it.

Computer Student Conference in Egypt

The Faculty of Computers and Information at Cairo University (FCI-CU) joins forces with the Faculty of Computers and Information Science at Ain Shams University (FCIS) to organize the Student Conference of Computers and Information (SCCI).

Tuesday, December 19, 2006

Voicemail Invasion

Voicemail is not a new concept, but so was the concept of email when Google first launched gmail. Now Google is breathing life once again into the idea of voice email, voicemail, by allowing anyone with a Google account to send voice messages via Google Talk. The ease by which sound messages are received in the email box of the person you are sending to is what makes this feature unique. Google makes it so easy to listen to the voice message one has received and can even download it as an MP3! I can envision the time when a considerable amount of emails sent back and forth between people would consist entirely or partly of a voice message. Thanks Google for popularizing this idea once more by making it so easy and convenient to use.

Monday, December 18, 2006

Using the Tab Key in Windows cmd

Hey, I admit I only knew this today! And probably would have never known it throughout my life. I've been using DOS long before DOS version 6.0. I've also been using "Command" to reach a DOS console in Windows 95 and before. I've used "cmd" since Windows 2000 and Windows XP, yet I never knew that the tab key had a special interesting function in the Windows console!

Do the following in Windows XP: Click on Start; click on Run... then type cmd to get to the command line prompt (DOS-like). Now type the first few letters of any folder and press the tab key. If that folder exists at the current place, Windows will automatically complete the name of the folder for you! I know this might be considered as a trivial thing, yet it is so handy, specially given the presence of long folder names at some times.

The more interesting thing about this issue and what really made me write about it is the fact that no matter how long you've been using tools and programs, there could be small things hidden from you that you never discover but by chance and can take really long for you to know.

Sunday, December 17, 2006

Django

Django is a web application framework based on the Python programming language in the same way Rails is a web application framework based on the Ruby programming language. Both Python and Ruby are object oriented server-side scripting languages used for developing web applications. Django and Rails offer a framework for building web applications with high speed. Both claim that PHP is tedious and that web applications built using PHP are a difficult to maintain.

Browse Faster with Fasterfox

Fasterfox several interesting tweaks to make your web browsing experience smoother and faster. You'll have to be using Firefox of course.

Arabic Search Engine

Developers of Maktoob are releasing the beta version of an Arabic Search Engine.

Friday, December 15, 2006

Learning Ruby

Ruby is a server side scripting language, like ASP and PHP. Ruby is built from the ground up to be completely object oriented. It has elegant syntax which helps write beautiful code. If you are already acquainted with object oriented programming through C++ or Java you'll find learning Ruby easy and exciting. Go ahead and try Ruby online!

Death of the Web Hosting Business?

Google is making a tremendous leap which might spell a sharp turn in the web hosting business. The leap is almost as massive as the one Google made when it announced gmail and it's 1 GB storage when the other big players only offered 6 or 2 MB of free email storage.

Now Google is offering free hosting space and tools for everyone! All you have to do is just purchase a domain name from one of their partners for $10 per year and you get the storage for free from Google! Amazing.

I wonder what is Google up to next. In any case, I believe this will have a massive impact on the web hosting business scene in the months to come, specially if Google follows this up with additional surprises.

Thursday, December 14, 2006

Planning a Web Application

Getting Real is a book by 37signals, creators of the popular project management and collaboration web application Basecamp from which the Ruby on Rails framework emerged. The book discusses a complete methodology for rapidly developing elegant web applications. Have a look at the free online version of the book.

Wednesday, December 13, 2006

HTML + CSS Training at Resala

I'm currently delivering a brief mini-course at Resala Masr El Gedida introducing HTML over 4 sessions of 1.5 hours each. That training starts at 10:00 AM every Friday. I've already delivered the first session.

I'll also, God willing, be touching upon CSS so that new comers to web development/web design would make neat web sites from the start without suffering from using the deprecated font tag or struggling with the table tag to define page layout.

This mini-course at Resala is totally free of charge is is being delivered in the small 8-computers lab at the Masr El Gedida branch of Resala.

I really enjoyed delivering the first session a lot. I'm thinking of volunteering to deliver a brief introductory course about Ruby on Rails at Resala also after I finish the current one God willing. A prerequisite for attending such a course would have to be at least some knowledge of web development in either PHP or ASP in addition to awareness of object oriented programming concepts.

You may call Ahmed Momtaz or Islam who are responsible for the computer lab at Resala Masr El Gedida via one of the following phone numbers: 6207801 / 6207802 / 6207803 / 6207804 /6207805 / 6207806. Then ask to be connected to the "Computer Training Center". You can ask Ahmed or Islam about the time the course is starting or about the availability of other free courses delivered by other volunteers.

If you are expert in some IT field and you have a talent in training, perhaps you may like to volunteer and deliver some course at Resala. You may call 19450 using a regular phone line to be routed to the Resala branch nearest to you.

Tuesday, December 12, 2006

Java Developer Conference in Egypt

After organizing the ESEA 2006 job fair, the Egyptian Software Engineers Association is joining forces with the Egyptian Java Users Group to host the Java Developer Conference in Egypt on the 20th of January 2007. It will be held in the Saraya Hall of InterContinental Citystars Hotel.

Saturday, December 09, 2006

Extreme Programming

I've bumped into Extreme Programming a couple of years ago. I found the concept to be extremely interesting. The aspect that caught my attention most was the pair programming concept found in XP. This aspect of Extreme Programming lets two software developers sit side by side at the same computer, one of them writes code while the other observes and comments whenever needed! The concept at first sight sounded counterproductive. At first glance it appears that a project would take double the time it should because half the programmers are not coding and are sitting idle. In practice however, the concept of pair programming actually reduces testing and debugging time. At the end, the software project my go faster or at the same pace of a project where pair programming was not used. Why bother then and go for pair programming if the project would take almost the same time? The answer is that with pair programming the code is much more robust and the system is tighter and more stable.

Extreme programming has many other interesting features and concepts. Get to know more about it by having a look at those XP rules.

Friday, December 08, 2006

Make a New Linux!

Linux From Scratch provides you with "step-by-step instructions for building your own custom Linux system." I found the idea amazingly interesting a couple of years ago when I bumped into it. Although I have not tried it myself, yet I believe there are those out there who would love to give it a try.

I just came across their web site a while ago and I noticed it had a sleeker cleaner look. This made it look much more appealing to me. After all this could reflect a more tidied and user friendly approach in their step-by step instructions. I remember last time a sow their site a couple of years back it looked so geek-like. Now it's neat.

You can think of LFS (Linux From Scratch) as a book which gives you instructions on how to compile different bits of source code, taken from the open source community of course, to finally arrive at a Linux operating system. This OS will be unique because you are the one who built it. You may decide to take it further and pass it around. Who knows, it might turn out to be a popular Linux distro. Perhaps you can name it after your own name too!

It came to my mind that perhaps one of the tests one could make to an job applicant is to provide him/her with the LFS web site and ask him/her to build a Linux distro. This will show how the applicant can read and understand English, solve problems and show perseverance. Perhaps it could be too long for a mini-project for job assessment. Maybe it would be a better idea to make applying LFS be a graduation project for Computer Engineering grads for instance. That would be interesting. They also would have the time to build a usable and useful distro. I hope some Computer Science or Computer Engineering students in Egypt pick up this idea and take it for their graduation projects. Would be a really good exercise in problem solving, and in learning new technologies and how things work. Perhaps the distro they come up with too could be of use and even wide distribution and adoption in our community later on.

Tuesday, December 05, 2006

JavaScript 1.7

JavaScript is cool. JavaScript 1.6 had been the one in use. Now JavaScript 1.7 must be cooler and Firefox 2 is making use of it! I wonder what kind of impact this new version of JavaScript would have on AJAX.

Microsummaries in Firefox 2

Firefox 2 is introducing some interesting feature called microsummaries. Normally web pages have static titles, which appear in the title bar and are used when bookmarking a web page. Microsummaries allows those previously static bookmark names to be dynamic and change along time. I'm still puzzled about the practical usefulness of this feature, maybe I don't understand it well still, but perhaps its importance becomes clearer when it is combined with RSS/Atom feeds. Maybe that's why Firefox is introducing it, having been a leader in supporting feeds since earlier versions of Firefox.

Internet Explorer 7 - Final Push

Microsoft is pushing Internet Explorer 7 now to the rest of the people who have not installed it yet. They are pushing it via the Windows Update feature so that everyone will be automatically updated. Looks like a response to the release of Firefox 2.

Sunday, December 03, 2006

OASIS

OASIS is developing standards for structured information. XML is a key component of their standards.