New Years Eve At The Snell-Pym’s House (by )

We were gifted an X-Box Connect for Christmas but did not have a TV ours having died a death a few weeks previously and being an old one just for DVD watching anyway it still wouldn't have been any good. We looked at was best for playing this sort of thing on and I took the money I had been saving for a new camera, my birthday money and Jean's vouchers she had gotten for her birthday - Al put in some money too and we went and got ourselves a new TV from the super market whilst doing our food shop.

Of course we then couldn't get all of us and the TV in the car so I had to walk home (40 mins) - it was tough as I didn't have my stick with me but I managed it! I couldn't talk when I got back but it was worth it! a) this means I am improving again and b) the TV is fantastic!

So we set the X-Box up and WOW! We hadn't really been following electronic gaming as we thought we wouldn't be able to afford a system for a good long time yet so it has been just amazing! It had already been suggested to me that I should get a Wii or something for physio therapy purposes and now I see why!

This is jean on one of the games

On tippy toes Crouched down Arms behind me! Oh Yeah! Star Jump Step.. step forward stomp stomp

We can NOT thank Santa enough for this present!

Alaric spent the remainder of the afternoon trying to extract a half edited novel and a completed poetry book off of one of my old laptops for me - unfortunately it didn't work but he says there are still a few things he can try.

Alaric fixing a laptop or not

We had a take away Pizza as I am giving pizza up until I lose some weight! And watched Bill and Ted on the new TV and again just WOW! It was fantastic - I sat and knitted and the girls snugged with Daddy and we all agreed that To Be Excellent To Each Other is a good thing to aspire too. Jean's comment at the end when Rufus says they will get better was, 'Well they will, Mummy has' 🙂

Alaric and the girls

Mary was very excited to be dressing up in a pretty dress, the little angel outfit we were given for Jean when she was little.

I'm an angel

She is a rougie type of angel, playing rough and tumble with her sister and attempting to steal Christmas Cake!

Good as gold Cheeky sister snug Sister rough and tumble Eating cherub Baby Mary dancing to the Christmas Clock

She ended up being a very sleepy angel

Sleepy Angel

We then all played on the X-Box again after which we played one of my favourite board games Elixir which is about wizards 🙂

Playing Elixir

At midnight we rushed into the garden and banged our pots and rang our bell and fire works went off all around us and the neighbours started singing in their house - very loud and merry in serbian whilst we shouted Happy New Year and hugged and watched fire lanterns whilst humming Old Langsi.

We then popped the tired Mary in bed and played the board game until Jean was too tired and then me and Al blogged about our year and discussed our plans for the next year. Oh and we had a home made veggi sushi supper and White Knight with Peppermint Candy Cains 🙂

White Knight and Candy Cain

Resolutions, Goals and Hopes (by )

2012 has seen a large number of first for me, from soldering, to poetry slams, to making my own cake toppers to us having our own house, I have gotten off of the crutches and walking sticks and faced a few medical hurdles. We have been to many amazing events and met some great people, had the ability to look back on the past few years and see just how surportive and lovely our friends have been.

2013 I hope doesn't compare to be honest! The year has been fun but intense and I just want to take things a little slower to enjoy them! I am hoping to sort some novels out to send off to publishers and get back to the writing and crafting which was starting to become impossible with the number of other things we were doing!

I also hope to become part of the Art Evolved (dinosaur drawing group), Friday Flash (flash fiction writers) and the Scifi Chatters once more as I've sort of slipped off the radar since having Mary which is almost 2 yrs ago now!

This leads me on to goals:

1) Get stuff published by publishers ( I got a few flash fictions published last year but that was it)

2) Publish and sort previously stuff myself

3) Sell stuff on Etsy et al

4) Make more Art

5) Sort my blogs and websites out!

Resolutions:

1) become healthier - this means exercise and no cake testing! I've found that the medical stuff last year kept setting me back but I still managed to get going with the belly dancing and walking - and now with the X-box Connect I can do stuff on my own as fun games as well 🙂 Food wise I am cutting out sugar and caffine and pizza is restricted to half term outings unless homemade from scratch - holidays and parties don't count you see! I want to chomp on more whole raw foods to help keep the diabetes at bay. So more cooking of the savoury (low salt and fat).

2) To be more organised! Yes I know I am me but I've got to at least try!

3) To learn a new skill once a season and learn/try something new everyday

Ontop of these we are going to be spending large chunks of time on the house and finishing off old projects 🙂 And just being a family and having friends round etc... I am looking forward to getting the garden in shape and hopefully passing my driving test.

The guitar must be practiced daily 🙂

Happy New Year Everybody!

2012 Summary :) (by )

January

At the beginning of 2012 we were moving into our new house, so January was a mix of boxes, crates and buying things.

The cats liked it Kettle, cooker, cat

January also saw my birthday and friends helping us move.

And Mary's which saw me hosting the first party in the new house!

February

February saw my cousins coming to visit 🙂 And we dressed Alaric up as Gotye and created a spoof video.

Jean and Mary arguing about the ukele

It also saw valentines day when Alaric bought me a microphone which has lead to me producing recordings of my works 🙂

Baby Mary and the Microphone

and pancake day

March

March saw World Book Day were Jeany dressed up as a dinosaur for the book Harry and His Bucket Full of Dinosaurs!

Book Dinosaur Hear Me Roar!

And Mothers Day when we all went off to Gloucester Cathedral to look at some art!

The Family at the Spire

Alaric also upgraded the hardware running our Internet stuff (such as this web site) to a more powerful single box, rather than the previous two-box setup, which has simplified administration. It was a lot of work merging the two configurations, but this means that future upgrades will be a lot easier!

April

April was an excessively busy month and set the pace for the Summer!

There was me reading at Not The Oxford Lit Fest

Poetikness of Me at The Not The Oxford Literary Festival

Jean was in the Stroud Dance festival

Jean getting reading for the Stroud Dance Festival 2012

April is of course the month of birthdays so we had a BBQ for Alaric, my Brother and some friends who all have April birthdays 🙂

Jeany giving Uncle David an easter bonnet biscuit

Alaric took a day off work for his birthday, and spent it sorting out his workshop.

Then there was the Cheltenham Poetry Festival!

Me and The Story Tree

And as if that were not enough for one month I also won a bronze medal in the Gloucester Creative Olympics for my song Windy Gloucestershire 🙂

Me with My Bronze Medal Song catagory

Alaric wrote a toolkit for building 9P servers in Chicken Scheme.

Easter

Springtime Fairy

Visit to Petersfield

May

Cake pops! As a moving in present to ourselves we got a cake pop machine which we have had lots of fun with 🙂

Cake Pops our first ever batch

We enjoyed our garden 🙂

Jean and Mary in the Pirate Ship Pool

I read at a National Flash Fiction day event in Oxford

Sarah Snell-Pym Reading at National Flash Fiction Day

I read at the Stroud Site Festival

Saffy the Purple Poet at Stroud Site Festival Slam

We went to the Olympic Torch Relay in Painswick.

Torch Relay

Mary's Christening

Mary's Christening

and House Warming

House Warming and Christening Spread

June

The Queen's Diamond Jubilee - we made cake

Diamond Jubilee Cake

And went to Party in the Park in Gloucester

Queen Jean

One festival I was performing at was canceled due to the site flooding but a last minute booking was made for me to read at the Stroud Water Festival. It was very wet!

Pinky the Cat a.k.a Jeany at Stroud Water Festival

My textural science art was in an exhibition at Centre Arts in Cheltenham.

Sweet a textural representation of Sucrose including knitted molecule and actual table sugar

Fathers Day:

Alaric sharing his fathers day breakfast with the girls

We attended the Cheltenham Science Festival

