Archive

Archive for September, 2006

Wiki Comparison

September 27th, 2006 No comments

Open Source Classroom has an excellent in-depth examination of most of the main wiki options that I’ve seen in quite some time. The requirements are a little different from most (collaboration amongst 10 and 11 year old school children), but the differences aren’t really that different. It’s not just children who don’t want to learn complex wiki markup, and many companies wouldn’t really want uncontrollable Google ads throughout their site either.

Mediawiki, Pbwiki, Jotspot, Wikispaces, Dokuwiki, Netcipia, Editme, and Wetpaint are all considered, and all come up short. You can read the review yourself to see why, and discover which one was eventually chosen.

Tags:

More on Accounting Wikis

September 23rd, 2006 1 comment

Karen has contributed some useful thoughts in response to my previous post about using Semantic Mediawiki as an accounting system.

One of the key things she highlights that I’d never really put my finger on before, is that traditionally recording financial information is a specialist skill – that of a bookkeeper. This made sense historically when there actually were physical day books and ledgers into which every transaction needed to be entered and then turned into a trial balance to be passed to the accountant. But technology isn’t meant to just replace paper with pixels, it’s meant to enable us to find new and better ways of performing tasks. For some reason bookkeeping software never managed this.

Most people can learn fairly quickly how to add a basic sales or purchase invoice to any financial system, or to record payments for either. This is because all software now hides the underlying double-entry nature of these functions. It’s a simple one-screen process. The software successfully hides the complexity by translating the user input into the full long-winded procedure that would otherwise be required.

But once you get outside this basic comfort zone, the learning curve gets very difficult very quickly. Buying capital equipment via hire purchase? Ouch! Better ask an accountant how to record that. Issuing an annual invoice that a customer pays monthly by direct debit? You need to make manual adjustments every month. Even something as commonplace as payroll is overly complex in most systems (even when you buy their expensive add-ons). Yes, accounting for payroll is complex. The company has to act as an unpaid tax collector, removing PAYE and NIC at source to be paid over to HMRC at a later date along with some extra Employer taxes. The employer and employee might also jointly contribute to a pension scheme, which needs handled separately again. Increasingly companies are also being asked to withhold other money from the employee at source, e.g. for child support. There are too many possibilities for accounting software to be able to hide all the complexity.

In traditional software packages, structure comes first. You can’t just record the data and hope to sort it out later. With a wiki, however, this is reversed. The structure and meaning can emerge later. As long as all data is recorded and annotated in a sensible way, we can work out how to deal with it later. If some new government Mandated Savings System was introduced that requires us to withhold 1% of an employee’s salary every month, to be held for them and paid to them only upon leaving the company, we wouldn’t need to wait for a software update or until an accountant worked out for us what the various balancing entries should be. Someone could just add an extra line to the salary payment entry ([[mss amount:=21.91]]), and working out how to actually account for that not only becomes Someone Else’s Problem, but, critically, can happen at a later date.

And if the structure turns out to be wrong, that’s not a problem either. It’s trivial for someone to just go through and change each entry, or even write a little script to automate this if there’s too much needing changed (with, of course, a full audit trail built in, for all those accountants having heart failure at this point).

It also means that any information that you want to capture for creating management accounts, rather than financial accounts, can be trivially recorded as well. Want to record which sales team is responsible for a sale? Which floor of your office this bottled water bill applies to? Which developer ordered this book from Amazon? Just do it. As soon as you annotate the information, with a new field, the field automatically springs into existence, and it’s instantly possible to query on it. Open a second office? Just inform everyone that they now need to say [[Office::Belfast]] or [[Office::Lisburn]], and you’re done.

The possibilities are, literally, infinite.

Tags: ,

Socialtext 2.0 raises the wiki bar

September 22nd, 2006 1 comment

Socialtext have just launched version 2.0 of their wiki product. I haven’t had a chance to actually play with it yet, but based on what I’ve read so far, and on watching the screencast of the new features, this is a phenomenal improvement over the previous version.

