Well, while I’m waiting on a subversion command to finish (on another project), I may as well flush my train of thought, in between wondering how any large project can bare to use subversion lol.

One of my open loops is a component called the “Data Browser”, it’s meant to provide a view into data extracted from a projects source code, and present that data to the user: while bridging that browser interface into the rest of this programs peers. In less abstract English, it’s a tags browser. Go figure.

Something I love about programming, you can often express a notion in 3 words of code, what would take 10 words of English to describe. How that works? You can reduce the English word count with the use of insider jargon, but being a programming language, outsider is redefined as those who can’t read the language rather than those who don’t comprehend the associated tech speak. There fore the word count falls significantly.

My present train of thought however, is concerned with how the data should be presented: what is most suitable for the user. The fact that the program is designed first and foremost for my own convenience is aside the point :-o.

In search of the holy grail of user interfaces: I’ve found this the most optimal method.



+---------------------------------+
|  [-] Classes                    |
|      [+] Foo                    |
|      [-] Bar                    |
|            someMethod()         |
|            ....                 |
|      [+] ....                   |
|  [+] Functions                  |
|  [+] Macros                     |
|  and so on                      |
|                                 |
+---------------------------------+


where as much information about the individual items has been omitted for the sake of brevity ^.

Properly expanding the tree for a given type of data should display information unique to it. I.e. what is most pertinent to *that* type of data, rather than a common subset that applies to everything.

Columns for a methods display might look like:

| name | signature | return value | visibility |

where as the columns for classes, as opposed to ‘Bar’, might look something like this:

| name | visibility | in namespace | 

.

In a perfect world we could do this over a sandwich without much coding. Using the GTK+ TreeView widget and friends, grepping the manuals suggests that life is just going to be waaay easier if each element (Classes, Functions, Macros, etc) of the tree becomes a separate tab holding a specialised treeview as part of a Notebook widget! I’ll look into it closer when I have more time for that.

Now of course the tree view could simply show the lowest common denominator for info, and rely on a “Properties” button to show the individual details for the currently selected item, or we could (barf) just have expanding the trees spawn a new window customised to that type. But nether are to my taste.

Enough rambling, time to get a move on while subversion continues to (ab)use my networks bandwidth.

Days recap

Quite a full day, if not very productive :

I was up to around 0500 last night, I dunno why but I never seem to get much sleep lately lol. The other day, I thought I was getting to bed early, and it was 0430’ish, well.. an hour early then the two days before I guess hahaha. Tried to sleep in today, since work didn’t start until the afternoon — not much luck. At least though, Tuesdays job is more time consuming then strenuous, tomorrows job on the other hand… Is more so a pain in the ass, then it is time consuming.

One thing odd, I heard Amanda kicked Adam out and that he’s staying with his parents again. Not a good sign in my opinion. Especially since, as memory serves, in 2007 I’ve seen and heard of a lot more people getting divorced or dying. 2008, I had somewhat hopped would put that incremental stream of numbers to an end lol.

One of these days, I really ant to take some time to write up a review of Google Chrome — I love that freaking thing!!! And whether the V8 JavaScript engine is really THAT fast or Google is taking advantage, gmail is so snappy on loading + the seperate process per tab thing, means no more browser-locks when launching gmail. Google Chrome is enough of an improvement over Firefox 2.x, that I might actually be able to re-take control of my inbox, if I ever get a linux binary package to use on my FreeBSD box… or better still, a native binary ;-). Perhaps it would be more fair to compare it to Firefox 3, but I use Flock 1.x most of the time, which is based on Firefox 2.x. And in all honesty, I hate Firefox 2 when compared to Firefox 1.0,x-1.5.x, it’s just lost that feeling I guess… I just don’t like the changes, and Firefox 3’s alpha builds didn’t look like an improvement. Although, I do have FF3 installed on SAL1600 just in case, but more so because it’s a newer version.

Google Chrome, I think is perhaps the best thing since Lynx and HTTPS but who knows >_>

As far as my efforts to standardize myself around 1/2 languages + what we use on [SAS], has fallen back into deadlock. Every way I slice the pie, Python seems to be the best choice for all of my needs, hell… The only time I’ve had an interpreted language come out as to slow for jobs I’ve tried to use them on, is an oddity. A script had to invoke perl so many times to process text, that it was faster to invoke sed/awk instead, which could actually be considered interpreted languages I guess lol. Some of the things I’ve heard about Python 3000 alarm me in that regard, but I’m not very concerned. The real problem is, I prefer C, but I don’t have *time* for C. When it comes to using C++ for tasks, I look at it as a two edge sword. More time savers then C but they all go out the window, in situations where they are not helpful.

That and working with gtkmm on Windows will probably be a pain in the royal hind quarters when it comes time to link against stuff. Although, I rather think a combination of Boost, Qt, and libs used in gnome is a good idea. The odd thing? C++ is not actually a language that I like a lot, but hey… beats Java I guess :

Java would actually be a perfect tool for my needs, except I don’t want to have to write in Java that much loooool.

Todo: Toolkit and Library madness

Examine for portability the following toolkits under these OSes: Windows NT, Mac OSX*, Unix-like.

*I sadly don’t have a Mac, although I would really love one. So a OSX binary of some form will have to pass.

GTK+ — C, C++, Perl, Python, Ruby, PHP, C#.NET (Java bindings also avail but seem to be gnome-centric)

Qt4 — C++, Perl, Python, Ruby, Java (C#.NET and PHP bindings seem to be questionable and only C++/Python and possibly Java bindings can be depended on).

WxWidgets — C++, Perl, Python, Ruby, Java, C#.NET

Swing and SWT would be considered if they were available under more languages !!!

Evaluate portable standard/add-on libraries to each language for the following capabilities:

String handling (they all do well in the language standard)
Regular Expressions (Only Perl and Ruby get this great imho)
XML Processing
Network programming — both sockets based API and protocol support (IMAP, POP, HTTP/S, FTP)
Database handling — must support MySQL, SQLite, and some form of flat file.
Basic compression and archive format support (e.g. tar; zip; gz; bz2; lzma)
Inter-Process Communication (IPC) methods and related process control (e.g. fork(), exec(), signal(), kill() type routine-families).
Ease of use and deployment

Goals:

Build up a standard frame work of toolkits/libraries/etc that are portable across both my general operating environment and the various languages I use

Attempt to standardize myself on few languages rather then rubber banding between various programming languages + sh/awk/sed/friends

Ensure full development environments are available to me under FreeBSD 7 and Windows NT 5.1 (e.g. I can code from either machine and not change tools)

At least one language for scripting/prototyping and one for more efficient execution when implemented in that language (e.g. 1 interpreted + 1 compiled)

and try to stay sane along the way without writing a few libraries in the process >_>

A busy day

I was busy trying to catch up a bit with GTK+, I set out to begin making tests of the various language bindings, starting with C++ and Windows; since I know they all work fine under FreeBSD and GNU/Linux. The first thing I did, was download the GTK Development Environment, which proved to be a disaster.

In allowing the installer to “Register Environment Variables”, the installed nuked my systems %PATH%. So I’ve had to reset it, one bit at time. To ‘shield’ it from any future assaults, I’ve split it up into other system environment variables that get sucked in. That should at least eep me from having to backup the registry… Once if ever, I actually manage to get the XP machine up to snuff again, I’ll need to take a proper backup of the system.

Spent a lot of my time today in training with Jonsi and Caern. First doing training with Jonsi, then dealing with Caern after tending to family business.

I’m omni tasking to the point, that I don’t even get to finish LJ Posts loool