Saturday, February 24, 2007

Hidden Tiger, Crouching Vista

Apple has been positioning Tiger as a better Vista for some time. The YouTube video with Microsoft at CES describing Vista and a screenshot of Tiger actually demonstrating what he is describing is a classic example of that.


I wish you

Nice AdSense cheque (not mine):

"one hundred thirty-two thousand nine hundred ninety-four"

and the biggest one I could find CAD 901,733 (about 775,490 USD)

Friday, February 23, 2007

Your internet connection speed

speedtest.net - The guys from Ookla have put together the best way to test your internet connection speed. You can test against servers all over the world using a very nice and simple to use interface. The main results will be download speed, upload speed and ping time. This website is constantly improved and they add new features on a regular basis. Beside testing you can also see some statistics.

You can also check this service provided by the same company. It has a simpler interface but the results are close.

Thursday, February 22, 2007

GPL Antivirus for Windows

Moon Secure Antivirus aims to be the best Free Antivirus for Windows under GPL license. It offers multiple scan engines, Net shield, Firewall, On access, on Exec scanner and rootkits preventions plus features from Commercial Antivirus applications. The installer size is rather small (~11MB) and it installs without a reboot.
Included there is a real-time monitor (RTM), plus an on-demand scanner for drives and a integrated context menu scan for individual files or folders. There is no GUI but you can get a pop-up by right clicking the icon in the system tray where you can initiate updates, various scans, enable/disable RTM or shut-down the antivirus. The updater responds very fast.
The memory usage is a little higher than expected (~100MB for the two processes it runs) and I couldn't find any information about how effective this antivirus is. However I recommend you to download and take a look at it.

A big promise: Rapid Application Development for PHP

CodeGear, the company responsible for continuing Borland's developer tools made an interesting announcement this week: Delphi for PHP ("a component-based rapid application development (RAD) IDE, and VCL for PHP, an open source visual component library"). Although the final product it's not yet available the promise they made - to deliver RAD productivity to PHP developers - sounds very good if we look at the promoted features:

  • VCL for PHP – Open source PHP 5 visual component library with more than 50 extendable and reusable components with seamless AJAX integration
  • Out-of-the-box database integration with InterBase, MySQL, Oracle®, Microsoft SQL Server, and other popular databases
    Integrated PHP debugger
  • Deployment of PHP applications on Windows, Linux, Solaris and other platforms
  • Internationalization support for applications
  • Drag and drop database application development using the Data Explorer for InterBase and MySQL
  • Code editor with Code Insight, Code Explorer, and Code Templates, making it easier and faster to write PHP code
Delphi for PHP is scheduled to be available in March. The product will be available for an introductory price of $249. I truly hope that CodeGear will not disappoint us with this and they will bring Delphi back to life in one form or another.

Two CSS videos

A few days ago I recommended you some videos related to web design and development. Being more and more interested in this subject I decided to look further and I found the two amazing videos (below) related to CSS. The author - Douglas Bowman from Stopdesign - managed to make them both inspirational and informative at the same time and if you are interested in this subject you will not waste time watching them. And even if you are not interested these can change what you think about designing a website.


No More Tables: CSS Layout Techniques



Creating Beautiful Interfaces With CSS

Tuesday, February 20, 2007

Virtual PC 2007 final available

Microsoft has made the full version of Virtual PC 2007 available for download from their web site. The program is available in both 32- and 64-bit versions, and is supported on all versions of Windows XP (except Home and Media Center Edition), Windows Server 2003, and Windows Vista. The file is a 30MB download and requires a 400MHz or faster (1GHz recommended) processor and enough RAM to support the desired configuration for the guest operating system plus the host.

Virtual PC lets you create separate virtual machines on your Windows desktop, each of which virtualizes the hardware of a complete physical computer. Use virtual machines to run operating systems such as MS-DOS, Windows, and OS/2. You can run multiple operating systems at once on a single physical computer and switch between them as easily as switching applications—instantly, with a mouse click. Virtual PC is perfect for any scenario in which you need to support multiple operating systems, whether you use it for tech support, legacy application support, training, or just for consolidating physical computers.

Microsoft first announced that they would be giving away Virtual PC for free when they made Virtual PC 2004 SP1 available on their web site. The new version adds the following features:

  • Support for Windows Vista as a host
  • Support for Windows Vista as a guest
  • Support for Windows Vista 64-bit as a host
  • Improved performance compared to Virtual PC 2004

Thursday, February 15, 2007

Useful web design/development videos

A few days ago I found a nice and very useful resource for anyone who has to do with web design or web development. The main content is a series of videos (offered for free by the author) centered around four main topics: CSS, JavaScript, PHP and MySQL. There are very easy to watch and practice lessons and if you are interested in this topics you will not waste your time. Here are the links and my "ratings":

