Workshop in Taipei

Wednesday, June 6th, 2012

THE CREW One of the best teams I’ve ever worked in.

After more than a year working on our top-secret project at ITRI time has time to reveal it. Our company has organized a workshop in which many prominent companies such as Canonical, AMD, Dell, and many others participated. So we have created some cool product for ARM server boards.

The workshop was taking place in Daan district in Taipei, which is quite near Taipei 101 building. As it was strating early Monday I decided to come to Taipei Sunday’s evening and stayed in a hostel. The price was pretty cheap, which keeps me surprising but I should finally get used to the cheap prices in Taiwan. It was only 10 USD/night anyway.

I woke at 6AM on Monday and still had couple of hours before start of our workshop. I wished I could go for a morning jog, but I did not have running shoes with me. Instead, I went to McDonalds (oh yes, I am loving it ;) and got few pancakes. Then I spent some time looking for a Russian restaurant to which we were going to go after workshop, but I could not find it, so in the evening we ended up in an American restaurant called Diner.

Then at 8 AM people started coming in, and I helped with arranging tables, etc. On the picture above you can see YF Yuan, our deputy-director who was responsible for this workshop. He was irresistable host. People really like him.

Then we heard the rumor that Mark Shuttleworth migth be visiting us! What an exciting piece of news! Mark became world-famous in 2002 when he went to space as tourist. Obviously, his appearance was not planned in this event. We simply could not dare to expect such a mega-star in our humble event. But he did come and gave a short speech about Ubuntu ARM project. Everybody was very excitied by this unexpected visit!

And I did shake hands with him ;)

MARK SHUTTLEWORTH. Space tourist #2 and founder of Ubuntu.com

Things went on smoothly. I presented our stuff. In fact, we shared 1-hour time slot with people from Virtualopensystems.com. They are small start-up focusing on Cortex-A15 hypervisor, whereas we still focus on Cortex-A9. The advantage of our approach is that it already works, while Cortex-A15 people are still playing with simulator.

After the workshop was over we decided to go to a restaurant. Restaurants in Taipei can be notoriously expensive. That’s why our secretary Phoebe told us earlier that we could spend only 400 NTD per person (around 10 USD). Boy, for that amount of money you can get only 1 sandwitch. So, we took a couple of senior managers with us, and went to a notoriously expensive American restaurant. Well, the guys were polite, so each of them spent only around 1500 NTD ;) That amount of money can buy foods for half a month in ITRI’s cafeteria, and we spent it in just a couple of hours.

But everybody enjoyed that evening. We were glad that our month-long preparation for workshop was over, and it was kind of success. I feel happy that our work seems relevant and interesting to many companies in Taiwan and abroad. Few people have already reqeusted our source code, even though we still want to keep our project close-sourced. Still, we are likely to make more releases, and maybe sell our technology to some bigger company. We will see.

Linux Seminar in Oulu 2010 featuring Bjarne Stroustrup

Saturday, March 20th, 2010

A few days ago I went to Oulu, a city in the north of Finland to attend Linux Symposium which was featuring Bjarne Stroustrup, the inventor of C++.

I left Helsinki on Monday night and arrived to Oulu at 7:30 AM on the overnight train. It was so-o-o co-o-old in Oulu! We did not have such freezing temperatures during the whole winter in Helsinki. On that early spring day it was -20 centigrade. Because the train arrived early initially I planned to walk to the Oulu University which is located approximately 5km from the train station. I actually walked there but I froze like I have not frozen for a long time already. What was surprising to me was that local people were walking and even riding bikes normally. Apparently, they got used to such temperatures. In Finland there is a special word sisu which means persistence and stubbornness in a good sense of the word. Now I know that the city of Oulu is the city of sisu – sisu students, sisu workers, sisu everybody.

I barely had time to warm up in the university lobby before the conference began. It had a keynote speech dedicated to the looming C++ 0x standard as well as two tracks: business and technical. Before the conference I have spent lots of time studying the agenda trying to decide which track I want to go to. But there were interesting talks in both tracks. So I needed to remember the order in which I would visit the tracks. It turned out that there is a simple algorithm which tells you which track to go at any moment of time. The idea is that it is best to always switch the tracks, for example if you are listening to a talk in the technical track now then the next interesting talk is in the business track. So I followed this algorithm and I enjoyed every talk that I attended.

But the first was the keynote. Bjarne is a great speaker! He was describing his work in the standardization committee and the features that were selected in the new C++ 0x standard. He said that name of this new standard comes from the year in which they wanted to get it approved – anytime before year 2010, but at this moment the standard is in the Final Draft phase which means that it will get approved in year 2012 probably.

Bjarne pointed out several criteria that they used when selecting features for the standard. Basically, keep it simple was the main criterion. Any extra functionality should go to a library. Keep the run-time as small as possible. One of the goals was to make it possible to use C++ as the first language during teaching in a college. It is an ambitious goal as most of US universities are using Java as the first language. New set of features for writing parallel programs was described. Mostly, it was related to locks, semaphores, etc. and avoiding deadlocks and other problems, as well as inter-process communication. To me it sounds like a pretty low-level stuff. After his presentation I asked whether the committee thinks they’ve chosen the right level of abstraction. Nowadays there are a few interesting parallel programming frameworks such as Map-Reduce and transactional memory. Bjarne said that it is too early to standardize any of those which is probably true.

