20090414

Linux Foundation Video Contest ... Winner?

 Well, the Linux Foundation has released their winning video today...


Do I not sound impressed? Yeaaaa.....

I'm actually not that impressed. I have to admit, that I found the winning video to be very dull.  It overly simplifies Linux... actually... does it even mention Linux?? It doesn't highlight how Linux brings people together from all walks of life. It doesn't say how Linux runs on verything from toasters to supercomputers or that it runs on more devices than any other OS in the world.

Please also forgive me for saying this, but ... in the winning video, the narrator's voice silently screams "people who use Linux are geeks, and they can barely speak, much less maintain a complex body of software through social interaction!!" Man, the guy's voice reminds me of the one giving the Grails webinar... ugghh... and I don't have very fond memories about Grails.

I thought that some of the finalists were a little too light-hearted. Some of them were slightly spooky, but I would have thought that a quirky, funny, yet clever video would have snuck through to the end. Alas, I was wrong.

My 5 favourites were this, this, this, this, and this, in no specific order, if only because they captivated or identified with the audience somehow. I would have even preferred the Novell Meet Linux ads over the winner of the contest (Flame suit on!). I would have even preferred the TrueNuff spoof advertisements over the winner, in spite of not being pro-linux whatsoever.

They would have been better off showing a clip of somebody playing NumptyPhysics.

20090411

Re-branding Engineering

Recently there was an comment / article in the EE Times about re-branding the engineering profession as one that is rewarding on many different levels. I wanted to share my reaction to the article, for anyone who might grace these pages with their eyes.

I would definitely agree with Cohn's perspective. He is the IBM fellow who spoke out about his love for the profession, and how he would do it for free. I myself feel the same. John Cohn spends a lot of his time trying to re-brand the engineering profession, and make it exciting for youths. On the other hand, there is a lot of truth to the follow-up saying that the job market for people like us is getting smaller and smaller in North America and Western Europe.

People who don't understand engineering practise, see it as just another expense to get what they want in the end. Yes, that sentiment is directed at the majority of management. So why would any business entity, in their right mind, spend more money to have engineering done in the western world, when they can get the same product from the eastern world at a fraction of the price? From an engineer's perspective, meaning we think sometimes too much about process and financial efficiency, our natural answer to that question, would be 'none'. Maybe the engineering curriculum should include a course about the societal responsibility towards engineering.

Our social system, in North America at least, is starting to become tarnished. We have some of the best technical universities in the world. However, once our engineering graduates step out of the gates, they find themselves in one of the worst job market declines in history. I find it somehow disturbing, that a high-school dropout working on an automotive assembly line can have more in wages, benefits, and job security than a lot of engineers that I know.

Engineering is one of the most demanding disciplines in terms of training requirements, but the social and financial rewards of a career in the discipline are starting to disappear. Training (in North America at least) costs a lot of money. When the payback is not there after graduation and there is only incentive to move to Asia to find work, or to push a pencil at desk somewhere doing some unrelated job, it can be a very discouraging experience. Society today does not reward engineers for their hard work. Aside from labelling engineers as geeks or nerds, this does not paint a very great picture for the future generations.

Aside from outsourcing, middle-management is another problem. I like my company because we have relatively few overpaid executives. The result is that the engineers hold a large part of the business responsibility and decision power. My boss still writes code - it's amazing. The structure of our organization is more-or-less flat, as opposed to hierarchical, like a pyramid, where each manager has a manager.

Maybe these tough economic times will fertilize the industrial landscape for new and unique companies to sprout up. Undoubtedly, this requires that the government make some venture capital available. New graduates who attend a job fair should see a booth that says something of the form
Are you a fountain of new ideas? Are you independent and self-motivated? Good leadership skills? Get a government grant to jump-start your company!