CSS
CSS DIV-Layouts - USEFUL & MUST KNOW THIS
Cascading Style Sheets - Part I - USEFUL
Cascading Style Sheets - Part II - USEFUL
CSS “Absolute” and “Relative” Positioning - VERY USEFUL
Rounded Corners with CSS - USEFUL & POPULAR

PHP
PHP Basics - MUST KNOW THIS
PHP Conditional Statements - MUST KNOW THIS
PHP Custom Functions - MUST KNOW THIS
PHP and Arrays - MUST KNOW THIS
PHP Pagination - MUST KNOW THIS
Inserting MySQL Data with PHP - USEFUL
Query MySQL From PHP - Part 1 - MUST KNOW THIS
Query MySQL From PHP - Part 2 - MUST KNOW THIS
Query MySQL From PHP - Part 3 - USEFUL
Using Cookies in PHP - USEFUL
PHP “Include” and “Require” - MUST KNOW THIS
PHP Objects & Classes - Part I - USEFUL
PHP Objects & Classes - Part II - USEFUL & OOP KNOWLEDGE NEEDED
PHP Objects & Classes - Part III - USEFUL & OOP KNOWLEDGE NEEDED

JavaScript
Home-made Javascript WYSIWYG - I DON'T KNOW
JavaScript Voting Stars - NICE & POPULAR

Friday, February 9, 2007

The Developer Cheat Sheet Compilation

Nice compilation of cheat sheets (original post)

Command Line

Databases

Programming

Unix/Linux

Web Development

Miscellaneous Topics

Saturday, February 3, 2007

Reddit programmers are "crazy"

Who would display how many milliseconds passed since link was posted if not Reddit? :)

MySQL client startup options

MySQL client comes with an large number of startup options, some of which are extremely useful in daily MySQL interaction.

--compress
This option compresses the upstream and downstream data packets transferred between the client and server, assuming both ends of the connection support such compression. Use this option to improve performance when communication bandwidth is limited -- for example, over a slow network link.

--debug
This option forces MySQL to write debugging data to a special log file, both at startup and shutdown and when processing transactions. It can be usefully combined with the --debug-info option for additional debugging information. Use this option to obtain detailed diagnostic information on MySQL, particularly when working with an experimental server or client.

--force
This option forces MySQL to continue processing a block of SQL commands even if an error occurred. Use this option during an automated installation/de-installation routine -- for example, when you're attempting to bulk-inject records into a database as part of application initialization and don't want duplicate entries to disrupt the process.

--pager
This option pipes the output of MySQL queries to an external "pager" program such as cat, less or more. Use this option when your query returns a large result set and you wish to interactively page through it screen by screen.

--xml
This option formats the result of your MySQL queries as well-formed XML. Use this option when you wish to package the output of your queries in a standard format, usually as a prelude to integrating it with a third-party application.

--one-database
This option tells the MySQL client to ignore all commands except those related to the database named in the option. Use this option to filter out actions pertaining to a single database from an SQL injection file, or to skip certain database updates.

--tee
This option lets you log all query output to an external file. Use this option when you need a record of your transactions, either for later reference or to maintain an audit trail.

--wait
Normally, the MySQL client will automatically abort if unable to connect to the server. This option forces it to wait for a defined interval and then try again. Use this option to cut down on keystrokes when attempting to contact a remote or non-responsive MySQL server.

--safe-updates
This option tells MySQL to ignore all unqualified DML commands -- that is, commands that do not contain filter criteria such as WHERE, LIMIT or HAVING clauses. This provides a safety net against accidental modification or deletion of complete tables or databases. Use this option when you want to automatically protect yourself from dangerous queries that could cause widespread data corruption or loss.

--prompt
This option allows you to alter the standard mysql> command prompt using various pre-defined format specifiers. Use this option to make your MySQL client print useful navigation or temporal information during your MySQL session -- for example, the current date or time, server statistics or your location in the database/table hierarchy.

Blogger - bring the "beta" back

This weblog is hosted on Blogger which is a Google service by the way. When I signed up for this there were three main reasons: it's a free service, it's easy to use, has all the features I needed and I thought that being provided by Google it is also reliable (or highly available). But lately I can see that my blog's uptime is going way below that of my old home server. Here are downtime announcements for last month only:

  • Friday, February 02, 2007
    New Blogger will have a brief outage tomorrow, Saturday 2/3, at 11AM for 10 minutes. This will affect both new Blogger and Blog*Spot blogs on new Blogger.
    This maintenance is to address the unscheduled outages and performance problems of the past week.
  • Thursday, February 01, 2007
    Some users see the error code bX-vjhbsj when trying to view a blog. We have identified the source of this error and will push the fix to the site shortly. In the meantime, hitting Refresh in the browser may workaround the problem. We apologize for the inconvenience.
    Update 10:50AM(PST): The issue has been fixed. Unfortunately pushing out the new build involved a few minutes outage. We apologize for trouble.
  • Wednesday, January 24, 2007
    New Blogger has had troubles this morning, which you may have seen with slow requests and 502 error pages.
    We are working on this and hope to get it resolved very soon.
    Update, 1PM: These issues have been resolved. We are continuing to monitor and diagnose closely. We apologize for this morning’s poor performance.
    You may still see 502 errors on occasion, but waiting a few seconds and reloading the page should work. This is mostly limited to a handful of blogs, however.
  • Tuesday, January 23, 2007
    Publishing on the old Blogger was failing with "Error 550" since approximately 5:30PM PST. It was fixed at approximately 8:00PM PST.
    New Blogger was unaffected. Sorry for the inconvenience.
  • Friday, January 19, 2007
    We are currently investigating problems with Blog*Spot blogs on old Blogger. New Blogger blogs are not affected.
    Update, 2:45: We've fixed this. All is back to normal.
  • Friday, January 05, 2007
    Announcement: there is a scheduled outage for old Blogger next Tuesday, January 9th, from 7:45am-9:45am PST. You will not be able to post to old Blogger blogs or access any old Blogger blogs on Blog*Spot during this time. We also will not be allowing any new accounts or new blogs on new Blogger during this outage.
    Update, 1/9 at 10:20AM: The maintenance is taking slightly longer for old Blogger. Almost all old Blogger Blog*Spot blogs are being served again, but the old Blogger application is still down.
    Update, 1/9 at 11:25AM: Apologies for the continuing delay in bringing old Blogger back up. We are fixing a few lingering issues.
    Update, 1/9 at 12:30PM: Old Blogger is now working again. You may need to close your browser and re-open it to pick up the DNS change.
I don't know what the heck is wrong with Blogger since they got it out of beta but today my thoughts are: BRING THE BETA BACK.

Friday, February 2, 2007

Using SQLite as a database backend for a lightweight server

At home I use an rather old (antique some may say) computer (PII@350, 256RAM) as a web server and for testing purposes. All went fine until one of the pages hosted was hit by the "digg effect" and about 15 users wanted to see that page every second. The main problem was that I used MySQL to store some access logs and generate some real-time statistics. Physical memory was limited and Apache and MySQL soon started to fight for every remaining byte and eventually the page was unavailable.
After this experience I started to look for a alternative for the database storage and I found an interesting one: SQLite. SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine. Here are some features you may find interesting:

  • Transactions are atomic, consistent, isolated, and durable (ACID) even after system crashes and power failures.
  • Zero-configuration - no setup or administration needed.
  • Implements most of SQL92. (Features not supported)
  • A complete database is stored in a single disk file.
  • Simple, easy to use API.
  • Sources are in the public domain.
The next step was to make it work with my server setup (Apache and PHP5) and it was easy. To test it's relative performance to MySQL I implemented a simple scenario using both database engines: a page that logs each access (IP, DATETIME), looks for current user location (using a ip2country table of about 50.000 rows) and then shows some real time statistics (unique visitors and visitors grouped by country). Then I measured the average load time for this page using 5 concurrent user connections over a 10 minutes period. Here are the results (keep in mind that using SQLite saved about 80 to 128 MB of physical memory which can now be used by Apache or by the operating system):

SQLite is here a bit faster than MySQL using INNODB and both are a lot slower than MySQL/MYISAM. The main advantage of SQLite and INNODB is that you can use ACID transactions. I found SQLite being a good replacement for MySQL in most of my personal projects but before you start using it you should know the situations where SQLite works well and where it doesn't.

Thursday, February 1, 2007

Recover passwords for any Windows user

If you forgot your administrator password on Windows NT/2000/XP/2003 you have two chances: a cumbersome recover process and use some third non-free party tools or use Ophcrack, a nice (open-source) password recovering tool. It comes even on a LiveCD if you totally lost access to your computer.
Ophcrack is a Windows password cracker based on rainbow tables. It is a very efficient implementation of rainbow tables done by the inventors of the method. It comes with a GTK+ Graphical User Interface and runs on Windows, Mac OS X (Intel CPU) as well as on Linux. You can use it to recover passwords up to 14 characters long. Features:

  • Runs on Windows, Linux and Mac OS X (intel).
  • Cracks LM and NTLM hashes.
  • Free tables available for alphanumeric LM hashes.
  • Loads hashes from local SAM, remote SAM.
  • Loads hashes from encrypted SAM recovered from a Windows partition.