Operational Dynamics
Research and Development   |   Projects   |   Blogs   |   Source Code   |   Linux
August
Mon Tue Wed Thu Fri Sat Sun
       

hackergotchi
This section:

Blog postings by Operational Dynamics partners and staff

Use the links at top left for a consolidated feed of all the posts made on this site.

Please note the disclaimer at the bottom of this page.

RSS 2.0 Atom 0.3

Mon, 29 Aug 2005

Camping and Hacking

Spent last weekend out in the woods at Peter Miller’s awesome Central Coast Code Con. This is the second year we’ve done it. This time we went to the Basin Camp Ground in the Olney State Forest in the Wattagan Mountains. A beautiful setting.

I actually think the term “CodeCon”, despite is venerable lineage, is a bit unhelpful in terms of explaining to people where you were or what you were doing. After all, what the heck does it mean? I thought a bit about how we could improve it:

One of the features of a CodeCon is that people do short informal presentations of something interesting they’re working on. We had a good crowd. Highlights: Erik de Castro Lopo talked about OCaml; Robert Collins showed us a new unit test suite for python he had madly hacked away on over the weekend. Silvia Pfeiffer talked about the future of Annodex which led to an awesome discussion about growing open source communities. Peter Miller showed us the tiny version control system he wrote to be the back end of a wiki he wrote called “quickie” (awesome name, dude). I described the configure-for-Java thing I’ve been working on. Conrad Parker gave us a demo of melting his shoes in the fire.

On Saturday we went for a hike up a picturesque (if somewhat hilly) section of the Great North Walk which was great exercise.

AfC

Thu, 25 Aug 2005

Testing the GTK 2.6 to 2.8 upgrade path - Part 1

As a part of getting java-gnome ready for the next release, I’ve been testing the upgrade path.

Quite often in the past we’ve had situations where people have had a newer GTK+ but older libgtk-java, so the first test was is to see if we were ok in that scenario.

On a machine with GNOME 2.10 on board, I upgraded gtk+ to the newly released 2.8. At present, in Gentoo land, it’s still, quite wisely, hard masked, so I had to add appropriate temporary entries to /etc/portage/package.unmask and ~x86 keyworded them in /etc/portage/package.keywords.

>=dev-libs/glib-2.8
>=x11-libs/pango-1.10
>=x11-libs/cairo-0.9.2-r1
>=x11-libs/gtk+-2.8

With that, off emerge went.

Things were quite successful.

One bug I did hit was damage to the background as windows moved. I gather that problem was something to do with cairo not recognizing the vendor string in Gentoo’s X server. Had a good chat with vektor while I was doing this, and he pointed out the bug — which the Gentoo dev had already patched in cairo-0.9.2-r1 — but it turns out I was still hitting it because I was still running xfree on that box, not xorg. Anyway, he noted it in freedesktop bugzilla. And I finally got off my ass and upgraded my X server. :)

vektor also suggested I try Cairo 1.0.0 which is fresh out today. I subsequently do so with a manual ebuild bump. All good. [I note that Paul has reported a problem due to issues down in librsvg, but I haven’t run into that so far]

Next, I started running various apps to see that things are still working. All my daily use apps render fine.

Finally, and the point of the exercise, I fired off the various applications I have that use java-gnome. Those apps are running on top of the stable branch of libgtk-java 2.6 (ie CVS branch gtk-java-2-6, not HEAD) Everything worked fine. If anything, they’re faster.

In fact, the net result of these upgrades has been that desktop performance is dramatically improved. Granted, it’s impossible to tell how much of that is xfree to xorg, gtk 2.6 to 2.8, introducing cairo, or cairo 0.9.2 to cairo 1.0.0, but collectively it represents a user visible responsiveness improvement. Awesome work!

So as a field test from a stable, current, non-jhbuild, non-GARNOME environment, I can report that the GTK 2.8 upgrade is looking in good shape. And a 2.6 language binding, in this case Java, works fine against it.

AfC

Sun, 14 Aug 2005

Paul Graham on the similarities between Open Source and Blogging

