Ten Months

Ten months ago when we just established 0xlab, we do have some ideas regarding our business model in mind. We cannot say exactly what it is, since we are under the constraint of NDA. However, I can roughly outline our goals and our progress here.

In the world of open source, you gain credibility by contributing. The more credibility you have, the more powerful you become. Basically 0xlab’s initial and first goal is to open up our development, establish our credibility and get more publicity. Our policy to open up as much as we can turns out to be more beneficial then we have expected. Since we put our code in the open, any individual or business entity who is interested in us can evaluate our results directly. This leads to direct communication channel to developers inside some big companies such as Google, Qualcomm (Innovation Center), Broadcom, TI, EMBINUX (SQL Star) and Motorola, or even cooperation in business level.

We found out that since we don’t sell software for a living, but instead we use software to add value to the hardware (made by AzureWave), the work we did is actually beneficial to our sponsor, so they are willing to keep supporting us. This means a lot (in my opinion), since nobody in Taiwan believes that people can write open source for a living, until we proved them wrong. I believe we’re reproducing a ecosystem, which is not uncommon in Europe and US, but never shows up in Taiwan before.

Since we can support ourselves now, what’s the next step? I can’t disclose it, but suffice to say we are planning to take this a step further. We hope, once we proved that business can make money from openness, more Taiwanese companies can understand and duplicate our open source model, thus creates more modern software developers and stay closer to the world.

xrandr in Ubuntu 9.10

I’ve been using an external monitor with my laptop at work for quite a while. Ubuntu 9.04 did this like I expected: xrandr --output VGA --mode 1280x1024 --above LVDS will use my external monitor as an extension and put it virtually on top of my laptop screen, with the panel on top of the virtual desktop. After upgrading to 9.10, this doesn’t work anymore. The first thing is to change VGA and LVDS to VGA1 and LVDS1, but after that, the location of my top panel changed: The old setting gives me easy access to my top panel, now if I want to use that panel I need to move my pointer to a very thin band between two physical monitors, which is extremely difficult to do. How stupid is that?

Software engineering and FOSS

Jim Ready said this in an interview:

Developers are integrating more and more open source code from multiple sources, and all these pieces are both interdependent and independent. That’s breaking all the rules of software engineering. All these components are developed independently of one another and they change all the time, and then there are always some other subsystems that were not built by the same group, so it ends up breaking. The open source process is vibrant and instrumental, but it has these bad properties in some sense. The larger good of open source is worth it, but you can’t underestimate what you’re getting into. If you’re drawing on sixty million lines of constantly changing code, it’s not going to be easy to deal with. So some of these realities are behind MontaVista Linux 6 – we’re helping developers integrate all these pieces. Distributions such as Debian can solve this issue, but what shall we do when it comes to the embedded world? MontaVista might not be an option because it’s way too expensive. Embedded distributions such as Ångström based on OpenEmbedded could provide a tested suite of applications, while poky is a light and well maintained choice as well. However, none of the above has as large a user base as Debian, so the amount of testing they received is fairly limited. To ship a consumer ready product based on these will not be an easy task. One must choose a stable release, work with the community to solve bugs and constraint the moving parts to the scope of core development. This requires different mindset and skills of project management with proprietary software development, and this will become more and more important with the increasing adaption of FOSS technology in the industry.

First code drop of 0xlab

We have been busy in the past two months, and now it’s time to open up our code. Please keep in mind that most of these projects are not in the release state yet, but subjects of ongoing development.

You can find all of our source code at: http://gitorious.org/+0xlab. Here is a brief introduction of each project:

  1. MadButterfly: a git clone of the original project. The real project is hosted at assembla. MadButterfly is very likely to be the base of our 2D UI framework. It’s based on SVG instead of traditional toolkits such as gtk or kde, so it will give the UI designer a lot of space to unleash his/her creativity. The main developer’s (Thinker) blog is here.
  2. Android Eee PC: it aims to ease the porting of Android to Eee PC. At the moment the most interesting thing is the 3D acceleration structure on it, which can use the existing hardware driver in Mesa. Check this video to see what it can do. (blog)
  3. 0xlab’s Linux Kernel Tree: it contains several branches for different platforms, like Omap3, SMDK6410, and may be more in the future. Also, all of them are intended for being able to boot into Android. We tend to use the Beagle Board (OMAP) as our main development platform because it’s cheap and open.
  4. esuit: the Embedded System Unit/Integrated Test cases framework. It aims to provide a unified method to verify the functionalities of a hardware platform. This project is in planning phase, so no source code is available yet.
  5. android obex: it provides obex file sharing in Android. (blog)

