linux
Ten steps to programming the make controller in Linux
First go here if you have no idea what I am talking about.
Step 1
Get the Make controller kit ;) Get the power supply too, it's more convenient than connecting the USB cable.
Step 2
Get the Olimex jtag-usb-tiny from Sparkfun Electronics . It's the cheapest way to get started, trust me! Also get a
USB cable A to B while you are there. You will thank me later.
Think Blink
Ok, I rarely find any use of the Thinklight that's supposedly there to help you type in the dark (isn't the light from the LCD screen enough ?). Then, I came across this really cool pidgin plugin called pidgin-blinklight by Joachim Breitner that blinks the thinklight when you receive a new message. Honestly, that's the perfect usage, the light can possibly find, keeping in mind the fact that I hate my sound card to be disturbed when I am doing something serious, err.. watching a movie or playing a game i meant!
I did feel the need to make some changes to the original sources. Notably, I wanted the light to blink until I do not see the pending message. Also, there was a silly path error that prevented me from writing to /proc/acpi/ibm/light as a normal user. I am also now linking against pidgin libraries unlike the original sources that link only to libpurple and so I thought it makes sense to provide the whole sources rather than a patch. You can find it here. You can get the sources yourself by running git clone git://makefile.in/pidgin-blinklight.git
Note that the sources are quite beta but nevertheless they solve my purpose :)
Serious post of the day
Equalize ? Ring a bell ? No ? Ignore the crap or else read on!
Priceless and unused
A couple of months back, I pre-ordered the Samsung-P2. Well, no one knew about it and everyone else was talking about the Ipod Touch, and so, I thought : "Why not try it out ?!" Ofcourse, there were other reasons like integrated Bluetooth that very few other players have on them.That means painless music copying from your home computer or from another bluetooth enabled device. Finally, the player was (somewhat) silently launched in November '07 and Amazon promptly mailed me my box.
ALSA update
Of all the hits my web log gets, a significant number comes from searches, and of all the searches, people land up here or here searching for alsa. Probably, the posts themselves are too outdated to be considered worthy of search; so here's a more recent opinion of alsa with Nvidia mcp51 rev a2 sound card: As of 1.0.14, alsa works out of the box for this card. Even sound capture works! Although I must add that I haven't put it to a rigorous test. I tried making skype work with OSS emulation but failed miserably. (Anyone out there ? on AMD64 ?) So, if you are on a older version of alsa, simply upgrade to 1.0.14. Get the sources or just emerge it if you are on a Gentoo based distribution.
The magic of genksysms
Someone here already has a nice article on this subject.
No matter, how much people say that ABI compatibility is not something linux kernel developers should be talking about, it is here to stay. Now, why am I talking about ABI when I should be talking about genksyms here ?! Well, because genksyms incidentally is a tiny infamous script that can make the process of ABI tracking so much easier. If the link that I posted above leads you to a long post that's fairly intimidating; fear not, because here's a short description :
genksyms is a small script that calculates checksums of exported symbols which then helps in kernel modversioning i.e Whenever a module is loaded, the checksum of the symbol exported by the kernel and the one that is used by the module can be compared to see if ABI compatibility is maintained. This guarantees a stable running kernel.
All said and done, it's upto you to hack genksyms and make it produce output that suits your need.For example, I formatted the output of genksyms to something (shown below) that can be used effectively to find out all the function signatures that changed between two kernels. I call my exquisite option flag 'l' (for supernatural reasons) and so gcc -E $KERNELDIR/sound/sound_core.c | ./scripts/genksyms/genksyms -l produces :
struct class { UNKNOWN } * sound_class 0xa0b0a8de
int register_sound_special_device ( const struct file_operations { UNKNOWN } * , int , sstruct class { UNKNOWN } * sound_class 0xa0b0a8de
int register_sound_special_device ( const struct file_operations { UNKNOWN } * , int , struct device { UNKNOWN } * ) 0xb8934790
int register_sound_special ( const struct file_operations { UNKNOWN } * , int ) 0xc34bd24d
int register_sound_mixer ( const struct file_operations { UNKNOWN } * , int ) 0x1ee13474
int register_sound_midi ( const struct file_operations { UNKNOWN } * , int ) 0x779fcecd
int register_sound_dsp ( const struct file_operations { UNKNOWN } * , int ) 0x0c7829e0
void unregister_sound_special ( int ) 0x99c95fa5
void unregister_sound_mixer ( int ) 0x7afc9d8a
void unregister_sound_midi ( int ) 0xfdab6de3
void unregister_sound_dsp ( int ) 0xcd083b10
truct device { UNKNOWN } * ) 0xb8934790
int register_sound_special ( const struct file_operations { UNKNOWN } * , int ) 0xc34bd24d
int register_sound_mixer ( const struct file_operations { UNKNOWN } * , int ) 0x1ee13474
int register_sound_midi ( const struct file_operations { UNKNOWN } * , int ) 0x779fcecd
int register_sound_dsp ( const struct file_operations { UNKNOWN } * , int ) 0x0c7829e0
void unregister_sound_special ( int ) 0x99c95fa5
void unregister_sound_mixer ( int ) 0x7afc9d8a
void unregister_sound_midi ( int ) 0xfdab6de3
void unregister_sound_dsp ( int ) 0xcd083b10
If you are wondering WTF is this guy trying to prove, diff-ing the outputs from two different kernel versions will not only show you the cheksums that have changed but will also show why they have changed (in terms of function signatures). That makes the whole thing much transparent.
Neo1973: I am getting one for sure
I rarely heard of it before until someone posted about it on my company's mailing list. A phone that's free in every sense, Wow!
Alsa blues (Part II)
It's almost a month now since rc3 was out and I was very excited about it. I got hold of an ebuild from flameeyes's overlay. I guess it's the same one that's now incorporated to the official tree. Everything went so fine and clean. The compilation, running alsaconf that detects the sound card and voila! alsamixer shows two external capture channels, left and right, as if my long awaited dream of getting capture work was about to come true!
Cooling off
These poor CPU companies are busy packing more power into their chips ignoring the heat that comes along. If you are on a Gentoo machine, I bet you know that your CPU has to take compiling stuff for granted. But what about overheating ? It had almost become a kind of common routine on my laptop. While compiling something or maybe just that many applications are running, the system would simply shutdown!
Reason: Critical temperature reached on one of the cores.
alsa and MCP 51 don't go hand in hand
I have been doing this may be for almost a year now. Go to the alsa page to frequently check for new releases of the driver and go through the change log to find out whether my cursed sound card gets a little bit more support.