Archive for the ‘Open Source Software’ Category

Tough Day Full of Avoidable Problems

Monday, August 30th, 2010

Today was a day I'll be glad is over... there were just so many avoidable problems and delays that it makes for a day that really is best forgotten as soon as possible. It started out reasonably well - I was finishing up the work I'd start on Friday. I had really wanted to get it done on Friday, but it took another three hours (roughly), so it would have been silly to really stay and see it through. Also, there was no way I could have tested it Friday evening - and this morning I was able to use the live data to verify that things were working as planned.

But at this point, things were still going pretty well. The code was done, everything tested out, I checked it all in and pushed it to the central repo - pretty nice. But then the avoidable stuff started to bite me.

I needed two machines to test the throughput of ZeroMQ as a reliable multicast distribution system for my tick data. Nothing fancy, but I needed to have some way of replacing 29West as we weren't really using it as a solid middleware - just a multi-channel reliable multicast system. Given it's limited usage, I looked at ZeroMQ and thought Hey, if this works, I'm in business! But in order to know if it'll work, I need to actually get the ticker feeds working, put the messages into ZeroMQ, and pick them up on another box. Hence the need for two boxes.

Well... they got a few boxes with 10Gb ethernet NICs in them to make sure that I didn't have to worry about the NIC being the bottleneck, and they were ready for me to check the boxes out. As per the way things are at The Shop, the standard mechanism for getting to these servers is NXMachine or SSH. Given that I'd be testing and building, I decided to go with NXMachine. It installs pretty easily, and with this simple fix, it should work just fine.

Silly me...

I spent a full morning trying to get the NX Server to work. I knew the client was working, and I knew the server could work, but it wasn't allowing me to get a complete connection. Well... I got the connection, but when I went to actually display the X session on my box, it disconnected me. Very odd.

I tried logging the NX Server - no luck even when following directions. I tried re-installing the software - no good, either. I tried different parameters for the client - no good. In the end, I went to my boss and asked him for help. He couldn't get in either, but then realized that maybe it was because GNOME wasn't installed. Specifically, the GNOME Desktop environment.

That was the problem.

When he did a simple:

  $ yum groupinstall "GNOME Desktop Environment"

he got some 124 packages that needed to be installed. It seems that they didn't put the full GNOME install on the box as it was a "server". My previous box had the GNOME Desktop installed prior to me using it - which is why it worked. Had I stuck with a bunch of SSH sessions into the box, it would have been fine. It was just the desktop login that was the problem.

After that was solved, I was able to install boost, log4cpp, ZeroMQ, and a few other things to get this new box to the point that I was able to verify that all the code worked, and that everything compiled and ran.

Lots of grief for something as simple as not having the login desktop stuff installed.

Google Chrome dev 7.0.503.0 is Out

Friday, August 27th, 2010

The second nice update on the browser front this morning is that Google Chrome dev is now at 7.0.503.0. This represents the jump of the major version number after the release of Chrome 6.x to "beta". While I'm not unhappy with 6.x, I think the major updates the Chrome Team puts into the browser will be in the 7.x branch now, so I'd like to stay on the 'dev' branch as long as it's even reasonably stable. It's good to see them pushing forward.

Camino 2.0.4 is Out

Friday, August 27th, 2010

This morning was a banner morning for open source browsers. Starting with Camino 2.0.4. Today's update has quite a few nice things about it - an updated Java plugin, fixed Flash issues, latest Gecko engine... it's a good update. Now, I'm still not sure I'd use it day-to-day, but that's because Google Chrome and Safari are the best two I've seen today, but it's nice to see Camino stay up to date and push the rest to not get complacent.

VLC 1.1.3 is Out

Thursday, August 19th, 2010

I need to have VLC if only for HandBrake so I can rip my DVDs to play them on my MacBook Pro and iPhone. But it's nice to see that they have been squashing bugs, and that VLC 1.1.3 is out. For what I need, it's the only thing out there, but it's really good to see the movement.

Google Chrome dev 6.0.495.0 is Out

Wednesday, August 18th, 2010

