Sunday, December 31, 2006
Thursday, December 28, 2006
Wednesday, December 27, 2006
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
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.
- Start InstantRails.
- Open a Ruby console window.
- cd your_app_name.
- ruby script/plugin discover.
- Reply by no to all questions, except the two questions for http://svn.rails-engines.org/ and https://activerbac.turingstudio.com/.
- ruby script/plugin install engines.
- ruby script/plugin install active_rbac.
Congrats, you're done!
Monday, December 25, 2006
Sunday, December 24, 2006
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.
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.
Saturday, December 23, 2006
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.
Friday, December 22, 2006
Thursday, December 21, 2006
- Use the rails command to generate a skeleton for your web application.
- Create a database and its tables using MySQL. Make sure to follow Rails conventions in naming tables and table columns.
- Use the scaffold generator to automatically create each model and its controller and views.
- 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:
- Command line prompt, rails_apps folder: rails appname
- MySQL command line console: create database appname_development;
- Generate a migration after going to the appname folder: ruby script/generate migration add_tables
- Edit 001_add_tables.rb file to define database tables.
- rake migrate
- For each model (~table): ruby script/generate ModelName
- Define relationships between database tables inside model files (appname/app/models/ModelName)
- ruby script/server
- Open your browser at: http://127.0.0.1:3000/ModelName+'s'
Wednesday, December 20, 2006
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.
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.
Tuesday, December 19, 2006
Monday, December 18, 2006
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
Friday, December 15, 2006
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
Wednesday, December 13, 2006
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
Saturday, December 09, 2006
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
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
Sunday, December 03, 2006
Monday, November 27, 2006
The W3C web site uses clean URLs in all its web pages. One interesting article in the W3C about clean URLs talks about this. The article though comes under the name Cool URIs.
Saturday, November 25, 2006
Tuesday, November 21, 2006
Perhaps Yahoo! will respond with an AJAX web site builder. Who knows.
Saturday, November 18, 2006
Thursday, November 16, 2006
Wednesday, November 15, 2006
Have a look at how Google redesigned its Google Base homepage. Google is a big fan of usability.
Tuesday, November 14, 2006
The regular Google search indexes and classifies web pages based mainly on their text content. Text is relatively easy to process and 'understand' at least in comparison to images. Images on the other hand are extremely hard to understand automatically by a computer without the help of humans. Image processing and comprehension is still a branch of AI that is under heavy research in academic places and in practice needs a lot of resources. For an online search engine to do the same processing on a astronomical number of diverse images present online this requires an unrealistic amount of resources which is not practical, and even then the system will not be fail proof. The only an online search engine can effectively 'understand' images is through the help of humans. By introducing Google Image Labeler, Google is allowing humans to help it classify images found on the Internet. An interesting thing I just noticed today is that Google asks the permission of webmasters to use images in their web sites as content for the Image Labeler. This feature is part of the Google's Webmaster Tools.
Wednesday, November 08, 2006
The interesting thing is that Yahoo! is following Google in using far fetched mind expanding ideas, by saying the capsule will be opened in year 2020 same way as Google set a far date for reaching its goal of organizing the world's information. Yahoo! selection of topic also reminds us of Google's early lunar jobs ad.
Wednesday, November 01, 2006
Saturday, October 28, 2006
Perhaps as Google comes to Egypt, it will make a CodeJam for the region.
Saturday, October 21, 2006
Google Webmaster Tools (previously called Google Sitemaps), provides you with interesting stats about how often the Googlebot (Google's web spider/crawler) is actually visiting and crawling your site. The amazing thing is that you can even control the frequency by which the Google Bot is visiting your site to make it either visit your site more often or less often than it normally does. The stats show on a graph plotted against time the number of pages the spider has crawled in your website per day, the number of kilobytes it has downloaded and the time it spent downloading your web site pages each day.
Kudoz again Google.
Wednesday, October 18, 2006
We have eagerly sought after this for long and even created a wiki page asking for the establishment of Google Egypt.
Although the regional Google office in Cairo is said to focus on marketing activities, yet I still believe and strongly hope that such presence would evolve one not-so-far day into a fully fledged Google R&D development center to be based in Cairo, similar to the one Google has in India.
Google Docs allows you to see past versions of your document. You do not have to setup anything or configure it to do so, it does so by default! At any given time, you can go to your document and see past "Revisions" of it. It's like a time machine where you can go back in time. It's a really really cool feature that is not only cool but actually useful.
To use this exciting feature in Google Docs, all you have to do is open a document then click on the Revisions tab. Then select any point in time, in the past, and you will find in front of you how the document changed since that time! Amazing!
Kudos for you Google again and a gain.
Tuesday, October 17, 2006
The problem with web applications was that compared to regular desktop applications they were pretty much slow in response time. An attempt to answer this issue came from Sun by introducing and strongly pushing Java Applets as the way ahead to create dynamic rich web applications that were responsive much the same as their desktop counterparts.
The problem with Java Applets was that they were heavy to load, not to mention you had to have the JVM installed on your machine. Microsoft, being an opponent of Java due to its threat on Microsoft's operating system and office monopoly, tried to push Flash forward as an alternative for Java Applets. Indeed Microsoft managed to throw Java Applets from their hoped for place and position Flash instead. First Flash was touted as the means to do animation for the web, which was also what Sun was pushing Java Applets to be, a way of making rich graphics and animation on the web, later Flash was pushed further and proposed as a method for making rich web clients that are interactive with users much the same as web applications, Java Applets tried to do so as well but failed.
Enter AJAX. AJAX appears to be the answer for what Flash and Java Applets failed to achieve. Indeed Google is pushing AJAX forward and using it in many of its applications such as Gmail, Google Calendar, Google Docs & Spreadsheets, Google Maps and many others.
Monday, October 16, 2006
Wednesday, October 11, 2006
Tuesday, October 10, 2006
First of all, all your documents are saved online instead of being saved on your physical computer. This means if your computer breaks down, a hardware failure happens, your hard drive is locked or damaged or any other disaster happens to your computer, your documents will still be safe, having been saved online instead of being saved on your physical machine. Of course you access your online document via a username and password, so don't worry about any intruder gaining access to your private documents because they are secure. Another cool thing is that you might switch computers, in this case you can still easily access all your documents, because simply they are stored online. If you want to access your docs from home, from work or from anywhere, they are always there. Sure there is a catch to this, which is the computer must be connected to the Internet, but who hasn't got a net connection these days anyway. Hotspots are sprouting around, so even in the streets you'll have access to the net. The future is pointing towards total connectivity where you can access the net from just about anywhere.
Besides being able to access your documents from any computer, the second cool feature of Writely is that you can decide to share one or more of your documents with a friend or colleague. You may allow one of your friends to view a document you wrote. You may even give this friend permission not only to view your document but to edit it as well! Amazing! You are in control. You can allow as many people as you like to view or edit the documents you with them to view or edit. You will realize how cool this feature is when you actually use it. If you are working on a document of yours and one of your friends, whom you've granted permission to edit that document, is editing it at the same time, you almost instantly see the edits as your friend types them! Try it, because it is a lot of fun.
Sunday, October 08, 2006
When I bought my new computer, I did have in mind putting Linux on it, at least as one of the options. The old miseries of trying to install Linux and making it figure out all the hardware came to my mind. I hoped that I can ask those who have tried and select hardware that is Linux-friendly. Yet I did non of that. I just bought the hardware and prayed it would work smoothly with Linux.
It seems that my prayers have been answered. Yesterday I installed Novel's SUSE 10.1 distro of Linux on my new machine. In below an hour Linux was setup and all hardware configured except just for the wifi card. The following day I decided to scrap Linux and install Windows just to check if the wifi card was working or not. The wifi card had a CD with it which said it has software and drivers for Windows only. Not so nice of them, but that was the case. Anyway, I installed windows, but guess what. After installing Windows it did not detect by itself the sound card, the LAN card nor the video card! I had to use the CD that came with the motherboard to set them up. Linux had done that the previous day by itself and did so very smoothly! That was the time when I realized, and for the fist time, that installing Linux can be easier than installing Windows!