the corner office

a blog, by Colin Pretorius

Big Bertha of IDEs

I installed and started mucking around with Visual Studio 2005 today, since I'm going to be doing a bit of C++ work soon (wahooey, it's been far too long). My word. Over 2 gigs just to install the platform. Installing the MSDN library is another 2 gigs. How on earth does MS stay on top of this much software?

It's not a fair comparison, because I know the one IDE better than the other, and the languages are different, &c, &c, but my initial impression is that Visual Studio is just a bit rudimentary in comparison to Eclipse. I like Eclipse's drill-down navigation and browsing model, and I couldn't find any way to do some of the same things with VS. VS's navigation functionality isn't bad, but it just seems... lacking.

The main place where Eclipse appeared miles ahead to me though, is in its refactoring support. If Visual Studio has any refactoring support for C++, it certainly didn't jump up and shout 'hey, use me!' As a simple example, I wanted to fix a spelling mistake in a method name in some code I've inherited, and it seems the only way to do this will be an old-skool Ctrl-H Find and Replace, with the usual schlep and risk that entails. In Eclipse, those sorts of Alt-Shift-R jobs become almost sub-conscious. You don't notice how valuable those features are until you can't use them.

Of course, when I finally do sit down and RTF-Visual-Studio-M I'm sure I'll find that a lot of these things are doable, in some guise or another.

{2006.01.05}

Odd social things

First day back at work, and again got to observe and partake in the strange 'Happy New Year' ritual that happens each year at this time. Men will shake hands and say 'happy new year'. The hand-shakes also tend to happen prior to Christmas, but less so than the New Year thing. The first week of the new year is hand-shake bonanza time. Not all men do it, but it's very prevalent. The hand-shake is almost never extended to women; and from what I've seen, women don't go around shaking hands with each other or hugging or mwah-mwah kissing to convey New Year wishes either. With friends and relatives, perhaps, but not in less familiar social / work contexts.

Maybe I just haven't been paying attention, but it seems to just be this odd thing that only men do?

{2006.01.03}

A new pet project

When I was down in Durban in August 2004, I sat in the study with hills-and-city-and-sea view that my in-laws kindly allow me to annex whenever I'm visiting, and started thinking about a little system to manage my personal 'library' of electronic documentation. It's been on the mental back-burner for a year and a half, but every time I download a new ebook from TSS or wherever and wonder where to store the damned thing, or whether to rename the file so that I can find it more easily in future, I devote a few more brain cycles to the problem.

Rather fittingly, during my *koff* study breaks in that same study over the past 2 weeks, I started putting together the basic framework for an application which does exactly that. For want of a better name, it's called 'metalib' because it's about storing and accessing meta-information about my document library. Ideally, I wanted to build it around a File Explorer-style GUI, but after mucking about with SWT and JFace for a bit, I decided that if I wanted instant gratification, then a web app would be a better start. What I did, though, was keep the 'engine' part strictly separate from the web app itself, so that the GUI can quite easily be swapped out with a client app, when I'm ready for it.

What the app does, basically, is portray a virtual directory structure which can incorporate an actual on-disk structure, but is mainly built from virtual paths which are specified, along with a lot of additional information like publisher, author, edition, notes and so on, in 'meta' files which are associated with the actual files. Most notable is the idea that a file can be associated with multiple directories, so that directories more sensibly reflect categories. This allows for documents to be stored in multiple categories, without having to resort to file system symlinks and all the hassles they imply. The idea is that over time, the virtual directory structure makes it easier to organise, locate and identify documents, and makes it easier to see more semantic information about a document than just what the file name and directory location imply. There's more functionality that would be useful, some of which I touched on in Aug 2004.

For now though, I've got a web app which acts like a butt-ugly but useful real/virtual file system browser that displays lots more than simple file names. It still needs a lot more work before it's ready for daylight. I'm not sure if it'll ever be useful for anyone else, but it's already posed some interesting design problems for me, and I'll be using my blog to keep track of the progress and design as I carry on working with it.