From now on, we will direct all of our technical discussions to the 0xlab-devel mailing list. Plus, IRC #0xlab is the place we usually hang out. If you want to reach us directly, mail us.

@oesf.jp, 6/24

I will join the OESF (open embedded software foundation) progress conference on 6/24. Although the name suggests similarities to OpenEmbedded, this foundation has nothing to do with OE, but focuses on Android development. I’m not sure if it’s a member of OHA since I can’t read Japanese and Google Translate is very vague on this.

WebCam on Asus N20A notebooks

Well, I gave this built-in webcam a try today. `Cheese’ does show the image, but it’s upside-down.

A quick lsusb shows

1
2
3
4
5
6
7
8
9
10
Bus 002 Device 002: ID 064e:a116 Suyin Corp. 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 002: ID 147e:1000
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

It’s obviously 064e:a116, so I googled it, and this turns out:

This camera module is known to be mounted upside-down in some notebooks. There is currently no documented way to rotate the image at the device level. If you don’t mind holding your computer upside-down, the camera should work fine.

WELL, if I hold my notebook upside-down, my LCD will also be upside-down, so the video I see will still be upside-down, no ?

android-pdk

Android porting development kit could be obtained by

1
make pdk pdk_all

in your top repo dir. You can find the pdk doc in out/target/common/docs/online-pdk. If you open index.html directly you will find the css is all messed up. The quickest way might be moving the directory to /var/www, install one web server (I use thttpd) then open http://localhost/online-pdk/.

The document is far from complete but it’s still a good reference to save a lot of time.

Integrate emacs23 with emacsen on Debian

I’m quite disappointed about the unicode support of emacs22 so I decided to give emacs23 pretest a try. It turns out to be quite nice but it doesn’t include Debian’s debian-startup.diff patch and I don’t want to add it to the source code. So, I decided to solve it in my .emacs file. Here is the related script:

1
2
3
4
5
6
7
8
9
10
11
12
;; hacks to use debian emacsen in emacs23                                                                                     
(if (not (string-match "^23." emacs-version)) nil
(setq load-path
;; more paths could be added here
(append (list "/usr/share/emacs/site-lisp"
"/usr/share/emacs/site-lisp/global") load-path)
)
(defconst debian-emacs-flavor 'emacs22
"A symbol representing the particular debian flavor of emacs running.
Something like 'emacs21, 'xemacs21, etc.")
(load-library "debian-startup")
(debian-startup debian-emacs-flavor))

And I also realized the GUI version of emacs doesn’t bring me any good then the console version, so I’m running it without X now. Much easier to use.

x-hacker

1
2
3
4
> /home/john/usr/lib/python2.6/site-packages/planet/feedparser.py(2699)parse()
-> result['feed'] = feedparser.feeddata
(Pdb) p result
{'feed': {}, 'status': 200, 'updated': time.struct_time(tm_year=2009, tm_mon=5, tm_mday=30, tm_hour=18, tm_min=20, tm_sec=46, tm_wday=5, tm_yday=150, tm_isdst=0), 'version': None, 'encoding': 'UTF-8', 'bozo': 0, 'headers': {'x-nananana': 'Batcache', 'transfer-encoding': 'chunked', 'content-encoding': 'gzip', 'vary': 'Cookie, Accept-Encoding', 'server': 'nginx', 'last-modified': 'Sat, 30 May 2009 18:20:46 +0000', 'connection': 'close', 'etag': '"6d6a931c57ea74fb68476ac28bb7a24c"', 'cache-control': 'max-age=300, must-revalidate', 'date': 'Sat, 30 May 2009 18:20:46 GMT', 'x-hacker': "If you're reading this, you should visit automattic.com/jobs and apply to join the fun, mention this header.", 'content-type': 'text/xml; charset=UTF-8', 'x-pingback': 'http://asleepfromday.wordpress.com/xmlrpc.php'}, 'etag': '"6d6a931c57ea74fb68476ac28bb7a24c"', 'href': 'http://asleepfromday.wordpress.com/category/0xlab/feed/', 'entries': []}

If you’re reading this, you should visit automattic.com/jobs and apply to join the fun, mention this header.

Hey, I was just trying to fix planet feed reader…