KIS Systems, Inc - Contract Programming for Unix/Windows/Web in C++/C#/PHP/Qt/.NET and other technologies.

KIS Technoblog

Technical ruminations from our chief codemeister – Rick Berger

Archive for the 'Platforms' Category

First Look at Meego

Posted by rickb on 30th May 2010

So, Intel and Nokia and the Trolls at Qt have linked up and are merging Maemo with Moblin to create something called MeeGo

(I think I’ve got the caps in the right places…)

As this is a a potential target development environment (and especially since the development platform of choice is Qt), I’ve been very interested in checking it out, once it got to a fairly stable state. Now, the first ‘unified’ environment is available and I can take it out for a spin.

Installation

An installation is a two-phased job for me: the environment, itself, and the development SDK. First the SDK:

This has to be done on a Linux Box, because it’s a whole ‘chroot’ environment. If you don’t know what that is, think FreeBSD ‘jails’. If you don’t know what that is, think kind of like virtual machine, but not really. It’s just an isolated filesystem that looks like a whole different machine, inside of another machine. You log into it, and from there on, it appears to your login process that you’re on that machine.

I installed the chroot image on an Ubuntu 10.04 (latest) Fusion VM on a Macbook, which gave me a ‘kind-of’ VM inside of a VM configuration. It could drive you crazy, thinking about it – but the bottom line is: it works. Including the emulator. The only issue I had was that video wasn’t visible. But, I did have a Meego desktop to play with, and the SDK appears to be available.

The SDK is a kind of typical remote cross-platform development environment, except it’s not really needed, for the netbook app – the target is just another x86 linux implementation. In fact, I wonder if you couldn’t just put the SDK on the netbook, compile there, and then debug remotely.

There are probably performance issues, there – especially if the builds got big – but you do wonder…

On to the Hardware – ASUS 1000H (dual boot w/ easy-peasy image)

The initial task over, it was time to put the OS on some real hardware. I have an ASUS 1000H, dedicated to just such endeavors. It has easy-peasy in the first partition, but I left some space in a blank partition and can dual-boot through GRUB.

