OCRKit 1.2

May 24th, 2010

After the amazing success of the last, and very focused ExactScan release we continued the same with OCRKit. Version 1.2 shipped with hundreds of new internal test cases and all bugs closed that our valued customers brought to our attention, not to mention the always improved recognition accuracy. Oh, and last but not least we engineered a new de-screen filter that we also put into this OCRKit release, it can drastically help recognizing text on dotted background, like 25% or 50% dot background as used so often in popular spreadsheet applications.

Simply dag’n drop your files on the OCRKit application icon.

Bad habits: (Statically linked) library copies

May 22nd, 2010

Today (yes, a Saturday, don’t ask I have to work any day, …) I had to hunt an ugly bug for a custom. Actually that gdchart, an aging PHP charing extension, does not work with PHP 5.3. Actually an issue that is all over the web and zillion of people want to see work and a patch for.

I wonder why there are no patches for this apparently kind of prominent issue. Anyway, after too much time diving thru all the mess that is PHP (yeah, I’d prefer nearly any language, such as Lua, but that is a different topic), I found the culprit the all so often “private, modified, and statically linked copy of a library” problem. Point in case: libgd, an albeit aging and ugly graphic library by itself.

So PHP 5.3 changed the symbol visibility and no long exports the libgd symbols the gdchart extension needs to perform it’s work. So after finding all this out the fix (or workaround, whatever you wanna name it) was trivial. I wonder why noone else came up with a fix, yet. Though, maybe PHP website constructors are just not up to digging thru such details.

Point being: Don’t ever, never ever, copy a library into your project and link it in statically. You’ll doing anyone a favor. Not yourself, not the distributors, nor the users. Yes, I understand it’s tempting, and worst historic coding practice. But don’t! It will just duplicate workload and headache. Not only will it age, be subject to security issues, bugs and lagging features long after the upstream library was improved. You’re unlikely doing a better job on it than the original authors. And from my T2 experience I know it! Maintaining all the thousand packages I have seen it all: from zlib, to libjpeg, libtiff, libpng, libgd, or lua, you name it.

And for the higher educated readers: You will also waste storage space by having the same executable code bundled multiple times, as well as also consume more virtual memory as those multiple executable chunks have to be mapped into memory multiple times as well, …

Spread the word: Google open-sources VP8 codec

May 19th, 2010

Subject says all! It is great to see modern, efficient, and supposedly not patent encumbered codec pushed by a major vendor.

It got a new name, too: Now called WebM = VP8 + Vorbis in an Matroska container.

Update: Apparently does not really live up to expectations, … :-( Though at least more open video codec code, and traction in the X.264 patent debate against Theora, et al.

Update 2: And in T2.

Android’s Dalvik Java VM JITed in 2.2

May 18th, 2010

So Android 2.2 adds JIT, Just-In-Time compilation of the Dalvik Java VM. This must be a joke. They tried to compete on the mobile space with that slow apps? Against other, native, frameworks. No wonder Android was that lagging. And it took them over 5 years to get to JIT? I’m feeling lucky I didn’t got an Android phone :-)

The truth about Flash: It sucks!

May 13th, 2010

Now Adobe continues to get crazy about one set of devices not supporting Flash. Just like a yearold taken the lolly from. However, this is pure bullshit^10.

In the beginning (about 10 years ago) Flash was mostly about animated advertising. And no-one wanted it. Heck it wasn’t even available for a vast majority of U*ix a-like systems and Macromedia gave a shit. Then came it time where Flash was used for more useful things, and whole web-sites where implemented in it (though still mostly advertise driven micro-sites for product placement, anyway). Open source folks actually wanted to start to view them, but the Flash player was then still only available for i386, 32bit. Still leaving the vast majority of other architectures and U*ix a-like systems out of luck. Heck, Macromedia, now Adobe even hindered attempts re-implemtngin Flash in an open source way. Open source implementation, such as Gnash are still not complete(ly usable).

And now, just because Apple decided not to support Flash on the iPhone they go nuts? Hello founders of Adobe: Do you actually noticed how much we went nuts that there was no Flash for Linux/Alpha, Linux/PPC, BeOS whatever? No Photoshop for Linux? Do you care about that?

