PC Speaker

If you are getting mad by the sound of the PC Speaker while you are working in the console mode, kill it before it drives you mad.

sudo rmmod pcspkr

Update: It is better to do,

sudo modprobe -r pcspkr

Latex tip - how to include graphics

Tools

First convert your PNG file to EPS format. For that the png2eps can be used. To make png2eps work you would need to install the following:
  1. pngcheck (part of netpbm)
  2. pngtopnm (part of netpbm)
  3. pnmtotiff (part of netpbm)
  4. tiff2ps (part of libtiff-tools)
  5. sed basename bc (should come default with your distro)

$ sudo aptitude install pngcheck libtiff4 libtiff-tools netpbm
$ wget http://www.henlich.de/media/png2eps/png2eps
$ chmod a+x png2eps
$ ./png2eps myimage.png > myimage.eps

Using graphics

\documentclass[a4paper,10pt]{article}
\usepackage{graphics}
\usepackage{graphicx}

\begin{figure}
\caption{some figure}
\begin{center}
\includegraphics[bb=0 0 438 476]{myimage.eps}
\end{center}
\end{figure}


NOTE: Although I prefer PNG, if you have a jpj file, the jpg2eps tool can be used.

[Source: A PNG to EPS convertor, Images in LaTeX]

Update:
I have found it much easier to create illustrations in Dia and export them directly in the eps format. Dia is available for Windows, Mac and Linux.

Empathy has a long way to go!

The new IM client on 9.10, Empathy, is not at all impressive or may I say that I am so used to Pidgin that I had to switch back.

What is bad?
  1. Notification mechanism - when someone pings you, the new chat window does not show up but is hidden in the notification area, which is really weird
  2. Does not give too many options under preferences
  3. You can't search for contacts while they are offline (which is required because most of the people are invisible these days)
  4. You can't add a buddy pounce
  5. Empathy would always remember your password. If you tell it not to, it won't log you in and once you give your password, it stays there. (this is really weird)
  6. You can't close a conversation with the ESC key

The GREAT news is that Pidgin now supports voice and video, so can someone please tell me why they hell did Gnome decide to dump Pidgin for Empathy :-o

How to install Pidgin?

sudo aptitude install pidgin pidgin-themes pidgin-facebookchat pidgin-musictracker

Latex tip - don't forget to run bibtex

If you compile your .tex file and end up seeing an error ".bbl could not be located", after you open the .dvi file generated, you will notice that the reference section is missing. This is because in the first run LaTeX created the .aux file which needs to be fed to Bibtex which will generate the .bbl file.

So,

#1 $ latex source.tex
#2 $ bibtex source.aux (generated in Step #1)
#3 $ latex source.tex


Kile does this in one shot, it is able to figure out that bibtex needs to be run in the middle.

Q: Is there any another way to do this in one shot from the command line?

Sqlite

SQLite is a C library that implements an SQL database engine. Programs that link with the SQLite library can have SQL database access without running a separate RDBMS process. (src: aptitude show sqlite)

To install sqlite on Ubuntu

$ sudo aptitude install sqlite3

Help
SQLite documentation,
SQLite in 5 minutes or less,
Using SQLite for simple database storage
C\C++ API reference

Ubuntu 9.10 is here



Ubuntu 9.10 Karmic Koala is here. Download now or upgrade from existing installation.

Check the upgrade notes before going for an upgrade.

[Source: Upgrading to Ubuntu 9.10]

  1. Start System/Administration/Update Manager
  2. Click the Check button to check for new updates
  3. If there are any updates to install, use the Install Updates button to install them, and press Check again after that is complete
  4. A message will appear informing you of the availability of the new release
  5. Click Upgrade
  6. Follow the on-screen instructions
On the blog-sphere

Latex Math symbols


A good online reference to the different Math symbols in LaTeX. The file A.tex has all the symbols for ready reference.

Download the file
$ latex A.tex

Open DVI file in Evince or Okular.

Tools

You would need to install latex(TeX-Live). Also, KBibTex, Kile and Lyx are highly recommended tools

sudo aptitude install texlive-full kile kbibtex lyx

Ubuntu LaTeX help guide

Shared libraries

Remember

gcc -shared -Wl,-soname,your_soname -o library_name file_list library_list

Which means, if you have a.c and b.c

gcc -fPIC -g -c -Wall a.c
gcc -fPIC -g -c -Wall b.c
gcc -shared -Wl,-soname,libmystuff.so.1 \
-o libmystuff.so.1.0.1 a.o b.o -lc


Then create the symbolic links to libmystuff.so and libmystuff.so.1 from libmystuff.so.1.0.1 and don't forget to add the libraries to the standard path /usr/local/lib OR add the path to LD_LIBRARY_PATH before executing.

More details: Creating shared libraries
Very good How-To: Link

pthread

A very good one-shot tutorial to the POSIX thread libraries (pthread). Talks all about threading, synchronization and scheduling with example code.

Deadline scheduling for Linux kernel

A new scheduler class has been proposed for including deadline based scheduling algorithms like EDF
The public git repository is available on gitorious
git clone git://gitorious.org/sched_deadline/linux-deadline.git

Generating patches without cleaning code

Instead of generating a patch from two pristine copies of the code (one with your changes and both not compiled), it is useful to create a exclude-list of all the files that you want to ignore.

 .*
 *.lds
 *.o
 *.o.*
 *.a
 *.s
 *.ko
 *.so
 *.so.dbg
 *.mod.c
 *.i
 *.lst
 *.symtypes
 *.order
 *.elf
 *.bin
 *.gz
 *.lzma
 *.patch
 *.gcno
 tags
 TAGS
 bzImage
 vmlinux
 System.map
 Module.markers
 Module.symvers
 !.gitignore
 !.mailmap
 patches-*
 patches
 series
 exclude-list
 filefortag
 filelist
 cscope.*
 ncscope.*
 GPATH
 GRTAGS
 GSYMS
 GTAGS
 *.orig
 *~


Then create the patch

diff --exclude-from /path/to/exclude-list -urNd linux-2.6.24-hunterwala linux-2.6.24 > patch_file

Each line in exclude-list is a pattern which diff would match and ignore the files. I am having trouble excluding following directories.

include/asm
include/asm-*/asm-offsets.h
include/config
include/linux/autoconf.h
include/linux/compile.h
include/linux/version.h
include/linux/utsrelease.h
include/linux/bounds.h
include/generated


So, the -N passed to diff would treat these as new files and include them in the patch. :(

TODO: Update post once I find a better way to handle directories.

[The exclude list above has been taken from .gitignore]

Threading and parallelism

Another good series of articles found on www.embedded.com on threading and parallelism

Part 1: Parallelism and threading primer
Part 2: The threading development cycle
Part 3: Debuging and tuning multi-threaded code

Linux performance analysis for embedded system

Nice series of articles found on www.embedded.com

Part 1: Available tools
Part 2: Profiling/analysis methods and techniques