6 December 2007

So long, and thanks for all the smelly fish

It's time to reveal what's going on in my life on a big scale, hinted to in my last dozen or so posts.

Yes, I'm leaving the library world. Yes, I'm leaving Canberra and the National Library of Australia. In fact, I'm leaving Australia altogether. I'm leaving process-oriented committee-driven work (surrounded by the hum of millions upon millions of flies, one of the seriously exciting features about Canberra). I'm leaving good friends and colleges which I'll miss, and a cute house that's been a safe home and haven for the last four years. I'm leaving an extended family who - despite their better knowledge - have accepted me as one of them, with friendships that will bring us back to Australia in a few years, I'm sure. I'm even leaving behind our wonderful dog Oscar (in good hands, I might add ; he's going back to his original owners) which the whole family will miss dearly.

I'm going back to Norway, to work for Bekk Consulting again, and I start at the beginning of February 2008. I'll write more about my role there later, but needless to say these guys know what they're doing, they do it fast and really well, no mucking about. They do not meddle in the semantics of FRBR for 15 years before taking baby-steps to prototype it. Either it's the right thing to do, or it is not. And if it's not, these guys don't do it. And I can't wait to get back into the habit of not doing things we shouldn't do.

We've got a house lined up (in Oslo) centrally and near my beloved woods, and a car. We're scared and excited at the same time, and hope that our Australian friends will forgive us and cheer us on in our adventure, and our Norwegian friends welcome us home and invite us for dinner, if not only for a period.

There's many things I want to talk about, from the state of the library world, to the evils of recruiting companies, to Australian business ethics, the value of friendship, and how to plan your future (which is a short piece about how you can try but will fail), but all in due time.

Right now it's time to pack, reflect, and wrap up my Australian adventure in the most positive way I can. Watch this roof, and wish us good luck in our latest big adventure.

23 November 2007

Bits and bobs

Hi all. Just a bits and bobs post. In short ;
  • My backyard paving is almost complete. I've spent 4 months (weekends) digging, sanding, edging, moving, shaking, swearing, compacting and laying, but it's worth every aching pain ; I did it myself.
  • There's a reasonable chance we will be moving, but there's a few options ; stay in Canberra, move to Wollongong / Kiama (by the coast), into Sydney, or back to Norway. Once the decision is made, expect a huge rant about everything that's been going on the last few months.
  • Why do people think that architecting systems in a RESTful way somehow means you can be less devoted to the project? Is the apparent simplicity of REST one of those things that make people forget to take it just as serious as other alternatives? Forgetting that you still need to be good at what you do, and that you still need to design it well?
  • There's some interesting upcoming changes to this website coming up. I noticed my ISP had installed PHP 5.2, so I have decided to revamp the whole thing using two recent sub-projects ; 1) my SQLite embedded Topic Maps engine, and 2) an XSLT based XML templating framework for GUI's. It's all built around a completely RESTful architecture, and it uses Blogger's external publishing capabilities to blend your blogs into your site without the need for replicating your blog template with your site's templates. More on this as we move along.
  • The kids are a joy to watch grow and evolve, and my wife is still as exciting and hot as when I first met her. No matter what happens in life (see my previous post for a drop of depression) I am so darn lucky to have them. (And I mean luck here as there is no way that I could have designed anything as wonderful as them myself ...) My next life-choices revolve around them, and not me. Nuff' said.
  • The amazing Happy Rhodes have released a new CD after a long while. Please go and have a listen at her CD Baby page ; support the most hearable unheard-about artist ever.
I think that's it, at least until some big decisions have been made. oh, and thanks to those who responded to my last post. Appreciated. Peace.

9 November 2007

Sorry everyone

I've been under a somewhat depressive spell the last few months, which effectively has rendered me into somewhat of a recluse. The reasons are several (but reading my last blog postings certainly will give you good clues, although my eyes and migraines certainly has added a lot to it), and hopefully they will be improved upon shortly, one way or the other. All my energy and efforts have gone into being a nice husband and a good dad, so some sorries are in order ;
  • Magnus, Karen, Hanne, sorry for being too far away, and for not being better at emails.
  • Donna, sorry that I haven't followed up your recent big news and for not being more a proactive caffeine pursuer.
  • Matthew, sorry that we haven't talked in a while, and for not being there through your troubles.
  • Mark, Steve, sorry for being a bore at work, and for not engaging much.
  • Kent and Alison, sorry for not talking much anymore, and for giving up hope.
  • Mum and dad, sorry for being low on sending you emails and pictures of the kids.
  • Julie and Stefan, sorry for being a neglecting (albeit far, far away) brother.
  • The library world, sorry for giving up.
  • The Topic Maps community, sorry for being absent.
I can only promise to try and think about perhaps evaluating if I should think about being better at dreaming about getting better at all things of personal matters. I'll provide updates and newsflashes soon enough. Big things are afoot.

24 September 2007

Misc updates and twigs

A number of smaller updates ;

  • My daughter Grace (7) today won 3rd place in the Australian Eisteddfod singing competition (8 and under, musical) with a clever rendition of "Castle on a cloud" from Les Miserables. Clever girl. Update: She also won 70m and came 3rd in 100m running in the "8 and under" category for the whole of Belconnen (district of Canberra) athletics carnival two weeks ago (how's that for an "update"), which means she's off to the state / territory games in November. Exciting stuff.


  • Some of my Flickr pictures were selected for the Schmap Canberra Guides;


  • Happy Rhodes just released a new album, her first in almost 10 years!! A MySpace website has been put up with samples. I love this stuff!
  • Stuff I'm committed to these days ;
    • An article (or essay) about user-centered design in the software life-cycle, including testing (user testing, application testing, functional testing, user-acceptance testing, and variations of these) before, during and after critical decisions and how to manage the implications.
    • Release the latest version of xSiteable (huh? That thing still exists? Apparently.) which is more like a clever XSLT templating system than a Topic Maps engine by itself.
    • Update my website, including better synchronizing between website and blogs. Yeah, should have done it ages ago.
  • Do you know I have actual plans for how to win the 20 million USD Google "get first to the Moon" competition? :)
  • I'm currently laying pavers in our backyard these days, and in two months I'll start building my very own house-centric recyclable low-energy air-condition system. Being a software engineer can do that to people.

21 September 2007

Sam

Just a quick movie I shot this morning of Sam (3 months old today) while just chatting to him. He just loves attention. And baths. Like daddy.

7 September 2007

REST and SOA as a process for application design

I'm going to stray a bit from the library theme, and talk about design of RESTful SOA. It's a topic close to my heart, as most SOA talk these days are full of vendors claiming money can buy you not only love, but immortality. With SOAP? Hah!

No, I think reinventing what the Web does really well already is a) a waste of time, b) doomed to make a bad copy (as the web is constantly moving, while the SOAP / WS-* stack is immersed in slow-moving standards), and c) over complicating things (I like elegant simplicity such as the innards of the Web).

REST

Roy Fieldings' REST dissertation has swooped upon the middle and higher layers of the IT world lately, making a lot of them admit that, perhaps, this whole deal about using HTTP and loose XML (often XHTML) to create scalable, fast, simple and dynamic applications (well, as an architectural style, to be specific) might have something going for it. REST has been around for a long while, being the very fabric of what the internet is based on, slowly extended and refined over the last years 15 years (even though a lot of these concepts are again based on earlier technology).

Service Oriented Architecture (SOA) is a little bit tricker to define, especially these days when big corporations have discovered and use it as a buzzword, but basically it is technical architecture creating loosely coupled (meaning; the items in question knows very little of each other) services, and where a service is a piece of software that some other piece of software might use (as opposed to direct human usage). Now, a lot of people already talk about this stuff, so I'm not going to add to that. I'd rather talk about what I think when I do this stuff, to talk about actual implementation.

Working in both these two worlds, putting them together to design and create applications, is quite different from the normal software development processes that's so popular these days. The most striking difference is that during application design you think in terms of resource orientation (as opposed to object orientation, or functional design) and how to represent services (as opposed to a program, or a module).

You can either plan a big-bang approach to this (standard waterfall models) per service, or you timebox a more agile approach of creating one or several services that does the simplest thing needed to service your proposed application. The world spins around the axis of identifying application to solve problems; let's turn things around (and this is a big part of SOA) and see if we can come up with services that solves problems instead.

Typically you have a sleigh of applications that all have common functionality, such as user management, database storage, configuration, session handling, search and a few other bits and pieces depending on the business you're in. There's many ways to deal with reuse of these "things", and I deliberately call them "things" at this stage, because as soon as you call them "modules", or "libraries", or "reusable code" you're setting the scene for quite implementation specific stuff, such as what language you're going to use, or what platform it runs on. I don't want to deal with "libraries" for example, because if some library is written in Java then I need to make my other solutions in Java, too. If I have a "module" that does X in Windows using C#, the chance that "module" is linked to that technology is quite high.

Things

No, I want to talk about "things". For example, let's talk about users. A lot of applications deal with users in some way or another, whether it's displaying information about them, for them, authenticating them, create properties on them, or otherwise work with their user data. How can we create a service that applications might have good use for?

Since we meddle here in all things REST, the first thing we do is to think of the service in terms of resources (as being resource oriented is extremely important; expose URIs for every resource, as small / atomic as need be). I usually create two sub domains to hold services, one for internal behind the firewall services (soa.domain) and one external (ws.domain; 'ws' for web services), and I also try to have a trim set of basic elements that express generic functionality (search, user, session, database, properties, etc) wrapped in an even smaller and more generic set of domains (x, y, z, a, o, a, etc.). Through this, the first part of my design process is to play around with URIs and hierachial taxonomical ideas to see what feels right ;

http://soa.example.com/identity/user[/{userid}]
http://soa.example.com/user[/{userid}]
http://soa.example.com/user/id/[/{userid}]
http://users.soa.example.com/{userid}

Balance this with ideas on premature optimization (what, you thought that was axiomatically bad? It's allowed to think about these things, you know :) in terms of request times for a domain (the more domains involved in a series of calls, the longer the overall response time, generally speaking) and what feels right.

In my case, the first one seemed the most right. I've developed a small set of root categories in which I "place" my services, such as /search, /publishing, /identity, and so on. These categories are not canon; they are placeholders for loose ideas and thoughts, bound to change in the future as your SOA evolves.

Evolution

Evolution in your SOA is very important, so you should design for it in mind. For example, what about version control of services? Some talk about versioning being part of the XML schemas that services deliver, others talk about content negotiation (crazies :). I take a rather pragmatic and somewhat naughty approach (in the sense that you shouldn't put semantics in your URL's which humans will look at and try to pry apart and use / misuse) and put versioning into the URL at the base of the service defined. For example ;

http://soa.example.com/identity/user/v1[/{userid}]

I also set a rule to service development ; maintain backwards compatibility as far as you can. There's no need for an ever update to the version number if you design your XML schemas that pass through them in smart ways, and this reduce the overhead of deployment, introspection and dependency. Another rule to service digestion is to only react to what you understand, and ignore all that you don't; this again enables backwards compatibility as you, say, add a new (but non-critical) element to your metadata which older service users don't understand and simply ignore.

For proper development of a RESTful SOA, though, I'd suggest two things as a minimum ;
  1. use test-driven development for the service definitions (and use whatever methodology you like for the actual code for the service, although test-driven there too won't hurt you), so write your tests for your service (I use XPath with XSLT scripts for this) first and then develop the actual service until it passes all tests, and
  2. collect your services' tests into a large test suite ; whenever you add, subtract or change a service, make sure all tests pass. (If you can sneak this into a build farm of sorts, all the better. Automation for this type of development will probably save a lot of gray hairs) Through this you know what breaks and what's backwards compatible with your changes across the whole SOA. Don't deploy anything from development into test or production unless all tests pass. This is not a trivial task, and should be in the hands of someone who is full-time responsible for the SOA's well-being.
Now, in evolution of SOA's as well as in nature, don't be afraid of screwing things up. We don't want perfection. We will never get perfection. And we certainly won't get anything near it in the first go. All these services must be allowed to change over time, dramatically at first, even to the point of deleting it completely, and start from scratch making something different. (In fact, I'd advocate making all these first-generation services with version number /v0-ALPHA/ in all caps, as in http://soa.example.com/identity/user/v0-ALPHA[/{userid}] ; this will mark them as experimental and trigger other developers to tread gently. If they worked great, just update them to a /v1/ version)

Time management of this development is also important. Because services must be allowed to break, be allowed to screw up, we must also allocate time for these screw-ups to happen. Trust me, it's a good thing ; a smaller failure now ensure we don't screw up big time later. (And this very point is probably the cause of so much bad management and so many failed [enterprise] projects as it's very easy to overlook or not taken seriously enough. I can write a whole book on this topic alone!)

And people who have some sort of ownership of a service (as developers, or analysts, or whatever) must be given time for short iterative development, for little updates, modifications and tweaks. Services won't be successful if you treat them as small bangs (meaning; gather requirements, write spec, make it, sign it off), and probably only can work through continuous tinkering. Such tinkering doesn't have to be time-consuming nor difficult to manage, but it does require you to plan for it. When Bob goes on to his next project, remember that he's also needs a half-day per week to tweak and fiddle with his service.

Introspection

One feature that I can't emphasize enough is service introspection, an area that most writers I've seen gloss over. And sure, you don't need it in order to create a SOA or a web service. But I'll assert that you need one if you're a) smart and b) want to create a healthy SOA that can stand the test of time.

Introspection in my world does three important things ;
  1. Handle the client state through hyperlinks (part of the REST paradigm)
  2. Documentation of interface, use and dependencies
  3. Provide test suite
Asking a service for introspection in my world goes something like this ;

http://soa.example.com/identity/user/v1?introspection

or, if you want to split the three up ;

http://soa.example.com/identity/user/v1?introspection=state
http://soa.example.com/identity/user/v1?introspection=docs
http://soa.example.com/identity/user/v1?introspection=tests

1. Handling state of a client through hyperlinks is a somewhat forgotten part of REST, which is easy to miss when your design is at an early stage (and it usually stays that way because you don't think you need it by the stage you're made aware of it). It basically comes down to either URL-driven or FORM-driven hyperlinks that takes you from whatever state the current URL gave you to the next one. For example, a resource soa.domain/search?q=fish might give back a list of URL's to pages of results, or a form to do a sub-search, all documented through hyperlinks. I personally think the use of XHTML is good for this, but a bit more formal and equally elegant is the use of the Atom Publishing Protocol (not to be confused with the Atom Syndication Format).

2. Documentation is important, and could be as easy as just returning an XHTML page with some text about what it is, how to use it, and so forth. However, I see a major part of documentation as to what dependencies the service has got, so I've got a section that looks a bit like this ;

<ul id="SOA-dependencies">
<li><a href="http://soa.domain/some_service/v2">Some service</a></li>
<li><a href="http://ws.google.com/wdsl/service/1.0">Some Google service</a></li>
</ul>

Notice that this is perfect XHTML. All that's required to understand this list is understanding the identifier for the list, the "SOA-dependencies", which I can locate easily through DOM or XPath. Through this mechanism in services you can now map the whole dang thing, plot in your dependencies, check it against your test suite (talked about earlier) for ultimate coolness and power.

In this section I might add that I often incorporate a ping parameter which testing and monitoring systems can use to check the health of a running SOA, something like ;

http://soa.example.com/identity/user/v1?ping

or, if you've got the RESTful chutzpah required, use the HTTP method OPTIONS instead of a GET on a URL. I actually do both. The HTTP response code hence talks about the generic health of the service as far as it knows, and you can use this info not only for monitoring and testing, but also for automatic systems and smart clients.

3. It may seem a bit strange to ask a service to give you a test-suite, but it actually is a very encapsulating and clever thing to do, making sure that tests are all handled at the same place where development takes place. I can do ;

http://soa.example.com/identity/user/v1?introspection=tests

and I'll get back something like this ;

<testlist>
<test name="My first test"
href="http://soa.example.com/identity/user/v1/2456325786234985"
xpath="/response/item[@name='user']/id"
is-true="2456325786234985" />
... [more tests here]
</test>

Basic test-case skills are probably a plus at this point to understand what this is about, but basically we assert that the XML/XHTML that the URL returns will give the result "2456325786234985" when the XPath expression "/response/item[@name='user']/id" is run.

Your testing framework for the SOA simply collects these test files at intervals to build a larger test-suite that stands as the controller for the whole system.

Finally

Just a few finishing thoughts about rigidity, complexity and management of a RESTful SOA ;

If you don't have dedicated SOA people, then don't do it. If your people (developers, analysts, managers) aren't very flexible, then don't do it. If you don't understand REST, either really learn it (this book is the best there is on this subject!), or don't do it. If you think you need complex systems, don't do it. If you can't wrap your head around resource-orientation, then don't do it.

The thing is, you can perfectly well live without it, create SOA or some other well-meaning version of that concept with SOAP/WS-*/BPEL/ESB or whatever big vendors are more than happy to help you with. You can create POX services just fine. You won't be RESTful, but you will probably survive without it. You don't need it in as much as you can live on only water and bread for years and years, but of course I wouldn't recommend it. :)

Anyways, a few thoughts there on RESTful SOA design and implementation. I haven't digged into the semantics of modeling a full SOA yet, nor talked much about pipeline XML schemas (although the APP protocol is a good hint), system introspection through things like WADL, or even the hidden benefits of ROA (resource-oriented architectures). So. More to come, then. Until then, happy hacking.

30 August 2007

Resignation : Redux

I was a bit passionate the other day, talking about why I'm resigning from the library world. The post stirred a lot of responses, both as comments but also as personal emails and IM's. I feel I need to clarify a few things so that people really understand what I'm trying to say. I realize that far too often I'm being unclear, using sarcasm, dark humor and Norwegian mentality, when really what is needed is clarity.

But first ; thanks! Thank you to all those people who have written me, most of you strangers that feel my pain and share my sentiments. I'm a bit overwhelmed by it all, because, frankly, I thought I was quite alone in this. I knew about a few people in drips and drabs that agrees with some of my views on all things library related, but most of them were also happy to keep up the long, dwindling battle it is to change such a huge culture. I've received mail from people from all around the world, and I feel honored that you took the time to pass on some words of encouragement. It's meant a lot to me.

Secondly, I need to explain why I've taken this resignation path. I've got three little kids (7 years, 4 years and 2 months), a wonderful wife, and a ball-crazy dog. They are the most important things in the world to me, and I will do anything for them, anything to make them happy. And the truth is that I'm not a happy daddy and a father these days. I'm quite an emotional guy, and yes, my work-life does affect my emotions into my private life. I'm becoming more and more grumpy, impatient and depressed. And I've decided that this madness has got to stop.

Anyways, on to more specifics. As with all things, there's always more than one reason for why something happens, and in my case there's specifically two ;
  1. The current open discussion
  2. Internal workings at my own library
Let's have a look at each one ;

The current open discussion

The current open discussion refers to the various online media where librarians and interests talk about all things library related. My participation is mostly in the NGC4LIB mailing-list, a list of amazing and wonderful people. Even the ones that I disagree with the most are actually really nice and smart.

What, exactly, is it that we're talking about? Some days it's hard to understand what the discussions really are all about, because we're really talking about such a broad sweeping domain that's almost as large as all human understanding and its integration with our cultural institutions and ideals. We peck at the corner of MARC, or tickle the notion of what a book is, or poke fun at epistemology, or ... any little thing we can think of. Almost no subject doesn't fit the "library world." So. What are we talking about?

When we indeed dig into the more philosophical side of things we have huge discussions where most people agree. Then we get into the whole design of those ideas, and we split into various interest groups. And then we start talking implementation, and then things really break apart. But all of this is actually ok; it's fine to disagree, to spar with each other, suss it out.

But it's all online. It's all talk. It's not going anywhere. The mailing-list is a collection of dreamers and thinkers, people who'd like to change things but rarely have the opportunity to do so. Sure, there might be dribbles of influence dripping off here to other places, but it's small potatoes compared to what, in my opinion, the library need. And what it needs is serious leadership by people who understand what to do and have got the balls to do it. I think librarians are far to nice to each other to make big decisions that carry any influx of controversy.

I hear stories from the distant past of the library world where those people indeed made those decisions, people who had an impact far outside the library world, and librarians were united to solve some really big problems. Lately, not so much. Lately, not much at all. Lately, it's all about money and resources. Lately, it's all about fear.

Fear.

Yeah, that word needs a line on its own. Librarians are afraid ; they do not understand what the next thing to hit the library world is going to be, and rightly so. I don't know either. None of us know, really, except that technology will have something to do with it. There's fear in everything I'm involved with, be it a new system, a small application, or - dammit! - just a change of color on a web page. How can we change the system with so many fearsome creatures?

Someone smart recently told me ;
*That* may be the fear that modern technologies (such as those you promote) create in many librarians: being redundant and no longer needed. So, in a sense, you may be feeling what some of your hearers feel, though in a different context.
And he's right, of course, but what many don't realize is that they'll lose their jobs unless we can find new ways to keep them. I understand perfectly well what the library does best ; librarians. I'm not here to make technology replace librarians. I'm trying to find ways to find work for librarians that no one else involved in technology can do as good.

All the way up until today the worlds knowledge and credo were kept through the ages in libraries. No other concept has done more for the human intellectual evolvement than us. And now we stand at the threshold where the foundation of those concepts - the written word on pieces of (mostly) paper - are extremely brittle. There's no point in denying it ; The book is dying as the opus of knowledge. More and more they'll be known as a physical archive interesting mostly to specialists, and will no longer be the keepers of current and / or mainstream knowledge. All of that will be given to computers, databases, websites, companies. Books won't die completely, of course, but they will not be as important. Give it 10, 20 30 years.

Books will not be as important.

Then why are we still obsessing with books? Why are we cramming other media into a meta data format designed for books? Why aren't we seriously creating relationships between our books and the media? Why are we even still thinking in terms of books? I'll tell you why ; because we got so damn many of them, stacks and stacks of them, and if we don't promote our books, then what are we? What are we without books?

The current open discussion is not going to have an impact on any of these questions. Sure, the topic pop up from time to time, only to be throttled back into that section of all human discourse called "reality", which is a synonym with "can't." And in short, I'm out of breath. I've said what I can say, several times over, and I feel I'm getting on some people's nerves. Some people don't like me to be vocal, not to be so darn passionate about the well-being of human culture and evolvement. "You don't follow protocol." I say things I shouldn't say, certainly things that implies great change. But you can only burn the fire for so long. And my fire is going out.

I've been told many times over that if I want change I've got to do it in my own time, and show people to have them go along with it, that you cannot ask permission to do radical things ; you must do, and then ask forgiveness if you totally screw up. And hey, I believe in that. I've been doing that for a long time. I've been showing off prototypes, discussions, ideas, technology and concepts, all the while watching the rest of the world rush past the library decision makers. The library need so bad to be innovative, but we simply haven't got a culture for it. And so, the groins of human knowledge will be passed from libraries to others. "
Bureaucracy defends the status quo long past the time when the quo has lost its status." [Laurence J. Peter]

I've enjoyed the mailing-list hugely. Even those I've disagreed with, and sometimes had a skit with, I respect highly. I've never been offended or abused (I don't get offended or abused easily), so rest easy all of you ; it has been a great ride.

Internal workings at my own library

Yes, there's always that. I've been unhappy with things here before, and things are not that different now. In short, the workings here are simply a miniature of the library world problems ; people are too stuck in the status quo to realize it's wishful thinking. 20 years ago you could often hear the phrase "Do you know where the nearest phone is?"

A bit more specific to me is the fact that I'm caught between the sheets of bureaucracy ; My library is a Australian federal library, and federal legislation says you can only hire Australian citizens, and I'm not. (Actually, the same legislation do offer exceptions to this rule, but the library is unwilling to do that. Maybe if I was someone important they might have seen it differently, though, but it is strange given that Canberra has a huge problem finding qualified workers little less specialists, even importing people from abroad. Hmm. Sounds like someone doesn't like me, doesn't it? :) And no, I can't be one either as it requires be to give up my Norwegian citizenship because Norway won't allow dual citizenship, even though my kids can. And no, I'm not ready quit being a Norwegian quite yet.

And so it is ; my work is on a temporary contract basis, which means I have no path to go within the library. I'm temporary fluff, hired to do a job which certainly hasn't got the word "innovate" in it. I'm stuck in a spot where I can't move, talking to people who don't always agree with me.

So my take on all of this is in fact as simple as "I don't fit in." Even if people find what I say to be right, I'm unfortunately one of those who's got little patience for bureaucracy and process management and friggin' PRINCE2 project methodology (!!!) and tons of documenting all the things you haven't done. I just don't work well this way, and so I think the problem really is with me. I used to be a senior consultant, creating truly large-scale systems in small integrated teams, being agile, professional, stable, fast, wham, bang! Man did I have fun, and boy did we create good stuff. Doesn't sound like the library you know, does it?

I'll be around

Yeah, I'll hang around the mailing-lists for a little while. I'm still in love with the library ideals and concepts. I still love books. And maps. And old pictures. And just surfing the catalog. Or snooping in the newspaper reels. Or finding a microfilm, wondering what's on it, what it means, and who did it. Even subject headings and its contextual meaning. I love catalogers. And I love librarians. I just don't love what we're collectively doing with the concept of "library."

I need to bask in technology, finding links between it and the culture we live in, making semantic models which aids anyone who cares about knowledge. Not sure I know where I'll find it, but I'm open to anything. I wish you all the best, I truly, truly do.

P.S. I'm currently looking to Sydney for exciting work, and possibly a move to the north shores of Wollongong where my wife is from [Kiama]. I'm excited about this. I miss the sea, the fresh air, the bustle of culture, organic growth, sub-tropical climate, and green things like trees, grass and bushes.

27 August 2007

Misc.

Just a few points of late ;
  • Thanks for the comments and mails about my mental resignation of the library world. I actually didn't think you cared, because, seriously, I never even went to library school, so who am I?
  • I've started work on a new testing tool that intuitively blends into web applications, and integrates against a slew of issue trackers. Got support for JIRA right now, a few more baking in devel. Will write more later, and I'll simply GPL3 the whole thing. (Anybody need an agile development and testing freak? :)
  • I've sadly killed off my last Topic Maps framework ; I've been using FreeBase (beta) lately, and it does indeed everything I wanted to do, only better. And, I really don't have the time anymore for all these non-profit-but-fun projects, which I'll miss greatly.
I think that's it, at least for a small roundup. There's some big changes afoot in my life, and I'll try to document them as things move along. Right now, though, I'm trying to figure out the next paycheck. (And did I mention that most recruiting companies are brain-dead? How can these guys stay in business? I suspect a rant on this issue coming up very soon.)

22 August 2007

Resignation

Dear library world. After several years tinkering in the library world one thing has become terribly clear to me; I shouldn't be in it. It's taken a while to see it, because, frankly, I never wanted to see the truth, believing so strongly that I was doing the right thing, helping the good cause, and being in love with good ol' library values. But it's there, glaring me in the face ; I don't belong here.

Premise : The library world is a) dying, and b) not flexible enough to survive.

Most people in the library world will strongly disagree with a) and normally disagree with b), and of course that would be the case ; most people there live in something that's obviously not dead yet, and the lot of them have survived for many years. Heck, the library profession and philosophy have survived plenty of paradigm shifts in society, have undergone many transformations to adopt, and still are being talked about and used by many. "Alex, you're just simply wrong."

"Libraries don't do politics"

First, let's look at what the library world is currently doing about Digital Rights Management. Right. Not a lot, apart from lots of talking about what we should do about it. In fact, it's one of those areas which is shady at best ; we don't know where we stand, don't know how vocal we should be, leaving the copyright owners to dictate the direction of this beast. Why is DRM even mentioned here, and as the first point? I'll get back to that one. To see why, let's move on.

Second, to whom does the "keeper of knowledge" fall to? Traditionally, the educational institutions and their respective libraries. But as the digital age allows anyone to be their own library, with commercial success as part of that dogma, the traditional keepers of knowledge are losing foothold to others who are better resourced, have more money and think more progressively about users needs. As Amazon and Google Books alone give libraries a kick in the shin and LibraryThing gives them a serious groin punch, are we to expect these and other organizations to do any worse in the future? Hardly. And what are we doing about it? We're currently throwing Lucene (or similar) at the problem and hope that will fix it. Laughable.

Third, what is a book these days? I know, I know, it's those paper things that we've got stacks of (pun intended), and as much as traditionally these things have carried great weight (and not just as paperweight) and possibly meant more to human development through time than almost anything else, I can't help feeling that as keepers of knowledge they are failing. Let's talk about knowledge ; it's what we know, right? Not what we knew, nor that which we will know. It's what we know right now. Sure, knowing what we knew is also important, but not as important as what we know. This is the actual fallacy of stacks and their contents ; they are finite, stuck in time, their context diluted and judged less important as time go by. Metadata that stays stuck in time and diluted is no better than the item that is stuck in time and diluted. So what are we doing about it? Aha, thought so; not a lot, no scrutinizing the metadata, no semantic time analysis, no semantic modeling, no user-centered extensions, no structural relationships, no organized effort in bringing the schemas together. If the library world would like to make sure that context stays high then that itself would save them, but they're not.

Fourth, how fast are we? Hehehe, not only are most libraries public and hence part of the public service regatta, the time-to-become-a-librarian is long, their focus of high-end technologies is low, most library structures are not very competitive (this has advantages too, mind you, but not in the speed-department), often founded on traditional governance and management models, and traditionally not into development of technology (so low skills, low drive and low self-esteem in that area ; not saying those skills aren't already there, but they're not plentiful, not well-supported, and usually a lone ranger type per library).

Whining, are we?

Just a tad, but not because I haven't been able to make a difference or because I'm not being listened to. In a lot of ways I've contributed quite a bit, just like other geeky library friends around the globe have created a tiny white powdery icing-layer on a really big fat chocolate mud cake. Although you know what the kids want.

I'm a bit sad, though. Sad that I've not been clear enough about what I think we need do, and I've failed to stake out a clear direction to go in. I'm sad that I haven't found the time to do those things necessary to convince people through example, being bogged down in routine and maintenance. I'm also sad that my opinions are too strong and hence dismissed by many just because of that passion; maybe I should be less vocal, less passionate? And lastly I'm sad that I'm willing to give up on something that I truly love.

Here's why I'm giving up, though; I'm tired, so tired, of fighting for the survival of something that possibly don't have the fitness to live. The Thylacine (or, Tasmanian Tiger) was a beautiful animal, respected and feared, until about 1930 when it was pronounced extinct. It's not that the Thylacine didn't deserve to survive, but its time had come. And that's sad as well. I can say that its time had come and that I'm sad about it at the same time, but it wasn't fit enough (in an evolutionary sense) to survive. And maybe the library is a Thylacine.

Every time I see a glimmer of hope or a flash of something exciting going on in the library world, it usually fast fades into a charades of politics and committee-shuffle. I'm too impatient for this, and I seriously think the world is, too ; it will race past us as we decide on who's going to chair what committee, who'll take notes, and how we're reporting progress to what group. Also since these glimmers of hope usually is attached to specific people more than institutions or organizations, whenever that person goes or moves, so does the glimmer. Again, because we're not traditionally in the business of technical development, we're so fragile. I'm fragile. I feel I've shattered a few times too many.

And seriously, the library see no gain by being rad. Sure, we will do what we need to do to support what we do, but we won't do more. And by not doing more, you're not doing what needs to be done.

And hence, I've decided to move on. There's no need for me to explain that all the things I see wrong with the library world don't suit me, and hey, I'm not ruling out that the library world is just fine and dandy and will get by just great. But we're not compatible, that's all. It's a bit like an old couple that after many years of staying together because that's what you do, they get to a point of realization that splitting up just seems a good thing to do, and both knows everything will be just fine.

I have no idea what to do next, though. All I know is that I'm starving.

Update : Just a note that this isn't a formal resignation as much as a personal one. I haven't formally quit. Yet.

Update 2 : Here's a follow-up on this post.

8 August 2007

UX, IA, UCD : Huh?

For as long as I can remember I've been immersed in the User Experience (UX), Information Architecture (IA) and User-centered Design (UCD) genres, long before I knew what they were called and what they embraced. To me, it was just doing what I always do, naturally, instinctively. The last few years I've joined the professional circles of these genres to sort of get up to speed, see what I've missed, help out where I can, and of course, promote myself and the genre in question in all professional things that I do.

But the more I learn about everything and all, the more I'm coming back to the beginning, back to where it all starts ; mental models of a problem space. Being a very creative person, one of those who love to fix things, love to sort problems out, mental models of problem spaces isn't something I have to do ; it's something that's always there. I don't have to visually try to understand problems ; they're there as a default, so I jump straight into solving whatever problem there is.

Well, big mistake ; that's not how the world works. No, the world wants to know that you indeed have got the problem space sorted out before you do anything, and you have to prove this through a small ton of documentation, convincing and bickering. The reason for this is that worlds modus operandi is the waterfall method, or in agile circles, we talk about chaining ; one thing needs to happen after another thing, and due to people's time schedules these things always have various degrees of gaps between when one task end and another start. They also need to start after someone has read a document they understand and agree with. Hmm.

To me, it's always been about fixing something small, check that it's okay, and continue until the problem is fixed to the point of some satisfaction or success. This is agile methodology in a nutshell ; never embark on blind-date thinking you know exactly what she looks like, how the evening will go, and how lucky you'll get. You need to take each step at a time, evaluate, make small plans to what to do next, and reiterate until some satisfaction or success.

The UX / IA / UCD disciplines to me always looked like agile development with a user-interface focus to me. It was never meant to be a big bang, big documentation, big plan type of thing. If nothing else, usability testing always tell us that big bang is big waste of time and resources. Yet, the more I walk in these circles the more documentation, meetings and justification I see. What's up with that? Is it that the initial small group of people have been flooded with a large group of not-so-smart people? Or are we succumbing to the business-need for paper stability? Or is it a lack of trust? Should we - indeed - sell better trust in order to do a better job?

Anyway, I'm slowly backing out of this whole debacle ; I'm so very, very tired of fighting the good cause. Being good in any of these things require the person to have great knowledge across many fields, and an instinctive feel for design, and I simply can't write a novel every time I come to some conclusion about some arbitrary nugget of wisdom. Consultants and contractors must struggle with this all the time ; justifying their wisdom based on their knowledge rooted in experience and education. Surely there's a better way. Perhaps, better customers?

30 June 2007

Hello World!

Falling into dad's hands at 6:45pm (18:45) on Friday the 29th of June, 2007, little Samuel Alexander Johannesen decided to see what the fuzz was all about. It couldn't have been much, because he's slept through most of it. Some choice moments ;







16 May 2007

Religion, politics, science and all that

Something that's incredibly close to my heart is disussions around where religion and science clash. There's tons to be said about this topic, and I'm both mentally and physically preparing myself to write large chunks on it in the not-so-distant future. I'd like to point whoever reads this to my starting point (which I have taken a long path to come to) which is a really good "chat" between british Bishop Harries and Richard Dawkins (Oxford University professor, and most famous atheist), both highlighting excelent points on both sides of the "debate." Of course, we're here witnessing two highly intelligent people, two who are very used to public discourse, and who are, in many ways, friends and share mutual respect for eachother. And needless to say, this is how these issues should be discussed;


30 April 2007

Topic Maps for PHP5

From time to time people write me about what I wrote some time ago about Topic Maps and PHP5. Most of them ask for the ZIP file that I linked to. Unfortunately that ZIP file has been lost due to various hard-disk crashes (both my own, and my ISP [!!]) so most of the time I give some small advice and tell them the files have been lost.

Just last week I had two more such requests, and decided to do something about it; I'm doing it again, this time a bit more formal and a bit better informed. Basically, I'm starting up again a Topic Maps for PHP5 project, and this post will work as a first design draft. Some of it is based on code I've already done, and the rest I will have to take in stride over the next little while as I'm in a deadline zone right now;

Toic Maps

There's a few things to say about Topic Maps in itself. The first is a choice between using the Topic Maps DataModel (TMDM) vs. the Topic Maps Reference Model (TMRM). Actually, it's an easy choice; I've made the switch to the TMRM some time ago, and haven't looked back since. The TMRM is an abstract layer above the TMDM, and in fact you can define the TMDM in it, so it's a good candidate for doing serious work, albeit it's not as widely supported as the TMDM. In this case, it shouldn't matter too much as I'll be using it to define a version of the TMDM to stay compatible with XTM (1.0 and 2.0).

Features and requirements

The framework / toolkit will do the following ;
  • Out-of-the-box visualisation and browsing of Topic Maps
  • Provide a simple API for working with Topic Maps (but not TMAPI)
  • input and output XTM 1.0 and 2.0, input LTM and input CSXTM
It will require PHP5 with XSLT enabled. It may be PHP4 compatible, but I doubt it as I want to use the better OO structures and support from 5.x, but I'm sure that could be a fun project for someone. I also may use the Zend::Cache classes from the Zend Framework if they prove to be good, but I have some caching classes I've developed recently that does some funky stuff that I may want instead, so we'll see.

Design

