Unusual USB Devices in Linux Kernel

Some USB devices (especially cheap ones) are not fully compatible with the USB Stack and when you connect such devices to your target board, the kernel may output errors similar to the one below even though most other devices work perfectly. sd 3:0:0:0: SCSI error: return code = 0x10070000 end_request: I/O error, dev sda, sector 0 Buffer I/O error on device sda, logical block 0 sd 3:0:0:0: SCSI error: return code = 0x10070000 end_request: I/O error, dev sda, sector 8 Buffer I/O error on device sda, logical block 1 sd 3:0:0:0: SCSI error: return code = 0x10070000 end_request: I/O error, dev sda, sector 16 sd 3:0:0:0: SCSI error: return code = 0x10070000 end_request: I/O error, dev sda, sector 24 sd 3:0:0:0: SCSI error: return code = 0x10070000 It previously happened to us with a IDE to USB adapter based on Super Top Bridge ( VID: 0x14CD / PID: 0x6600). The Linux kernel has a special file to handle such devices […]

Software Code Review Study and Best Practices

Many companies perform software development without code reviews – the systematic examination of source code intended to find and fix mistakes overlooked by the original developer – or at least without formal reviews. I’ve recently come across The Value and Importance of Code Review white paper from Klocwork who commissioned an independent company to survey IT professional. This paper shows code review practices have not changed much over the years even though software development have dramatically evolved. Here are the key findings of the study: Code reviews are valuable, but approaches tend not to be formal. Modern development is increasingly complex,  and code reviews are not keeping pace. (i.e. Code reviews are low priority tasks) Code reviews don’t always include the right people. (e.g. Architecture and QA Team are left out, only only software engineer are part of the review) Tools don’t play a significant role in reviews. (e.g. code coverage and code analysis tools) Process and time limits inhibit […]


Installing Chrome OS with CD or USB

Chrome OS is a lightweight Linux distribution build around the Google Chrome Browser, it is not related to Google Chrome OS. I suppose they may have to change the name sometimes in the future. To install it, simply download Chrome OS Live CD to try it out on your hardware. Bear in mind this is a Release Candidate version (Chrome OS 0.9.576 RC released on 7th of December 2010) at this time so it should be relatively stable, but expect a few bugs. Here are the main software packages installed in Chrome OS: GNOME 2.30 desktop environment Google Chrome 9.0.576 web browser Google Picasa 2.7 photo manager OpenOffice.org 3.2 office suite GIMP 2.6 image editor Flash Player 10.1 plugin Wine Windows emulator 1.2 Pidgin 2.6 instant messenger Dashboard in browser (See screenshot below) Here are the system requirements of Chrome OS: Processor: Intel Pentium, Xeon or newer; AMD Duron, Athlon, Sempron, Opteron or newer RAM: min. 256 MB Hard disk: […]

Google Chrome Notebook Cr-48 and Chrome OS Update

After unveiling Google Nexus S and Android 2.3, Google lifted the lid on its reference notebook codenamed “Cr-48″ and provided updates about Chrome OS. This notebook features a 12.1” monitor and runs Chrome OS on an Intel platform. The Cr-48 Chrome Notebook is only designed for Chrome OS pilot program and will be distributed free of charge to selected organization and users in the United States. Here’s an excerpt from Google Chrome OS website: Each participant in the Pilot program will receive a Cr-48 Chrome notebook; in return, we’ll expect you to use it regularly and send us detailed feedback. Sound interesting? Please note: Chrome OS is for people who live on the web. It runs web-based applications, not legacy PC software. The Pilot program is not for the faint of heart. Things might not always work just right. The Pilot program is open to individuals, businesses, schools, non-profits and developers based in the United States. If you think you’ve got what […]

Google Nexus S and Android 2.3 (GingerBread) Unveiled

After much speculation, Google and Samsung finally lifted the lid on the Nexus S, the successor of Nexus One. It will be available for sale (unlocked) in the US on the 16th of December (Best Buy – 529 USD)  and the UK on the 20th of December (Carphone Warehouse – 549.95 GBP) Samsung/Google Nexus S runs Android 2.3 (gingerbread) on a processor based on cortex A8 (Hummingbird) clocked at 1 GHz, with 512 MB RAM, 16 GB internal storage. The full specs are available on Google Nexus S page. One interesting new feature is Near Field Communications (NFC) that will allow the device to read RFIDs (e.g. for Interactive Advertising) and behave like a contact less card. So the phone might be used to make payments in the future and replace your credit/debit card. It could also be used as a contactless stored value smart card  similar to the Octopus card in Hong Kong and EZ-Link card in Singapore. At […]

What is Augmented Reality ? How to develop Augmented Reality applications ?

Now, we start to hear many smartphones or tablet pc feature Augmented Reality (AR). But what is it exactly? Are there any applications right now? How to development application making use of Augmented Reality? Augmented Reality Definition Ronald Azuma’s definition says that Augmented Reality: combines real and virtual is interactive in real time is registered in 3D Augmented Reality Applications Augmented Reality usually involves a real-life background capture (image or video) which is then going through image recognition and finally, some data is overlaid on top of this background. Here are some of applications that are available today (commercially or experimentally): PSV Eindoven has created an application to track offside at football matches. Augmented Reality Business cards can be scanned, recognized and a video presentation of the person and/or the company on the business card can be played back. Augmented Reality can help you find your way (and your holes) at golf courses. There are numerous Augmented Reality maps that […]


Detecting Code Duplicates in C/C++ with CCFinderX

Over time, as your source code repository and software team(s) grow, you may have more and more code that just does the same thing. This is obviously not desirable since several persons work on code doing the same thing, so you just pay twice for the cost for development and debugging. To avoid this issue, proper team communication and management must be in place (e.g. discourage copy/paste of source code, use a common source control repository..). However, it might be difficult to always detect where the code duplicates are. Luckily, code duplication analysis tools such as CCFinderX are here to help. As described on CCFinderX website: CCFinderX is a code-clone detector, which detects code clones (duplicated code fragments) from source files written in Java, C/C++, COBOL, VB, C#. CCFinderX is a major version up of CCFinder, and it has been totally re-designed and re-implemented from scratch. Its new design and technologies aim at improving performance, enabling a user-side customization of […]

Languages, Unicode and Charset

If your application needs to support multiple languages or if it needs to support languages with different character sets such as simplified Chinese (GB2312, GBK, GB18030, HZ,..) or traditional Chinese(BIG5, HKSCS, EUC-TW) you’ll need to make yourself familiar with Unicode and the different character sets. In this article, we’ll focus on introducing character sets,  manipulating and converting charsets and the possible challenges you may encounter while handling Unicode text files. If you plan to support multiple languages, you’ll also have to internationalize your application, for example by using Po files for different languages, a Po file editor and possibly have the translations done in launchpad if your project is open source. But this would be another subject. Go for Unicode If you are building a new application make sure its structure is based on Unicode (UTF-8, UCS-2, UTF-16 or UTF-32 ) since those charsets can handle most written languages (UTF: Universal Character Set) and are widely used. UTF-8 is the […]