This turned out to be a little tricky – the installation process wouldn’t let me install without a boot sector, and it wanted to use a different file system called btrfs. For some reason, the installation didn’t like that in a non-default partition and complained that a btrfs system is unbootable. So, I had to fallback to ext3 (ext4 was not an available choice.) It hung when trying to load the boot sector (which I suspect boots into something non-btrfs, so I killed it, booted back into the easy-peasy image, and did a ‘grub-update’. Handy – the new grub 2 scans the disks for likely OS candidates and presents them in the boot menu.

Voila! Boot into Meego and everything looks fine.

The Verdict

Well, it is cute!!

Those little brightly-colored blocky people populating the intro video and all of the promotion materials look real friendly, and they look happy, too! How bad can it be?

When you hover over a menu item, it squoidges (my own term – I don’t know what else to call it – basically a ‘bounce’ animation done in scale-factor.) Run your mouse along the menu bar, and you get squoidge, squoidge, squoidge… as the mouse passes over the menu.

In terms of layout, it kind of follows the Ubuntu UNR/easy-peasy form – a bar at the top to select various ‘panels’, which are fixed size and take up the whole screen, although each panel may be divided into subpanels.

Beyond that, it’s more like a cell-phone OS. You have an applications panel – that seems normal. And you can select applications, launch them, and add them to a favorites panel. That seems normal, too (in fact, most of the applications are generic Linux apps, that look and feel like generic Linux apps.

It’s very heavy on the ’social’ and ‘personal’ aspects. Everything is geared towards showing all your friends, allowing your friends to ping you or you to ping them, your mail and calendar are right up front.

What is different is that things you’d normally expect to see in a web browser – facebook contacts, calendar updates, blogs, etc., can show up directly on a panel. The idea, presumably, is that getting to those would be quicker directly from a panel, rather than having to bring up a web-browser and navigate to a page – something that can be onerous and time-consuming on a small device.

No Login

Again, reflecting the device-OS ancestry of Maemo – there is no capability for multiple user accounts. it’s really tuned to reside on a personal device. So personal, you don’t have to log in. The upside is that when it comes up, it’s ready to go. The downside is that if someone else is using the netbook, they’ll likely screw up the desktop (or view that you have screwed up the desktop.) Not only that, but with it’s heavy emphasis on ’social’ apps, it’s like someone else logged into your Facebook app. All of your personal details are there.

I’d have to concur with others who have installed it on hardware – it’s really fast. It looks like this is a really trimmed down Linux distro. A lot of heavy stuff that used to happen at boot time is apparently deferred, or eliminated, already, because it’s not something that is needed on a device OS.

So, it boots fast, it runs fast.

Is it usable?

My initial impression (thus far) is that it would be a really good tablet OS (or, of course, a cellphone/pda OS), rather than a netbook OS. I don’t think I’m going to give up the easy-peasy environment on this netbook, just yet. For one thing, my netbook serves as a ‘kitchen’ pc, with different accounts so my Significant Other can log in and mess up the screen layout anyway she wants…

In the tablet/OS environment, text input is always the issue. Nothing has beat the keyboard, yet, but smaller devices can’t handle them. So, there have been a variety of solutions – virtual keyboards, character stroke recognizers, full handwriting recognizers, and the occasional oddball scheme designed for eye-tracking (which can work quite well, but it is an odd way of expressing things) – all of these have have their trade-offs and none have been proven to be faster or more accurate than the good old keyboard.

Of course, this is version 1.0 and there is a whole lot yet to be done. It’s definitely a different paradigm, I think, one that’s going to take a bit of getting used to. It seems more natural to smaller devices without a keyboard, but I think that is the real intended direction. Having it as a netbook OS is just icing.

Posted in Platforms, Qt, mobile | No Comments »

‘Git’n It

Posted by rickb on 6th May 2010

I’m getting ready to open-source QXSAP (a Qt-based multi-lingual and simple marshaling parser) and, of course, before doing that, I need to get it into a source control repository, of some sort.

In the past, that’s been SCCS (Source Code Control System), RCS (Revision Control System), CVS (Concurrent Versioning System) and finally SVN (Subversion), with a couple of side trips to some strange source control systems, whose names I forget and would rather not recall.

Something New: Git

Now, the latest thing is Git, created by no less a luminary than Linus Torvald, himself. I’m not sure if the name is an acronym that stands for something, or if it’s just a play on the slang term to ‘git’ something. Whatever – it’s the VCS du jour, and it’s being used by a lot of important (to me) organizations, primarily Nokia for Qt and all it’s sub-components.

Gitorious is the repository of choice for Qt-based objects, so that’s where I want to put QXSAP.

Which means I’ve had to spend the last couple of days getting up to speed on Git. From what I’ve seen, it looks like it’s capable of doing anything it’s predecessors can do. I like the idea of having a local repository, and that the repositories can communicate with each other and update themselves. Beyond the standard required features (fetch/push/branch/tag, etc), the ’stash’ mechanism seems kind of interesting.

Start out with the basics, and then broaden the scope, from there.

Until the next ‘new best thing’ comes along….

Posted in C++, Linux, Mac, MacIntosh, Platforms, Qt, Software Development | No Comments »

Using QtCreator

Posted by rickb on 22nd April 2010

The Symbian development platform (on which I’m currently working) has historically been incredibly arcane. A modified C++ with a non-standard exception mechanism, for starters. And a whole bunch of pieces to install, one of which is a doctored up Eclipse IDE.

Qt doesn’t alleviate the proliferation of installation pieces, at the moment, primarily because everything is still in transition. In fact, you have to install a whole bunch more new pieces to get the development environment together on your desktop machine and on the phone.

QtCreator

One of those available new pieces is QtCreator, Qt’s answer to the IDE.

I’ve used a lot of IDE’s over my career, and they all have their pluses and minuses. MSDEV is great for MS-only applications (and is particularly brilliant in C#). XCode is cool on the Mac, and Eclipse is great for Java. I’ve been a fan of Eclipse since working with it on a Java project a couple of years ago, and so was looking forward to using it in the Symbian environment – since Carbide C++ (the blessed Symbian IDE) is based on it.

That proved to be somewhat less than productive – the environment is insanely fragile. I managed to break the debug perspective completely, just trying to move a few windows around (the Variables window, specifically). It took some research and digging down into the nest of hidden project files to find the proper configuration file to delete and get some order back to the IDE. Then, too, communicating with the phone required yet another panel with arcane settings, and that had to be reset, frequently.

Since I’m using Qt, I thought it would be an interesting exercise to use Qt’s blessed IDE, even thought it’s still at an early stage of development.

Order of Magnitude

I can honestly say, QtCreator has been a lifesaver for this project. For starters, though still in early incarnation, it’s really good and intuitive to use for Qt development. And, it seems to communicate with the phone more readily.

There are a lot of glitches, still – I have yet to get the on-device debugger to work. Judicious use of qDebug() statements have been the stop-gap measure around that – effectively reducing debugging to the proverbial ‘print statement’ technique. Not optimal, but it works. And I can’t get the debugger to work on the device in Carbide-C++, either, so it’s no effective difference, there.

Better than nothing.

But, what has been the real lifesaver has been the ability to take advantage of an outfall of what Qt ultimately is: a cross-platform development environment. What this means in practical terms is this: you can do a lot of development on the desktop!

When you install Qt, you can install two versions – one for the desktop, and one for the phone. QtCreator has a (admittedly wanky, but slated for improvement) configuration panel that allows you to switch between build configurations: desktop or device (actually, there are two configurations for the device, as well – emulator vs. actual device.) You have to flip a bunch of switches to do it, but I’ve gotten it down to a fairly manageable routine and can flip between the two environments with relative ease.

That ability has been nothing but a godsend (or maybe a troll-send) for this project of limited funding and limited timeframe. Turnaround (the time it takes to go through a code, run, debug, fix and do it again cycle) on the device is slow. Turnaround in the emulator is even slower. But turnaround on the desktop is fast – no loading required.

Because of that, I’ve been able to do a large bulk of the coding effort – getting the big stuff in place – on the desktop. It helps to create an appropriately sized main window, and you do have to have a jumparound here and there (primarily for the OpenGLES stuff and the menu system), but most of the code and components are exactly the same.

So, when it comes time to deploy to the device, most of the hard stuff has been done. Now you can focus on the harder, device-specific stuff.

Not the Same

Just to come full circle, QtCreator has some real promise. It has glitches – the VIM emulator is a great idea, but I’m seeing a bunch of issues with it. I’m told that much of this is fixed in the newer version.

It’s difficult to specify and organize source folders – I’ve taken to creating source file ‘hulls’ on the command-line in the directories I want them, and then update the .pro file, accordingly. The IDE will honor what you’ve created, and show appropriate folder organization.

Not on the Mac, though – the project contents are just a flat list of entries. You can still get to stuff, but you may have to scroll through a long list of other stuff to get to it. I imagine that will get fixed in the next update or two as well.

Summary

Overall, I think this will only get better. The Trolls (now part of Nokia) are working on this furiously (note the announcement of Meego and the parallel announcement that Qt will be the development platform of choice on that environment – it already is on Maemo).

For me, QtCreator will definitely become the development platform of choice for future Qt applications, with decreasing reliance on the platform-specific IDE.

Posted in Eclipse, Platforms, Programming, Qt, mobile | No Comments »

Facebook/Flex/AS3 Grief

Posted by rickb on 8th October 2009

It should come as no surprise that ActionScript3 (Flex/Flash) are second class citizens in the Facebook app world.

But, that doesn’t make it any less frustrating, when you encounter it.

The most recent turn appears to involve the app installing itself into the users account. This used to work swimmingly well. Now, all of a sudden, I’m discovering my potential users can’t install. They never get the ‘Allow’ dialog and the app just hangs on connection.

Various tests show that all of my Flex/Flash, apps and test platforms do this, so it’s not just the app in question. The PHP tests, of course, work swimmingly well.

Other AS3 app developers have noticed this, too, and have had to implement a range of workarounds to fix it. I think FB has screwed up their permissions files for AS3. It would be nice to get FB’s attention to figure out what went wrong, or Adobe’s, but that’s like trying to get through to MS. All you can do is spatter messages on the boards and pray.

So, I’m in the middle of figuring out how to do the workarounds and still stay in the AS3 codespace. Another alternative is to let PHP set up the session and then the Flex app can just attach itself to that session.

Of course, once I get this many-days-endeavor implemented, FB will fix it, and everything will work properly as it did before, in the original context.

But, should they mess up again, the workaround will be a good failsafe against that.

Grouse, grouse. Ommm, Ommm.

Posted in ActionScript3, Facebook, Flash, Flex, PHP, Platforms, Software Development | No Comments »

More on VMWare Fusion…

Posted by rickb on 20th February 2008

As I write this, I have three virtual machines running simultaneously alongside OS X:

  • A 256mb FreeBSD system, commandline only (no X). This is my local webserver.
  • A 396mb Ubuntu system running KDE
  • A 764mb Windows system running XP

This is all under VMWare Fusion on a 2.0ghz/2gb/250gb white MacBook. The VMs are located on an outboard USB drive.

And it’s not killing the machine!!

Kind of amazing, really, when you consider they collectively take up 1416 mb of memory on a 2gb machine. that leaves a bit more than 500mb of memory for OS X (Leopard) to run in.

As the VM’s fired up, there was a bit of a slowdown, but once they settled down from the boot activity, I could switch from one to the other without a perceptible drop in performance (assuming no heavy background processes running on any of them – I imagine inducing a large software build in any of them would probably load things down.)

I’m way impressed. I tried running the Ubuntu image and the WinXP image simultaneously under Parallels, and it brought the machine to its knees. I didn’t have to reboot the host machine, but I had to wait an excruciatingly long time for the selected guest machine to shutdown cleanly and the system to regain it’s composure.

Under Fusion, things are running surprisingly well. I’m sure I won’t keep it this way (I don’t think), but it’s nice to be able to do it.

I guess you have to credit VMWare’s long history doing virtualization technology that make this happen. I can only wonder how many images I could run simultaneously on a Mac 8 core tower (drool) without performance degradation.

As it is, I’m pretty happy being able to run the three I can.

Competitive Upgrade for Fusion

As of this writing, VMWare is offering a competitive upgrade rebate to Fusion – after you apply the rebate, Fusion comes out to around $50.

Think I’m going to have to do it, based on what I’ve seen.

Some Asides/Gripes

Just a couple of notes:

  • I’d like to be able to set the IP range for the NAT system manually, leaving a few for statically assigned addresses. I need this primarily for the FreeBSD web server, but I like all the VMs to have known addresses.
  • (There is a way to do this – you have to go in and edit some buried configuration files – would rather see an interface to do it, like on VMWare Workstation in Windows.)
  • Not really a criticism as something to ponder: I want to use a bluetooth headset for Yahoo Messenger VOIP capability (YM VOIP isn’t supported on the Mac, yet). In Parallels, an intermediate driver is installed between the hardware and the VM’s – thus, when you change the sound source on the host system to bluetooth, you can get it in the guest without messing up anything else.
  • In Fusion, the guest apparently has access to the hardware and, thus, communicates with the BT driver, directly.
  • Powerful, in one sense, but if you also happen to be using a BT mouse or keyboard or other device, the VM grabs that, too, and it doesn’t go back to the host system. Ever.

So, an annoyance, there, but not a deal breaker.

rickb

Posted in Linux, Mac, MacIntosh, Parallels, Platforms, VM, VMWare | 1 Comment »

More VMWare vs. Parallels Investigations

Posted by rickb on 18th February 2008

So, after having a few meltdowns w/ Parallels, I decided to give VMWare Fusion a go.

The Parallels problems seem to have gone away (fingers crossed) with the latest Mac OS X upgrade.

But, I’m still working with VMWare. A couple of pluses:

  • I could be wrong, but qualitatively, I think XP under VMWare is faster. I do a lot of compilations over shared volumes – they seem to go faster under VMWare.
  • The images are smaller w/ VMWare. In the case of my XP VM, it went down from 38gb to 33gb. That’s significant.

On the down side:

  • Trying to get Yahoo Messenger to work in the XP VM was a nightmare – big hangs and I had to power down the system and reboot several times.
  • Bluetooth audio doesn’t appear to be working in VMWare.

Both of those features in the last work quite well in Parallels.

But, the only thing I want this capability for is VOIPing over YM. The good news on that front is that Yahoo has just release a Mac version of Messenger (and that’s a big honkin’ YAHOO!). Thus far, it seems to work pretty well.

Which eliminates the need for the VOIP solution under the XP VM (one of the critical reasons for keeping Windows around…)

Users of Skype can be happy, too – they’ve had Mac version out for some time, now.

rickb

Posted in Parallels, Platforms, VM, VMWare, VOIP, Virtual Machine Software, Windows | No Comments »

Developing on the Mac

Posted by rickb on 22nd January 2008

Now that the Mac has finally settled down, I’ve been moving my development efforts off of Windows and onto the Mac.  And just recently, I’ve done a partial upgrade to Leopard (hedging my bets by installing it on an external USB drive.  Best of both worlds – I can boot Leopard off the USB, and Tiger off the internal.)

XCode is a reasonable IDE – better with the Leopard incarnation.  The integration with gdb is tight – I’m having to go to the cl gdb less frequently.  Qt is working just fine on the Mac, with no surprising ‘Mac’ gotchas.  (In fact, I’ve gotten more ‘gotchas’ in the linux environment than I have Mac.)(Or Windows.)

A few things I miss in the Windows environment:

  • Visual Studio has better capability to look at out-of-scope expressions.  If I want to examine the contents of a pointer, it’s easier in VS than in Xcode.
  • Visual Studio’s ability to debug Javascript in IE is simply awesome – it looks and behaves pretty much like any other language in the IE.
  • Windiff is still the best windowed comparison program in the land.

For PHP development, Zend’s Eclipse IDE port works fine on the Mac (and the latest incarnation adds a lot of features.)  For first cut debugging of Javascript, the Firefox debugger handles most cases – although in a crunch, I’m tempted to go back to MSVS for the more puzzling situations.

Still, for the most part, I’ve been ‘living in the environment’ and haven’t been tempted to shift back over to Windows for anything in particular.

So,  the Mac is becoming pretty much my mainstream preferred development environment.  With the addition of Parallels and a few scattered VM’s , I can do the verification builds and debugging on Windows and Linux as necessary, using net shares to access the central development environment.  There’s a bit of a time penalty for going this way – but I don’t build frequently in the VM’s and the trade-off for not having to carry more than one machine more than compensates for a slightly slower build.

Ah.  There is one area where the Mac is really hands-down the preferred platform: imaging.  For one thing, you can color profile both displays – an annoying shortcoming in Windows (XP, anyway).

Posted in C++, Mac, MacIntosh, Open Source, Parallels, Platforms, Programming, Qt, Software Development, Virtual Machine Software | No Comments »

Let Chaos Reign!!

Posted by rickb on 22nd October 2007

Ok, I’ve got about ten things going at once, here. I’m the incarnation of Andy Grove’s pre-commitment exploration dictum: Let Chaos Reign!! Of course, the other side of that dictum is that when you’re committed to a particular direction, you apply the inverse: Reign Chaos In!!.

Well, it keeps me from getting bored between gigs, anyway.

The top four things (as of the moment) are:

  1. Getting the Zend IDE up and running for PHP. Ostensibly, this would seem to be simple, but things are complicated by virtue of the fact that Zend has created a second IDE based on Eclipse. Eclipse is a good thing – it not only supports PHP, but HTML, CSS, XML, and the rest of the alphabet soup of net languages, for development on the net. But, it supports application development languages, as well, most notably C++ and Java.
  2. Assiduously avoiding Java (don’t like things that consume half the machine’s resources to run a ‘hello world’ program), but C++ is right in there.
  3. Ubuntu VM configuration. Ok, I like ubuntu bunches. I hate to say it’s almost ‘Windows-like’ in ease of use, but it is. It has what must be the best update manager in the open-source world – it really does ‘just work’.
  4. Qyoto investigations: C# and Qt – what I think may emerge as the best cross-platform agile development environment, ever. C# has all the advantages of Java, without the overhead penalties. Qt is the best cross-platform windowing environment, albeit the cost is almost usurious, at least for small developers. Maybe in the future there would be a wxSharp effort? Not sure how that would work with wxWidget’s message map architecture…
  5. I’ve put this up under monodevelop on the ubuntu system, but it’s not working (even though monodevelop says it is. Just copies down the reference .dll’s.Real anxious to get this working on as many platforms as I can.
  6. Getting the WordPress rss feed plugin working. That’s the last piece of this blog. It’s installed, it’s recognized, I can set things up, but it doesn’t output anything.
  7. Getting that done will finish up the blogging system.

It sounds like a lot, and it is, but it interleaves – a lot of these are embryonic efforts (especially Qyoto) and they require some feedback from forum query’s before I can continue. So, I can drop one while waiting for a response and pick up another. Or pick up the other when I get a neuron spark.

Posted in C++, CSharp, Linux, Mac, PHP, Platforms, Programming, Qt, Virtual Machine Software, software | No Comments »