Monday, November 13, 2006

My New Favourite Desktop

I have written about Litestep before, its an alternate shell for Windows. Makes Windows work and feel completely different. A lot of gamers like to feel that they are playing a game when they are using Windows, thus you find quite an aweful lot of Litestep themes that are catered to gamers. I had stopped using Litestep a while back due it it crashing a lot but now it seems pretty stable. Then I came across the following theme and I knew this is what I want on my desktop. Check it out...



Now how awesome is that...



powered by performancing firefox

Monday, November 6, 2006

My Favourite Firefox Extensions

Following are the latest list of Firefox Extensions I am using:
  • Adblock 0.5.3.043
  • Adblock Filterset.G Updater 0.3.0.4
    Auto-blocks most adverts on common websites using an online database of adverts on those webpages. E.g. I see no adverts on hotmail when I log in.

  • Add N Edit Cookies 0.2.1.0 - Mess around with website cookies. Web Dev tool
  • Clone Window 0.2.6 - Create a copy of a window or tab
  • Codetch 0.4.0.20061026 - Web dev tool
  • ColorZilla 0.8.3.1 - Great tool to play with colors on a webpage
  • Data Analytics 0.1.8 - Analyze data on any webpage which is in a table, like in MS Excel
  • DejaClick by AlertSite 0.8.0.1 - Creates a recording of actions performed in the browser. Can be used as macros (e.g. logging into hotmail automatically) or to create web browsing tutorials.
  • Delete Selection 0.1 - Delete anything on a webpage, especially comes in handy when you want to print a webpage but would rather delete something on it first.
  • deskCut 0.5.0.5 - Create a desktop shortcut for the current page
  • Download Manager Tweak 0.7.1 - Extra options for Firefox downloading
  • DownThemAll! 0.9.9.7 - Internal Firefox Download Manager
  • dutchblock 0.33 - Another advert blocking extension
  • Firefox Extension Backup Extension (FEBE) 4.0 - Backs up ALL my extensions along with ALL settings. Can backup complete Firefox profile. I take the profile home and install it on my home PC as well.
  • Firefoxit 0.1.2 - Widgets engine built on Firefox, still in development but promising.
  • FireFTP 0.94.6 - Really awesome FTP client within Firefox
  • Flashblock 1.5.2 - Allows me to block Flash files and also gives options for download.
  • FlashGot 0.5.97.01 - Forwards download requests to your local download manager.
  • Force Content-Type 1.2.1 - Web dev tool, to fix problems with webserver config for certain mime types.
  • ghostfox 0.1.4 - Really awesome extension. Made for those who would like to hide that fact that they are browsing making others think that they are actually working. Embeds the Firefox window into any program, e.g. you are supposed to be working in Excel, Firefox will disappear from the taskbar and will appear within the Excel window. So a passerby will think you are using Excel. If you move your mouse out of the Firefox region, Firefox will completely disappear. It will reappear when you move your mouse from the left side of the screen to the right end and back to the left (like waving a magic wand). Concept based on the Ghostzilla browser.
  • Gmail Space 0.5.1 - Shows your 1 GB space on your Gmail account as a FTP window so you can save your files there.
  • Greasemonkey 0.6.6.20061017.0 - A lot of scripts are available on their website to do cool stuff with specific websites.
  • hideBad 1.3.2
  • httProxy 0.9.1 - If a website is being blocked by your ISP, e.g. Pakistan Gov blocks the blogspot website, use this to access that webpage.
  • IE Tab 1.1.1.4 - Open up a webpage in Internet Explorer within Firefox.
  • JSView 1.2.1 - Web Dev tool, view external javascript and css files
  • Live HTTP Headers 0.11 - web dev tool, view the communication going on between your browser and other servers as you browse a webpage.
  • Menu Editor 1.2.3 - Edit all the menus and context menu of Firefox according to your wishes.
  • MR Tech Local Install 5.3.1.1 - The most important tool for managing Firefox extensions.
  • Password Hasher 0.9.5 - Generate and save hashed passwords
  • PDF Download 0.7.6 - Make firefox ask you what to do with a PDF everytime, e.g. open in Acrobat, open within firefox or save to disk
  • Performancing 1.3 - Blogging extension, being used right now
  • RankQuest SEO Toolbar 3.2 - Great tools for finding out info about page you are browsing
  • Remove It Permanently 1.0.6.1 - Mark an object on a webpage for deletion permanently, like an annoying logo or an advert.
  • Resurrect Pages 1.0.4 - Locates a webpage on different webpage archives which might not be in existence anymore. I was able to find my first website that I created back in 1995.
  • SaveWithUrl 0.2.2 - Saves the url of a page you are saving as a metatag within the html. Helps if you save a lot of webpages on your hard drive and don't remember where you found that page.
  • SEOpen 0.8 - Great tools for finding out info about page you are browsing
  • SessionSaver .2 0.2.1.030.4 - Saves your previous Firefox session, all open tabs, windows etc. so you can continue right where you left
  • Shazou 1.1 - Shows the location of the server of the website you are looking at on a map using Google maps
  • ShowIP 0.8.05 - Shows the IP address of the website you are looking at along with some shortcuts to find out its Whois record
  • SourceEditor 0.1 - Edit the source code of a website
  • superT 0.7.9.1 - Extra options for tab browsing
  • Tab Catalog 1.1.2006110601 - Shows screenshots of all open tabs
  • Tab To Window 1.2.6
  • Table2Clipboard 0.0.2.1 - Copies a table to clipboard in a format that can be pasted properly within MS Office
  • Talkback 1.5.0.7
  • Tamper Data 9.8.1 - Mess around with the communication going on between your browser and a website's server. You can see exactly what info is being sent by firefox and mess with the info as well. You can also save a session's communication for record, and even play it back again later.
  • TAW3 en un clic 0.9.5 - Check if the webpage you are viewing is using proper web dev standards
  • User Agent Switcher 0.6.9 - Make a webserver think you are using some other browser, e.g. Internet Explorer. Comes in handy on some websites.
  • View Dependencies 0.3.2.0
  • ViewSourceWith 0.0.8.39 - View source code with a different editor
  • Web Developer 1.0.2 - Some powerful tools to examine a webpage's design. Comes in very handy when trying to find problems with HTML.
  • wmlbrowser 0.7.8 - Open WAP websites using firefox, e.g. wap.getjars.com
  • XPather 1.1 - XPath tool for firefox
  • Ñandú 0.6 - Fast webpage editor within Firefix




