Monthly Archives: January 2008

Nokia gets Qt

Sorry, I had to use this title. No one else seems to have picked up on it. But then maybe most people are like I was until I actually met a couple of developers from Trolltech at Eclipse Summit Europe in October and learned that it’s actually pronounced ‘Qute’, Not Q.T.

At any rate, the big news in the mobile software industry today was Nokia’s purchase of Trolltech. It’s another piece of news that struck me as potentially game changing. Certainly Nokia has been under the gun with all the hype behind Google’s Android platform. I think this is a strong move by Nokia to firm up their story.

Now, I’ve been a little luke warm to Qt. I’ve received a number of requests to include it in Wascana. I can’t. And it violates one of the policies I have for Wascana. That is the open source version of their library uses the GPL license. That means only GPL applications can use that version of it and I don’t want to get into that game. “Free” software is a paradox. You can’t have freedom of users to do what they want with it, and freedom of developers to license their software how they see fit at the same time. And, of course, being a developer, I tend to side with the developers on this equation.

At the same time, though, I really like the architecture and look of Qt. And I understand Trolltech’s need to make money and fund development of Qt. (Remember, I side with the developer). And they do have a pretty good Eclipse/CDT integration for Qt. And the commercial licenses aren’t that much of a barrier if you’re already used to paying for the libraries you use.

But I always secretly hoped that circumstances would change and we could use Qt without worrying about licensing. Does the transaction with Nokia lead to that circumstance. Apparently not according to the news release and letters to Trolltech’s community. But I really think that if Qt had a free commercial license, like the Eclipse Public License, the whole KDE/Qt versus GTK wars would have ended long ago and we’d have peace and unity on the Linux desktop, and maybe on mobile devices too. At the very least, you would have seen a Qt SWT port.

C Dj Trance

Believe or not I’m a big fan of hard rock music. It started with Iron Maiden, etc. in the 80s and moved to Nirvana, etc. in the 90’s and with The Cure all throughout. It’s what I call my “angry music”. Not that I’m an angry guy, but I just love music that challenges me that way. But these days, no one knows how to play guitar anymore so I need to find my angry music elsewhere.

I have to thank my former colleague Johnny C for introducing me to Trance music. Electronic music has also always been an side interest of mine, but I’m a guitar hack first (a favorite memory recently is jamming with Eclipse’s very own Steve Northover one night). However, I’m a geek firstest, so any chance to involve my passion for music with computers, I’ll all over it. And I just love the rhythms and textures of Trance.

So I had this notion that I could make my own Trance music. There’s is actually some good low cost digital audio workstation (DAW) software solutions, including a decent one called REAPER, that I’ve been playing with to see if I want to get into it. The challenge with these solutions is finding the right software synthesizers and effects to make it all sound good. But I was floored by the number of free DAW plug-ins out there. It’s quite the huge underground ecosystem.

The main facilitator of this seems to be a free SDK put out by Steinberg called Virtual Studio Technology or VST. (BTW, there’s a Microsoft equivalent called DXi, of course). It was build for their own DAW solution, but they openned up the licensing to allow anyone to take advantage of it, like REAPER. I’m not sure if that makes business sense, but it is helping me get interested in digital music so I may become a customer one day.

I checked out the SDK and even got the sample plug-in to compile using Wascana. Unfortunately, they’ve released a new version of the SDK that isn’t backwards compatible so I couldn’t try the plug-in in REAPER which doesn’t support it yet. But I was able to launch the plug-in in the test host that comes with the SDK. Everything seemed to work except for the bitmap resources since I don’t think we have the gnu resource compiler hooked up in our managed build integration. And unfortunately I ran into trouble getting it to debug at all under gdb. Yet another reason to get the Microsoft debug APIs integrated I guess.

But it does look like the CDT would be a nice IDE for applications like this. With the kind of processor power and multimedia assembly instructions you need to make these audio plug-ins work well in large setups, this is another area where I don’t see C++ going away. The experience on Windows could be improved with a nicer Microsoft compiler and debugger integration. And it’s a cool way to mix my passion for software with my passion for sound in one place.

24 is the new 20

Well, I’m sitting here typing away looking at my new 24″ widescreen monitor. Pidgin running on one side talking to my kind boss who ordered it for me, Internet Exploder on the other with me typing right here, and a monster Eclipse looking at IResource implementations sitting behind them. It’s great.

Way back I blogged about my new widescreen laptop and commented on how liberating it was running Eclipse where had no problem seeing the Package/Project Explorer, editors, and Outline View in their full glory. Now at 24″ at 1920×1200, it goes to a new level. The only problem is that I have to turn my head now to go between the Outline View and the left edge of the editor. Oh well. I’m sure if I had anything bigger, it might be too big (did I say that?).