A bit of controversy about this one, perhaps, but the internal representation of the Topic Maps data / reference model will be done in XML. Yup, you heard that right, but there's a few reasons that I'm going down this path;
  • Cross-technology; most technology platforms have support for XML, with API's or tools to work with them.
  • XML technologies are mature and getting very fast indeed; I don't want to impose too much OO mockery if I can avoid it for such a simple tool.
  • I love XSLT and XPath; no way around this one, and XPath is a fantastic way to handle a lot of complex XML querying, given that the XML is well-written for the task (this is why we're not using XTM but something else internally)
The framework work as follows; Take the input Topic Maps format, and convert it to our internal TMRM XML format, caching the result and process. We need converters for XTM 1.0 and 2.0, LTM (1.3, I think?) and CSXTM 1.0. As all of these formats are well travelled in the TMDM world, this shouldn't be too hard, and the internal XML format will reflect this.

Where am I up to?

The caching and converting of XTM 1.0 is complete, and the internal XML format nearly complete, with queries being about 7 times faster than they would be if working with XTM directly. That's a pretty good start. The caching layer is such that you can use file cahcing, database caching, or somewhere inbetween (for example, choosing ADO or Zend::Db), giving you heaps of options for scalability and performance.

Using the normal test Topic Map, the Opera map by Steve Pepper, somewhat complex queries and handling is done in the 0.3 ms region, which is good enough for a version 1.0 of the framework.

I'm currently tweaking the input and output buffering and converters, creating more efficent internals for the XML handling, and writing up some documentation as well.

Where do I want to go?

  • Support for "enterprise size" topic mapping, meaning maps between 5 and 50 Mb in XTM 1.0 size.
  • Concurrent editing of the maps.
  • Astoundingly easy user-interface.
  • An XSLT framework to support those user-interfaces (I've actually done this bit already as part of a different project, but I need some time to document and clean it up :)
  • An internet community to use and help out (which is also why I chose an XML internal engine wrapped up in PHP for simplicity).
That's it. I'll let you know how it goes, and contact me in regards to anything at all.

28 March 2007

Quiet, oh so quiet ...

For those who wonder why I've been so quiet of late should go read this Lorcan Dempsey bit. Now you also know why I might be a bit quiet for a little while as well, as there's big deadlines and interesting stuff coming up. Watch this space.

9 March 2007

New article : Electronic resources

I've written an article about electronic resources, and I've published it to my "articles" blog (which will look prettier and the same as the blog Any Time Soon(TM) ); "Electronic Resource by any other name", an article deemed unworthy of paper publication.

2 February 2007

Want to go to Kuala Lumpur and present about Wiki's?

Some time ago I agreed to do a presentation for a conference in Kuala Lumpur about intranets and our use of Wiki technology in creating it. The conference had to be moved, and as such I find myself unable to go, so I'm throwing the offer out to my readers;

Do you want to present a use case on wikis and blogs in a real-life corporate environment at a CMS conference 6 and 7 March in Kuala Lumpur, Malaysia? (Or, about intranets and CMS in general if that's easier)

I know the time is a bit short, but the people organising the conference are very understand and wonderful people, able to help you out and give you slack if you need it. All expenses are paid; all you have to do is show up, give a smile and say a few interesting words. This is an excelent way of getting away from it all, and have a couple days off in a really nice place.

Spread the word too if you like, and let me know at alex at shelter dot nu, and we'll work something out. I was excited to go as it looks like it was going to be a great little conference.

25 January 2007

Kids growing up so fast

In the next few weeks I'll be writing a bit about what's going on at work, with Service Oriented Architecture, web service semantics, different layers of organisational constructs to support both business and development ideals, and project management and expecations handling.

But that's not this post. This post is about my daughter Grace who's six and a half. Before christmas we inherited an old computer from my wife's sisters family, an old beaten thing we were going to give to the kids for educational games and homework and such things, and in no time I whipped it clean and hooked it into our network.

While I was at work last week I got this in my inbox ;
A secret story
a long time ago a daddy,mummy sat
soon thay found out that thay wer having
a BABY.

For those still not in the know, me and Julie are expecting our third child in July (every evening julie spends trying to find good names), and Grace is as excited as we are and decided to write me the above wonderful email, from her Gmail account no less. Not bad for a seven year old. She'll be blogging in no time.

While I was writing this blog post I've been chatting with her on Gmail talk, and she says the most wonderful things. I need to spend more time with her when neither one of us is grumpy in the evening after a long day. :) Tomorrow is Australia Day, a holiday, so I'm already looking forward to it. I feel so blessed with my wonderful little family.

Update: Yes, Alia, you're right; Grace is indeed seven, not six (fixed). It seems she was growing even faster than I first thought. :)

17 January 2007

Off-road music

As many of you know, I'm a sucker for baroque music, with a passion for Monteverdi (early italian), Bencini (middle italian, roman style), Galuppi (late italian, Venezian style), Telemann (late german), Schutz (early german with italian influences), Lalande (late french, small steps away from the dominating Lully style), Biber (middle italian in Austria, violin extraordinaire).

But I do occasionally sin, I do have a musical past, and dip my musical ear in more modern stuff still. Mostly, this is due to listening to Pandora.com at work which is a kind of a digital radio with empathy; I can pop in a tune I like or an artist I appreciate, and it will play music of a somewhat similar kind. And sometimes it presents stuff to me that's new and that I like, which is what this post is all about.

Regina Spektor : I have no idea what music Pandora.com thought I had in common with regina, but one day she popped up, and I took notice. She's of Russian-Jewish background, but have lived in New York since she was about 10. She's a singer/songwriter/pianoplayer/guitarfiddler that comes up with the most amazing tunes, and she's not afraid of being different. And I think it is this "different" that I like so well with her; strange noises, pivots of musical direction, strange lyrics, using her voice as more than just a pretty voice (and she really has a pretty, strong voice). She's not afraid of letting the music be music, and that's quite refreshing; song structure follows the musicality of it, not some verse-refrain-verse-refrain-brigde-refrain-refrain pattern we're so sick of these days. Good stuff; here's a few videos ;







Happy Rhodes : Combine an amazing sense of feel with the voice markup of Kate Bush and Annie Lennox, you've got Happy; diverse yet uniquely Happy Rhodes music, with a voice that continue to amaze me by its range and clearity within it. I used to have a crush on Kate Bush, and maybe this crush is the continuation of it. Here's a fantastic live recording : listen out for where she switches voice register at around 2:10 without wffort, without it sounding wrong ;

Home Video : melancholic modern quirky. Not even sure why I like it. I don't think these guys are famous, nor do I think they will be, at least not in this configuration. I think they appeal to people who quite enjoy subtle melodic changes over longer periods of time, you know, those who also liked bolero, except with a modern beatbox twist.

Ambrosia : Tickles me with their Toto sound (I'm a fan of the older Toto, and a worshipper of the ground that Jeffrey Porcaro walked on), a band of the late 70's and early 80's. Look for their album "One Eigthy" which is produced by the faboulus Michael McDonald ("Yah Mo B There!", the Doobie Brothers) and features the amazing Richard Page of Pages and Mr Mister fame (of which I adore). Here's a video ;



Piano magic : Again a quirky creative modern sound. My last band before I got married and had kids were a band called "sundrunk" (yes, as in Nietsche) where I was producer, percussion, arranger, drummer, synther, whatever, and Piano Magic reminds me a lot of what we were doing. It's not so much a favourite kind of music as it's an interesting expression I enjoy listening to.

The Magnetic Fields : I've always loved Tom Waits. This is his more melodic cousin, more on the road than down the alley, yet as deliciously melancholic and bare, like a Waits younger brother that went back to school and kept his dayjob. And then moved on.

Various jazz : In my contemporary jazz channel I've really enjoyed Erik Friedlander, Alan Pasqua, Darek Oles and the norwegian jazz group Tord Gustavsen Trio.

Mellow and or electronic : Suzanne Ciani has surprised me with complex and melodic compositions. I'm mostly happy with my Tangerine Dream / Klaus Schulze / Vangelis / Kitaro setup and I've been looking for other things, but not much has popped up in this category.

There's also the occasional song by the occasional group / person that catches my ear, and maybe I'll talk about them in the future. Until then, enjoy the music, and I'll leave you with one of my all-time favourite Victor Borge pieces. I simply love this!