{2006.01.02}

New Year...

Back from Durban, and a really relaxing break. Thankfully for us, if not for most holiday-goers, was the fact that it was overcast and rained for all but 4 days out of the two weeks. I usually dread being in Durban's heat and humidity during the summer, but the two weeks were a treat. It was really great to see family again, I got some studying and software tinkering done (more in another post), and generally recharged the batteries.

The next few weeks will be devoted to exams, so blogging will continue to be light (or perhaps not, knowing me...). I decided (a few weeks back, actually) to leave a few subjects for next year, and not write all my exams in this session. As much as I wanted to finish off my honours degree, I've also come to appreciate the benefits of sanity and not overdoing things. So I've set aside some of the subjects I disliked most, and I'll repeat them or replace them with more interesting subjects in 2006.

I'm not big on New Years Resolutions, so instead I've just knocked out a few goals that Happen To Coincide With A New Calendar Year. They revolve around the usual get-fit-lose-weight-learn-technology-X type stuff. I'll blog about 'em if and when I make any progress.

One thing that I really ought to make a resolution about is to limit the amount of time I spend on Internet stuff each day. It was hardly an epiphane, but I was again reminded that without an always-on Internet connection, I was incredibly productive down in Durban. Sure, there was a bit of frustration not being able to hop online and Google and look up things as and when I needed, but I also ended up getting a lot done. I've trimmed the list of blogs I follow during the year, but the quantity is only one part of the problem. The real issue is the constant read, tinker, click around, read some more, reload bloglines, read some more pattern that characterises how I spend my time online. Apart from being constantly distracted and not focusing properly on anything else, it becomes all too easy to lose track of time and waste a lot of time reading things that aren't that important to me. In other words, I suffer from poor time management. Hardly difficult to sort out, it just needs a bit of discipline on my part.

So I'm resolving to set aside a fixed amount of time each day for reading blogs, online news and forums, and when that time is up, calling it quits for the day and moving on to something else. Beh, I've already broken the rule today...

{2006.01.02}

Holiday!

Phew. The working year is over, and we're off to Durbs for a few weeks of relaxing, family and mostly studying like crazy for exams in January.

This is likely my last blog posting of 2005, so here's wishing you a splendid whatever-it-is-you-celebrate, and a happy new year!

{2005.12.15}

Not sure about the resale value...

A LifeGem is not just any diamond:

The LifeGemĀ® is a certified, high-quality diamond created from the carbon of your loved one as a memorial to their unique life.

They do pets, too.

{2005.12.06}

Ice age

This is pretty grim news (via Fodder). There's some weird stuff going down with the currents in the North Atlantic, and there are some sensationalist/serious fears that Europe is heading for new (mini) ice age. I mean, a new ice age would be pretty cool if it meant the Woolly Mammoths were coming back, because they rock, but on the down side it would mean a lot of hunger and misery and death and, well, ice.

{2005.12.01}

Gay marriage is now legal (more or less)

The Constitutional Court says that if two people want to marry, it doesn't matter how many willies are or aren't part of the equation. The government has one year to get their act together, or the CC will get it together for them.

Now we just need to wait for God to start smiting us. But given that this ruling hardly seems to have raised a whimper, maybe God won't mind if we don't.

{2005.12.01}

Install, part 3

Just a few more notes on the install experience. There have certainly been a few quirks, but it's not as bad as I thought it would be.

Browser and Mail
As I mentioned before, I went with the firefox-bin ebuild, which is a 32-bit binary. The 32-bit binary is needed to play nice with proprietary plug-ins, most notably Flash. I installed a natively-compiled version of Thunderbird, which hasn't given me any hassles.
Video players
Video players pose the same problem. A lot of the 'common' (Windows, Quicktome) codecs are only available as 32 bit binaries. These won't work with a 64-bit video player, so in addition to the normal gmplayer and gxine video players I use, I also installed mplayer-bin which is, again, a 32 bit pre-compiled binary which can play nice with the codecs. There are some open-source codecs for these formats, which can work with the natively compiled video players, but they're generally not up to date. So the modus operandi is to try to play video clips with gmplayer, then gxine, and then fall back to mplayer-bin. It's a bit of a schlep, especially because mplayer-bin is just a good old-fashioned command line app with no fancy control panel. I've seen talk of an ebuild floating around for a 'g'mplayer-bin which has the gnome trappings, but I haven't bothered to try it.