Baby reading at the Cheltenham Science Festival

Our garden started to seriously feed us 🙂

Home grown salad

I drew a picture for Mid Summer and we made solar cakes.

Solsist

We made a Turing Machine cake for the centenary of Alan Turing, the father of modern computing.

State Table on top of Turing Machine Cake

Wychwood festival were I was running a workshop making pompoms 🙂 We hung out with same of our friends and had a great time 🙂

Anna at Wychwood 2012

Alaric finally caught up on all the overdue financial returns and dissolved our company, Warhead.org.uk Ltd, a lump of work which had been hanging over us ever since life became crazy after The Flood.

Wedding Anniversary we went to Bristol and found a hill to slide down and went on a bridge tour and lots more.

Bristol hill slide

We went to our friends Zaphire's House warming and we made cake pops 🙂

House Warming Cake Pops

July

I became a poetry installation in a manor house in Oxford for the On Form Sculpture Garden

Poetry Installation

We all went off to Cornbury Festival as I was running a craft workshop - this time sock puppets and monsters 🙂 Jean beat the IQ elves and as did I so we got a signed photograph 🙂

Jean on Ecovers griffitti wall

I drew a picture to mark the 'discovery' of the Higgs Boson

The Higgs Field

I learnt to solder 🙂 So did Jeany at Bristol Hack Space

Drawdio soldering kit

I drew postcards for a charity auction

Space Postcard

I went to Bristol to perform during Science Show-Off, I knitted a buckminsterfullerene which was nicked by an audience geek!

Knitted Bucky Ball

It was my Dad's 65th Birthday so we organised a Discworld themed party, including a cakes of course and films and books and of course a BBQ.

Ferfer's 65th birthday meal

Alaric took up Krav Maga.

I made bread puppies for my friend Ella's birthday in Bristol 🙂

Bread Puppies!

Alaric wrote a turtle graphics system to help children learn programming in Scheme.

August

I ran Centre Arts an art gallery for 2 weeks - it was lots of fun.

The Wild Cherries at Bead Workshop Centre Arts Cheltenham

We went to my friend Claire's Birthday and we made English Rose cakes for her 🙂

Rose Cake close up

Olympics

Jean cheering Team GB

I took part in a wonderful city centre festival called Art Tournament - part of this included the fact that I had been short listed for Gloucestershire Poet Laureate.

Gloucestershire Poet Laureate Finals During Art Tournament

Cranham Feast

Cranham Feast Jubilee Bell Ringing

My friend Buko and her family visited from Australia!

Buket visit from Australia

Off we went to the Hullabaloo Festival which had been rained off earlier in the year - it was very wet but again but there was one fantastically sunny day and the ran was fun in the Centre Arts Markee anyway 🙂 We did face painting and a junk music workshop.

Hullabaloo Festival

We went to the @ Bristol Center to see Robot Football and meet up with my friend Ella - we managed to miss the actual event as we picked the only half day to arrive on but it was ok as we found them testing and repairing the robots outside the centre and the students who had made them showed us how they worked 🙂

Jean with Robot at AT Bristol

At the end of the summer I was too too tired and went for a short break in Essex where we chased ducks round a trout pond and everyone bar me went swimming and we camped and had BBQ's and it was lovely.

Ducks by the trout pond

September

Jean moved up a grade in Ju Jitsu - she is now a Yellow Belt White Stripe, she also attended the National Seminar.

Jean started Junior School!

Hello Kitty School Gear

Jean's Dr Who Birthday

Door Tardis

We went to the 1000 Kites festival.

Jean at 1000 Kites 2012

Alaric's Dad visited from South Africa

Lionel Making Bread with Jean

Hosted Chicken UK

My cousin Sheila visited from Australia 🙂

October

I released The Little Book of Spoogy Poetry

The Little Book Of Spoogy Poetry

Took the girls to the farm shop for half term fun 🙂