Paul Graham recently put up an essay based on a talk he gave at OSCON. The title, “What Business Can Learn from Open Source” is somewhat bland, but the subtitle hints that you’re in for a doozy: “Open source and blogging have a lot in common: amateurs, workplaces, bottom-up organization and startups.”

Increasingly over the last few years, quite a number of us have progressed from being excited about the fact that Open Source works to pondering why it works. What I love about Paul’s essay is that it abstracts some of what we’ve learned and applies it to other phenomena that are rocking the foundations of the conventional world.

He makes an interesting point about blogs - because of the network effects and the low barrier to entry, there is indeed a lot of rubbish out there, and at first, it’s easy to dismiss amateur work as substandard compared to what “professional” writers:

“…and so the average person expressing his opinions in a bar sounds like an idiot compared to a journalist writing about the subject.

On the Web, the barrier for publishing your ideas is even lower. You don’t have to buy a drink, and they even let kids in. Millions of people are publishing online, and the average level of what they’re writing, as you might expect, is not very good. This has led some in the media to conclude that blogs don’t present much of a threat…

Those in the print media who dismiss the writing online because of its low average quality are missing an important point: no one reads the average blog.”

He then reaches back to the Open Source world and shows how the forces create better software are also at work in the publishing world. And that’s going to change everything. It already is:

“The New York Times front page is a list of articles written by people who work for the New York Times. Delicious is a list of articles that are interesting. And it’s only now that you can see the two side by side that you notice how little overlap there is.”

In fashion reminiscent of Scott Adams’s the Dilbert Principle, Paul spends a lot of time rubbishing the conventional practices in corporate organizations:

“Many employees would like to build great things for the companies they work for, but more often than not management won’t let them. How many of us have heard stories of employees going to management and saying, please let us build this thing to make money for you— and the company saying no?”

The point that so many tend to miss is that it isn’t that corporations are evil, but rather that corporations tend to cause so many counter-productive behaviours that the net effect is dramatic inefficiency.

I know a lot of hackers who are frustrated with modern organizations. Simply raging against the system won’t fix it. Essays like this, however, point the way to a very different future — if you’ve got the courage to break free of the safe world that results from not rocking the boat.

AfC

Fri, 12 Aug 2005

The conference formerly known as…

Linux Bangalore, India’s foremost, coolest, (not to mention hugest) Linux and Open Source conference decided last year that they weren’t going to call themselves that name anymore. So for the last 8 months it’s been:

The-Conference-Formerly-Known-As-Linux-Bangalore

LB was about more than just Linux in the same way that linux.conf.au and others are; they wanted to come up with a name that was more broadly inclusive, and also conveyed the message that they represent more of India than just Bangalore (as certainly their awesome conference pulls in Open Source people from across the region and around the world), and may lead towards the conference someday moving around the country like LCA moves around Australia (and then some!)

Well, as of today, I can pass on the word that they’ve finally announced their new name! Believe it or not they were considering linux.conf.in (and, ever conscious of not wanting to step on toes, they even went to the trouble of contacting Linux Australia about the idea; we told them we thought it would be awesome if they did). But pursuing the wider inclusiveness theme, they came up with an even better name: foss.conf.in. Even with our positive assurances, they did want to differentiate from the LCA branding, so now…

Linux Bangalore Presents

FOSS.IN/2005!!

That’s right, foss.in! Their name is their URL: the Indian Free and Open Source Software conference! I don’t know about you but I think that’s pretty rad as domains go.

This year the conference is running 29 Nov 05 through 2 Dec 05. There’s not much on their public site yet, but their CFP will be out in the next couple weeks, and they’ll be starting regular news updates soon.

But the real reason I’m posting is to encourage people to go. Sometimes people read announcements like this and think “oh, well I’m not a speaker type, so that’s not for me.” Forget that; you just need to be there! Linux enthusiasts, business people, open source developers, kernel hackers, and yes, even free software nuts — I recommend to one and all that you make your way to Bangalore for what promises to be an unsurpassed event — and in a venue that will blow your mind.

AfC

Sat, 06 Aug 2005

The sad state of accounting software

A rant first, then some background, and then screenshots!

Book-keeping is a drag

For some time now I’ve been incredibly frustrated about the state of accounting software available to small businesses that want to run Linux. In the commercial world there’s QuickBooks, of course, which is ok, and here in Australia a major player is MYOB. But both are, well, too cuddly, and although they have slick interfaces, they are actually incredibly clicky and as a result make large quantities of data entry a pain and worse are just hard to use at speed. They’re proprietary, making them impossible to extend, and worst of all run on Windows. In fact, the only reason I have a VMware install is to run the Windows instance that our MYOB books are in. Yuk!

Like many people, I’ve had my eye out for a while, trying to find something Linux side that would be of use, but usually such things were some combination of incomplete, hard to install, ugly, meant for much larger enterprises, or just plain difficult to use.

I’d been using SQL-Ledger for several months, and although it was functional I’d been not terribly impressed by it. I gave it a good go, and even paid the author for his non-free manual, but after a while I finally gave up in disgust. For one thing, it’s a web application (only), which I hate. Another was that there was no simple way to just “Spend Money” without creating a vendor for each transaction and then raising an invoice and then paying it. (I was not about to create a vendor for the Prague Transit Authority just so I can enter my $1.50 underground train fare). The final straw came a couple months ago. I had been entering a payment I’d just received from one of my overseas clients. Instead of accounting a certain differential as “Currency Gain/Loss” it decided to enter it as an expense under “Discount’s Given”. I didn’t give a discount. I lost (a small differential) because of changing exchange rates. So why the heck did it decide to put in as a discount? Grr. Enough.

I run a small business. Our bookkeeping needs are, I’d like to think, very straight forward. But one thing I’ve found is that, for the certain few use cases that I pound on like entering the expenses I incur when I’m on the road, I just want a user interface that will scream — do what I want, the way I want it, and do it fast.

You can see where this is going. I have many better things to do. I also agree with Michael Meeks’s oft stated point that it’s better to improve existing software than to start afresh. But I couldn’t find anything out there that seemed to be amenable to me hacking on it, so I very reluctantly started to think about what coding something specifically suited to our needs would be like.

I don’t know if my efforts will result any differently than any myriad other such projects that get started with such great intentions. All things considered, it’s entirely probable that this will end up unfinished or unworkable and in the bin; even if it does work out its not like it is necessarily going to be of any use to anyone else. For all these reasons I’m not inclined too make too much noise about it.

However, it’s what I’ve been spending my spare time on lately, and since I’m writing it using the java-gnome GTK Java bindings (of course!) there is a growing amount of code in there that I’ve been able to use as examples to help others. A couple of nights ago in #java-gnome I was doing just that, and Andrew Overholt suggested I should blog it. So ok :)

Initial progress

It’s actually going pretty well. I have the domain model pretty much complete, a straight forward persistence mechanism working, and have been working on some prototype user interface elements.

One innovation I had was to leverage the Java type system to deal with the nastiness that double-entry book-keeping creates. Early on the gnucash team said “We have no debits or credits! We just use positive and negative numbers.” Well that’s silly — proper double entry accounting does use Debits and Credits, and you have to deal with them appropriately. And it’s not trivial - the classic case of how complex it gets is depreciation: Fixed Assets, as Assets, are Debit positive, as is the “at cost” amount that you record on the firm’s balance sheet. However, as an asset ages, you record the “accumulated depreciation” against that asset. That is a Credit positive number — and while ultimately it will be subtracted from the “at cost ” amount to get your totals, “accumulated depreciation” is not negative. Things like GST Collected/Paid are similarly complex.

Complex it may be, but nevertheless, like anyone with high-school accounting, I understand it, and the complexity doesn’t bother me terribly much. So I got to work.

After I’d worked out a system that just used subclassing to take care of all of this complexity, it occurred to me that what I’d done was to have the Amount of an Entry be a scalar quantity, but to treat the value of said Entry in a Transaction as a vector quantity, with the Debit-ness or Credit-ness dealt with as if they represented direction. As I said, coding this turned out to be easy:

if (entry instanceof Debit) {
    _balance.incrementBy(entry.getAmount());
} else {
    _balance.decrementBy(entry.getAmount());
}

and so on for Credits, then up the ladder of Ledgers and Accounts. And it all works beautifully. Since the various Account types are subclasses of something I called DebitPositiveAccount (Assests and Expenses) and CreditPositiveAccount (Liabilities, Equities, and Revenues), getting balances for accounts is easy.

Ok, whoopie - anyone can come up with a data model. The real key is a UI that will support rapid data entry. If I can come up with some sensible layouts and UI elements [composite widgets] to help ease & speed the data entry task, then I think this project will be worth pursuing.

Selecting Dates

One things about MYOB and SQL-Ledger both that pissed me off enormously was that it is a pain to enter dates. The SQL-Ledger web app just gives you a blank field, which is pretty useless. MYOB has formatting assist, sort of, but if you only enter part of a date it will either wrongly interpret it or equally unhelpfully clear the field. So the first thing I wrote was a “Date Picker” (perhaps Chooser would have been a better verb, but whatever).

In mine, if you enter

5 Jun

You get 5 Jun 05, as you’d expect. If you just enter

8 April 2002

You will, as expected, get 08 Apr 02, because that happens to be the format I like dates in. And if you then enter

17

It will fill it in as 17 Apr 02, because it remembers the last date you entered and assumes that you’re doing groups of related data entry at the same time. (If you’re behind on your bookkeeping, or even just entering receipts from the last trip, chances are that you’re entering data from roughly the same period. So help me along, yo!)

Date Picker

As you can see, there’s also a button to popup a window with the GtkCalendar widget in it; it’s all tied together so the current selection is the selected date, and selecting a date in the calendar actions back to the GtkEntry field in the appropriate format. (That took quite a bit of obscure meandering through java.util.Calendar and java.text.SimpleDateFormat!)

Selecting accounts

On of the other hugely frustrating things in most accounting programs is how hard it is to quickly pick which account you want (ie, when you’re entering expenses). Sometimes they give you a dropdown with a thousand entries. MYOB gives you code numbers and sub-account names, but doesn’t show what the parent account is a sub-account of, resulting in confusion (is that Travel::Meals Expense, or Client Entertainment::Meals Expense?)

So I took a swipe at creating a UI element which would assist in finding accounts quickly. Without boring you to tears with details about the Class hierarchy I’ve used for accounts, when you type a character into this AccountPicker widget, it pops up a window with an Entry where you can narrow the search, and a TreeView with the account/ledger combinations which match the characters entered are shown.

[Incidentally, yes, TreeView has a built in search capability, but it’s only on one column (I needed it to filter across two columns, and possibly even 3 if I decided to expose “account numbers”) and the built in search only jumps through the list - it doesn’t narrow it, which is what I wanted]

It’s pretty awesome. Usually within about three keystrokes you can see the account you’re trying to pick, select it, and you’re done.

Account Picker

I also exposed (in the small print) a human readable String of whatever Type a given account happens to be. The colours are blue for Debit-positive, and green for Credit-positive, which seemed a nice touch.

This one exercised a huge amount of the API - TreeModelFilter to narrow the list, DataColumnObject to store references to the underlying objects in my domain model, FocusListeners, EntryListeners, a TreeViewListener, and KeyListeners all over the place. I’m pretty pleased that it all worked. Clearly, java-gnome is maturing.

AfC

Thu, 04 Aug 2005

Linux® Trademark in Australia

One of the organizations whose board I sit on, Linux Australia, has been working on securing the Linux trademark in Australia. We’ve actually been working on this for a very long time. It’s a long story that goes something like this:

In some countries, the term “Linux” is a registered trademark owned by Linus Torvalds [if you want the gory details about how that came to be, see pages 133-135 of Just for Fun. Yes, you should click that, buy the book, and make me rich].

As it happens, some people (including, Linus, as astounding a co-incidence it may appear) seem to think that Linus has better things to do than worry about administering the ownership of the Linux trademark. Since he didn’t really want to worry about it, he assigned responsibility for administering the trademark he found himself owning to an organization setup expressly for the purpose called Linux Mark Institute.

Sometime in 2003, someone brought it to our attention that the Linux trademark wasn’t registered in Australia and that we should be doing something about this intolerable situation! (Yes, you should feel some ironic sarcasm there, as I reflect on all the people who think our little band of unpaid volunteers [1] should be doing something about whatever their intolerable situation happens to be).

So, we set about finding out what had to be done to get it registered in Australia for the further benefit of the global Linux and Open Source community that we serve. That took longer than we expected - it turns out that trademark law and dealing with IP Australia is rather more complicated than perhaps it might be in that ideal world we all like to pretend we live in. After a few bats at the piñata (not to mention considerable elapsed time), we finally clued in and retained legal counsel (ie, hired a lawyer) to pursue the matter for us.

The counsel that Linux Australia instructed, a jovial fellow (who also is a right proper geek) named Jeremy Malcolm, has been toiling away at this for some time now. He recently resolved some outstanding confusion (mostly just crossed wires between all the unpaid volunteers involved on various sides of whichever your favourite ocean is), and is putting together the final pieces of the puzzle that will resolve the issue properly. Part of that was a sending a letter to various people around the country who might happen to be using Linux professionally, asking them to indicate their knowledge of the international trademark and their support of it.

As is quite usual in our community of mostly unpaid volunteers, a few people overreacted and thought that they might have an intolerable situation on their hands! (Yes, it might have helped if Jeremy had been a little more specific that he was acting on our behalf, but then again…)

Alas, no, it’s nothing worth getting excited about. You see, we’ve proceeded with the trademark application already. So long ago that it ought to be decided soon, and when it is it will be assigned to the person who should (and in my IANAL opinion defacto does) own it, Linus Torvalds. Then LMI can take over, and the situation that should have existed all along will, and thus the destructive conflict will be at an end and order will be brought to the galaxy.

Since people were bugging him about it, Jeremy just wrote up a FAQ page, to which I happily point anyone who a) is still reading, and b) still thinks that there is an intolerable situation to be had.

Incidentally, the title of this post is the first, and expect last, time I will ever bother putting that stupid ® mark beside the word Linux :)

AfC

[1] There are many levels of meaning when you consider that the link unpaid volunteers doesn’t go anywhere. It’s intended for many different audiences. You know who you are. I think I should trademark null://, though.

Tue, 02 Aug 2005

Double decker nuclear powered laptop

Last night I was chatting with Stewart about what laptop we will be buying next. (He’s looking at ASUS laptops, one of which, the V6V looks really promising, and apparently has excellent Linux compatibility).

While we were on that site, however, I spied a “laptop” from a different manufacturer that makes me shake my head in amazement. It’s called the Sager NP9880 (why are computer model numbers so stupid?). It’s portable, but only in the “portable if you include the optional 4WD pickup truck option” category:

3/4 view

Laptops all look the same (ok, so this one is exceptionally ugly) but look closer: the keyboard includes a keypad! This thing has bays for two hard drives (you can get it RAID configured from the factory), and has slots for two optical drives:

side view

Lots of ports…

rear view

… but note the thickness, and more worryingly, look at the size of that exhaust vent!

Now flip it upside down:

bottom view

Oh my god! Look at the fans on this thing! It would probably hover at desk level all by itself!

I’d shudder to think what would happen to your legs if you actually ran this laptop on your lap…

Photos from website of “AGear Notebooks” a US based vendor.


RSS 2.0 Atom 0.3 Category Specific Feeds. Use these links for an RSS or ATOM feed limited to this category and its descendants. Technorati Profile


Material on this site copyright © 2005-2008 Operational Dynamics Consulting Pty Ltd, unless otherwise noted. All rights reserved. Not for redistribution or attribution without permission in writing.

We make this service available to our staff in order to promote the discourse of ideas especially as relates to the development of Open Source worldwide. Blog entries on this site, however, are the musings of the authors as individuals and do not represent the views of Operational Dynamics. All times UTC.