I've got a useful service running in CATS now. It's still a bit
rudimentary, but I can query the film collection and return results
based on a basic query. Ideally I'll be able to use this to generate
graphs and tables dynamically without having to go to the disc. Of
course, part of the same behaviour could be acheived by just sticking
everything in a database and querying it. The niceness is that this
abstracts the operations slightly, and means that I could query the
service from other systems. Not that I have any that could usefully
do that. But in any case, it tests that CATS is working, albeit at a
simple level. I still need to get the server jobs to work so that
things are a little less naff.
I made an exciting discovery yesterday... I can put coke and ice-cream
together and make a Coke Float! Not just that that's now it's made, but
I can do that .
I'm working my way through a series called
Fringe (2008, FOX)Action and Adventure/Drama/Science-FictionTeleportation. Mind control. Invisibility. Astral projection. Mutation. Reanimation. Phenomena that exist on the Fringe of science unleash their strange powers in this thrilling series, co-created by J.J. Abrams (Lost, Alias), combining the grit of the police procedural with the excitement of the unknown. The story revolves around three unlikely colleagues - a beautiful young FBI agent, a brilliant scientist who's spent the last 17 years in a mental institution and the scientist's sardonic son - who investigate a series of bizarre deaths and disasters known as "the pattern." Someone is using our world as an experimental lab. And all clues lead to Massive Dynamic, a shadowy global corporation that may be more powerful than any nation.Fringe at the moment, awhich
a friend had recommended to me. It's quite
X-Files (1993, FOX)Drama/Science-FictionThis long running FOX drama lasted nine seasons and focused on the exploits of FBI Agents Fox Mulder, Dana Scully, John Doggett and Monica Reyes and their investigations into the paranormal. From genetic mutants and killer insects to a global conspiracy concerning the colonization of Earth by an alien species, this mind-boggling, humorous and occasionally frightening series created by Chris Carter has been one of the world's most popular sci-fi/drama shows since its humble beginnings in 1993.X-Files-y, with the exception
of being a bit icky at times. It's quite good.
I'm very achey and tired today. I was in early 'cos I wanted to make
sure that stuff worked after last night's power outage. And left at 7pm,
so it seemed like a long day.
Instead of tea tonight, 'cos I'm too lazy, I tried the Honey Cheerios.
They're ok, but they're a bit light and not quite as nice as Honey
Loops.
I didn't sleep so well last night. But I did dream a little. I don't
remember too much; I think there were at least two parts. In one I was
moving in with someone and we were watching telly on a matress in the
downstairs room, because the rest of the house was filled with boxes.
The other one was in a lecture theatre, where we were seeing something
or other. I don't remember much but I do remember that Joan of Arc was
there and was distinctly annoyed at being burnt and wasn't going to let
that happen, so ran through the audience (which was packed) throwing
incendiary grenades and yelling at everyone. It was a little chaotic but
the lecture ended and we went to the next lecture, which was for some
English course. The lecturer picked on one girl in front of me and
belittled her because this wasn't one of her courses and sent her out -
I snuck out with her, went down the stairs - a lovely curved staircase
that curled around and met another one in the middle at the next floor
down before continuing on to the ground floor. It was all a bit strange
- which I guess is a given for dreams.
A friend of mine has recommended
Fringe (2008, FOX)Action and Adventure/Drama/Science-FictionTeleportation. Mind control. Invisibility. Astral projection. Mutation. Reanimation. Phenomena that exist on the Fringe of science unleash their strange powers in this thrilling series, co-created by J.J. Abrams (Lost, Alias), combining the grit of the police procedural with the excitement of the unknown. The story revolves around three unlikely colleagues - a beautiful young FBI agent, a brilliant scientist who's spent the last 17 years in a mental institution and the scientist's sardonic son - who investigate a series of bizarre deaths and disasters known as "the pattern." Someone is using our world as an experimental lab. And all clues lead to Massive Dynamic, a shadowy global corporation that may be more powerful than any nation.Fringe to me, so I thought I'd try it
out. I was quite amused to spot Mark Valley playing one of the first
characters I see as it starts - he's Christopher Chance in
Human Target (2010, FOX)Action and Adventure/DramaIt takes a brave, selfless man to make himself a "human target" in order to save the lives of those in danger. Christopher Chance is a unique private security guard hired to protect. Call him what you like, because for Chance, it's about one thing only: saving his clients' lives. He puts himself directly in the line of fire as he races against time to save his client, while unraveling the truth behind the mission. With every new danger, Chance's dark history will also unravel. Does anyone know who Christopher Chance really is, or what secrets lay buried in his past? What would make a man willingly become a human target?Human Target.
Oooh! And he's a baddy! It's a bit camera-wavey at times, but
just about bareable if it slows itself down a bit. I've only seen the
pilot, so I'm not sure how it'll go afterwards - the pilot's usually a
little different to the rest of the series, but we'll see how it goes.
The other cool and exciting thing today... I was opening my LoveFilm DVD
envelope this evening whilst walking up the stairs, in the dark, and
noticed that as you open it, peeling away the outside of the envelope,
the sticky glue glows. I guess it's giving up a little of its stored
energy as you unstick it as light, but... that's just cute! I'm going to
always try to open it in the dark now, just for that
I had a kinda strange dream last night about being in
The A-Team (1983, NBC)Action and Adventure"If you have a problem, if no one else can help, and if you can find them, maybe you can hire: THE A-TEAM." These words open one of the most famous TV series of all time. The A-Team was about 4 escaped fugitives from a crime they did not commit: Col. John "Hannibal" Smith, their heroic leader, in charge of making the plans, Lt. Templeton "Face" Peck, the team's conman and womanizer, Cpt. H.M. "Howlin' Mad" Murdock, an insane pilot who acts as a comedy relief, and Sgt. B.A. Barracus, played by Mr. T in his role of a lifetime. Together, they fight evildoers, escape the military, and create catchphrases in the process. A classic for all ages, The A-Team should be watch by everyone.The A-Team. I
don't remember much of it now, this evening, but it quite fun. I was
thinking I'd watch the film this evening, but it's got so late that I'm
thinking it'd be a bad idea.
I'm still, very slowly, adding bits to the CATS system. I've got the
server shutdown working reasonably nicely now. It's reasonably simple
and should clients know properly, giving them a chance to shut down.
They can even communicate with one another for a short period before
the connection is completely severed. The idea is that the shutdown
notification gives everyone a chance to send clean notifications and
to (maybe) pass back any information to the clients which requested
jobs to say what the result was. I don't think there's all that much
use for the feature as organising which clients should just exit and
which ones can (usefully) send notifications that the system is dying
is tricky. But the functionality is there, should it be needed.
I've had a sore head since early this morning. About 5-ish I woke up
with a headache, with pain along the top of my head in little flashes,
like a spider. Um, I mean imagine that your head's got lots of little
wiggly bits all wound around one another and when something hurts the
pain shoots down those wiggly bits, fading as it goes. Like a spiders
legs. So that's how my head felt. And I didn't get up to get tablets for
another hour because I thought it was just a routing problem at work so
I couldn't do anything from here (yeah, seriously... I wasn't really all
that awake except that it hurt).
So that was sore. And pink. In my mind the pain was around the pink
tubes. Anyhow, a couple of headache tablets later I got to sleep, and
then a couple more when I got up a few hours later, seemed to have
helped. It's been back again on and off through the day, and seems to be
heading back this evening. It's usually pretty brief, but when it's
bad it's painful every 5 or 10 seconds and no fun at all.
I'm quite glad that it's not so bad right now, though.
I also found What-the-what
which is kinda neat.
I've been really tired again today, and my eyes have been stinging all
day. My head's not really stopped hurting. oh well. Fortunately
it's bed time now.
What's there to say about today ? It started. It dragged on. It's
ending. I'm in need of a break, so I've got Friday off. Ok, it's not a
big break. Sort of a token break - a nod in the right direction. I'd
like to say that I've got big plans and can get some stuff done, but in
reality I'll probably just be tired and fail to rest, whilst at the same
time feeling that I ought to acheive something.
Don't really remember last night's dream too well. I remember there
being a coach trip with Caroline. And I remember there being a robotic
spy involved, too... and the coach getting lost. And, in a rare
departure from the norm, a blue digger working in a scrap heap made of
diamond and glass. Colour isn't usually that memorable.
The basic server now implements pings properly, and the SimpleClient
responds to them automatically. I've also started adding some
rudimentary statistics, which I'm not using yet, but should be useful
when I can actually see things running properly. In theory it's a doddle
to create a logger for the statistics from the clients, but I've not
sorted out the database access yet; and in any case, there's still some
more fundamental bits to sort out. Reference checking's still not
working. Broadcasts are written, but they're not tested yet. Oh, and
client enumeration's been tidieid up so that I can use it to locate
clients. I've started on the presentation layer as well - not that it
does much at the moment because the only presentation is stdio based,
so it's just simple ASCII. I'll work out the HTML later - and at that
time I'll work out control sequences as well.
I did end up watching a lot of telly. A little
Caroline In The City (1995, NBC)ComedyA situation comedy centered on Caroline Duffy, a young cartoonist living in the Tribeca neighborhood of New York City. Each episode begins with a brief animated sequence reflecting the autobiographical nature of her syndicated newspaper cartoon strip Caroline in the City, explicitly compared with the real comic strip Cathy in several episodes.Caroline In The City,
some other bits and pieces, and then some
Not Going Out (2006, BBC)ComedyLee is a childish northerner who lives in a fancy penthouse apartment in London. Going through a variety of jobs such as a janitor and a ice cream man as well as attempting relationships with flat mates Kate (Series 1) and Lucy (Series 2 & 3). His best mate, Daily Mail reading, middle class citizen Tim is always there to stop Lee from getting in trouble or not? Mayhem is never far away with cleaner Barbara who has never done a honest days work in her life. Not Going Out. It's a bit
lonely when the telly's off.
Sometimes I just hope that something will happen. Not really expecting
it to, but wondering what I'd do if it did. Whether it's getting run
over by a car ("what would be the coolest thing to say before passing
out?" - I mean, you've got to have these things prepared because those
important seconds before you pass out won't give you much time for
anything more than 'ouch' and 'where'd he come from'), winning the
lottery ("is there a way to appear to spend money frivolously whilst
actually being careful ?"), or work or other stuff... it's never really
useful. But it provides a distraction from the inevitability of death.
Which, of course, reminds me that the possibility of faking your own
death so that you can find out what people say about you also comes into
that list. Although usually in the form of 'who bothers to turn up',
rather than 'what do they say'.
I think maybe it's sleepy times now. My head's going fuzzy. Like spider
webs, and with the same degree of connectedness.
I was skimming through a Love Film page about
overlooked
films and saw a reference to "Let Me In"
, and reading the bits around it
thought "hang on... that's the wrong title - it's meant to be "Let The Right One In (2008)Drama, Fantasy, RomanceOskar, a bullied 12-year old, dreams of revenge. He falls in love with Eli, a peculiar girl. She can't stand the sun or food and to come into a room she needs to be invited. Eli gives Oskar the strength to hit back but when he realizes that Eli needs to drink other people's blood to live he's faced with a choice. How much can love forgive? Set in the Stockholm suburb of Blackeberg in 1982.Let The Right One In"
". It turns out, though, that they're right - it's just
that (amazingly) I know the original Swedish film rather than the
remake. Surprised me, anyhow .
Ok, now here's something I miss about Picsel - the review system and
process. Maybe it's because I'm set in my ways and I'm simple enough
that having things set out clearly made my life easier. Basically the
review system was a parent-child hierarchy. It enforced that things be
reviewed and tested through the automated test system before commit.
Reviewees are at the whim of the reviewer, and coding standards, and
the things to look for in reviews as a process were laid out - such as
being explicit about what you were changing and why. Leaving it to the
code is not acceptable to explain things is not accepted. Similarly for
the testing, it's required that you explain what you did and what you
found, even if it's just to say that you ran the automated tests and a
few local ones and they worked.
The thing is that it doesn't really make things any more difficult if
you're used to it. Particularly if you're taking a single review through
many iterations in order and writing what you did found as you go -
many things can be investigations, especially if they're bug fixing.
Isolating the review (the change) from the bug report means that you
can diagnose in one place and explain in another (although it's
important to at least summarise the reasoning for the review, otherwise
your reviewer has to hunt around a lot).
Having a hierarchy of reviews, leading from the Feature/Change Request,
through Design Documents to the Code review means that if as a reviewer
you're stuck on what's going on, you can go back through the hierarchy
and find things (usually). Bug fixes hung off the code that was broken
means that it's easier to trace problems.
But, more than all this, when you find something that makes no sense, or
come to a new section of code that you don't understand, you can
(usually) just find any review that changes it and search back
up the hierarchy to get a wealth of information about what was changed,
why, and all the discussions around it which help to understand the
problems at that time. Design decisions documented at either the design
stage (shock!) or at coding time (horror!) are still captured, because
the reviewer demands them - how can you review the code if you don't
know what they meant it to do ?
I'm pretty certain that such things improved the quality of the code,
reduced the number of breakages and massively reduced the learning curve
for sections of code that were new to me. And at the same time reduced
the need for as much documentation elsewhere - it was all kept in the
relevant area, by the code.
As I said before, it's always possible that this is due to my being set
in my ways, or not able to pick things up quite as quickly as other
people without them being spelt out. I like to think I'm pretty
reasonable when presented with undocumented or unspecified stuff, but
that doesn't mean that I want to suffer that way.
Anyhow, I miss it. Not specifically from work - just a general thing.
I had There's a hole in my bucket going around my head
earlier today, which was quite frustrating. Not sure where that came
from.
Oooh, a friend's just pointed out that it's a special day that I'm going
to call Palindrome Day! (11/02/2011)
A reasonably simple truth has occurred to me about development. It's not
too difficult to see. When you start out, you tend to write very flat
code, with simple defined operations and a flow that you can follow -
I'll assume that you've not been damaged by languages that encourage
'goto' . The learning curve is low because there's no hidden
complexity and you don't have to search around too much to find how
things function.
As your code requirements increase there tends to be an introduction of
code references, function pointers, dispatch tables or similar in order
to make the code more flexible. Flexibility increases, but learning
curve also gets steeper because the indirection is greater - you have to
hunt to find how control passes between different parts of the system.
If the language allows it, inheritance might be used to hide this, maybe
even multiple inheritance. Increasing further the flexibility, but
making the learning curve even steeper as there is more to learn about
and less you can see. Possibly you can say that this is also a factor of
the larger code base that requires such things, but I've seen cases
where such things have been done in very small programs (doesn't mean
they're wrong and larger programs need inheritance, just that
the learning curve tends to be much greater).
This also (in my experience) is exacerbated by not having strongly
defined API boundaries which mean you can trust that what's declared by
the API boundary is what it does - you have to wander through all the
code in order to follow it, without regard for what the API boundary
tells you it should do.
Beyond this, code can be made more 'flexible' (in a certain sense) by
placing it as an RPC service or behind a web-service or similar. Whilst
these tend to introduce more solid API boundaries, they also increase
the learning curve a bit. Fortunately (in my experience) the greater
solidity of the API boundary usually drops the learning curve
significantly, meaning that much of the complexity of the inner
implementation is removed (which you'd hope) and you're just left with
the complexity of the operation you're trying to perform (which is what
you'd like to see) and how you do it.
The flexibility gain tends to be outright lost (again, in my experience)
to complexity if such services need to be bundled into multiple
related operations without state between them. The complexity of making
such stateless operations safe whilst at the same time relating the
operations increases the learning curve again, even if the method of
doing so (cookies, tokens, session ids, etc) is well known.
Each of the stages above is a simplification of what tends to happen,
and each stage provides distinct benefits - usually to the authors of
the code. The authors understand the intrinsic structure and 'design'
(even if it might be said that there is no design), and generally this
is poorly communicated. Without the foundation in how things are
structured and the concepts on which they're based, attempting to follow
a complex code path becomes increasingly hard.
So the conclusion I can draw from this - and one that I've generally
followed without quite articulating it in this way - is to make things
as simple as possible, but no more (yeah, I know that's a quote... a
quick search around implies it's from Einstein - just because it's a
quote doesn't mean it's still not valid). Obviously if you need to use a
more complex way of representing things, that's fine to use it... but it
shouldn't be necessary to use it if you don't need it and
"that's the way you do it in this code / language x" isn't really a good
enough reason. Obviously there are (as always) other factors, such as
consistency with other code, or the anticipation of future requirements.
Anyhow, that'll do for now... I've been tired all week and somehow it's
ended up being really late again.
Oh, and it looks like Tesco online have stopped selling Honey Loops,
just after I decided 'yum, they're nice' .
After the previous server going bad the first time around, the upgrade
this time went smoothly with no issues. I think I'll put that down to
good planning on my part. Because that must be the reason and
not the fact that the upgrade this time was simple and well provided for
by the supplier. I have the greatest of respect for people that
manage to make these things run smoothly for me. Plus Jeremy was here
again to help me should anything screw up - not that I expected it to,
but that doesn't mean that it wasn't very reassuring to have him around.
It beats having
Tom Jones going around my head as I
had last week. I didn't even know what track it was that was going
around my head - it was mostly a 'whoa-a-whoa' section... after a little
searching today, I've found that it was What's New Pussy Cat .
That said, every morning and every evening I've had ...
My server re-write is coming along slowly. I've got a 'lsclients' tool
that works now, albeit that's all it can do. I managed to get
that working yesterday evening and today I've spent a little while
re-working my example code so that the common bits are all packaged away
in a little SimpleClient library.
My eyes are tired tonight. Well, the right one more than the left.
I got a mail from Christina this evening which was great to hear - I'm
so glad she's ok. Not a lot else to say tonight. I'm tired and it's
incredibly windy outside. Somehow it's nearly 1am, too.
I spoke briefly to my aunt today, to see how my cousin's been getting
on. She's out of hospital, apparently, and at home again. She's got
Kawasaki Syndrome they believe and are treating her for it. She's
apparently a bit uncomfortable with things but they hope she'll be back
at school for half days soon. Good luck to her!
I've had a very stressful day at work, what with lots of things failing
and problems with other systems. It's all just a bit frustrating -
there's always a lot to do and somehow I've managed to not get a lot
done today. Oh well.
Frustratingly I also got home this evening and then realised
that I needed more milk. Doh. So I had to pop out and get some.
Minor re-write of my parser function this evening. Now returns a hashref
rather than 7 return values, which is a whole lot less icky. And makes
the code a little tidier and clearer to read as well. Still haven't
managed to put together any sort of test case for it, though. That will
have to come soon, because it'd be frustrating to break.
Last night's dream was rather intense. I was working for an Intelligence
group, and visiting the FCO on a personal matter and heard that the
Nigerian President was coming - which I knew was a bad thing. So I
couldn't be there - I ran out, calling the office to say what was
happening, but the President was shot at the bottom of the stairs whilst
I looked down on them. I managed to hide in the back of a bathroom
behind a load of laundry until night, and then left via the roof.
I went home, to my girlfriend's place, and rang in, explaining what had
happened. I was told to lay low for a few days. My girlfriend and I had
a couple of days relaxing - to a limited degree, as her brother had
vanished and we didn't know where he'd gone. She didn't seem so
concerned though. On the third day, we took her daughter to a creche
for the afternoon, going the long way around because of traffic
problems. Her husband came along too for a little while, having dropped
her off, and we had ice creams and chatted. We left the little girl with
him and went home - there was a balloon flying over the town, and I was
surprised the my girlfriend brought out a gun and shot at it until it
dropped into the river.
We left by the balcony to the river's edge (we overlooked the river) and
met her brother who swam out. Got him some dry clothes and he left. As
we returned into the house, though, I noticed a hidden area where there
was someone else hiding in the house. I guessed they were after the
brother. We left quickly with him and he vanished into the crowds. When
we returned to the house, the person hiding had gone, but I shut out all
the lights and hid us both in a corner of a box room. I tried calling my
box, all the while trying to keep my girlfriend quiet - and not playing
with her phone. I rang my friend, and he whispered that he knew about
the balloon and understood. I said that there was someone coming for us,
and then noticed through a gap in the door that the hallway light was
on, and someone had just come up the stairs. I squeezed my girlfriends
hand and we sat very very still. The door opened and someone with a gun
and a torch shone right at us in the corner. I closed my eyes and waited
for the shot... and waited... and waited... wondered why I wasn't
dead, and that maybe the killer was amazed by how beautiful my
girlfriend was and wouldn't shoot... and waited... and then woke up.
So that was kinda fun and hasn't left me feeling at all on edge today.
It's a little worse than the dream a few days ago where I returned home
from holiday to find that the house had had everything stolen from it.
I've been tinkering some more with a simple nested log writer and parser
which I wrote yesterday. It started out all simple and obvious, but has
quickly grown to be a bit awkward. A function which takes one parameter
and returns seven is (in general) the definition of wrong. On the other
hand it does do what it needs, and it's flexible. It's just not nice,
and it's worse when some of the return values are undef at times. I
think it might be better to return a hashref with named parameters. It
would certainly make the code seem a lot clearer.
|
Disclaimer: By submitting comments through this form you are implicitly agreeing to allow its reproduction in the diary. I say this not because I'm going to ruthlessly attack comments in the diary, but just so that nobody can say "Well, I didn't say you could quote me on that".