And this size of monitor is getting pretty cheep. This is a good one at only $700. The 20″ 4:3 monitors we used to druel about were more than that not so long ago. So if you’re in the market for a new monitor for working in Eclipse, 24″ is highly recommended.

How slow is Java? Not as much as you may think.

I was reading an article on the D programming language (more on that in an upcoming post). At the end of it, the guy claimed it was close in performance to C++. And he used this benchmarking site as evidence. It measures a number of different programming languages on a couple of x86 platforms at performing various algorithms. Most of the algorithms are pretty intense, so it’s a good measure of the raw compute power of their runtimes.

Now any such measure is easy to dispute. Did the programmers have sufficient knowledge in the languages to build implementations that would be efficient? They do allow you to play with different weightings for different factors that may be important to you. But the results are interesting non-the-less.

So, a couple of things caught my eye with the default results. First, C++ is faster than C. That I can see if you use C++ inlining a lot which is not always easy to do in C. But it is only slightly faster so I’d call it a draw.

Second, if you preallocate 64MB of heap (-Xms), which we often do, Java is only 1.7 times slower than C++. I think that is a very important result. We often wondered if the CDT’s parsers were slow because they were written in Java. The IBM J9 guys said that was crazy talk and these numbers somewhat show their point. Well written Java that really benefits from JIT should be less than 2 times slower than C++. We were looking for a 10 times performance improvement and would probably have been disappointed if we had rewritten everything in C++ (and I mean disappointed in the career limiting aspects of that decision ;).

I don’t know whether to fully trust the numbers on this site, but it does reaffirm my belief that Java isn’t that much slower than C++. I still don’t like Java, though. Show me something as powerful as the Standard Template Library in Java and I might change my mind. Or the ‘foreach’ from D…

Hey Buddy, Want a Job?

Now that I’m playing manager, certain things occupy my thoughts more than they used to. One of them will be my ability to hire good Eclipse talent as opportunities open up for me to do so. Knowing who I know in the Eclipse community, there is a lot of good talent out there, just none of them really looking for new opportunities. And I’m not the only one who would be interested, I’ve talked to two other managers who also work for large vendors in the Eclipse community who are struggling finding Eclipse experts.

Now, I wonder if that’s just a facet of the industry I am in, i.e., embedded development. The big issue we face is that most of the developers that work in our companies are C/C++ developers, not Java developers let alone Eclipse developers. Not only that, but there is a distinct bias against Java, especially from the guys who have been through the trenches with customers complaining about size/performance in resource critical devices. So needless to say, if we need tools developers, we can no longer really depend on growing them from inside the ranks like we have in the past.

So I wonder what solutions are available to help us poor souls looking for help. Certainly there are job sites out there where potential candidates can post resumes. But with those, I’ve found it difficult to weed through the masses looking for the right skills. Everyone seems to know enough Eclipse to put it on their listings, but how many know how to make Eclipse plug-ins.

One interesting idea I came up with this weekend is whether having such a job listing site as a part of eclipse.org would be useful. It could be something similar to Plug-in Central that vendors use to advertise their wares. We do have the helpwanted newsgroup, but I’d like to see one where it’s more a two way street. Obviously we would need some sort of optional discretion to allow vendors or candidates to be quiet about their searches. But it could make it easier for Eclipse experts and Eclipse managers to find each other.

Android for gamers on the go

I haven’t posted much here lately. I guess starting a new job that’s to be expected. I’m having a great time, though, and am learning more about install and licensing (the team I’m managing at Wind) than I’ve ever have. And I think there are some opportunities to do some cool things in this critical area that doesn’t get much of the spotlight. And of course, I still have a lot of CDT work I want to do for Ganymede.

At any rate, one thing you will fine me post more about is Google Android. I’ve mentioned in the past my passing interest in game development. I’ve never had the opportunity to do any, but with my teenage sons at that ripe video gaming age, I can’t help but think of the cool software that goes into these games and how much fun my boys have with it.

And being a development tools kind of guy and Eclipse in particular, I can’t help but think that Eclipse would make an awesome environment to build games including everything from modeling characters and building levels to writing the code to make it all happen. That’s my dream for Eclipse anyway.

Now the reason I love Android, is that I think it would make a great mobile gaming platform. And the Android gang must think so to since the SDK already comes with OpenGL ES support for 3D rendering with both a native library and a Java layer. It will be interesting to see what game developers can come up with and how well actual hardware will work. But it’ll be fun to watch. And it would be really cool if they used Eclipse to build it.

In the meantime, I see that a Russian game developer has ported their 2D game to Android already. For a look at the YouTube video and article, check here.