Karmic Koala and using more than 3 GB of RAM in its 32 bit installation.

I upgraded my laptop OS to Karmic Koala (Ubuntu 9.10) beta version to play with new features and capabilities provided in this release.

Out of habit or whatever I am using 32 bit version of the OS both on the laptop and desktop (both are 64 bit) and I rather prefer to stay with 32 bits as some application sucks on 64 bit (are they still suck?). Well in previous versions I replaced the kernel with a server kernel to have access to all of my 4 GB of RAM but in the new release it is not possible to install the server kernel for 32 bit architecture as it is dropped :). To get more information about provided kernels take a look at : https://wiki.ubuntu.com/KernelTeam/Specs/KarmicKernelFlavours

So, how we can use more than 3GB of ram on a 32 bit Ubuntu? It is simply possible by installing the linux-generic-pae meta package. you can install it simply by using the following command or clicking on apt:linux-generic-pae link if you are using Firefox. (I do not know whether other browser can handle the link type correctly, do they?)

sudo apt-get install linux-generic-pae

The above command will install linux-image-2.6.31-13-generic-pae and linux-image-generic-pae or newer version when available. You may need to install the linux-headers-generic-pae if you are planning some development.

Now you need to restart the system and boot using the new kernel. By default Ubuntu should use the latest kernel version available in the system.

To see the amount of recognized RAM use free command …. just type the command in the terminal and you will understand.

If you can not use more than 3GB of ram after restarting the machine it means that Ubuntu is using the generic kernel and you should either remove the generic kernel or you should change the boot configuration.

To make the new grub show the boot loading menu you should open /etc/default/grub and comment the GRUB_HIDDEN_TIMEOUT=0 after commenting this property and saving the file you will need to execute the following command which will generatet he /boot/grub/grub.cfg file:

sudo update-grub

Now you should be able to see the boot loader menu to choose the kernel version you want to boot with.

To remove generic kernel packages you can use a command like the following command depending the kernel version you want to remove.

sudo apt-get remove linux-image-2.6.31-13-generic linux-image-generic

Fanurio: A management solution for freelancers.

Well, everyone used to freelance for some time and some people freelance for their entire working life. An integral part of freelancing is interacting with customers and keeping track of projects, tasks, and services related to each customer.

A freelancer can start with Excel sheets to keep track of working hour spent on a task in a project and finally calculate how much the client should pay for the time s/he spent on the project by summing the amount of time s/he spent on each task.

At some point freelancers will find themselves in need for a better management solution to keep track of everything related to the customers, projects, services, tasks, payments, invoices and so on.

This is when the freelancer will start looking for a software to manage them. a software which we can define customer and projects and then we start adding time slices to the project and shows us how much time we spent on the project and how much cash we should ask the customer to pay.

The above solution will work for sometimes and after that a more complex management solution will be required to manage the customers, projects, services, tasks, spent time, unit of works and so on and so on. this is when we start looking for a software capable of doing all things with the smallest amount of time devoted to keeping the record of time spent for a customer.

The search for such a tool will took longer than you think because there are more than a handful of software doing the management tasks and selecting a good one will take some time.

I have been in this path and up to 3 months ago I was using eHour to manage my work with different customer on multiple projects for each customer but after some time i felt the need for a more automated software which means a more complete in term features like:

  • Bill-able and non-billable tasks and services
  • Multiple way of measuring the work units
  • Simple accounting and invoice/ payment management
  • customizable invoice templates for different customer/projects.
  • Simple way of measuring the time I spent for each task/ service / project…
  • easy back up restore for the database
  • Cross platform with easy data migration between different platform.
  • etc

All of these requirement satisfied when I start using Fanurio. The software is simple, slick and amazingly complete comparing with other software I tried during the evaluation period.

I simply start the application, it sits in the System Tray (Windows, Linux, Mac…). I click the start time, when required I pause the time and when finished I stop the time. I select which customer, which project and which service I want the time to be appended and it is finished.

As you have already guessed software is developed using Java and benefits from a very good and easy to use GUI. A feature that I learned about after about two weeks is an alternate view which shows a timer counting amount of time we spent since we started the timer.

Down to technical terms, this application uses HSQL, Swing, JGoodies Looks, Itext for PDF generation and rendering (Invoices can be generated in PDF or HTML) among other libraries. It also uses the ehcache and Hibernate in addition to using Freemarker for templates.

With all good features there is an small drawback which probably means nothing for 99% of developers. The software does not support Arabic text properly both in the GUI and in the generated PDF files. The encoding of HTML files are not correct as well (it can be viewed by changing the encoding from View menu) I think the GUI drawback is related to JGoodies Looks and the fact that generated PDF files are not in correct order is because of how developers are generating the PDF files. I am sure that this will be fixed in the next version and thanks to the auto-update feature of the software we can simply update the software with new features and bug fixes.

This software shows how good we can combine open source projects to create an actual and working piece of software. I recommend you try it before starting a witch hunt for a good freelancing management software.

You can find more information and a trial version at http://www.fanuriotimetracking.com/

Competition is good but to what extend and at what expense…

It is always said that competition between different producer and companies producing similar products is good for the end users and consumer of those products because the each company tried to provide better products to satisfy the consumer and finally receive more income.

All of the above are true when we are discussing commercial entities which produce the products, for example ORACLE and IBM competition lead to better database and set of middle-ware. But I believe it is not the case for open source projects and specially for smaller open source projects.

Looking around we can find at least 10 different open source blogging clients, MP3 meta data editing tools, media players, instant messaging clients and so on. Except for the first project, other similar projects started after there was something usable around. Developers working on each of these projects work to implement same set of features without looking for potential income while if they combine the engineering and working hours with each-other they could develop a far better project without waiting the time for developing similar functionalities over and over.

There are tens of good projects abandoned because another similar project gained the momentum, developers left the project and start working on another open source one. The result is waist of a developer time and talent which can make big differences in already established projects. Imagine that all developers working on different instant messaging project combine the effort and work on one of available IM projects, wouldn’t that please everyone in the community?

I think it even make the developers happy because it will result in a better working software which any developer enjoys.

I know that there are architectural differences between projects and developers think that they will do the job better than the previous one, I was there once and I know how does it feel, but believe me, working together on a single project makes much more sense than working on 10 separate projects with similar goals and later on seeing 7 of them abandoned.

Again, I am not referring to well funded projects like Gnome, KDE, Eclipse, NetBeans, GlassFish, etc. But rather I am referring to projects which we start as a hubby or as a thesis or to learn some new technologies. A good portion of our efforts can benefits an already established project instead of being deserted after we satisfied our requirement which is learning something, passing a course and so on.