In the maze of wooded bower

I performed in my second ever slam which was part of the Cheltenham Literature Festival!

The Speil Tent

Took part in the first Green Unconference in the UK, I talked about Upcycling and Junk Art and ran a workshop.

Sarah Snell-Pym explaining Ucycling and Junk Art at All Saints Church Long Ashton at the Green Unconference

We took Alaric's cousins to Legoland as a thankyou for help with the deposit for the house - it was amazing!

Those are real stunt actors jumping from the lighthouse at LegoLand

Halloween

Pumpkin pals

November

The end of October is a cluster of anniversaries of various types which we celebrated with my Brother and his Wife having just celebrated their first wedding anniversary and it being mum and dads and mine and Al's first going out anniversary. Michelle and David got cake, mum and dad the picture I had returned from the Cricket Club.

Anniversaries

Released the audio book of The Little Book of Festive Poetry 🙂

Bonfire Night

Bonfire Cake

The whole family took part in NaNoWriMo and writing fever took over the house; even Alaric did some work on his existing fiction project 🙂

The kids taking part in NaNoWriMo

We celebrated 10 yrs of being together by going for a four day holiday in London which was amazing, we saw Gotye at Hammersmith Apollo 🙂

He whacks them cymbals! Gotye

We had a house full of Pudseys for Children In Need 🙂

Two Pudsey Bears

I went to an improvisation workshop which was lots of fun and helped me with my stage skills 🙂

Angel candle

I went on a one day writing retreat which did result in 10, 000 words of my novel being writing in one day 🙂

Writing treats at a writing space retreat

Millie came to stay bringing my friend Becca and her sister along 🙂

Three Cheeky Monkeys

We went to the NaNo Finishing Party 🙂

Queen of the NaNo

December

I performed at the first ever Cirencester Poetry Slam

Sarah Snell-Pym performing at New Brewery Arts in Cirencester

Mark and Lucy's Wedding

Heart Sugar Cubes

Wrote, recorded and illustrated Percival's Christmas Wish in an attempt to raise money for Shelter and homeless kids.

JustGiving - Sponsor me now!

Tish and Clare's Wedding

Atish and Clare

Released the e-book of The DoomsDay Collection and celebrated the Winter Solstice marking the dawn of a new age.

Solstice Light, The Dawn of a New Age

Visited all my Essex cousins.

Playing at Pheobe and Rachel's House

Went to the Island for the Snell Family Christmas Meal

Snell Christmas Dinner 2012

Friends Christmas Party (I forgot the camera)

Had friends over for Mulled Wine and Minced Pies

Home made mince pies and parcels

Celebrated Christmas

Tree, presents, kids not yet dawn

Had a belated Pym Christmas

The Pym Christmas Table spread 2012

In little dribs and drabs throughout the whole year, Alaric's managed to tidy up his home directory, which had become terribly fragmented after several hurried fresh starts with new computers due to previous ones being stolen over the past few years, with restoring stuff from backups not being an immediate option but happening later. This had led to different projects being in all sorts of different places, so it was good to bring them all together and organise them. As part of this, he rebuilt the Kitten Technologies site, and reorganised and rewrote the ARGON Project web site. And, finally, he continued his part in the standardisation of the next version of the Scheme programming language.

New Year!

Elixir Boardgame New Years Eve 2012

Dreams of Bizar (by )

Ok so last nights dream... this guy called Matt I know who is a fantastic musician was setting up a performing arts space which needed loads of work, the building was shambolic and dark with wires hanging out of the ceiling. I was the manager and it really was a big rambling old building.

Creatures from the nth dimension had broken through these sort of crab-dogs which I was shooting whilst trying to prevent tenticles rising from the basement in a Cthulu type manor. Mean while Alaric had gotten himself trapped on the elysian fields which were accessible through the attic windows (these are the Greek/Roman version of Heaven). He was in the van and was trying to avoid the giant that was smashing it up whilst not driving off the edge.

Matt was wondering around doing DIY serenely whilst smashing mosters with a bit of two by four whilst asking me if I thought that we should put a climbing wall up in the hall way. Then one of my uni friends James (another fantastic musician) knocks on the door to ask if he can borrow the recording studio - I tell him to talk to Matt and it is all agreed but then he is followed by the backing choir, which was a 60 + strong hippy choir run by Jesus. They all wore technicolour coats made of patch work or knitted.

I was starting to get a bit frazzeled at this point so had to shrink Jean and Mary and pop them in a travel coat with two magical mice for protection. Mum and Dad then turned up looking grim with a credit card given to them by James Bond for me - I used it to hire a paranormal assassin to kill the giant and retrieve Alaric and whilst doing all of this I was making drinks and food for everybody and fretting over the fact I couldn't find any disinfectant to clean the crab-dog gunk up :/

Oh also it was tipping it down and grey outside in the dream and only the fields in the attic were sunny. There was flooding occuring and refugees began to turn up expecting food but Jesus told me he was out of miracles and that it was up to me.

When I told Al the dream he said, 'Ah so the fret about organising the big family meal has started - I thought you'd been rather calm.'

Logging, Profiling, Debugging, and Reporting Progress (by )

I have a hypothesis. The hypothesis is that, in software, the goals of logging stuff for audit purposes, reporting progress to a user on the course of a long-winded process, profiling a system to see where it is spending its time in the long run, and debugging certain kinds of problems (in particular, hangs of multithreaded systems come to mind, although many other kinds of problems too), can all fundamentally be met by a single piece of software infrastructure.

I say this because, largely, I write very similar code to do all four of them, and end up building unnervingly similar-looking ad-hoc solutions, despite the fact that a single well-developed tool could do all of them really well.

Basically, all of them boil down to a bit of code stating what it's about to do and what it's just done at interesting points.

Let's look at each in turn.

Software often writes, either to a log file for unattended bits of software such as daemons, or direct to the user if there is one, lines of text describing the current state of affairs. Generally, it logs when steps in the process are started (to document what it's about to do), when steps end (to document the results), and sometimes during iterations over something or other (although that's really just a special case of the previous cases, as each iteration is itself a step). This is often done for auditing reasons - to find out what operations led up to some state of the system, for a plethora of reasons - and sometimes to offer a kind of primitive progress reporting; you can look at the log to see how far something has gotten.

But we have more sophisticated progress reporting, sometimes. Rather than using a dumb logging facility to say "I'm about to process 1000 objects", then "I have processed N objects so far" periodically and letting the user read the text and do the maths to work out how far through we are, we can use a more evolved progress reporting infrastructure (usually called a "progress bar"), telling it when the process starts (displaying the bar) and ends (removing the bar from the display) and periodically updating it on progress by telling it how many steps we have to do and how many are currently done. Given that higher-level information, it can produce a more intuitive display, and even estimate the time to completion and report a rate of progress.

Although the display is rather different, there is a great commonality in the interface - we are stating the fact that a process has started (and how many steps it will take), and periodically stating how far we have done, and then confirming when we are finished. A high-level progress reporting interface could just as easily generate lines in a log file as display a progress bar on a graphical screen, from the same software interface.

I've also used logging for debugging, quite extensively. Rather than logging user-level messages that relate to the user's model of the state of the system, I can also log messages about the internal state of things "under the covers", and use that to guide my own investigations of problems caused by the internal state going awry. Sometimes I will do that by just printing those messages to a console I can observe, and removing or commenting out the code that does so when I'm not debugging; but more featureful logging infrastructures allow for "debug logging" that is hidden away unless specially requested, meaning I can leave the logging statements present in "production code" and turn them on at run-time, which can be a great boon.