The original version too readily betrayed its roots in Ingy‘s ‘kwiki’ project. This was a really simple way to set up a wiki back in the distant past of 2003, and sparked a wave of plugin development for a while, but in recent years has fallen out of favour, with more and more people preferring MediaWiki for a Free Software Wiki.

I don’t know if Socialtext have built version 2 from scratch, or whether they’re still building on a kwiki core (the source is available, so I could presumably find out easily if I wasn’t feeling so lazy), but they’ve moved a long way beyond it now.

The most obvious addition is Wikiwyg mode, which is hardly surprising as they’ve been publicly working on that for quite a while now, and have teamed up with Wikipedia to try to make it happen there too. But there are lots of other nice features too. All the best ideas from the various other wiki products out there appear to have been neatly packaged up into a coherent whole with a lot of magic ajax dust to simplify many key tasks.

Tagging seems to be becoming popular on wikis now, and will hopefully displace the more hierarchical ‘Category’ approach of Mediawiki. Socialtext makes adding and removing tags very simple, especially with a del.icio.us style auto-suggest feature. Attaching files to a page also appears to be a nice feature, but I’d need to play with this to see how well the file handling is built in to other features (like search).

Of course there’s RSS everywhere, not just on recent changes and watchlists and the like, but also for any search query you want to watch over time.

Once nice feature from Kwiki has been retained: the ability to see inline what other pages are linking back to the page you’re currently on. Although most wikis have a “What Links Here?” feature, my anecdotal experience implies that hardly anyone ever uses it. Bringing this information right out front lets people stumble across interesting connections they might otherwise have been completely unaware of, which is a significant plus in a corporate or community setting.

The built in blog tool also looks interesting. There have been a few people playing with the wiki/blog combination for a while, but most just end with the worst of both worlds. On the surface Socialtext appear to have managed to get the best of both: pages that look and feel more like a blog than a wiki, but with the full power of a wiki backend – particularly for linking to other pages.

None of these features are particularly innovative: the real breakthrough is in just stealing lots of good ideas and tying them together really well. The one feature that did surprise me though, and maybe the key innovation (unless they snaffled it from some other wiki software I haven’t encountered yet), is the Dashboard.

In my experience the “Home Page” of a corporate wiki is generally terrible, and either remains fairly empty, or becomes little more than a mass of links to all the pages people wanted to create but didn’t know where to link them from. Socialtext have blown this concept away and replaced it with a Personalised home page for each user, displaying a dashboard of useful information: Recent updates, changes to your watched pages, a shared whiteboard, a personal (but not private) notepad, etc.: all the pages that people would either have to look at regularly anyway, or, more likely, forget to look at regularly. Bringing them together into a single page suddenly makes that page much more valuable, particularly, again, in a corporate setting.

Apparently there’s a whole bundle of new features under the hood too, particularly an API for interfacing with other software or building your own extensions, but I haven’t had a chance to explore these yet.

Unfortunately there doesn’t seem to be anything for storing structured information, which is now a key requirement for our corporate wiki, or I’d seriously consider switching to this. Here’s hoping for 3.0…

Tags:

Using a Wiki as an Accounting System

September 21st, 2006 11 comments

In the UK, the de facto accounting system for small business is SAGE. This is most unfortunate, as it is an appalling piece of software for many, many reasons. I can rant for hours on its many shortcomings, but today I’ll mention two of the biggest ones, and how we’ve been able to work around these using a wiki.

Firstly, its reporting is terrible. It can, of course, give you all the traditional accounting reports – P&L, balance sheet, cash flow, actual vs forecast, debtors list, creditors list, etc. etc.. In recent years they’ve even added the ability to produce these in HTML. However, there is no way to interrogate the output or investigate things further. When I see a financial report I want to be able to click on any piece of data on it to get further information. This is a classic case of a 90% solution. There are really complex tools available to let you slice and dice data any way you want, but in a small business, just making each number a link to a screen that shows you what makes up that total is generally both necessary and sufficient. SAGE fails miserably here. I’ve encountered many companies who went used to go through the process of getting their bookkeeper or accountant to print these reports on a regular basis, but never really understood what they were seeing, so eventually reverted to the traditional “gut feel” approach that most small business owners prefer, leaving formal reporting for their annual accounts and their semi-regular reports to the bank manager.