The funny thing is that the committee does not necessarily accept the features that Bjarne proposes even though he is the inventor of C++. For example, he was trying to get lexical_cast into the standard which is basically string tokenizer. But the committee voted against him because of possible problems with locale. On the picture above Bjarne is trying to persuade the audience that lexical_cast is a cool feature.

Here are the notes from a few other talks:

Sami Paihonen. Implementing cross-platform UI

The core of cross-platform UI is UI style.
Lots of research. Empty screen is the best place to start.
6 design principles: avoid clutter. Too many things on the screen. Two hands is not mobile usage.
IPhone open-source contacts has a better UI than official app.
UI style defines core UI identity
Smoothness and stability are most important. Steven Frei blog.
blog: dizzyhorizon.com

Mikko Välimäki, Tuxera. Open source and IP licensing

This is the guy who won Espoo half-marathon!

Tuxera – is company doing filesystems on non-Windows systems
GNU GPL – free of charge to everyone.
Is it possible to use Android UI on another hardware? Apple is suing HTC for Patent infringement.
Jonathan Schwartz blog. Bill asks royalty for every download of OO b/c of patent infringement.
Microsoft sued TomTom over usage of FAT file system.
Mixed, dual-licensed, open & proprietary models will win.

Alexander Bezprozvanny. Traditional vs agile/open source

different roles that a person takes in multiple team in agile.
key differences in OSS projects: no project managers. Project leaders are models.
Healthy community is the key.
Definition of healthy community, various paths that a project might take depending on how developers interact with users. Nice diagram.

Examples:

1) Too late means never. Affix and bluez bluetooth stacks. Commercial vs. open-source. A company that missed release.

2) High admission price: OpenBSD community. A success at a high price.

3) OSS contribution from software company: bureaucratic barrier too high. Disclaimer of rights is difficult to explain to management.

4) Maemo case: combining proprietary and OSS SW.

Ari Jaaksi’s speach and consequences in his blog.

Mobile Dev Camp 2010 in Helsinki

Monday, March 1st, 2010

I have attended Mobile Dev Camp. It was an event that included presentations from all major mobile vendors as well as workshops. To me it looks like it was targeted to younger developers as the level of the presentations was introductory. The funny thing was that organizers announced a development contest 48 hours before the conference. The topic of this application contest was outdoors. I did not participate because I thought I could not create a usable application within such short time. But in one category the winner has created an application while he was sitting in the conference. This means that there was almost no competition but the prizes were quite good. In each vendor category a new phone was offered as the prize. For example in the Apple category an iPad was awarded.

The conference started with a Nokia presentation in which Qt framework was described. This is a cross-platform development framework. A number of new features was described including Smart installer for Symbian that allows to add dependencies from your applications similar to debian packaging. Also changes were promised to Ovi Store which is now open for contribution only if you are a company. Obviously, it will become possible for individual developers to upload their apps to Ovi Store soon. It was recommended that developers take a close look at WebKit because it makes porting applications easy. However, later during the day the participants of a panel described the difficulties involved in porting WebKit applications because of lack of standards. But WebKit makes it possible to use native APIs from your web pages. For example if you want to find a pizza restaurant near YOU then you need to ask your device what is your current location and then use Ovi Maps API with those coordinates to display a map in the browser.

Another interesting presentation was that of Jürgen Scheible, the author of Mobile Python book. He described a number of tools such as Pluthon – python using Eclipse. It turns out that Python is available on touch devices nowadays. Jurgen mentioned that during his 3-5 day workshops people learn to program games involving touch gestures and animation. That’s a great achievement as teaching people to program is a challenging task.

There was a presentation dedicated to Microsoft Phone 7 system. As always, Microsoft has impressed the attendees of the conference with a game console available in its workshop room. I remember that when I attended another conference dedicated to Microsoft Mobile OS there was a whole Formula-1 simulator in that building! The new mobile OS looks quite impressive. They are saying that their goal is to add a 3rd dimension to the 2D screen of a mobile phone. That 3rd dimension comes from animations and effects, and therefore the new Microsoft Phone OS has lots of those.

In the Ericsson presentation the importance of a web browser was stressed. In particular, this company is developing web background service which allows the browser to perform tasks while in the background. They have also implemented a notification system as part of the browser. I guess they are moving in the direction of implementing a whole browser-based OS.

To summarize, the attendees of Mobile Dev Camp had an opportunity to meet with representatives of all major mobile vendors and listen to their ideas on the future of mobile technology. It is surprising that each company has its own view on this subject, thus we can expect lots of competition and interesting ideas implemented in the next generation of mobile devices.

Maemo Summit in Amsterdam, part 2

Wednesday, October 14th, 2009

After arriving to the conference I got my badge. Despite the demands of the organizers that visitors pick up their badges on Thursday or Friday, there were plenty of badges left on Saturday. So I went to the rooms and listened to a few talks. I was impressed with the quality of conference. I have attended quite a few of those when I was a graduate student.

