April 20, 2005

Oxford Live Report

So this is my first day in Oxford at the ACCU Conference. Wireless internet access is available both at the conference and in my hotel, so I can stay connected to the rest of the world. Read on for some notes on the Conference as well as on Oxford.

Conference Hotel

My hotel (the Linton Lodge) is located about 2 kilometers from the conference venue and instead of taking the bus, I decided to walk the distance. The way to the conference lead me through parts of the Oxford University campus, which I wanted to see anyway.

Oxford University

Highlight of the first day certainly was Herb Sutter's presentation where he compared the generics/template mechanisms of C++, Java and .NET.
Dave Abrahams (the Boost guy) presentation on template metaprogramming was thought inspiring too. It will be interesting to see in which direction all this will go. It certainly takes a lot of time to getting used to this style of programming, and the resulting template code is very hard to grasp. Certainly heavy geek stuff going on here.

The second day's keynote was given by Bjarne Stroustrup. He gave an update on the current standards committee activities on the specification of C++0x, the, uh, upcoming (x = 9) update to the C++ standard. Fortunately, no major new features will be included. It all basically comes down to making templates easier to handle. Plus, additional runtime libraries with hash_map, threads and filesystem support. Thanks. Speaking of threads, Herb Sutter's second presentation focused on concurrent programming and all the still unsolved problems associated with it. It basically comes down to this: concurrent problems are more easily solvable in functional languages. Unfortunately, most programmer's, for obvious reasons (mental complexity being the primary), avoid functional languages. So the problem to be solved is to integrate concurrent programming with iterative languages. As Herb Sutter put it, we need the equivalent of object-orientation to concurrent programming. Active objects are a first step in that direction. There's definitely the one or another idea to be found for implementation in the C++ Portable Components.

I even got to exchange a few words with Bjarne Stroustrup this afternoon — I sat next to him in the audience during the Microsoft presentation in the lunch break.

Keynote

Now it's Friday and I'm sitting in Jim Coplien's keynote (as you can see on the picture above). I had dinner yesterday with a few nice guys, some of who participate in the C++ standards committee (Detlef Vollmann, Thorsten Ottosen).

The keynote was quite inspiring, probably the best keynote of the conference. The main topic was symmetry, or more specifically, how beauty results from imperfect symmetry. Quote of the day: C++ may not be elegant, but it is beautiful. Coplien also mentioned Christopher Alexander's new book series: The Nature of Order, which I am surely going to read as soon as time permits. (Actually, the sheer size of my books-to-read list would justify going on an extended sabbatical...)

The second presentation of the day, Frank Buschmann about model-driven development, did not bring many new insights. The general state of art in model-driven development (or MDA, as the OMG has trademarked it), seems to be that it works well for certain narrowly defined domains, that is, state machines. The general approach — define a domain specific language with an appropriate metamodel behind it that can drive a code generator — is mostly impractical, as the necessary investments (doing all that DSL stuff plus graphical editor plus code generation correctly is harder than one would expect) are not justified by the results.

The remaining presentation of the day I attended were Thorsten Ottosen on the new range and pointer container libraries he added to boost, and a panel discussion on "Return to C++", led by Nicolai Josuttis. Jim Coplien reported that some of his clients in the banking sector are returning to C++ after some quite unpleasing experiences in recent Java projects. Unfortunately, C++ has some nontrivial acceptance problems nowadays, especially in the enterprise information technology sector. One of the reasons is insufficient marketing on the C++ side. Both Java and .NET are backed by huge corporations with astronomic marketing budgets. Also, in the mind of many (managers), C++ is still seen as C with classes, with all the negative associations that come with C — ignoring the fact that the C++ of today is basically a completely different language than the C++ from ten years ago. There is still the problem that becoming a good C++ developer requires significantly more training than becoming a modest Java programmer. Only nobody wants to invest that much time into training. So, what often happens is that programmers coming fresh out of school are assigned to maintenance projects where they have to dig through ten year old badly designed code bases, thereby learning from what they see there. Needless to say that these people never get a change to appreciate the joys of 21st century C++ programming. Fortunately, a few schools are again starting to teach C++ in programming courses, so the situation may improve in the future. Needless to mention here that a good C++ programmer can become a good Java/.NET developer with minimal effort. The reverse is not necessarily true.

Oxford University Park

So much on the future of C++. In the evening I finally found the time to go jogging. As I always wanted to see the Oxford University campus (for some strange reason, famous campuses fascinate me — campus tourism?), so I went there. Needless to say, I was impressed. Even more so, the whole city touches me in a strange way. While I actually prefer living in the country to living in a town, I could easily imagine living in Oxford for some time. That city really has a lovely character. And lots of iPods, too ;-)