SAGE does allow you custom build your own reports, but as far as I’m aware there’s no facility to allow for the creation of “interactive” reports. It’s also highly likely that some enterprising company has built some sort of add-on to do this, as there’s an entire third-party ecosystem surrounding SAGE, but I’ve never found one.

This reporting problem falls into the “generally annoying, but I guess I can live with it category”. Historically my general approach has been to export the pertinent information as CSV and manipulate in Excel – what most companies seem to do when they get big enough to move up from having a simple bookkeeper to actually hiring an accountant.

The much bigger problem however — the one that makes me tear my hair out when having to work with SAGE — is how it deals with accruals. This is an accounting concept whereby you are aware of income or expenses that will apply to an given accounting period, but for which an invoice has not yet been raised. The classic example is a bill that is issued quarterly in arrears. A quarterly bill for £60 should really be entered as £20 for each of the three months. But when you go to close April’s accounts, that quarter’s bill hasn’t arrived yet, so obviously hasn’t been entered on the system. As such your accounts don’t accurately reflect the costs incurred in the month. So you have to accrue a £20 charge that can be reconciled when the bill finally arrives. Similarly, if the bill is quarterly in advance, you don’t want to just charge the full bill against the month when it arrives, so you assign parts of it to each of the next two months. SAGE makes this remarkably complicated. Bookkeepers and accountants have gotten so used to that they don’t really think about it, but watching the confusion of a new admin assistant learning how to do it drives me insane. As a result, many small businesses just don’t bother doing this and their monthly accounts swing wildly in the months where the bigger invoices hit.

One of my standard rants to accountants is about how, yes, double entry bookkeeping was a great invention in 12th Century, but it’s no longer a useful metaphor for users of a computerised accounting system that should be able to take care of such things by itself. Business owners and managers want to enter sales and purchases, note when these are paid, and then check it all off against the bank statements each month to make sure nothing untoward has happened. They don’t care, and shouldn’t need to care, about journals and ledgers and trial balances.

But there seems to be no such thing as “modern” accounting software. They’re all just computerised versions of an ancient system. Some manage to hide more of the underlying mechanisms more than others, but it doesn’t take much scratching to discover what’s really under the surface.

When we took over the running of Ireland’s oldest ISP a few years back, the accounts were a mess. Customers were billed monthly, quarterly, six monthly, and/or annually – some in advance, some in arrears, some in the middle of their billing cycle. How they were billed also bore little relation to how they actually paid – many of the customers who got annual bills actually paid monthly, for example. Suppliers, in turn, tended to invoice quarterly in advance. Large software development projects also carried a substantial Work in Progress element. It was a huge amount of work at each month end to enter all the necessary accruals and movements, and the resulting P&L and balance sheet were mostly incomprehensible due to the wild swings involved in booking or releasing money from customer pre-payments, often received months earlier, but which have to be treated as a liability until that month’s services have been delivered.

The simple solution to this problem is of course to just allow each invoice (whether sales or purchase) to have an associated ‘period’. A phone bill charges for the previous quarter’s calls, and the following quarter’s line rental. Most companies account for these separately so already split the bill and assign each a different nominal code. The trick is to also add the relevant dates to each: calls from April 06 – June 06, line rental from July 06 – September 06. The software can then do all the calculations it needs for accruals each month without the need for a hideously complex manual month-end process. SAGE, however, doesn’t allow you to do this. They’re not alone. Every accountant I’ve spoken to is completely unaware of any low-end financial software that does. But they all agree that it would make the accounting process much, much simpler for most companies. I can’t believe that no-one else has ever thought of doing this, so I’m left with the assumption that it’s just a giant conspiracy to create unnecessary jobs for millions of accountants and bookkeepers.

