Life is hard. Especially in the working hours. The more hard the more you have to do your job on linux for linux. If you think about it, that’s odd. Back in the Days, Unix was the result of a young team that sought a programming (and hacking) environment. At times they had very programmers-unfriendly environment and Unix was very successful in this respect – text editors, interpreters, advanced shells, programming tools and the like flourished in the Unix filesystems.
Today is like those days… well it is still like that, in the sense that the rest of the world, most notably Microsoft, caught up and overtook the Unix command line.
First, suppose you want a project aware C/C++ editor. In the Windows world, maybe you have not much choice, but the answer is easy, the latest Visual Studio is quite good, allowing you to do nearly everything in a comfortable way. Linux is lagging behind, there is vim, emacs and Eclipse. Eclipse is indeed good (considered the price), but its C/C++ editing capabilities are far inferior to the basic Visual Studio. Maybe you can get it working in the same way, but this requires a great effort for those that are not fluent in this developing environment.
Suppose now that you want to interface your application with audio. If you use the basic operating system functionalities (likely OSS) you can do it rather quickly at the price of audio exclusivity. If your application is running no one else can access it.
This is known problem and has a known solution – using a sound daemon that perform mixing from multiple audio applications. This is reasonable.
What is unreasonable is that Linux sports a wide variety of such deamons, everyone has his own. What is yet more unreasonable is that both Redhat/Fedora and Ubuntu use the eSound daemon that has no documentation.
So you are forced to not have a standard choice and, what is worse, the choice you are forced to has no documentation whatsoever.
Frustrating, isn’t it?
Searching (other people’s) code
You know, the better you know how to use Google the better you do your work. Be it searching, discovering, copying or taking inspiration Google is today as close as possible to the sixties idea of the omniscient computer. Just ask, it knows the answer. As a programmer I’m used to googling quite often, but it’s just today that I discovered a Google tool aimed at easing the programmer life. Google code search is a specialization of the best search engine to search through all the code available on Internet. It is impressive by itself allowing you to use regular expression, specifying language or license! The advance search shows a more usable form and allows you to specify negation and case sensitivity.
As this is a great tool for programmers, it is a great tool for those looking for vulnerabilities and security issues (be they the Good or the Bad boys). Have a look here to get a glimpse over what you can recover via Google code search.
Mysterious Hardware
After all, I am only a programmer. I know something about electronics, but that’s nearly all theory. I did some soldering when I was young, but my resources were too constrained to allow me a real understanding of the matter through experience. So, today I’m doing my programming job on a prototype hardware containing an ARM chip and some other almost invisible components. Working with prototype computers ranges from funny to entangling complicated. The reason is that it is very hard to understand and find where the software bug ends and where the hardware bug begins.
The funny part is usually when you understand that’s not your fault before banging your head against the wall too hard.
This board has about an entry-level-PC audio capabilities, so a mic-in line and a speaker output. For testing purpose I hooked the audio input to a PC continuously playing audio via a voltage divider. The speaker out is always connected to a… well, a speaker.
Now when no software is running the speaker is mute no matter what is coming in through the mike.
You can imagine my surprise when hooking the PC serial cable to the board I heard the music through the speaker! Remove the serial and the speaker mutes back. *Gosh*! That’s surely not my fault!
Another pretty fault as easy as astonishing is that a clicking noise in the sampled audio happens only when the board is battery operated. The audio is noise-clean when the board is tied to the AC power supply.
Nonetheless I am admired that such an engineering jewel is working (mostly) as expected. Kudos to my colleagues!