Oxford University

One thing that's starting to drive me crazy is the food. At the conference, we had variations on sandwiches and chips for lunch the third day in a row. Are sandwiches the only food they have in England or what?

Saturday, the last day of the conference. Unfortunately, the T-Mobile WiFi accounts for the conference no longer work, so no more life updates for the rest of the conference.

The final keynote by Kevlin Henney was quite good, as were Frank Buschmann's Notes on the Craft of Software Architecture. For lunch we again had, what a surprise, chips and sandwiches. I really cannot see that stuff anymore. Hope they improve this for next year's conference.

Overall, I really enjoyed the conference, definitely one of the best conferences I ever attended. I'll surely return for next year's conference.

Posted by guenter at 03:00 PM | Comments (0)

April 19, 2005

Going to Oxford

I'll be at the ACCU Conference in Oxford this week. I am really looking forward to see Bjarne Stroustrup, Jim Coplien and other luminaries live. Of course I'd like to do some sightseeing too. And maybe I can even get some people interested in the C++ Portable Components. The feedback so far has been quite positive.

Posted by guenter at 09:39 AM | Comments (0)

Tiger for Lunch

Funny headline typo. What's next? Longhorn for dinner?

Posted by guenter at 08:34 AM | Comments (0)

April 14, 2005

MS Collateral Damage

David Megginson rants about how he is constantly being negatively affected by Microsoft Outlook even though he never ever used it himself.

Sometimes I wonder if the guys responsible for Microsoft's security disasters can still sleep at night...

Posted by guenter at 06:13 PM | Comments (0)

April 11, 2005

New Heights of Annoyance with WinXP

My Dell box running Windows XP is developing a new annoyance that's starting to make me really mad. Every now and then (presumably the first time after starting up, but I need to exmine this more) when I delete a file via the Explorer (or via applications that use Explorer functionality like Visual Studio's Solution Explorer) the damned thing starts a 30 seconds long high disk activity orgy with hard disk happily rattling along and the Explorer becoming totally unresponsive. I can't figure out what's the reason for this — the Task Manager just shows 99 % CPU utilization for the System Idle Process. Now I understand that moving a file bit-by-bit to the recycle bin directory is a highly complicated operation whose exact semantics are way beyond what a simple mind like mine is able to comprehend, but, come on, 30 seconds is DAMN WAY TOO MUCH. May the extended Wrath Of The Gods fall upon the guilty.
Any ideas for the exact reasons, anyone? Seems like it's time for a re-install. I have nothing else to do anyway...

Posted by guenter at 10:41 PM | Comments (0)

April 09, 2005

Going Embedded

I got to play around with QNX Neutrino quite a bit lately and have to admit that I am quite impressed by this operating system. QNX Neutrino is based on a real microkernel. The microkernel does little more than thread scheduling and providing a message passing infrastructure. Everything else — device drivers, file systems, networking, and most of the POSIX APIs — is provided by ordinary user processes.
This has some cool implications: first, the whole operating system is scalable to a large degree. You can reduce the whole system down to bare microkernel plus some drivers plus your application (great for control and automation), taking only a few 100 K of memory, up to a fully usable desktop/development system with GUI, multimedia (audio and video players) and a web browser. Mozilla is available, too. The other great advantage of the design is that its quite hard to bring a QNX system down to its knees. Not even faulty device drivers can do much harm to the system, as drivers are fully separated from the kernel. The disadvantage of course, is that such a system is inherently a little bit slower that a "more optimized" architecture. But with today's powerful hardware that's not really an issue. Given the choice between robustness and performance, I'd take robustness any day.
Another great feature of QNX is that you can exchange the standard kernel for an instrumented one. This gives you great insights to what is going on in the system. Of course, all nicely visualized in the development environment, QNX Momentics. I wish I had some of these features on the other operating systems I use.
From a programming perspective, QNX Neutrino is fully POSIX compliant. In other words, the only thing I had to do to make the C++ Portable Components compile and run on it was to add two #include statements to the source code. The complete port (making some changes to the build system, finding out compiler settings, etc.) was done in about a day. Not too bad...
Sure I'm gonna spend some quality time with that OS in the future.

Posted by guenter at 08:48 PM | Comments (0)

Happy Birthday

Well, as it turns out, this weblog celebrates its first anniversary today. Happy birthday! ;-)
Happy Birthday!

Posted by guenter at 07:40 PM | Comments (0)