So, in frustration, we decided to use a wiki for our accounts instead. Mediawiki with the Semantic extensions makes for a very interesting data store, as I’ve written about previously. For basic accounting information there are only really a few key concepts: purchase invoice, sales invoice, payment made, payment received, bank lodgement, bank statement.

Each gets its own Category, and has a set of relationships and attributes defined. Each invoice has attributes for net, VAT, and gross amounts, a nominal code, an issue date, and a from date/to date pair for the period it applies to. Each also has a Supplier/Customer relationship which of course links to the page on the wiki where we’re already storing information for that company. A cheque received relates to one or more invoices, has attributes for the amount, and is related to a Bank Lodgement, which in turn is an amount on a date to a bank etc. A provisional bank statement can then be generated through an <ask%gt; query for each transaction applying to that bank in a given period. This can then be visually cross-referenced against the physical statement when it arrives to make sure that nothing is missing or erroneous. Most small companies are on cash accounting for VAT, so the bank statement query can also be set to also include the VAT portion for each transaction, and a simple sum provides all the information necessary for the quarterly VAT return.

Producing a P&L is trickier. The syntax isn’t really expressive enough to do this yet, and I’m not sure it ever will be. Even if it allowed the full Sparql syntax, as has been mooted, I suspect the computations to properly assign invoices over various accounting periods might be too complex. At the minute we produce these by querying the wiki’s underlying database directly with a Perl script that does all these calculations. This also means, of course, that each piece of data on the resulting report can be a link to a page explaining how it’s made up.

The process is, of course, error-prone. But it’s much, much easier to correct errors in a wiki than in SAGE. Mediawiki, of course, maintains a full revision history for every page, so there’s a built in audit trail that’s much easier to examine than the one in most financial systems. We’ve created a few scripts that run regularly to look for obvious errors, such as invoice items where the net + vat doesn’t equal the gross. The syntax is still too simplistic for some of the reporting we’d like, so until it provides aggregate functions, or until we learn how to use RDF better, we still have to do too much digging at the raw data with SQL. It’s very far from a complete financial system, as we haven’t really needed to deal with things like share capital (although asset purchases are simply a purchase invoice with a very long from date/to date range, so the bulk of a balance sheet is there). And it’s built on a fast changing base – Semantic Mediawiki is still in the early stages of development. So it’s certainly not something everyone could, or even should, do. But it has allowed us to remove a huge amount of recurrent admin work, see much more clearly what the financial status of the company is in real time, and drill down into that data where something seems puzzling.

All we need to do now is edit the ten years worth of historic data that we imported to assign the correct periods to each invoice…

Harrington on Hold ‘em

September 4th, 2006 9 comments

Recently I’ve started playing online poker again, after not having played for a while. Whereas in real life I’m a PLO fan, I’ve finally succumbed to just playing Texas on-line. I can hold my own at the low-limit Omaha games, but it gets too scary too quickly as you move up the tables. In Texas there are still loads of people who seem to have learned by watching TV and think that you’re meant to go all-in every time you get a pair of sevens…

The big problem with playing Texas, of course, is that it’s dull. I generally play tight, so most of the time it’s just fold – fold – fold – fold – fold. It’s generally not worth paying more than minimal attention to the other players, as they come and go so frequently, so unless I’ve something else to do at the same time, I end up playing more games than I should, just out of boredom.

So I’ve recently started playing tournaments. You still get a lot of wild players, particularly early on as the loose players try to double up, but there’s much more to be gained from studying the other players when you’re not in the hand and taking copious notes. For the first few weeks I played fairly solidly, generally ending up at the final table (out of 35-40 starters), and about 33-50% of the time ending in the money (i.e. top 5). But generally I find myself too short at the end, and have to make a wild move just to avoid getting blinded out. The games where I’m in the money are generally because I just refuse to play any games at all, and a few players above me end up going all in and losing out in the inevitable KK v AA or AKs v QQ battles.