powered by performancing firefox

Find your old webpages

I came across the Internet Archive Wayback Machine today. It allowed me to find a webpage I had created back in 1995 when I was in Chicago studying at IIT. I was also able to find some of my friends' webpages. It brought back a lot of memories. I never thought I would be able to see those webpages again. I had never backed up my webpage. Although none of the pictures were there anymore, just seeing the text itself brought back quite a bit of memories.

I guess its a good website to look for data that you had maybe once published on the net and forgot to backup and lost. See what you can find.


powered by performancing firefox

Friday, October 20, 2006

AJAX - The New Web Concept

A lot of web developers have been reading about how AJAX is going to transform the way people use websites. In short AJAX enables developers to create Web Applications that look, work and feel like a regular desktop application. It adds the extra functionality that is missing in common web technologies, e.g. Flash and HTML do not have any components for pop-up dialogs or tabs. AJAX also concentrates on providing a more animated interface.

OpenLaszlo
is an AJAX toolkit that allows you to write your web application in technology-independant code and then publish the application as either Flash, XHTML and soon Java for Mobiles. Currently only the Flash version is usable, heavy work is going on the XHTML version and development on the Java for Mobiles version has just started with Sun Microsystem's help. I like the Flash version but the XHTML version still needs quite a bit of work.

I have also been looking at the ZK Web Framework which is a XHTML based AJAX framework. The last time I checked there were quite a few bugs with the Firefox version.

My personal opinion is that an XHTML AJAX toolkit will always have problems mainly due to cross-browser compatibility issues. Anyone who has ever tried to use advanced javascript on their webpages knows this. Then there issues in webpage rendering from one browser to another. Since AJAX tries to introduce animated features to the interface, I have found a lot of bugs especially in browser rendering.

For XHTML based AJAX toolkits to really take off browsers will also need to be updated especially their rendering engines. Historically HTML content of webpages has been mostly static thus web browsers have a low refresh rate for it. But in order for AJAX to be a true desktop application replacement, browser makers will have to increase their HTML content refresh rates so actions like dragging a component seems more natural.

For example, when trying out the ZK Component Demo in Firefox, using the slider component you will notice a slight delay when dragging the slider. Also when using any of the pop-up dialogs and dragging them, when you drag the window beyond the right or lower edge of the browser window (causing the scrollbars to resize) a very unnatural effect takes place that a user will never see in a desktop application.

I forsee open-source browsers like Firefox to become more AJAX friendly, but I am almost sure that MS Internet Explorer will probably never do that. AJAX is seen as a threat to Microsoft's Windows desktop development platform which locks in users to using only Windows. If AJAX achieves its goals, it will shift a lot of users away from dependancy on using Windows.



powered by performancing firefox

Monday, March 20, 2006

Java Rules The Enterprise

Java has rocked the world of Enterprise Software Development. Almost all major Enterprise Software is being developed using Java based technologies, at least when it comes to the server side development. BEA, SAP, IBM, Oracle ... and the list goes on.

But what difference does it make to an end user? The end user who uses the system at the end of the day to make Account Entries or manage inventory does not care and does not know the difference between whether he is using a system developed using Java or PHP or C++, especially with the new fast CPUs. What does make a difference is whether the software is well designed and whether all different operations of the company are well-integrated or not.

SAP has been providing a robust, integrated software solution to enterprises to manage their everyday tasks. Their R3 software integrates financial functions, inventory management, accounts, sales and distribution. It also allows additions to the system with customized programming. They have the most mature software in the enterprise software market. Even they jumped on the Java bandwagon.

So why is it that companies are moving to Java based technologies? Why has PHP not been able to penetrate into the enterprise as well? And what was wrong with the old way of doing things with C and C++?

To understand this you first have to understand the requirements of an enterprise, exactly why does it need such over-priced software.

I will continue this in another post ...

Automated Computer Inventory

Recently I came across an open-source project that automatically creates and maintains a very detailed inventory of ALL the computers on your network. The project is called OCS Inventory. Its website states that it "... is an application designed to help a network or system administrator keep track of the computer configuration and software installed on the network..." Actually its does much more than that.

It allows the admin to retrieve any registry key from the client computer, a highly detailed list of hardware installed (even details of the attached devices like monitors), a web interface to search the inventory etc.

There have been some problems that I have been trying to tackle for a long time on my 100 PC network. Number 1 on the list was to disable all USBs so that our propriety data could not be copied onto USB flash disks and carried out of the office by employees; or employees do not bring in and execute software on their PCs (associated problems are with virus contaminated software) which might cause havoc on my network. Using the inventory I was able to clearly identify which PCs on the network had their USBs still active. I also found 2 PCs on my network using ancient 10 MBps network cards.

It has helped me map out an upgrade plan for both software and hardware. I would recommend any network admin to give it a try. Setup is very simple, the server runs on Windows, Linux, Mac OS, UNIX etc.

Tuesday, December 20, 2005

The Problem With Java Client Development

I love Java as a language and as a platform. It is a very clear language to understand and there is a plathora of code available on the web for you to put together a relatively complex application together in no time. It has the support of far too many companies to mention here and it also has the seal of approval from Open Software and Free Software developers.

I recently looked up into decompilers for Java programs and I was horrified to see the results. A Java program can be decompiled back into its original source code with very little work. There are many free and commercial decompilers available. I decompiled one of my older programs that I made for a client (who never paid up) and it was converted back into its original source code within seconds.

This prompted me to look up into how I could make sure that my Java programs would be safer from decompilation. There are 3 techniques to do so:


  1. Obfuscation: This is the process of changing the class / method / variable names so that they are not easy to interpret once decompiled. It does not stop decompilation though, just makes it slightly more irritating for the one who is trying to decompile your code. But keep in mind that it does not change the names of the core Java API packages/methods etc. So your algorithms are pretty much given away to the one hacking your code.


  2. Compilation to Native Code: You can compile your Java code to Windows or Linux native code like for a C/C++ program which can be decompiled but not easy to make sense of the decompiled code. A person like me will not be able to do it. Two programs used by programmers are the commercial Excelsior JET and the open source GCJ. Excelsior JET has licenced the J2SE code from Sun Microsystems so your code will not break at all. GCJ still lacks a lot of J2SE packages and classes (e.g. there still no AWT implementation). So your code will break a lot.


  3. Light-Weight Clients: This is a client / server approach for applications where the actual bulk of the program logic resides on a server and the client is mainly used for display purposes. So if the end user decides to decompile the Java client the most he will get out of it is the code for displaying. He will not be able to alter how the logic of the program actually works. This might be perfect for enterprises that will deploying the application in an intranet environment but it is not sufficient for standalone everyday use applications like editors, mail clients etc.



Come to think of it all those free applets out there can be easily decompiled, code changed, your company logo added and then served on your own webpage without anyone ever finding out.

I think Sun Microsystems should provide a free compile to native code compiler with their SDK for people who want to keep their source code safe from hacking attempts.