Posted by: Eoin Woods | September 19, 2009

Sadly Missing JAOO 2009

jaoo_logo

Unfortunately an immovable work commitment has just emerged that means I won’t be able to be at JAOO 2009, which is a real shame.

Posted by: Eoin Woods | August 6, 2009

Speaking at SA2009

Software Architect 2009I’ve been fortunate enough to have a talk selected again this year for Bearpark Publishing’s excellent Software Architect 2009 conference.  This year the conference is at the Royal College of Physicians in Regent’s Park, London and it’s running from 29th September to 1st October. I’ll be giving my talk on the “Top 10 Software Architecture Mistakes” on Wednesday 30th September in the afternoon.  Hope to see you there!

Posted by: Eoin Woods | August 6, 2009

WICSA 2009 Early Bird Registration Closes Soon

The WICSA 2009 early bird registration prices are only available until August 15th, so if you’re planning to come to the conference, now is a good time to register!

Hope to see you there.

Also we now have a great group of sponsors but if your organisation is interested in sponsoring the event and reaching a large group of top software architects then do get in touch.

Posted by: Eoin Woods | August 6, 2009

Mac Finance Packages

Recently I decided that I really should be tracking my finances using a dedicated package, as I’ve been using online banking and Excel to do this for quite a while and it seems like there must be a better way.

I use Macs at home for most jobs and so I decided to find a good personal finance package for everyday use. My needs are pretty simple (import transactions from my bank, set up a simple set of transaction types for classification, allow me to analyse past expenditure and predict future expenditure) so I wasn’t expecting this to be difficult. Well it just goes to show how wrong you can be!

Since I switched to Macs about 3 years ago, I’ve been consistently impressed by the quality of the software available for the platform, but whatever has resulted in this situation for most software seems to have passed most of the personal finance packages by. Let’s just say that I wasn’t terribly impressed overall.

The Test

I found 10 personal finance packages for OS/X (which was more than I was expecting in fact) and I downloaded them all for a quick test drive to see how they fared. I performed the same test with each package, which was quite simple, just being:

  • Create a new account
  • Remove all the supplied categories and add about 8 of my own
  • Import two OFX files with about 120 transactions over 4 weeks
  • Try to categorise the transactions and show a graph of expenditure by category

While this is pretty simple stuff, the different packages coped with these tasks very differently.

The Applications

Cha-Ching (2.0b96)

Looks promising because it’s simple and reliable and seems to work well but is also very basic, without any charting or analysis yet.  Currently in beta (and free) so one to keep an eye on.

CheckBook (2.0.3) – $14.95 ($24.95 for Pro)

Simple transaction based tracking package that seems to be well written and offers the basics, but appears to have many of the same problems as others in the sense that simple things (like changing the category of a number of transactions at once) causes problems.

The “Pro” version adds reporting and searching and seems to nearly be there from my perspective, but still has some reliability problems (again updating categories for a group of transactions appeared to cause the same problems as in the basic version).

Fortura Fresh Finance (1.3.4) – $44.95

Quite a new package on Windows and Mac. Not all that visually attractive but works very reliably and offers a good set of basic core features (import rules, simple reporting and graphing, transaction import, simple forcasting). Nice import filters including a self-training feature based on existing transactions.

Strong set of keyboard shortcuts, some of which are Mac compliant and some aren’t (e.g. Cmd-i being to add an item rather than to show the Info Inspector).

Lacking the visual pizazz of iBank and the number of more sophisticated features that some of the other packages offer, but for my simple needs, it seems to be the best bet.

iBank (3.4.2) – $59.99

This is a package that appears to have fantastic potential but is let down by poor basic software engineering that results in reliability problems.  It looks fantastic and is very Mac like, with nice usability, consistent OS/X conventions and so on.

Functionally, it seems powerful with the basics all covered and nice additional features like real time graphing, clicking through graphs to underlying data, smart accounts, budgets, …  It also has good import rules, allowing multi match on one field or match across many fields.