I knew that I needed to loosen up a bit as the tables started thinning out, but didn’t really know how, and my early attempts ended in disaster, as my average finishing position started dropping to about 15. So, based on a few recommendations, I bought the first volume of Harrington on Hold ‘em and took it to Birmingham with me last week.

It convinced me that my problem isn’t that I should be playing looser, it’s that in the hands that I do decide to play I should play much more aggressively. Even with a good hand I play far too cautiously, probably in large part as I’m much more used to Omaha, where your nut flush will regularly come in third to the full house and the quads. So even when I win hands, I win much less than I should.

I need to re-read the book and work through the exercises in more detail, but armed with a few basic rules, and a general resolve to play tight but aggressive, tonight I entered my first tournament since getting back home, to see what difference it made.

I managed to double up early with a few good hands one after another, and found myself relocated to another table positioned just before the tournament leader who was playing really aggressively, and whose favourite opening bet seemed to be about 10-20 times the big blind. The few times he’d had to reveal his cards they were generally along the lines of 87o or Q4s.

I tightened up considerably, and eventually the big hand came around. I’m on the big blind at $15/$30, and the big bully raises to $600. The second highest stack, who is also playing aggressively (although not quite so recklessly) calls. Everyone else folds round to the small blind who is down to just over $500 and, seeing a chance to treble his money, calls all in. I’m holding QQ, so put in a $1200 raise. Both loose players call. The flop delivers a rainbow KK2.

The small blind is all-in, so I’m first to act. Previously, I would have been scared that at least one of the two active players, who have, after all, either put in or called substantial raises pre-flop, will be sitting on one of the other kings, and I would just have checked, and then mucked my hand when someone bet.

Now, however, even though I’m still scared, I open with a bet of $720, which is just over half my remaining chips. Both active players fold, and the small blind flips AQo for the all-in showdown. No aces arrive and I jump to over $5500 as the new table leader.

I haven’t really mastered the art of playing the role of table bully myself yet, so I continued to play tight, letting the other two loose players, who still have decent sized piles, muscle the others around and gradually take the table lead back again. Although in theory I know that it’s easier to take the money off the weaker players at an earlier stage than have to take it off the players later who have survived that far, I’m happy enough for the two loose players to pick everyone off as I figure I’ll be comfortable enough standing up to them when I do get a hand.

And sure enough, a while later, a three way fight leads to two people dropping out, and I’m left at a four-handed table before people get reshuffled. Blinds are at $50/$100, and I’m on the second biggest stack (still immediately before the big bully from previously who’s now back up to about 1.5x my stack). I’m on the small blind, and with A♣K♣, raise $600. The big blind calls, and we go heads up. The flop comes A♠ K♠ Q♦.

If my opponent happens to be holding JT I’m set to lose a lot of money, but I’m much more worried about giving him a needless free card for a straight draw if he’s holding one of those, so I bet just over half the pot. He just calls, which I read as much more of a sign of weakness than I would have previously.

The turn is 6♦, which is unlikely to help him but there are now two suits where he could conceivably be drawing to a flush. So, with the pot at $2700 I lead with $1800. Again he just calls.

The river is 5♣ which misses all possible flush or straight draws. My stack is down to under $3000, and I should probably have just gone all-in, but I wimped out and just bet $2000 of it. Again, he calls. My top two pair hold up, and I pocket over $10,000 without discovering what he was calling with. I’d like to think it was either AJ or AT, limping along with top pair and a straight draw, or Ax in spades or diamonds looking for the flush (or maybe even top pair with draws for both the straight and the flush). Whatever it was was hugely expensive, with a $5000 swing each way suddenly reducing his dominating $7500 table lead to well below average $2500.
A round or two later, having dispatched a few stragglers unsuccessfully trying to double up, I found myself with more than half the chips in the entire tournament, with two tables still playing, and managed to stay that way until the end, winning my first ever multi-table tournament.

I picked up Volume 2 in Birmingham, which promises to teach me much more about playing at short handed tables and one-on-one. If it’s even half as good as the first one, and my win tonight wasn’t a complete fluke, it should pay for itself in no time at all…

Tags: