jang: (Default)
[personal profile] jang

It's been a busy month or so.

I'm _still_ unhappy with the ORM in the framework we're using. However, establishing a few simple rules of thumb with my colleague has kept model mutation stuff all neatly out of our mainline code. It'll be fine for the stuff that more naturally fits its model (ie, the noddy bits) which we're rapidly approaching the need for now.

What's nice is that the up-front planning we've done is really paying dividends. We've a flexible, extensible object model and - where there are "for future development" features on our wishlist - it's actually possible to see clearly how to implement these with a minimum of hassle. (In some cases, I've been able to stub out examples in just a few dozen lines of code. Compared to the thousand or so lines each of these was in the previous system, that's a massive improvement in readability and maintainability.)

Things I wasn't anticipating doing for a web application project: the latest was a compiler for a little expression language that rather simplifies the routing and other related logic in our user-supplied models. It's been a long time since I've cranked out an operator-precedence parser in anger. This one compiles down into Python (which has a performance pretty much indistinguishable from optimally-written hand-cranked code). It's occurred to me that I can also use the parser to generate Javascript support functions at the same time, so that we've client-side stuff to embed in our UI as it becomes more AJAXy. Thus far this is probably the cutest thing we've done with this project.

It's very rewarding to be working with Kieren, too. He seems to be genuinely having fun; so much so that he was quite dejected to have to spend a half-day attending the compulsory morale-enhancing fish-throwing course (if you've ever been patronised by a video about a Seattle fish market, you'll know what I mean) instead of actually enjoying his working day with his colleague :-)

That particular piece of patronisation does seem to rather miss the point: on the whole, people here get on very well with their peers, and enjoy that aspect of their working lives - dealing with competent and capable people and doing some really excellent work. What affects morale, rather, is the feeling that we're basically directionless - that the powers-that-be recognise there's a problem, but don't seem to appreciate that it's their own lack of communication, of vision, that's to blame; that staff are bound to feel a lack of morale when the employer has shown itself ready to cut the workforce at the drop of a hat, to seek to cut pension provisions, and basically to not stick up for its staff.

(I'm reminded of a conversation I had about six months ago when discussing the relative merits of employing our own data warehousing expert [they weren't offering enough to attract one] against having an embedded trainee from the warehouse vendor on-site. There were some complaints that we'd effectively be paying to train up people who would then leave and move on. I asked: "isn't that the case with employees too?" Horrified looks. Oh, no: surely we expect more loyalty from our staff. "Well, you can probably expect as much loyalty as the business shows them.")

I've been thrashing out a design for a query engine that targets results, collated for speed into a NoSQL engine*. When I did some original benchmarking, I found that our most complex reports (which take tens of minutes to run against a traditional RDBMS) could relatively easily be cut down to sub-second runtimes against a backend like MonetDB. The task now is to preserve as much as possible of that performance gain using just our single datastore of choice (Cassandra) and for general queries constructed with the reporting object model. There are some simple transformations (lifting value mapping functions; delaying joins) which do seem to make a difference. I've not really nailed this down yet - that's really the job of the coming month - but I'm loving the exploratory nature of this.

* chosen because the data's laid out much more conveniently for access by the query engine than because we're trendy bandwagon-jumpers.

In other news: an actual hot date recently with the Hot Girl from IT. We multiple-dated with a collection of mutual friends: a sultry Italian Lover, a hyper-intellectual numerical analyst, a pond-hopping writer from the American Midwest, and (catching up with us a little late), a drug-dealing belay buddy. I was a little concerned to begin with, because I'd had to walk out of the office leaving a bug behind (single-character typo, as it turned out); checking in something broken always makes me antsy. Dinner was superb, though, and it was nary more than a sip or two of my ginormous Peroni (they were not kidding that it was "large" - the bottle was taller than I am!) before my cares were completely forgotten. It even met with the I.L.'s approval - since he's not a shabby cook himself, this was high praise. The movie was passable. I like to impress my dates with my exquisite taste in film: "The Seventh Seal," "Hawk The Slayer," and so on* - and this outing of the Three Musketeers did not fail to live up to such stratospheric standards.

* "Andrei Rublev" if I want to send a clear message that this is only about the movie-going experience and second base is off-limits.

In short, I'm still loving it.


jang: (Default)

October 2011

23 242526272829

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 22nd, 2017 05:08 pm
Powered by Dreamwidth Studios