Meanwhile, in profiling and debugging server applications with multiple threads handling requests in parallel, I have often used a particular technique. I've given each thread a thread-local "current status string", and then peppered my code at interesting points with a call to set the current thread's status string with a summary of what it's about to do. I can then easily ask the system to display a dump of all running threads and what they're currently doing. Java makes this easy with threads having a name string and the ability to introspect the tree of threads and thread groups; in a system written in C using different processes rather than threads, I've written my own infrastructure to do it using a shared memory segment with each process getting a fixed-sized slot therein and some lock-free atomic update mechanisms to avoid races between the processes and the sampling tool.

This lets me do two things. Firstly, when the system is grindingly slow, I can quickly see what every thread is up to. Is everyone all blocked in the same operation, all queuing for the same limited resource? Secondly, when something hangs, I can look at the state of the unresponsive threads to see what they're doing. Generally, this shows me what lock they're stalled on, and who has the lock (or, more tellingly, if nobody seems to have the lock). And finally, I can profile the system during heavy load by periodically sampling the status of each thread and then building a histogram of statuses, to see which statuses take up most of the time. However, I had to be careful with this - it worked well if the status string merely recorded what step was in progress, but not if the status string included details of the data being worked upon, because that made the strings different even if the system was at the same step, so they didn't count for the same histogram bucket. The solution was to mark such parameter data in some way (such as by always quoting it with square brackets) so that profiling tools can make themselves blind to them.

Sometimes I've run into trouble with the fact that the same procedure might be called in many different places; so the thread status shows me that I'm using that procedure (and where I am in it) but doesn't tell me why. If I was attaching a debugger I could view the entire stacktrace, but that pauses execution (which may interfere with the delicate race condition I'm hunting down) and it's fiddly to do that for every thread or process in a system to get a good snapshot of the overall state, which is why I prefer the explicit-status approach in the first place. The solution is simple: rather than replacing the entire status string, each procedure should just append their status to the existing string, and remove it when it's done. In Java I did this by capturing the current thread name and then assigning "originalName + processStep" each time, then restoring "originalName" at the end of the process; in C, I did it by recording a pointer to the end of the current string and just writing our new string there, and then setting it to "\0" at the end (being careful not to overrun the buffer!). This turned the status string into a kind of mini-backtrace, but rather than logging each and every procedure call, it only logs things considered important enough to log. When looking at a snapshot of a system with a hundred concurrent requests in progress, this is a great time-saver.

But, clearly, all of the above really just comes down to "reporting the current status of a thread of execution". All that changes is what the infrastructure does with that information. There's no reason why the same notification from the software cannot generate a line in a log file, an on-screen log message to a waiting user, the creation, updating, or removal of a progress bar, the updating of a global scoreboard on what all the threads in the system are up to, and the updating of a profiling histogram of where the system is spending its resources.

So here's my proposal for an API.

(task-start! name [args...]) => task handle
Starts a task, which is some unit of work. Tasks may be dynamically nested within a thread, opening tasks within other tasks. Returns a task handle. The name is a string describing the task, which should itself be static, but may refer to the additional arguments positionally with %<number> syntax.
(task-status! handle status [args...]) => void
Notifies the system that the given task's current status is the given status string, which again may refer to the arguments positionally with %<number> syntax.
(counted-task-start! steps unit-s unit-p name [args...]) => task handle
Starts a task with the given number of counted steps. The singular name of a step is unit-s and the plural name is unit-p, eg "byte" and "bytes". Otherwise, as per task-start!
(counted-task-status! handle steps-completed [status [args...]]) => void
Notifies the system that the given counted task's current status is the given status string, which again may refer to the arguments positionally with %<number> syntax, and that the given number of steps have been completed so far. The status and arguments can be omitted if there's really nothing more to say then the number of steps completed.
(task-end! handle) => void
Ends a task (counted or not), given its handle.
(task-fault! handle message [args...]) => void
Logs a fatal fault (internal failure within the task) of a task. The message should be a static string, referring positionally to the arguments with the usual syntax.
(task-error! handle message [args...]) => void
Logs an fatal error (invalid inputs, or invalid behaviour from a subcomponent, but not a problem with the task itself) encountered by a task. The message is as above.
(task-warning! handle message [args...]) => void
Logs a non-fatal problem encountered by a task. The message is as above.
(task-debug! handle message [args...]) => void
Logs a debug-level event encountered by a task. The message is as above.

