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.