However this package’s Achilles heel is its reliability. When setting transaction attributes (e.g. categories) it crashed repeatedly. This seemed to be related to multi-select and/or changing the categories of transactions, but it was so bad I managed to crash iBank every few minutes. However it’s not just me, reading the support forums on their site suggests that a lot of people crash this application a lot!

iCash (5.4.2) – €39.90

This package seems to have a somewhat complicated model of accounts, tied to categories. For my simple needs, this seemed like duplication (I had an account called “household” and also needed a category called “household”).  All the same, it probably offers a level of sophistication that many people find useful.

The application is quite Mac like, but when you’ve used it for a while you realise that its usability is quite spotty. To delete accounts, it’s a one by one thing, each one being 3 clicks with no keyboard shortcuts being provided. Unfortunately categories use the same interface with the same limitations. Similarly changing a set of transactions means selecting them and then selecting “Edit” and confirming that you want to edit multiple txns and then finally making the update.

The most maddening usability thing I found was that the transaction viewing interface only allows calendar month based display rather than a display between any given set of dates (e.g. only 1st to 31st March is allowed rather than 22nd Feb to 21st March).

There are quite a number of good things about this application (for example the graphing is nice and the application was reliable throughout, which many of the others weren’t) but from a usability perspective, there are just too many awkward things about it for it to be an easy choice.

Liquid Ledger (2.3.3) – $49.99

Functionally Liquid Ledger doesn’t appear to be the top of the class, but it offers a good set of features and what is provided seems to work well. It imported transactions reliability, allowed categorisation and provides fairly good reporting and graphing (although the graphs don’t allow click through to see what’s behind them as iBank does). The reporting provided isn’t all that sophisticated though and can’t be customised, always reporting the current year, which is a bit annoying.

An interesting feature which the other packages didn’t have is MobileMe integration, providing backup of your data to your iDisk on demand, or when the application exits.

All this said, the software seems to be completely broken if you try to change the set of accounts and categories in the default set. You can delete one but then the delete button just fails to work. Deleting accounts seems to work for a while, but then you get a group called “0″ with an unnamed account in it. And it all goes down hill from there!

If you leave the default accounts and categories alone (and just rename them if needed) then the package appears to work pretty well. It’s not tremendously user friendly but it’s OK and better than a number I’ve tried as part of this exercise.

Money (3.3.1) – $39.00

This application looks like it has a lot of potential as it’s a real Mac app and does the basics fairly well.

It happily imported transactions, allowed new categories to be set up easily, has “smart” accounts (like smart playlists in iTunes) and provides good keyboard shortcuts allowing rapid categorisation of a transaction list.

Having started well though, I couldn’t get any graphs to display at all (although tabular reports were OK).  It also didn’t offer any import rules, which meant that importing and classifying transactions is a pain.  There were also a number of functional oddities (like Edit Graph working from the action menu, but not the context menu).

MoneyDance (2008r3) – $39.99

At first glance, this is definitely the package to go for because it is powerful, cross platform, written in Java, and allows you to write plugins for missing features.

The problem was that for the things I needed to do, it exhibited awful usability. For example, if you want to delete a number of categories, you have to delete the categories one by one rather than selecting a number and deleting as a group. The import model is also a bit odd, because transactions are imported into a “holding” area and need to be accepted one by one.  There is no provision for automatic classification rules, so this results in a lot of individual steps. MoneyDance tries to be helpful and guess what the classification should be, but it appears to need a perfect match on a field like “payee” (so “TESCO 234″ and “TESCO 242″ are different).

Staying on the subject of importing transactions, I was suprised to find that once imported, you then can’t edit the transactions further!  The other problem I had was that the auto matching feature automatically replaces the payee as well as setting the category which is annoying as this loses information

Minor gripes include the fact that graphs aren’t clickable to see what data is behind them, lots of lists won’t multi-select, no keyboard shortcuts are provided and there’s little of the Mac in the interface.

Money Well (1.4.8) – $49.99

This application seems to do what it promises and to do it rather well.  It’s based on the simple idea of “buckets” for your money, so that at the start of the month you allocate your income to buckets based on your priorities and liabilies (buckets being for mortgage, utility bills, travel, household expenses and so on).  It then tracks expenditure against these buckets to let you see how you’re doing against the plan.

The application seems to work pretty well implementing this model, importing transactions smoothly, providing a neat a “memorize” ability to auto classify transactions and allowing the creation of as many “buckets” as you want, with the application dealing with a large number without problems.

For me, the only problem was that this “track against bucket” model wasn’t quite what I was after and more importantly, the application has very limited historical reporting once you have the data in the application (which is what I really wanted).

Splash Money (4.09) – $19.95

This application looked very simple to set up and use, so I was quite hopefull about it, but it wouldn’t import HSBC OFX files, so that was that.  I couldn’t get my data into it.

Conclusion

Many of these applications appear to have been developed by small software houses who have poured a lot of effort into them, but in many cases they seem to have been left with one or more rough edges or functional limitations which mean that I think I’d be happier to just keep on using a spreadsheet.

For my particular set of biases and needs I chose Fortora Fresh Finance for Mac, which has been working well so far.  Transactions import smoothly, it’s learning all of my regular transactions for authomatic classification and the historical analysis is basic but reliable.

Posted by: Eoin Woods | July 12, 2009

WICSA 2009 is Coming

After what seems like an age of planning and preparation, the WICSA 2009 conference is finally approaching. The event will be held in Cambridge (in the UK) in September, from Monday 14th to Thursday 17th, at Robinson College (which apparently is one of the new ones, so quite comfortable!)

WICSA is the only specialist software architecture conference that I know of which attracts leading practitioners and leading researchers to the same event. In order to make sure that both camps get the most out of it, whether they like it or not, the conference includes a series of working sessions where people present short papers and they get critiqued and discussed. Usually an interesting process for a researcher or a practitioner! Definitely not your normal research conference.

This year, I’ll be giving one of the keynote talks where I’ll be talking about design principles, and Nick Rozanski and I are also presenting a working session paper defining a new “Context Viewpoint” for our viewpoint set.

If you’re a software architect based in Western Europe (or beyond for that matter) you should consider coming. It’s a pretty unique event. Drop me a note if you’d like to know more.

(Oh and if you’re an organisation that might like to sponsor the conference, let me know too and we can have a different discussion about the very good value sponsorship packages available.)

Posted by: Eoin Woods | July 12, 2009

Running a session at miniSPA 2009

Along with my co-presenters, Nick Rozanski and Andy Longshaw, I’ll be re-running a shortened version of our Design Principles – Mining Pattern DNA session at miniSPA this week on 15th July. The miniSPA conference is a one day “taster” event to let people see why the main SPA Conference is such a great event for attendees. It’s free, so if there are places left, sign up! Hope to see you there.

Posted by: Eoin Woods | February 20, 2009

Speaking at SPA2009

SPA2009 LogoIt’s Spring so the BCS SPA Group’s annual conference must be approaching!  The most stimulating conference I go to regularly, SPA is a great event with a long and successful history.  For this year’s conference I’m running a workshop on mining design principles from patterns, with Nick Rozanski and Andy Longshaw.  The conference is a little different this year and is staged at BCS HQ in London rather than at a residential centre, but it continues to run from Sunday 5th – Wednesday 8th April.  Our session is on Tuesday morning so do come along if you can make it.  For the first time this year, you can pay by the day if you can’t make the whole event.

Posted by: Eoin Woods | February 19, 2009

Speaking at QCON London 2009

I'm Speaking at QCON London 2009
I’m very pleased to be able to announce that I’m speaking at QCON London 2009 in March, at the QE2 Conference Centre.  My talk is on Thursday afternoon as part of the Architectures you Always Wondered About track, hosted by Floyd Marinescu.

Unusually for me, I’m talking about the Apex system that I’m the architect for at BGI, rather than more general software architecture topics.  I’m really looking forward to it!  Hope to see you there.

Posted by: Eoin Woods | February 19, 2009

Oracle on OS/X – Part 2

In the first part of this article, I explained how to get VirtualBox running on an Intel Mac with Ubuntu server installed and running as the operating system. However, the point of all of this is to get an Oracle XE server running on the Mac so in this second installment, I’ll explain the remaining Oracle specific steps needed to get Oracle up and running in the Ubuntu VM.

You’ll need the Debian installation package (rather than the RPM) from the XE download page (having agreed to the license agreement etc etc). Download this on your Mac and copy it to your “shared” folder that the Ubuntu VM is sharing with the Mac.

Linux Setup

The XE installation process is radically simpler than the Universal Installer one for the Enterprise Edition and it does a lot of the Linux setup required silently for you (it will set kernel parameters, create users and so on). However, one thing it doesn’t do is to set up swap space correctly.

The amount of swap that the installer demands depends on the amount of memory you’ve got, but if its 512MB or more, you need at least 1024MB of swap. Ubuntu silently sets up swap space for you during installation. I’m not sure how it works out what it needs, but my VM ended up with a 401,440K swap partition which is a lot less than Oracle demands.

You can add swap in a number of ways, but I just added 1024MB of swap in a file on the filesystem:

  • Create a file to hold the swap space: sudo dd if=/dev/zero of=/swap.1024mb bs=1M count=1024
  • Format the file as a swap file: sudo mkswap /swap.1024mb
  • Activate the swap space: sudo swapon /swap.1024mb
  • Add a line to /etc/fstab to get the OS to mount this every time it starts. This should be of the form:
    /swap.1024mb none swap sw 0 0

I also found that you need to install:

  • the bc command line calculator for the Oracle installer, which can be installed with the command: apt-get install bc
  • the libaoi1 package, again by running a command like: apt-get install libaio1.

You should now be able to install Oracle XE into the VM.

Installing Oracle XE

To install the XE database, just use the dpkg command to install the Oracle Debian bundle that you’ve downloaded and run its configuration script:
sudo dpkg -i /shared/oracle-xe_10.2.0.1-1.0_i386.deb
sudo /etc/init.d/oracle-xe configure

Answer the prompts about ports, system passwords and starting on boot (I just accepted the defaults and entered a simple password for the system users).

(Wasn’t that easier than the Universal Installer!)

You’ll now find that Oracle XE is installed in an $ORACLE_HOME of /usr/lib/oracle/xe/app/oracle/product/10.2.0/server.

In order to test the new server, you can initialise the environment using the $ORACLE_HOME/bin/oracle_env.sh script. However, before you do this, you’ll need to fix the nls_lang.sh script that oracle_env.sh calls! When I ran this on my Ubuntu VM I found that it encountered errors relating to the [[ operator on lines 108 and 110, so to fix this change "[[" to "[" and "]]” to “]” on these two lines.

To check out your server:

   $ . /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh
   $ sqlplus "sys/password as sysdba"
   SQL> select * from v$instance ;
    INSTANCE_NUMBER INSTANCE_NAME
    --------------- ----------------
    HOST_NAME
    ----------------------------------------------------------------
    VERSION           STARTUP_T STATUS       PAR    THREAD# ARCHIVE LOG_SWITCH_WAIT
    ----------------- --------- ------------ --- ---------- ------- ---------------
    LOGINS     SHU DATABASE_STATUS   INSTANCE_ROLE      ACTIVE_ST BLO EDITION
    ---------- --- ----------------- ------------------ --------- --- -------
                  1 XE
    oracle1
    10.2.0.1.0        18-FEB-09 OPEN         NO           1 STOPPED
    ALLOWED    NO  ACTIVE            PRIMARY_INSTANCE   NORMAL    NO  XE

You now have a running Oracle instance, so you can start using it immediately from Ubuntu. However you only have the basic console in the VM window so it would be much easier to use it from the Mac, so how do we connect the two?

Getting Connected to Oracle

There are a number of networking options available to a VirtualBox VM:

  • “NAT” as you’d expect means that the VM shares a physical network interface (and address) with the host Mac and has a non routable IP address itself (e.g. 10.0.2.15);
  • “Host Interface” is where the VM has dedicated use of one of the host’s network interfaces and so gets a real network interface and address (but your host has to have two connected interfaces – WiFi and wired for example); and
  • “Internal Network” which is VM to VM networking.

I used NAT networking because it just seemed a lot simpler than the alternatives! The only snag with NAT is that you can’t connect to the VM directly as a network host. To work around this, VirtualBox provides port forwarding from the Mac host to the VM. As a general solution this is quite fiddly to set up, but for our case we only need a couple of ports forwarded:

  • SSH (22) – allow a terminal connection from the Mac;
  • HTTP (8080) – allow connection to the Oracle XE web administration interface;
  • TNS (1521) – allow an SQL*Plus or SQL Developer connection from the Mac.

To redirect a port needs three commands, for example in the SSH case, use the commands:
VBoxManage setextradata VMNAME VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/Protocol TCP
VBoxManage setextradata VMNAME VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort 2222
VBoxManage setextradata VMNAME VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort 22

Where “VMNAME” is the name of your VM, “ssh” is an arbitrary name for this group of settings and the port numbers are the guest port you’re directing to and the port you want to use on the host Mac as its proxy. You need a group of these three commands for each port you’re redirecting. I redirected port 22 on the VM via 2222 on the Mac, port 8080 on the VM via 9080 on the Mac and 1521 on the VM via 1521 on the Mac.

One last thing you need to do to allow you to get at your Oracle instance is to enable remote access to the web administration interface, as the default configuration only allows connections from the local machine. You do this by running an SQL command as the system user on the VM:

    $ sqlplus system/password
    SQL> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);
    PL/SQL procedure successfully completed
    SQL> quit;

Using Oracle

You can now access Oracle via (at least) three routes:

  • SQL Developer: a Java based SQL GUI freely available from Oracle here. Just download it and connect to hostname “localhost“, port “1521” (or whatever port you redirected through) and SID “XE” (or whatever SID you used for your database).
  • Instant Client SQL*Plus: a version of SQL*Plus that doesn’t require all of the client installation to run, available from Oracle here. Download the “Basic” and “SQL*Plus” packages and unzip them into a convenient directory, and add this directory to your $PATH and $DYLD_LIBRARY_PATH. Then you can use SQL*Plus as follows:
    sqlplus user/password@//localhost:1521/xe
    (You can also use a local TNS names file – see section 1.3 of the Instant Client documentation for details).
  • XE Database Home Page Web Interface: having redirected the VM 8080 port to another port on the Mac (e.g. 9080) then just direct a web browser to the URL http://locahost:port/apex in order to access the XE web interface. It’s pretty easy to use (being much simpler than OEM) and documentation is available here.

So that’s it. It’s been a bit fiddly in places, but not really a difficult process and we now have a VM running on our Mac that automatically starts an Oracle database instance when it boots that we can access via GUI, command line and web based interfaces running on your Mac. What’s not to love?

Posted by: Eoin Woods | February 17, 2009

Oracle on OS/X – Part 1

I’ve been using an Apple Mac Book Pro as my private laptop for a couple of years and it’s a great machine for just about everything unless you need a local database server (or actually an up to date JDK, but that’s another story …)

Unfortunately Sybase and Oracle don’t have ports of ASE or the Oracle Database that run on Intel Macs, which is a real pain, so I started looking around to see if there were emulation options, given that Macs are now Intel machines. After some investigation I found that you can now assemble a freely available stack of software that allows you to run an Oracle server on an Intel Mac, so I’ve explained the process in a couple of blog entries.

At a high level the process of getting Oracle running on your Mac is:

  1. Get a virtual machine running on the Mac;
  2. Download and install a version of Linux into the VM that can host an Oracle server;
  3. Configure the operating system instance to allow it to host Oracle;
  4. Install an Oracle server on the Linux host.

Easy eh? Actually, it’s not too hard, but there were a few things that tripped me up along the way, which I’ve noted in the instructions below. In this article I explain how I did the first two steps and in a second one I’ll explain the Oracle specific steps.

Downloads

  • You need virtual machine software, an operating system and a database.
  • There are a number of VMs that run on OS/X, including Parallels, VMWare and Virtual Box. I chose VB because it has the nice attribute of being free for personal use! Download Virtual Box from here. You need the Intel Mac software and the User Manual.
  • Linux is the easiest OS to go with because Oracle are very committed to it. I chose to use Ubuntu because Oracle XE works on it and it’s easy to use. You can download the 8.1 Server ISO here.
  • Finally, download the Oracle database software that you want to use. I chose Oracle Express Edition (Oracle XE) available here. I suspect that all of this can be made to work with any of the Oracle editions and versions, but I chose XE for simplicity. There’s a lot it doesn’t support (XQuery, Java, advanced security, compression, data guard, replication, …) but on the other hand, its installation on Linux is like falling off a log, there are almost no licensing restrictions and if you want the core database its a nice simple compact package (“just” a 210MB download!)

Virtual Machine Installation

  • Mount the disk image, run the installer and install the software.
  • Start Virtual Box, create a new VM specifying that the OS is “Linux” and the version is “Ubuntu”. Set the memory size to something large but sensible (I have a 2GB laptop, so I set it to 750MB). The wizard will prompt you to create a disk image for the VM and 8 GB or so seems like a good place to start.
    Note: Once you’ve created the virtual machine, click Settings and under the General settings, select the Advanced tab and make sure that the Enable PAE/NX checkbox is set. If you don’t do this, Ubuntu won’t boot.
  • Configure the VM to mount the Ubuntu server ISO image as the CD (you do this on the CD/DVD ROM section of the Storage tab of the Settings panel).

Operating System Installation

  • Start the VM and it should boot from the Ubuntu disk image and start the installer. This is a straight forward process and just runs to completion if you answer its questions, give it a hostname and tell it what to do with the disk space (I just set up a single partition with LVM).
    [Tip: to release your cursor from the VM window, you press the left "apple" - ⌘ - key ... this is revealed by the message at the bottom right of the window, but this isn't obvious until you read the manual]
    Once the installer completes, unmount the CD (from the Devices menu) and reboot. Ubuntu should then boot up.
  • Like most VM systems, VirtualBox allows you to install some OS extensions to improve integration with the operating system. We need these to allow us to mount shared folders to share files. The process is a little lengthy (the VirtualBox manual explains all the steps) but in summary:
    • Log in as the privileged user you set up during the install process
    • In order to install dynamic kernel module support, run the commandsudo apt-get install dkms
    • Install the stuff you need to allow a kernel rebuild by running sudo apt-get install build-essential linux-headers-`uname -r` module-assistant
    • Configure the Module Assistant to allow a kernel rebuild by running sudo m-a prepare
    • Mount the /Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso file as the CD (from the VirtualBox Devices menu) and run sudo mount /cdrom to make the files available;
    • Run sudo sh /cdrom/VBox-Linux-Additions-x86.run (to install the VM extensions);
    • Run sudo /etc/init.d/vboxadd setup (to rebuild the kernel modules);
    • Reboot the system (e.g. via sudo /sbin/shutdown -r now)
  • So that we can log into the VM easily from the Mac, we’ll need an SSH server. Once you’ve done this you should be able to log in from the VM itself using the command ssh localhost, so install this using sudo apt-get install ssh(We’ll do the network setup to allow access from the Mac later).
  • In order to share files (like the Oracle installer) between your Mac and the Linux VM, you need a shared folder, so select Shared Folders … from the Devices menu and share a directory on your Mac with the VM.
  • Mount the shared directory with a command like sudo mount -t vboxsf shareddir /mnt (where shareddir is the “Folder Name” you gave the shared folder when you set it up in VirtualBox and /mnt is the existing directory where you’d like it to appear in your Unix file system).
  • If you want the shared directory to be available every time you boot the VM, put an entry in the /etc/fstab file of the form:
    shared /shared vboxsf rw 0 0

At this point, you should have a running Ubuntu server on your Mac, with a shared folder to allow us to share files between the Mac and the Linux machine. In the second part of this article I’ll explain how to perform the Oracle specific Linux setup and then get Oracle XE running in the Linux server and usable from Linux.

Older Posts »

Categories