Wednesday 18 June 2014

Should You Root your Android??

There are many settings that can be tweaked in an Android device; however, these tweaks are restricted to what the manufacturer permits. Rooting an Android device or gaining root access allows tweaking the device at a very deep level. But, is it OK to root your Android? Lets checkout the good and the bad.

Having the freedom to tweak your OS has been and will always be of great importance for any open source geek. With Google backing the porting of Linux-based operating systems to handheld and portable devices, this freedom has increased manifold. Companies building up mobile phones and handheld devices have had to give in to Android’s growing popularity as it’s competing head-to-head for space with other popular mobile operating systems such as the iOS, Blackberry OS and other proprietary operating systems. A number of tweaks and functionalities have been added to the most recent version, Android KitKat, which was released at the end of October 2013. However, a number of users continue to be on earlier Android versions such as Jelly Bean (on devices with low hardware configurations).

As with other open source desktop operating systems, it is possible for Android users to tweak or change any part of the system within the limitations set by the open source community and by the licences. Although there are several apps available on the famous Google Play store, Android primarily doesn’t allow its users to make any changes to the system. This can, however, be achieved by using a method commonly referred to as the rooting of an Android device. A device that has undergone this procedure is referred to as a rooted phone or tablet. The name is derived from the term ‘root access’, which is actually the ability to attain permissions only restricted to super-users or administrators. Rooting allows you to perform a number of operations that would have been otherwise impossible because of the limitations set by the carriers or phone manufacturers.

Although rooting your device might sound like a great idea, there are several disadvantages that negate its advantages. Before I go ahead with the procedure for rooting an Android device, let us look at the factors that will affect your decision on rooting.

What you might lose?
Bricking your phone
When you’re tampering with your phone’s operating system, you should be aware that one wrong move could damage the device’s software, turning the phone into a useless brick. So if you are wary of taking risks, please refrain from trying this procedure. Although the risk is minimal, rooting your device is still quite a risky business. So, you need to be absolutely sure of what you do.

Manufacturer’s warranty
The process of rooting in almost all cases challenges several clauses in the agreement with the hardware manufacturer and results in the warranty becoming invalid.

Legality
Rooting a phone is allowed legally almost everywhere in the world. In fact, in some European countries, replacing the original operating system with another does not void the statutory warranty that covers the hardware of the device.

Security concerns
Rooting essentially allows applications to perform actions that require administrative privileges. The real reason for disallowing all applications from obtaining these privileges is to ensure air-tight security in this amazing operating system. Although Android has not been plagued by viruses, Trojans, spyware, malware and other members of the digital disease-causing pathogens, it is only a matter of time before anti-social elements try to exploit the innocent. Rooting your device is like giving ammunition to these elements on a silver platter.

What do you gain?
Despite these drawbacks, a number of users continue to root their phones or tabs. The gains are listed below.

Delete those pesky apps
Did your manufacturer bundle your phone with promotional applications and games that cannot be deleted? Geeks refer to these apps as bloatware, as they usually take too much space on the device’s memory. So, it is always advisable to remove all that you are never likely to use. However, you have to be especially careful not to delete any system app that can affect the basic functionality of your device. What you can safely remove are games and apps that have the manufacturer’s brand name.

Take essential back-ups
Rooting your device takes the performance of system and data back-ups to a completely new level. In addition to backing up user data, you can also back up applications and settings. Also, rooting allows you to take Nandroid back-ups, which is essentially a back-up of the complete operating system. The name Nandroid is a portmanteau of NAND, which is the widely used Flash memory on these devices, and Android.

Apps galore!
If you think that 1,000,000 (a million) apps and 50,000,000 downloads would be enough for open source enthusiasts, you are sorely mistaken. In addition to Google Play, there are several app distributors and stores available online. The most famous among these is F-Droid, an alternative software repository comprising only free, open source software. A quick search would reveal that most of the apps available on these stores require super-user permissions.

Playing dress-up
Almost every hardware manufacturer bundles Android devices with tones, themes and skins that are specific to their organisation. However, you are not allowed customisation beyond a certain level. By rooting the device, not only can you change the way your system sounds or looks, you can also use the customisation options provided by other companies.

Staying up-to-date
As manufacturers come up with newer devices, it is customary for them to stop providing updates for the older ones. Also, there are several devices that possess the hardware specifications to run newer versions of the Android operating system but are stuck without any updates because of the business gimmicks of these manufacturers. Rooting allows you to install not only the new features but a tweaked kernel or a new operating system altogether.

Custom ROMs
Almost all phone and tablet manufacturers modify the Android operating system and bundle the device with a custom made OS with their own branding. The basic Android version specific to a device is known as a stock ROM. Most stock ROMs are also bundled with useful software, specific to the device’s manufacturer. Custom ROMs are modified versions of the Android operating system, created for a specific device by a third-party developer. Several developers have taken great pains to make it possible for users with low-end phones to enjoy the benefits of the latest developments in the Android world. Several companies such as Cyanogenmod sprang up to cater to people facing such limitations with their own fork of the Android operating system. Although rooting is strictly not essential in order to install a stock or custom ROM, it provides you the ability to take customisation and personalisation to a whole new level.

Automation
With automation touching every aspect of life, it would be natural to also want our phones to think and act as per our wishes. There are several apps available on Google Play and other app stores that allow you to automate devices. One of the best applications for this is Tasker, which helps you create tasks for greater automation. With such apps, you can have your phone switch from data to Wi-Fi, based on location. You can combine task killer apps and ensure that your tablet consumes the least possible battery, especially when you’re not using it. Rooting lifts the software restrictions and renders anything that’s within the limitations of the hardware possible.

The preparations
Before you actually go ahead with rooting your device, there are several steps to be followed. The most important is to ensure that you install the latest drivers for your device on the computer to be used in this process. You must also download and install the latest Android SDK from the https://developer.android.com/sdk/index.html website. In addition, you need to put your phone into the USB debugging mode. To do so, enter the Developer Options in the system settings. You will be required to enable Developer Options and then enable USB debugging. A USB cable will also be required.


The real deal
I recommend you take a back-up of all your personal information on the memory card or a computer before you move forward with the actual rooting procedure. The process for rooting a phone or tablet varies greatly, depending on the device and the operating system of the computer used in the process.
There are several third-party applications, especially for the Windows, Mac and Linux operating systems, which allow you to connect the device and root without much intervention. Some of the popular applications for this process are Once Click Root, CF-Auto-Root and Super One Click. Most of these applications provide step-by-step instructions (sometimes with images) on how to root your device. Based on your device, the process will require you to press several buttons and reboot. As the steps vary from device to device, you need to search the Internet to find the best application-one that has had the most success with your device. Almost all these applications install the Superuser app that helps in granting super-user permissions or root access to other apps. There are also several ways to root a device using terminal commands from a Linux distribution. However, this procedure is only for experts. To verify if you have gained root access of your device, you can use apps such as Root Checker by joeykrim and Check Root by Avarna Software.

What happens next?
Once the rooting procedure is complete, you will see an app named Superuser, SuperSU or something similar among other installed apps on your device. Open the Superuser app and update it to obtain the latest version.

Superuser and SuperSU
As and when another app requests for super user permissions, the SuperSU app gives you a pop-up to ask whether or not you want to grant such access. Based on the option you choose, you can have SuperSU prompt you at a later time or not prompt you for access till the app is updated. Ensure that you provide root access only to trusted apps and revoke permissions for those you are unsure of. In addition, it is a good practice to have an app ask for permissions every time. This allows you to keep track of the apps yourself, in addition to the logs maintained by SuperSU. Superuser, SuperSU and other similar apps also allow you to unlock additional paid features and improve the functionality further. However, for a basic user, the free features would suffice.

Busybox
Called the Swiss army knife of embedded Linux operating systems, Busybox is actually a stripped down version of powerful Linux tools made available for the Android operating system. You can visit http://www.busybox.net/ for more information on this project. If you’re into tweaking the device even further, you will need to make use of the several tools provided in this bundle. Some custom ROMs provide Busybox just as they do with SuperSU or Superuser. If not, there are several Busybox installers available on the Google Play app store, the most popular one being the BusyBox app by Stephen (Stericson). Most of the commands are the same as their counterparts on other operating systems.

SQLite
If you’re into heavy duty tinkering, you will require specialised tools. SQLite is a relational database management system that is used by several apps running on Android. There are several apps available on the Google Play store and on F-Droid that allow you to install the SQLite3 binary application on your device. Once this is installed, you can use database viewers and editors as per your convenience. I would like to recommend the ‘SQLite Installer for Root’ app by Ptsoft in case you plan to use a stable and secure installer.

The terminal
People with knowledge of the Linux command line will feel right at home in the terminal emulators available for Android. The Google Play app store showcases several terminal emulator apps that allow you to run shell level commands in Android. Some of the best terminal emulators are available on F-Droid, an open source repository of Android apps. Terminal emulators are also useful for running Busybox commands.

File explorers
Several file explorers, such as Root Explorer, allow users to view and edit Android system files if you grant them super-user permissions. You can also change file and folder permissions with the help of such applications. Most of these apps also allow you to connect to cloud storage and seamlessly work with archives and other such files.

Bye bye bloatware!
As discussed before, rooting allows you to remove the bloatware provided by your hardware manufacturer that you couldn’t get rid of previously. Apps such as Root App Delete are available on the Google Play store and help you free up space. However, you are advised not to remove or disable system apps as they may hamper the functionality of your device. Similar to bloatware, unwanted ads is another problem that most people face. To block ads, these apps require root access to write into the hosts’ folder in the Android system.
In addition to the above mentioned entities, there are many more avenues to be explored. Rooting, if done responsibly, opens new doors and adds tons of functionality to your devices

Wednesday 16 April 2014

[Android] How to Set Status at facebook

Note: Originally from my another new programming blog post here


We live in a social network world more than in real world. And so android applications also need to provide sharing links for the Social network Giants Facebook and Twitter. The big Question comes: HOW!!

Well, I am an android developer, and faced a similar issue when it came to share at facebook.

Here, I will be demonstrating using a third-party SDK: easyfacebook (Official site here).

Reason for using third party tool: Facebook's official SDK needs Facebook app to be installed in the phone. If it is not, it won't work. But my app requirements were to be the least dependent-on-others app. EasyFacebook SDK does not need Facebook app to be installed.

No. 2 reason can also be stated as I was not able to get how to implement Facebook's Official SDK. The tutorials I found on the internet or via stackoverflow were outdated. The basic classes that those tutorials used were deprecated in the new version. So, I was even confused on how to use it. But I will post the tutorial with the latest Facebook SDK soon. (As soon as I complete my current project update)

However, EasyFacebook though not upgraded since ages. It was last updated far back to 2011. But still, it works. N the best thing, works without any pre-requisite of Facebook app. I love being independent as possible (Indian by heart.. <3)

Steps to implementation:

1. Make Facebook Application. To connect your app to Facebook, you must have an application at Facebook. Go to developers.facebook.com, If your visiting for the first time, it may ask you to register. Register with your facebook account.

Now as seen in image: Click on Create a new app.


Now, You will get a window for creating a new app. Type in your Application name and namespace. Choose the category and click on "Create App"

Here you go! You will get a Dashboard. Just copy your APP ID. It will be used in your application.


Now, last step at Facebook application: Register your Android App details. To do that, you first need your Key Hash. To find the key hash of your working system, follow these steps:

To generate Key Hash signature you need openssl installed in your PC. You can download it from here. Open Command prompt. Run the command:

 keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Ravi\.android\debug.keystore" | openssl sha1 -binary | openssl base64  


It will ask you for your a password. Give password as "android" removing quotes. If it does not, make sure the path of keystore. The path mentioned here is generally the default, However, it may vary.

You will get an output with some big code and possibly "=" in the last. Copy the key hash.

Now, moving back to your Facebook Developer Portal. Go to settings. and fill in the following as shown in figure:



Click Add Platform, Select Android. Fill in the details. as shown. N click Save Changes.

Half work over. Really? Naa... It was just 25% yet!


Now, lets come to your facebook app. Download easyfacebook SDK from this link. 2.3 is the latest while writing this blog. Although it was last updated in far back 2011. But still can't say if the developer updates it.

So, after downloading .jar file, keep it in your lib folder of your android project. Open Eclipse, Go to your project--> libs Right Click easyandroidfacebooksdk2.3.jar --> Build Path --> Add to Build Path

Now, for newbies: Keep in mind, To make a share program, you have to create a new Intent for that. So, create an activity first, Here in tutorial, I am using "Fb.java"

Here is the code for your Fb intent:


 package com.innovativejumbo.androidFb;  
 import android.app.Activity;  
 import android.os.Bundle;  
 import android.util.Log;  
 import com.easy.facebook.android.apicall.GraphApi;  
 import com.easy.facebook.android.data.User;  
 import com.easy.facebook.android.error.EasyFacebookError;  
 import com.easy.facebook.android.facebook.FBLoginManager;  
 import com.easy.facebook.android.facebook.Facebook;  
 import com.easy.facebook.android.facebook.LoginListener;  
 public class Fb extends Activity implements LoginListener {  
      private FBLoginManager fbLoginManager;  
       //Add here your own Facebook App ID  
       public final String APP_ID = "insert_your_app_id";  
       @Override  
       public void onCreate(Bundle savedInstanceState) {  
       super.onCreate(savedInstanceState);  
       connectToFacebook();  
       }  
       public void connectToFacebook(){  
       //read about Facebook Permissions here:  
       //http://developers.facebook.com/docs/reference/api/permissions/  
       String permissions[] = {  
        "publish_stream",  
        "publish_actions"  
        };  
       fbLoginManager = new FBLoginManager(this,  
        R.layout.activity_fb,   
        APP_ID,   
        permissions);  
       if(fbLoginManager.existsSavedFacebook()){  
        fbLoginManager.loadFacebook();  
       }  
       else{  
        fbLoginManager.login();  
       }  
       }  
       @Override  
       protected void onActivityResult(int requestCode, int resultCode, android.content.Intent data){  
       fbLoginManager.loginSuccess(data);  
       }  
       public void loginSuccess(Facebook facebook) {  
  final GraphApi graphApi = new GraphApi(facebook);  
            Thread myThread = new Thread(new Runnable() {  
                @Override  
                public void run() {  
                     // TODO Auto-generated method stub  
                     User user = new User();  
                      try{  
                       user = graphApi.getMyAccountInfo();  
        graphApi.setStatus("Hello World!");  
                      } catch(EasyFacebookError e){  
                            Log.d("TAG: ", e.toString());  
                           }  
                     }  
                });  
                 myThread.start();  
            fbLoginManager.displayToast("Posted to Facebook successfully");  
          //finish this intent activity after posting.  
            finish();  
       }  
       public void logoutSuccess() {  
       fbLoginManager.displayToast("Logout Success!");  
       }  
       public void loginFail() {  
       fbLoginManager.displayToast("Login Epic Failed!");  
       }  
 }  

Call this Intent whenever you want to set the status.

If the user is logged is not logged in, a window will appear to login to Facebook.

If you are using this for the first time, the application may ask your granting the request to post to Timeline. Click OK and it will be posted. Next time, it will be posted automatically as the intent is being called.

You have many more Facebook functions also to play with in this SDK. Check here and try them out as needed. However, it lacks the documentation on how and what these methods do. Still, many of the functions are clear by their names. Give a try and enjoy.

Thursday 27 March 2014

How to make the right CSV for database import?

csv-xxl
If you are working in programming or database related industry, the bulk uploading from CSV format is always the best thing. Possible reasons? it is a simple comma separated data, easy to read even, Can be managed by any spreadsheet writer like Microsoft Excel or Open Office/LibreOffice Calc, can be made easily via spreadsheets data available.
Still, there are some things that need to be taken care of while making a CSV file. otherwise, you may get the undesirable results like garbage data uploaded or even sometimes less or no data being uploaded.
So, here are some things to be avoided and followed to get the right CSV file made:
  1. Avoid Microsoft Excel: Seriously! I am not a Bill Gates hater, but I hate Microsoft products because the way it takes the user data so casually. If you create the CSV file from Excel, I bet, you will get a problem. Reason? Even I can't understand! Excel will change the date formats in it's own way. Will add apostrophes (') if you forcefully tried to change the dates. Also, if any of your data has just the value of hyphen (-) or plus sign (+), it will do the same for that too. Technically, Excel adds these values for the sake of it's own rendering. But, dear Excel, If the user needs the file to get opened in Excel itself, why in the world would he make CSV? You already have xls and xlsx formats for yourselves! Please respect the user's requirements and don't make the him dependent just on Microsoft Products.
  2. Use Open Source: Well, now if we can't use Microsoft, then what to use? I would count on OpenOffice/LibreOffice Calc. Reasons: They are free! Secondly, they know what the user needs. There are several other tools available too. I even read in a blog somewhere that to convert the Excel file to CSV properly, first upload it to Google Drive, then download it as CSV. But, if you are so free, have so much of time to first save Excel, then upload, then download, then use; then please go ahead! I can't take so much pain and waste time. The interface of Calc is almost same as Office Excel 2003 versions. So, not so hard if you have used those old softwares.
  3. Comma Separated/Tab Separated.: Keep in mind! This is a common mistake when the csv is made for the first time. CSV files are of two types in general. Use the type what is required by the system.
    1. Comma Separated: the values are separated by using comma (,). The text values are enclosed in double quotes ("This is my text, to save the format"). Double quotes ensures the commas used in text values, if any, as a part of the value and not as a separator. This is the most commonly used type.
    2. Tab Separated: The values are separated by using a tab space. In this type of file, the text values need not to be enclosed in double quotes.
  4. Character Encoding: Again the important point. If you are using just normal english text then this doesn't matter much for what encoding are you using when saving a file. However, it is a good practice if you know the the character encoding your bulk upload system supports and the encoding you are giving in your file. If you are using some unicode or special characters, then, it is a MUST-TO-DO thing! Mostly the import supports UTF-8 encoding, however, it's better to consult the technology experts for that. The character encoding can be set while saving the file even via simple softwares like notepad.
Be safe while making your files, and always double check everything before actually importing the data. Because, it is not just a single query, It is a bunch! So, if any mishap occurs, you have got to clean a lot of junk!!

Sunday 16 February 2014

Watermark Utility- Software for personal use

Well, this time in my blog, I just came into a problem in my newly built company, we had around 100's of images from my client that needed to be uploaded in their official website as well as FB Page. So, they needed to have a logo watermark on each of their event's pics before being uploaded on the internet. So, just to help my Designer and Social Marketing Expert, I made a small utility that can add the watermark to images.

So here's providing a link to free download this utility. It's simple, light weight, free for personal or commercial use. Need the source?? Contact me anytime. :)

Documentation





  1.  Process Selection: Select “File” if you want to watermark just one file. If you want to apply watermark multiple images, copy them in one folder, and select “Batch-Folder” option for multiple files.
  2. Select File: This will be enabled only if you have selected “File” option in section 1. Select the file by clicking the “…” button. The address of the file will be displayed in the text area above. DO NOT change the text area or program may crash.
  3. Select Folder: This will be enabled only if you have selected “Batch-Folder” option in section 1. Select the folder in which your images are kept using “...” button. The software will automatically search for images in the folder. So, if you have some other files other than images, it won’t affect the functionality of the software. Also, the program will search for images just at the root of the given path. The address of the folder will be displayed in the text area on the right. DO NOT change the text area or program may crash.
  4. Select Watermark: Select the watermark PNG image which needs to be applied on the image/s. Select the file using “…” button. The address of the file will be displayed in the text area above. DO NOT change the text area or program may crash.
  5. Watermark Location: Select the location of the watermark in the image.
  6. Apply Watermark: Click on the button to start the process of watermarking. Initially, it will ask for the location to save the converted file/s. If one file is converted, the file will be renamed to watermark.png. For batch-folder, the files will be stored as watermark_1.png, watermark_2.png and so on. Please note that the program will over-write the image if any available at the location with same name. After successful completion of task, the program will show a dialog box as “successfully converted!”. 
Download Link:Download Here!

Note: The software is virusfree... Be assured. It's made and actually being used by me. For any issues, please contact me at yours.akshit@gmail.com

PS: I love programming small utilities, even for free, So, if you need some more, you can contact me. Happy To Help.

EDIT: The Link has been updated and now lets you to download setup.exe and .msi files too. Sorry if you were not able to install the file earlier.

Thursday 6 February 2014

10 reasons to choose open source programs than premium softwares

We are now in the world where the two software markets stand before the customer. One that is flashy, may be colorful, filled with people who work day and night for money to provide you software as per your requirement at rates with literally NO range set. You may get the same functioned software in a wide range, all depending upon the gloss and the Brand Names of the software providers. Examples... Really needed? anyways, coming back to the other community, which may not have much good visuals as the latter. But they are lively, happy to help always! You may compare the scenes with your Official Get-together and a friend's party!

Open Source applications have now gained much popularity due to high rates of software by the Industry Giants. So, here presenting 10 reasons to select Open Source than Premium softwares!

1. They are Free!
This is the most attractive feature of open source application. They are free! So, if you want to do a cost cutting in your company or at home while setting up the computer systems, go for Open Source! They save you much!

2. No Piracy issues!

Why would you make a pirated copy of a software when you know that is is free of cost! Thus! no more issues and guilts of using a pirated software. You can freely and happily use the software!

3. A BIG community to help

Well this has been the best among all. Personally, I have been to many issues using Windows. When I queried on their official site, answers.microsoft.com, I have never ever got the solution from their official person. Instead, some geek would go by my forum post and suggest me the solution! But in case of Open Source, the community is full of millions of Geeks!!! They will help you out until you come up to your solution. My personal experience showed replies from the users within seconds. It looks good when someone actually cares for you. :) 

4. Customizable


You can customize the open source software to as much as you want! Examples needed? Take Chrome Browser! It is open source, and you can create themes and various apps for chrome to make your browsing experience the best ever.

5.Extensible

The open Source application you just downloaded is just a stock application. Almost every open source application provides plugins that can make your software work even more than you can think of.
 My personal example: I use Google Drive to save my data and actually feel hard to work on the online office software by Google. So, I had to download the file, edit it on my Office software and then re-upload it. Then I found a plugin for open-office (an open source alternative for MS Office) http://extensions.services.openoffice.org/project/ooo2gd that can directly pick my files from drive, open it on my local PC and then save it again online! I don't know whether MS has launched this feature in it's new versions of Office yet or not. But this plugin was available for Open Office since 2007!

6. Security

The perfect example: Linux! The best operating system made by mankind ever! The open source applications are built by thousands of developers. So, if any developer found a bug or security loophole, he will fix it up and will update the app ASAP. N not just the developer, if you found any loophole, just let them know, you will get the patch within next update or even in some days, depending how critical the issue is!

7. Quality


The open source app is made by the professionals and the users like you! And that too, in thousands of numbers. So, one person may miss some quality check, ok even five persons may never notice that thing, but when it comes to 100s of 1000s of  developers, ranging from newbies to ultra-experienced ones too, you can never even think of quality mishandling! 

8. Made with a good aim.

Now that's actually a good reason. The open source application is made just with one purpose. To serve the community. The developers, query handlers, website administrators, all work for free or on donations made by the users. You can say that it is the kindness of all those people who contributed on the software. It sends a good vibe of helping others. :) You feel glad that someone unknown to you, sitting miles away from you even don't know your language, has helped you, so that you can work effectively. It sends a good message of humanity to the world. :)

9. Interoperability


The open Source applications are platform independent. So, if you were using Open Office on your Windows, and you got a new Mac! Just download the Open-Office software for Mac and here you go! Everything same as you had in Windows. Same favourite software regardless of your Operating systems. What else you need?

10. More features than the premium ones.

Surprisingly this is true. Even stock applications have much more features than those in the premium alternatives. So, this actually means you got a software which gives you more functionality than other and that too for free!

So, still you wanna go for premium application when you have better functioning, more secure, with better support, with absolutely not giving a single penny? Choose Open Source for a better, happy world!



Please Note!: All images in this post are from various sources from the internet. The images does not belong to me!

Thursday 2 January 2014

KompoZer! The Open Web Designer!

I have switched to Ubuntu from Windows from last 6 months so was finding the alternative open-source software packages for Ubuntu which I can use for my development practice. When it came for finding the alternative for THE GREAT DREAMWEAVER, i got a simple, sleek yet powerful software: KompoZer! (Also available for windows, so MS lovers, don't get sad... :) )
Firstly, I thought I have to download the bulky software and may cost me 100s of MBs. But, when I went to Software Centre, it was just around 10 MB! Just imagine, the competitor for Dreamweaver weighing 370 MB of setup file is just 10 MB???
Well that makes KompoZer super light, fast and still, powerful.
I am not a PRO web designer, but I just want to quickly add my styles in the webpages, and I found really easy while making the CSS for the page. It was too easy. Atleast easier than that of Dreamweaver.
The basic misconception for Open-Source is that they are not user friendly at all, because they don't look good. But when I used Kompozer, I found Dreamweaver too complicated software, Open Source software being made by many developers, know how to make the things easy and what is needed instantly. They make such things handy and easy to use.
The only thing Open-Source software don't have is the Ultra fine GUI. Well, you can't expect a coder to make cool and sleek GUIs for you. ;)
Here are some of the features of KompoZer (Copied from their official site):

FTP SITE MANAGER

With KompoZer, all the sites you have specified in your Publishing Settings become browseable in a sidebar. You can get a tree view of a site, la Explorer's folders pane, or a one-dir-only view, la Explorer's directory view. It is also possible to filter files and show all files, or only HTML documents or image files. The browsing area also allows to show for each file its size and the date of last modification.

A NEW COLOR PICKER

KompoZer has a new extended colorpicker, more conformant to what most users are used to. Set a color from its red blue and green components, or its hue saturation and brightness. Or just use your mouse to pick up the color you want.

TABS!

One of Mozilla Firefox's killer features is now available in KompoZer! Have one window only on your screen and edit several documents at once, each document having its own Undo/Redo stack! Just glance at the tabs to know if a document needs to be saved or not!

CSS EDITOR

Create stylesheets easily and manage the styles attached to your documents. You can see your style settings applied '"live" to the document you're editing.

A DASH OF STYLE(S)

With KompoZer, right-click on any element in the hierarchical toolbar at the bottom of the window and set directly its style properties.

CUSTOMIZABLE TOOLBARS

Just customize your toolbar and show only the buttons you want/need.

FORMS

Take advantage from a XUL-based UI to edit all your forms, and edit all your form elements.

CLEANER MARKUP

KompoZer contains some machinery to get rid of most of those annoying <br>. Combined with the ability to call W3C's HTML validator from within KompoZer you'll make valid, clean documents.

XFN

When you create a new link to an external resource, or when you edit an existing link, you can now add XHTML Friends Network information to say that the owner of that resource is someone you know and trust.

VISIBLE MARKS

In a complex page layout, you often need to see visible carriage returns and block borders. KompoZer can now do that for you. And of course, everything is controlled by a CSS stylesheet so you can customize those marks and replace them by your own.

TABLE/CELL RESIZING RULERS

On the left and top side of the opened tab you will find the convenient table resizing rulers which will help you easily adjust the size of rows and columns in any table in the web page you design.

AUTOMATED SPELLCHECKER

The integrated in-line spellchecker will underline all misspelled words as you type to ensure correct spelling throughout the entire web page.
The con for the software? Well, every open-source software has it. (Even Premium softwares too E.g. Windows Vista!!! ;) ) Bugs and Error Handling!
Still, if you are looking to use some software that you can use commercially without worrying about piracy, Open-source has an answer for you!
Happy Coding!! :) :) :)
Yours, Akshit :)

How to make android AVM load faster

Well, Me n my Big Bro were just cruising through the colorful flying thoughts going from our minds, I just said, I wanna try Android programming. "Well.... Go n Try!!!" He just replied casually as he usually do. Because he knows me well, all my dreams go till 2-3 weeks. But this time, I got serious,
Well... Got all the required stuffs. Downloaded ADT pack from Android's developer's site, got O'Reilly's "Head First Android Programming" book. (Personally speaking, I like Head First series when it comes to learn new things.) With all the so-called WEAPONS!! I started ADT and coded my first "Hello World" App in android, configured AVT's.
Now came the turn of android programmer's biggest nightmare! The Emulator started to load! avd
Ok! I was knowing it will take time. I went here n there, had water, then had my lunch, n then stroll at balcony! After Half an hour... Still the same Android Screen!!!!
I shutted it down, browsed Google for the problem, found that my configuration was toooooo...... low for the AVD.
Well, my system's configuration (Don't Laugh Please after reading.. It hurts!!)
Mother Board: Intel 945
Processor: Intel Pentium 4 3.0GHz
RAM: 2 GB DDR2
OS: Ubuntu 12.04
I found people crying for the same issues with even Quad-Core processors! Well, finally, I found the solution at this link in an answer by Shrikant!
In order to make your AVD fast to load and so your app, just expand it's heap memory!
Here's how I did.
1. Go to "Window --> Android Virtual Device Manager"Screenshot from 2013-08-25 22:13:36
2. Select your already made AVD and click on "Edit..."
3. You will get the "Edit Android Virtual Device" window. In that screen, change the "VM Heap" size (as highlighted) to larger value. 512 recommended, you can choose more if you have bigger RAM's on your PC. Click OK and close AVD Manager window.
Screenshot from 2013-08-25 22:15:12
That's it!!! Even on the outdated PC's like me, It worked well, and on my system, AVD now gets loaded in a minute!
Will share more hidden tips as soon as I get them through
Till then, Happy Android Programming!
Yours, Akshit :)