Now, this looks like a very ordinary logging framework, with the exception of an explicit hierarchy of nested tasks and the explicit mention of "counted" tasks with a known number of steps. Yet those two additions allow for the same interface to cover all of the above goals.

Seeing how they might generate a log file for auditing is trivial. The explicit knowledge of task nesting lets us give context to common subtasks used in lots of different places, be it by something as simple as indenting each log message according to the subtask nesting depth or creating a an aggregrate "task pathname" by combining all the names of parent tasks into one long string to log.

Generating a profile is also trivial; using the task names and status strings without interpolating the arguments, we can obtain a measure of what bit of the code we're in - either in isolation, or including the entire context of parent tasks, as desired. And we can also generate histograms of the arguments for each different status if we want; if a given subtask takes widely varying amounts of time depending on how it's called, we can find out what arguments make it run slowly to narrow down the problem.

Debugging is helped by turning on the display of debug-level messages in the log, and by making a snapshot of the current status (status and name of the current task and all parent tasks) of each thread/process in the system available for introspecting the current state of the system. That's a useful thing to include in a crash log, too.

But reporting progress to the user is where having a common infrastructure really shines. Rather than needing the explicit construction of "progress dialogs" in interactive applications, the infrastucture could notice when a thread has spent more than a few seconds inside a counted task and produce on automatically. It would display the progress of the highest-level parent counted task of the current task hierarchy, as the overall progress measure of the operation in progress; but if a subtask takes more than a few seconds, then it becomes worthwhile automatically expanding the dialog to list the entire hierarchy of nested counted tasks with progress bars (the very tip of the hierarchy, that has not gained several seconds of age, should be elided to avoid spamming the user with endless wizzing progress bars for short-lived subtasks; only display subtasks that have shown themselves to take user-interesting amounts of time). And the display of non-counted subtasks and their textual statuses within the hierarchy can be turned on as an option for users who want to see "more verbose" information, perhaps along with each task then growing a scrollable log showing that task's history of statuses, warnings, starting subtasks, and so on.

How best to handle multithreaded tasks is an open question, depending really on the threading model of the language you're using. Perhaps tasks should require an explicit parent-task handle to be passed in, to make it clear what the task hierarchy is in the presence of threads; or perhaps newly created threads should inherit their parent's current task. Either way, with threading, it's possible for a task to be parent to more than one active subtask, and a progress reporting user interface will need to handle that, perhaps by dividing the space underneath the parent task into multiple vertical columns for each concurrent subtask, when that level of detail is required.

Also left unspecified is more detail on the "log level" concept; I've just suggested a few (fault, error, warning, status update (called "notice" or "info" in most existing logging systems) and debug, but the system really needs to make some intelligent decision as to who to notify. A server-based interactive application given a fault condition really needs to apologise to the user in vague terms, while sending a detailled crash log and raising an alarm to the system's administrators, for instance. And more complex systems composed of multiple components may have fairly complex rules about who should be notified about what level of event in what context, which I've not even begun to worry about here...

But, to conclude, I think it's a shame that there's so many very different bits of infrastructure that have very similar interfaces and are used in similar ways by software, but with very different goals. I think it'd be great to create a single progress-reporting interface for applications to use, and make different goals into pluggable components beneath that interface!

WordPress Themes

Creative Commons Attribution-NonCommercial-ShareAlike 2.0 UK: England & Wales
Creative Commons Attribution-NonCommercial-ShareAlike 2.0 UK: England & Wales