Of course Apple position is likewise awkward: Not supporting Flash in their Mobile Safari is one (reasonable) thing. But forbidding other developers to use certain programming languages (like Lua, Python, Ruby, or this crappy Flash if one absolutely wants, to) in the Apps they then can only sell via the iTunes App marketplace is another, not very nice, move at all.

Certainly Adobe is just all nuts, because they see their cash cow going under. But truth told: The web is about web, is about the web, is about the web (www, got it?). That is by it’s initial definition HTML+CSS+Javascript, in modern words: AJAX. What unportable plugins try to add there (read Flash and other crappy, Active-X plugins, et al.) is not “the Web”. That are proprietary and unportable platforms tried to establish by companies to generate a cash flow. Nothing else. And in times of HTML5, Canvas and Video certainly not needed anymore, anyway.

The least thing you want on your mobile phone is pure software video decoder, that’s not using SoC accelerators, rendering everything in RGB spaces, and burning CPU and battery like nothing else. That’s certainly no help for the all so important mobile device’s battery life and smooth interactivity. Actually even on my multi-core notebook the fans start to spin up when I just read an article on an Flash advert laden news-site and those Flash ads are playing their game, even in non-visible parts of the site!

That the iPhoneOS (and thus the iPod Touch and iPad) finally contribute to the downfall of the Flash legacy is certainly the only positive thing the FSF and open source folks can find in Steve Jobs recent actings.

However, the use of patent encumbered H.264, in either Flash or HTML5 is certainly another non-open issue on the modern web.

I did not miss Flash 10 years ago under Linux, still do not have it on my Linux machines, and will miss it even less once Apple decided to ship the IPad in the non-US world, that is Europe and I can hold an iPad in my hands.

The world does not ned a proprietary web, does not need Flash. Then again the wold needs nothing from us, but humankind needs peace, freedom, and more so drinking water and food for all in any area of this world.

Apple Bluetooth Headset

May 13th, 2010

A long long time ago, 2+ years or so, I got the Apple Bluetooth Headset to accompany my iPhone. The Apple Bluetooth headset is pretty, astonishing, and awesome(!) tiny, slim and sexy. One could say of superb design –a design icon– that could live in a museum (like near the G4 Cube at the Museum Of Modern Art).

However: It features the worst audio quality I experienced, ever. Even worse than an IBM PC XT/AT PC speaker. Noisy, damped, and other block artifacts that sound like skipped, dropped Bluetooth packets. Absolutely uncomfortable to talk over. Some is certainly due to the monophonic and low bandwidth Bluetooth Headset Profile (HSP). However, other headsets sound at least somewhat better, and usually do not have that many gaps, due poor Bluetooth signal, dropped packets, whatever.


Battery life is also not that stellar, some some hours of talk time, and a day standby (or so). Which is certainly no surprise given the tiny nature of the device, and the therefore absolutely miniature battery somehow squeezed into it.

The biggest selling point certainly is the smooth iPhone integration, including the automatic pairing when connected to the dock connector, and battery level indication in the status bar, and recharge lock screen.

In retrospect, the Apple Bluetooth Headset is actually the gadget I least used, ever. Given the poor Bluetooth connection and battery life it is certainly no wonder even Apple stopped sales and took it off the market just months after it went on sale.

Tip of the week: fixup Mac OS X A2DP bitrate

May 8th, 2010

I wanted to try out Bluetooth stereo audio for some time, now, and just got myself my first bluetooth headset, ever (more on that in another post). As audiophile my first impressions where a little mixed, but eventually I figured out why they where worse under Apple’s Mac OS X, even compared to Apple’s iPhone 3G. Some excessive research turned out why (beside the crappy SBC codec mandatory in A2DP): OS X’s “BluetoothAudioAgent” may use forbidable low bit-rates for the forbidable bad audio codec by default! The straight-forward, cut’n past-able tweak is as simply as running this in your terminal:

defaults write com.apple.BluetoothAudioAgent “Apple Bitpool Min (editable)” 52

The max may be 64, however, 56 did resulted in the agent to connect to my headset, 52 worked. Please post a comment if a higher rate works for you, or you need an ever lower value (btw. the default appears to be as low as 2! …). Now with the tweaked setting a lot of the noise, hissing, and other compression artifacts experienced with A2DP under Mac OS X are gone! :-)

On the way I found out something likewise interesting: The menu extra’s (the little widgets in the top-right area of the menu) show alternate versions when clicked with the Option key hold down (unlike other, regular, option-click context menus for this easter egg a possibly enabled, real right click is not enough, you have to Option-click).

For example the WiFi one shows some internals: BSSID, PHY mode, channel, encryption, … the Audio one lets you switch your audio sources (!!!), the Battery one shows the condition, and the Bluetooth one display the version, and entries for the Bluetooth Explorer, Diagnostics Utility, and PacketLogger. Neat!

Which finally brings me to the UI way to do this tweak: Option-click the Bluetooth Menu Extra : Open Bluetooth Explorer : Utilities : Special Options… : Audio Options : For A2DP connections use these bitpool values: Minimum : 52

Personally I find the “Special Options…” particularly amusing.

By-the-way: performance metric on the side, on an underperforming Atom Z530 iTunes consumes 11% CPU (3% on a 2.2GHz MacBookPro) decoding an average MP3, and the BluetoothAudioAgent a little more than 16% (5% on a 2.2GHz MacBookPro) to encode the audio stream into the sub-standard SBC (Sub-Band-Codec). Not only would MP3 codec over A2DP support in more headsets and Bluetooth stacks save at least those 16% of the re-encoding, it would also save some of the 11% initial decoding, and improve audio quality by magnitudes!

Hardware vendors, please? Guess it’s time to bring my own advanced-codec Bluetooth headsets to the market :-)

Mac OS X Panic due bad exception behavior?

April 30th, 2010

Now this is insane, and sad:

panic(cpu 1 caller 0×21b8c6): “bad exception behavior!”@/SourceCache/xnu/xnu-1504.3.12/osfmk/kern/exception.c:298
Backtrace (CPU 1), Frame : Return Address (4 potential args on stack)
0×71c4bbe8 : 0×21b449 (0×5ce420 0×71c4bc1c 0×2238a5 0×0)
0×71c4bc38 : 0×21b8c6 (0×584e34 0xc1d7b90 0xc1be1f0 0×1)
0×71c4bee8 : 0×21ba31 (0xa175b7c 0×1 0×71c4bfa0 0×2)
0×71c4bf38 : 0×2a844f (0×1 0×71c4bfa0 0×2 0×1)
0×71c4bfc8 : 0×29e80a (0×8b55a20 0×0 0×10 0×8b55a20)

So much for Apple’s “superior OS”, and “Unix foundation” advertisements.

An OS that is catched with pants down that easily is like, well, actually, like Mac OS 9, or even worse: Windows 95, 3.1, etc. Hell, it is like DOS!!!

And this while Steve is just lulling about Flash crashing Macs. Frankly I do not remember a single crash of Safari due to Flash, … It might be slow, but at least it did not crash on me (on OS X).

Every linker needs to behave differently?

April 26th, 2010

Even just using Linux, Mac OS X (that is not so much Windows), why the heck does every linker needs to be have differently?

The GNU one for example can not create relocatable, static objects with hidden symbols stripped. The GNU masters just wave you off, telling you to simply ship a zillion shared-object files. When all you want is some program executable? Thanks.

Fortunately Apple’s legacy linker does even allow the above (not that it is too useful if most Unix linkers do not, …) But the Apple linker only supports this for ppc, ppc64, and i386 - that is, not for recently added x86_64. Oh my!

It could not be more bizarre, could it?

Let’s hope that LLVM eventually get’s it straight – maybe fixing the incompatible tool-chain mess in the long run, …

Update: LLVM 2.7 is out!

Wondering about the sense of cmake

April 26th, 2010

Thanks god I’m not only wondering how much sense cmake does make!