The rooms in which this conference was held were huge. A limit of 400 attendees was imposed. However, I think it was possible to fit twice as many people. The talks were quite interesting. A typical talk was describing a project on Maemo which has big impact in the community. Once the talk was over the audience asked questions. Typically they were like Why don’t you implement this feature in your project or Why don’t you fix that bug and so on. It was obvious that the community was very interested in each project being presented.

It turns out that you could enjoy cool stuff on the older Maemo devices such as N770 and N810. Canola is a UI framework which the authors claim is as good as iPhone UI. But obviously they did it a lot earlier than Apple. This project is closed-source but I guess it is possible to develop application using public API. Later during this conference there was a Canola hackathon but I have not attended that meeting.

But of course Nokia was advertising its latest N900 device. They were giving out 300 devices to the independent developers for 6 months and after that the developers should give it back.

The fact that there are a few older devices now which go very cheap means that Maemo is becoming more accessible in developing countries. I wonder if it actually more appropriate than a netbook. The size of a Maemo device is almost the same as that of a cellphone, it fits easily into a pocket. On the other hand, a netbook fits only in a backpack, but definitely not in a pocket. This means that Maemo is more applicable in cases such as travel or working on the go. Because it is an open platform the people in developing countries would not need to spend their resources on acquiring additional software. The Maemo summit shows that people around the world can learn Maemo technology and start a distributed project if they wish to do so. In other words, it is possible to make an impact to the open-source community no matter where you come from.

Earlier, most of the UNIX software was written in best US universities such as MIT – GNU project, University of Washington – mailing programs and so on. Nowdays there is a course at Stanford University in which students learn how to develop for an iPhone. Is it necessary to get to Stanford University if you want to develop a cool application? With Maemo technology, the idea is that everybody can do it.

GSMA – cellphone conference

Wednesday, February 13th, 2008

WIRED blogs has a trip report from this conference. A must-have feature of this year is a touchscreen. Very useful for web browsing.

A number of products announced including:

  • Modu - a modular cellphone which concept is similar to Bug Labs.
  • SonyEricsson C702 which has a geo-tagging feature. I am wondering if this phone includes navigation software. If it does not this would reduce its cost. The most useful part of GPS is indeed tagging.

SCAM 2006

Friday, September 1st, 2006

I have registered for a program analysis conference SCAM 2006. The stop-list slicing is very relevant to our research on signature generation. A number of other papers also look interesting. I am planning to take the train to New York an then a China-town bus to Philadelphia to minimize the trip cost as I am going on my own expense. Hopefully, I will meet authors of that paper that I have exchanged e-mails with. The conference organizers allocated a 15-minute slot for each presenter which is shorter than usual. The authors will present main ideas and then engage in a Q&A session.

Phoenix – a framework for Visual Studio languages extensibility

Monday, March 27th, 2006

I am attending MS Phoenix workshop at the CGO conference. My interest in this framework is because of GEM project that I am working on. Other extensibility frameworks have been developed in the past, none of them is used widely. Magik is that of Dawson Engler written when he was a PhD student at MIT, SUIF is a Stanford project with the same goals. One explanation of the reluctant use of frameworks is the difficulty of learning the internals of a compiler. This also explains why people do use source-to-source transformation frameworks which are much easier to use.

The new Vista operating system gets quite a few extensibility features, Phoenix being one of them. The extensibility gets to internal subsystems of Vista, for example its memory allocator.

What I expect to learn at this workshop is how to take care of the whole compiler rather than its AST part. I am also trying to find applications that require modifications to the intermediate code and object code generation parts, this being another reason why people don’t use compiler frameworks.

I have registered domain for the website that will host GEM framework and GEM wikibook. The expected time of creation is no sooner than summer. My schedule is largely filled up until September, active honeypot being the main project I am working on now.

I have attended CGO tutorial that described Microsoft Phoenix framework. The idea of the framework is to implement backend of VC++, other languages, static analysis tools, etc. as plug-ins to a general framework. Phoenix implements the idea of modularity that I have been thinking of for a long time and am trying to implement in GEM project now.

Phoenix accepts inputs in various formats: .NET assembly, binary, C++ AST, etc. It is a binary transformation tool and a source-to-source converter at the same time. The internal representation of the code is IR which is an assembly language for an abstract machine similar to RTL in GCC. The latest release of Phoenix has very limited interface for working with AST representation but they said they are working on it now. The reason is that IR is more convenient for performing transformations than AST which is opposite to what I thought.

Another interesting idea is that of lowering/raising a representation. When a binary file is loaded it is raised to an intermediate representation to perform inter-procedural optimizations, for example. Then it is lowered back and saved to disk. It was not clear to me how efficient raising is, that is, is it possible to raise assembly to source code?

Framework has a number of modules: Alias module, Graph module, SSA module, Tagging, etc. Different representations are superimposed on the IR representation. It supports different target architectures and run-times, each implemented as a DLL: arch-x86.dll, runtime-vccrt-win32.dll, etc.

Overall, the presentation was very interesting. I have a better understanding now of what a GCC extensibility framework should include.