It looks like they have fired up the 'dev' channel again as Google Chrome dev 6.0.495.0 was released this morning. I went back to the dev channel after moving to the beta when it was released a few days ago. I have to say, this has become an incredibly stable platform. It's fast, looks like a Mac app, and it just plain works. Nice.

The release notes indicate that, for the Mac at least, we're getting a fix for the download shelf, and a few fixes for CSS and plug-in handling. Looks good to me.

Google Chrome beta 6.0.472.36 is Out

Tuesday, August 17th, 2010

This morning I noticed that Google Chrome beta 6.0.472.36 was out - still no word on a new 'dev' release, so it appears that for now, they are simply sticking with the 6.0.x branch and not starting anything new for the time being. It seems reasonable that if they aren't making major changes, they can keep the 6.0.x branch moving along from dev to beta to stable. It's only if they have great new ideas that it makes sense to open up the dev branch again.

So it's out there - a few little UI fixes - nothing major.

Google Chrome beta 6.0.472.33 is Out

Friday, August 13th, 2010

GoogleChrome.jpg

Well... I'm a little surprised (again) at the Google Chrome guys... this time, the update to 6.0.472.33 didn't work from the application, and I had to get the update directly from the web site. In addition, the permissions on the existing app package made it impossible for a new user to replace the old with the new. Very odd. But in the end, I got what I needed, and I hope they have these updating issues fixed. It's amazing that they don't just use Sparkle, it's almost a defacto standard for the Mac.

UPDATE: I see the point... they promoted this to beta from dev, and that's the reason it wasn't updating. I'm going to have to go back to the dev channel when it's on the next major release. Makes sense now.

Google Chrome dev 6.0.472.25 is Out

Monday, August 9th, 2010

This morning they once again updated Google Chrome dev to 6.0.472.25 with the release notes just saying "UI Updates and Security fixes." It's all fine with me, as it's easy enough to update, but you'd think they'd take even 15 seconds to enumerate a few of the UI updates, or even list one or two security fixes. But such is not the case.

Google Chrome dev 6.0.472.22 is Out

Thursday, August 5th, 2010

The relentless advance of Google Chrome has this morning deposited 6.0.472.22 on my little digital doorstep. The release notes are pretty sparse:

All Platforms

  • UI Updates
  • Stability Fixes
  • (Issue 49493) Fix some problems with SSL connections through HTTP proxies.

So maybe they have the Flash problem fixed in this build? Might be interesting to try it - just to see. In any case, it's relentless, but it's nice to see the progress. It's really quite impressive that it's overtaken Firefox so quickly.

Scrapped Boost Variant – Wrote My Own

Monday, August 2nd, 2010

Boost C++ Libraries

Today I messed around with the boost::variant problem I'd been dealing with lately trying to get the code to compile and work properly. Finally, after about five hours, I gave up. It's simply too hard to get working, and even if I did, the maintenance costs of dealing with these kinds of compiler errors would be far too high for a junior developer.

So I took a very different track: I simply wrote my own. Honestly, it wasn't all that hard. I took out the definition of the boost::variant, and in it's place I put a simple union:

  private:
    tVariantType      mType;
    union {
      std::map<std::string, variant>    *mMapValue;
      std::list<variant>                *mListValue;
      std::string                       *mStringValue;
      int64_t                           mIntValue;
      double                            mDoubleValue;
      uuid_t                            *mUUIDValue;
      bool                              mBoolValue;
      error_t                           *mErrorValue;
    };

and then all the setters cleared out the old value and replaced it with the new. It's something I've written before, and so I knew a lot of the pitfalls to avoid. But it's not as nice as a stack-based template version. When I change values I'm hitting the heap for new space. While this isn't horrible for a lot of applications, it kills performance when you're trying to do something really fast.

Still... this is far easier to understand, and once we have it all buttoned-up, there's no real chance of a leak, and it's a solid way to handle the variant problem.

Once I got the main part written, I was able to attack the serialization and de-serialization schemes for this guy - based on the work of another group who has defined the scheme we'll be using. It's decently flexible, and should be really nice to use across the board.

Still lots of testing to do, but I'll get to that tomorrow.