Incidentally, I've seen mention that Win XP 64 still has a 32-bit Windows Media Player, for the same reason that they haven't ported their codecs.

Eclipse
Being a good ole Java app basically, installed without a hitch. The Java plumbing is a bit of a pain to get going, though...
Java
Ain't so easy. The default JDK that apps like Eclipse want to pull down is the Blackdown JDK (version 1.4.2.something). I was happy to stick with 1.4 for now, for a number of reasons, so I have no idea what Java 5 is like, although reports are not entirely favourable. The nice thing about Blackdown is that it's open source, and compiles to 64 bit. The not-nice thing with Blackdown is that it was a bit slow, and not too stable. Slow... when trying to fire up Tomcat from within Eclipse, the entire desktop would lock up, mouse juddering etc. That ain't supposed to happen on a modern PC... What's more, Eclipse would crash every couple of hours. I've had no such hassles on Windows or Linux 32 Eclipse before.

The only other 64 bit JDK available is from IBM, and I eventually went and installed that. It's been a few days, and so far, so good. Much faster and perfectly stable. (The IBM download site has a bit of a daft setup, though, and each version of their JDK has the same file name, so you have to make sure that you're installing the 'unmasked' version and rename the file yourself, otherwise the files don't pass MD5 tests). Pfff, IBM, pfff. As I've said before, the proprietary JVMs still seem to be the only serious choice, imho.

Apparently, the 64 bit JDKs don't support the client-friendly hotspot compiler, which also affects performance. The alternative would be to manually install a 32 bit Java JDK and use that. To be honest though, the IBM JDK seems fast enough for my purposes.

Tomcat
No specific AMD 64 issues (other than a LOT of masked dependencies), but in the latest 5.0.x version of Tomcat, the Gentoo developers decided to unravel the file system layout to cater for multiple instances, and the Tomcat directory structures have changed just enough to confuse a lot of things. I think it makes great sense for servers, but for developers it's been a pain in the butt to adjust. Not only do you need some head-scratching to configure things like the Sysdeo Eclipse plug-in, but the default (safe) permissions are not intended for iterative development. The best thing to do is add your normal login to the Tomcat group and bulk-change the permissions on all Tomcat directories to allow group control.
MySQL
No hassles, but the GUI query browser, for example, won't compile on AMD64. I'm not sure whether grabbing the binaries from mysql.com and installing manually will work.
Wine
Works mostly! I'd heard that Wine doesn't play nice on AMD64. I thought I'd install it anyway, to see what happened. It installed cleanly. I pulled across my fake_windows directory from my old machine, and fired up Notes. It looked awful, with all sorts of icons blacked out and the cursor randomly disappearing. Turns out it was a bug with my version of X windows. I did an emerge sync a few days ago, and a new version fixed the problem. Since then, Wine and Notes seem OK (I'm typing this blog on the new PC), except for the occasional cursor-disappearing problem when hovering over certain icons and tabs. I can live with that, though. I'd stayed with an older version of Wine on my previous machine because of upgrade problems earlier this year. I'm now using Wine 20050725. I've heard that post-20050725 versions of Wine break Notes (again), so we'll see how long this lasts.

{2005.11.27}

Another tragedy

A friend of ours, A, passed away on Friday. She was staying overnight in hospital after some tests on her back (she had pretty bad back problems), and at some point in the morning, something went wrong and she passed away. What caused it, nobody knows yet... which is perhaps the weirdest part and what makes it seem so much more unfair. Her and her fiance R were due to move into their new house shortly, wedding planned for early next year. So sad, so pointless.

{2005.11.27}

« Older | Newer »