Aside from bailing out the auto industry (don't get me wrong, we definitely need more gas-guzzling cars on the road ... cough, cough, ahem ...), the government should also be making initiative for our young engineers to start rebuilding the industry closer to home, from the rubble of industries that once were.

20090410

Two Bits

Well, I've finally done it. I've been working for a few months now on porting Linux to a new device. Do you know what it came down to in the end?

Two bits in a 32-bit number.

That's it. There were times when I became quite a hermit working on this device. People would look at me like I was crazy sometimes. I had to open it the case and solder a few connections on. At the very beginning I was probing pcb pads to find the right traces. I hooked it up to a scope, put together a few voltage-level shifter circuits. I designed and fabricated a breakout board for easier access to some really small traces.

Just when I thought that I was destined to lose my grip on reality, I was greeted by what seemed to be some ascii characters on the oscilloscope. Then, with a bit more tinkering, at a point in time that seemed to be more precious than diamonds, as my eyes started to well up a little bit, I saw the following message on my console:
Linux version 2.6.29 (cfriedt@localhost) (gcc version 4.1.2 (Gentoo 4.1.2 p1.1)) #5 Fri Apr 10 18:16:27 CEST 2009
CPU: XScale-PXA270 [69054117] revision 7 (ARMv5TE), cr=0000397f
...

The device itself will remain unnamed .... for now ...

20090404

Cringely Compares Financial Mess to a Nuclear Meltdown

I read Robert Cringely's post about the Three Mile Island nuclear meltdown, and thought it was quite insightful, particularly

  • when compared it to the financial meltdown of the last 6 months
  • when he clearly stated that there are consequences for having the wrong people in charge

Quite often, when I speak about the economic crisis of late, I make an analogy that the risk analysts for certain investment firms are very much like the safety engineers in a civil engineering. However, there is one major discrepency - when a skyscraper collapses that a civil engineering firm has built, the engineering firm is held legally and financially responsible. At least in Canada, that concept is stressed upon engineering students right from the beginning. Furthermore, the regulatory body for professional engineering in Canada will not allow someone to act as a professional engineer without certifying that they are fully aware of their own liability. In many cases, the collapse of a building has similar reprocussions to the collapse of an economy. Lives are ruined. Some people lose everything. It's unfortunate that public administration, and certain investment banking firms are not also required to have liability.

The public administration that changed the laws for acceptable risk analysis methods did so based on a paper by a certain Waterloo mathematician. It was a formula for risk analysis that simplified calculation in a few very special cases. In spite of publications warning about improper usage of that formula, the public administration never fixed what they had broken.

The economic meltdown actually started a decade ago after the US government had approved certain changes in acceptable risk analysis for bank loans. The consequences of those changes went unnoticed, because the people overseeing the loans simply did not know to observe them. Similarly, public administration was either not qualified enough to understand the mathematics of the risk analysis methods they approved, or they were simply ignorant of the warnings and did nothing about them.

Why is it, that an engineer can be held legally responsible for disaster, but a financial analyst cannot be? Why is it, that there are often highly unqualified people in positions of great power?

Those are questions that we should really never need to ask.

20090328

This Weekend

Today was the first day that I was able to see Jules since I left Montreal for Kiel, 2 weeks ago - it seems like an eternity already. Erin, Jules, & I were able to use Skype to have a video converstation. He's getting bigger every day! Kids are so great... particularly Jules :) I can't wait until meine kleine Familie is here in May. I think that I won't be able to put Jules down for a whole day. I'm practising keeping my weekends free and packed with fun things, so that when Erin & Jules are here we can own the weekends and do nothing but fun stuff !!

I know that it might seem like little, but my aim is to only work 4 or 5 hours per evening, and do all of my studying during the day - that's about 1/2 to 3/4 of my full-time work schedule. Also, I'm sure that the university lecture schedule will have an afternoon or morning open at least once a week too, which I aim to spend with Jules.

I just changed the background photo on my Desktop to a big smiley picture of Jules too - I'm hooked - I miss my little dude!


In spite of my obvious bias, I really do think I have the cutest little dude in the whole world, wouldn't you agree?

Today, part of my fun-weekend was having a hay-day at the Markt in Exerzierplatz. I believe that stands are set up every Saturday and there are all sorts of bio-food stands (fruits/veges, bread), and some slightly more expensive places ou on peut acheter du fromage. There are, of course, lots of places to get seafood as well. Today, I picked up some rauchte Mackerel a slightly older, harder (Italian?) Gouda called Leonardo, and a sheep's cheese (which will always remind me of Quebec). I also bought some Kürbiskern-brotchen (pumpkin-seed bread) and some Chianti. We bought loads of bio-veges for dinner tomorrow, and I also scored some very kräftig bio / fair-trade Kaffee from Tanzania, which might even overtake Ethiopia or Mexico as my favourite! On the way back, we were walking through a bit of an artsy area, where there are lots of shops and an exhibit or two. There is a very chill cafe/lounge called Sternstunde very close to Schrevenpark, which I'm sure will be a target to go with Erin & Jules after playing in the park all day, this summer.

20090325

CeGCC / MingW32CE Ebuild for Gentoo Linux

It's probably safe to say that there are not many Gentoo Linux users out there who are actively developing WinCE applications. However, today I compiled my first "Hello, WinCE World!" app, messagebox and all, using the compiler from the CeGCC project. CeGCC-0.51.0 is based on fairly recent tools (e.g. gcc-4.1.0), which is a big bonus.

Although seeing a "Hello, World!" dialog in Windows CE surely made my day, the CeGCC compiler is really only a means to get Linux running on  a certain unnameable portable computing device for work. I'm using the HaRET bootloader which has shown promise for many others who have ported Linux to mobile or embedded devices that run WinCE. 

Just in case there are any Gentoo users out there who would also like to install the compiler using Portage, I have included Ebuilds for CeGCC and MingW32CE that install the i686/Linux toolchain components. Just to clarify, for those who are compiling applications for Win32, or people who want to hack HaRET, use the MingW32CE toolchain. For those who are interested in porting GNU software to ARM/Win32, use CeGCC.

You can download the overlay in tarball format here, but I would suggest using layman, just like for my other overlays.

The ultimate goal of my current project is to have an industrial handheld compuer / scanner that runs Android, and so far its been coming along very well.

20090320

TomTom Fires Back! (Or Did They Shoot First?)

Recently TomTom, the GPS device manufacturer, cross-filed a lawsuit against Microsoft for patent infringement, in spite of already being in Microsoft's crosshairs for violating the much-antiquated FAT-filesystem series of patents.

I thought I would put a link to the rather funny comment I made on /.

20090319

Linux.com To Re-launch Under New Ownership

If you don't already know, Linux.com was purchased recently by the Linux Foundation, and it's in preparation stages for a grand re-launch.

I'm guessing that this will tie in somehow with the best of the We're Linux Video Contest, which aims to make yet another spoof on the I'm a Mac ads. Incidentally, I really thought that the BSD spoof was the best, because it's so close to how BSD geeks actually react.

I'm going tangential again, sorry. Back to Linux.com.

So what makes the re-launch incredible is that the site will be, just like the Linux kernel, community-driven. The IdeaForge is currently accepting content proposals (registration required). Some examples include, your_name@linux.com email addresses with blogging service, and my own personal idea - a Linux porting guide for the ARM architecture (think Android) !

Make your voice heard within the community and sign up!

20090309

Gnome-2.24 on the EEE 701

If you're interested in upgrading your version of Gnome to 2.24 and you're a Gentooer, then the following entries in /etc/portage/package.keywords should help you get past all of the ACCEPT_KEYWORDS errors.  You can find binary packages at http://virtb.visibleassets.com/geeentoo/packages/All , as usual. 

=gnome-extra/gconf-editor-2.24.1
=gnome-base/gnome-control-center-2.24.0.1
=gnome-extra/deskbar-applet-2.24.3
=x11-libs/vte-0.17.4-r3
=x11-themes/gnome-backgrounds-2.24.0
=x11-terms/gnome-terminal-2.24.2-r1
=x11-themes/gnome-icon-theme-2.24.0
=net-libs/libsoup-2.24.3
=gnome-base/libgnome-2.24.1
=gnome-base/gnome-settings-daemon-2.24.1-r1
=x11-themes/gnome-themes-2.24.3
=gnome-extra/zenity-2.24.1
=app-editors/gedit-2.24.3
=gnome-base/gnome-keyring-2.22.3-r1
=gnome-extra/gnome-system-monitor-2.24.4
=gnome-base/gnome-session-2.22.3-r1
=gnome-base/nautilus-2.24.2
=media-video/totem-2.24.3
=media-sound/sound-juicer-2.24.0
=media-gfx/eog-2.24.3.1
=gnome-extra/bug-buddy-2.24.2
=x11-libs/pango-1.22.4
=gnome-extra/gnome-utils-2.24.1
=app-admin/pessulus-2.24.0
=net-analyzer/gnome-nettool-2.22.1
=x11-libs/libwnck-2.24.2
=gnome-extra/fast-user-switch-applet-2.24.0
=x11-libs/gtksourceview-2.4.2
=gnome-base/gnome-desktop-2.24.3
=app-text/evince-2.24.2
=www-client/epiphany-2.24.3-r10
=net-misc/vino-2.24.1
=net-analyzer/gnome-netstatus-2.12.2
=dev-libs/atk-1.24.0
=gnome-base/eel-2.24.1
=gnome-extra/yelp-2.24.0-r10
=gnome-base/libbonoboui-2.24.0
=x11-wm/metacity-2.24.0-r2
=gnome-extra/gcalctool-5.24.3.1
=gnome-extra/gnome-user-docs-2.24.2-r1
=gnome-extra/gnome-screensaver-2.24.1-r1
=gnome-extra/gnome-games-2.24.3
=gnome-base/gnome-menus-2.24.2
=gnome-base/libgnomekbd-2.24.0
=gnome-extra/gtkhtml-3.24.5
=dev-libs/totem-pl-parser-2.24.4
=x11-themes/gtk-engines-2.16.1
=gnome-extra/gnome-media-2.24.0.1-r1
=dev-python/gnome-python-desktop-2.24.1
=gnome-base/librsvg-2.22.3
=gnome-extra/nautilus-cd-burner-2.24.0
=gnome-base/gvfs-1.0.3-r1
=gnome-base/libgtop-2.24.4
=x11-libs/gtk+-2.14.7-r2
=net-misc/vinagre-2.24.2-r1
=gnome-extra/swfdec-gnome-2.24.0
=gnome-base/gnome-volume-manager-2.24.1
=gnome-base/libgnomeprint-2.18.5
=media-libs/swfdec-0.8.4
=net-wireless/bluez-libs-3.36
=dev-util/intltool-0.40.5
=dev-python/nautilus-cd-burner-python-2.24.1
=dev-python/gnome-keyring-python-2.24.1
=dev-python/metacity-python-2.24.1
=dev-python/gnome-media-python-2.24.1
=dev-python/gtksourceview-python-2.24.1
=dev-python/libgtop-python-2.24.1
~dev-python/libwnck-python-2.24.1
~dev-python/libgnomeprint-python-2.24.1
~dev-python/librsvg-python-2.24.1
~dev-python/totem-python-2.24.1
~dev-python/bug-buddy-python-2.24.1
~dev-python/gnome-desktop-python-2.24.1
~dev-python/gnome-applets-python-2.24.1
~dev-python/evolution-python-2.24.1
~dev-python/gnome-python-desktop-base-2.24.1
=dev-python/libbonobo-python-2.22.3
=dev-python/libgnomecanvas-python-2.22.3
~dev-python/gnome-python-base-2.22.3
=dev-python/gnome-vfs-python-2.22.3
=dev-python/gconf-python-2.22.3
=dev-python/libgnome-python-2.22.3
=media-libs/libcanberra-0.11
=media-sound/pulseaudio-0.9.14
=net-wireless/bluez-utils-3.36
=x11-libs/cairo-1.8.6-r1
=media-plugins/gst-plugins-gio-0.10.21-r1
=dev-python/pygobject-2.16.1
=x11-misc/icon-naming-utils-0.8.7
=x11-themes/sound-theme-freedesktop-0.2
=x11-libs/libxklavier-3.8
=gnome-base/gdm-2.20.9-r1
=dev-libs/libxml2-2.7.3
=gnome-extra/gnome-user-docs-2.24.1
=gnome-extra/gtkhtml-3.24.4
=x11-misc/alacarte-0.11.8
=x11-libs/gtk+-2.14.7-r1
=media-libs/alsa-lib-1.0.19
=media-libs/speex-1.2_rc1
=app-text/poppler-bindings-0.10.3
=app-text/poppler-0.10.3
=media-libs/openjpeg-1.3-r2
=x11-libs/cairo-1.8.2
=dev-python/gnome-python-base-2.22.3
=dev-python/gnome-python-2.22.3
=dev-python/pygtk-2.14.0

20090224

Linux Console Via Bluetooth

These days, I find myself hacking, reverse engineering, whatever, several mobile devices that run Windows Mobile. A really great tool that I've started using is called HaRET (Handset Reverse Engineering Tool). In most, it's necessary to get terminal access to them in order to perform low-level debugging. Sometimes, a mobile device will have Linux USB OTG support without any hassle, and I can use the g_ether kernel module to bring up usb0 as a network device at boot time, assigning a static IP address. Then, by using usbnet and other kernel modules on my workstation, I am able to communicate to the mobile device using telnet or ssh. Great!

However, in many cases, USB OTG does not work "out of the box". Furthermore, given that the LCD rarely ever works "out of the box", that leaves me with very few options for getting any type of feedback from the mobile device at all, aside from maybe generating morse code with the vibration unit - that's a joke... please believe me.

It's very necessary to have terminal access, or ICE access, to perform low-level debugging when porting Linux to a new mobile device. One option is to find unpopulated pads on the PCB, where a UART has possibly had pins brought out, and to solder some wires directly to those pads and create the appropriate level-shifter circuit, attaching an RS232 cable to the workstation. Another possibility is to use the JTAG port. In some cases, neither of those options will work because either a) the pins have not been brought out,  or b) the JTAG port has been fused (See my previous opinions on Fusing the JTAG port). In many cases, there is a debug port on the board, with an unpopulated header. Finding the appropriate header and FPC cable is sometimes possible, but in many cases it's like looking for a needle in a haystack. Luckily, I found that needle in my last reverse engineering project, and fabricated a small PCB to bring out the pins of the FFC connected to the UARTS of the embedded device.

When I don't find that needle, then I'm left having to do some very creative reverse engineering. My suggestion: Why not build a small daemon into the kernel that would actually bring up the system console over bluetooth? Most, if not all, mobile devices manufactured in the last decade have bluetooth hardware directly connected to one of the UARTS. I can't imagine that it would be terribly difficult to build something like this into the kernel. My only main concern would be missing valuable information that the Linux kernel spits out at boot time. To counter that, I would probably introduce a "consoledelay" boot parameter, that functioned much like the "rootdelay" boot parameter. Such a boot parameter would allow the underlying hardware of the console to initialize before performing any IO on it.

If anyone feels like funding me to build this into the kernel, I am very open to suggestions :)