Preserving Future Memories
My childhood is well documented thanks to my mum who did a great job of photographing it and keeping chronological albums from birth up to about when we were about 16 or more. It's great that I can I go back to my parent's and look through the albums of memories I'd otherwise have forgotten.
While it was my mum that took on this responsibility in our house it's now down to me to take, store and look after these future memories for not only us, but more importantly, for the kids.
It's not that I mind it, in fact I enjoy taking photos, but I do sometimes worry about how best to preserve these memories. Remember a while back I asked if this hard drive sounded broken. It came out of a friend's external hard drive "backup" and he'd given it to me in desperation as it had all his photos and videos of his son from birth to about 3 years of age. I couldn't do anything with it and he later sent it off to a specialist company who couldn't either.
You can imagine how distraught he must have been to lose all those memories. He now uses a ReadNAS box with RAID, as do I, but is this enough? RAID won't help in a fire or a burglary.
While I could make multiple backups both locally and in the "cloud" I don't think you can beat actual physical photos. Not everything is better on a PC. For me, I don't think you can ever beat an actual book where you can turn real pages!
For the past four years on Mother's Day I've made Karen a photo-book which contains a chronological set of photos looking at the year gone by. Here they all are:
The first is told from Felix's point of view and he goes on to narrate all four of them. The latest is the larger one at the back, in which the last page has all four kids on. Karen finds it hard to keep from crying when she looks through them (as do I) and it's something I want to keep on doing until they're in their late teens.
In lieu of traditional photo albums these books at least give me some peace of mind, that should the worst happen and all photo files are lost, then it's not the end of the world. These books are precious to me and kept well out of reach of the kids who are only allowed to look at them while supervised and with clean fingers.
Look after your photos!
The first three books were printed by Jessops, while this year I tried out Blurb and was very impressed. Although quite expensive (worked out about a pound per page) it's a quality book and the "image wrap" cover is nice and the publishing software easy to use. Blurb deliver world-wide I think. Give them a shot.
3/4 Comments Read - Add | Mon 15 Mar 2010 | Open »
Photos of New Office Build From Two Years Ago
While reminiscing yesterday I uploaded a set of photos of the destruction and re-build of the garage, which became Rockall HQ. You can see all the photos here.
Some of you DIY geeks might like a look. It was also an excuse to test out the Upload button in Picassa, which works well and seamlessly integrates with my existing Google account. Nice 'n easy. Just how I like things to be.
Two years on and I have no regrets in spending 7k on a new office. It was definitely one of my better ideas and worth every penny. Without an out-of-the-house office my productivity would be almost zero. You can't work at home when you have three kids 3 and under. Not a chance.
People often say to me "I bet you need to be really disciplined to work from home" to which I normally say "Not really". I just treat it as much like a normal job as I can. Leave the house as much before 9am as I can and come back in just after 5pm.
If you're wondering how I know it came to 7k or where all the money went then here's the log of the costs I kept:
| Window | 108 |
| Heater and Lights | 150 |
| Lock | 160 |
| Skip | 145 |
| Skip | 145 |
| Sand | 101 |
| Blocks | 270 |
| Concrete for footings | 250 |
| Screwfix - misc | 62 |
| Labour | 1200 |
| Cement 10 bags of | 25 |
| Metal mesh reinforcing | 40 |
| B&Q - Misc networking bits | 65 |
| Concrete for slab | 310 |
| weather strip for door | 8 |
| Large lintel and wood | 50 |
| Lintels and bricks from Jewsons | 128 |
| Plastering | 475 |
| Blocks | 80 |
| Door | 38 |
| Door frame | 45 |
| Rendering | 760 |
| EPDM (rubber) for roof | 341 |
| Wood for roof | 480 |
| Midi Skip | 75 |
| Screwfix - misc | 165 |
| Jewsons - fascia wood etc | 157 |
| B&Q - up-n-over frame, fixings etc | 37 |
| B&Q - Guttering et misc | 94 |
| Laminate flooring | 84 |
| Masonry paint | 36 |
| Wickes -- Gate and wood | 70 |
| SUBTOTAL | 6154 |
| Furniture for office | 900 |
| TOTAL | 7054 |
My original budget was 5k, but I think that was a little unrealistic. As you can see it soon adds up.
It all leaves me wanting to demolish and rebuild something else. I love a good "project" me.
2/3 Comments Read - Add | Fri 12 Mar 2010 | Open »
Twas Two Years Ago
Anybody remember what's going on here?
How time flies...
1/8 Comments Read - Add | Thu 11 Mar 2010 | Open »
Flex: Using A SharedObject to Remember User Settings
Try this:
- Open the Contact Manager app.
- Change the columns that are visible by using the "column chooser" button, as below:
- Quit the browser.
- Re-open the browser and visit the app again.
- Notice how the visible columns are the same ones as before you closed the browser!
The View component I've been developing recently now uses the Flex equivalent to the cookie - the SharedObject - to remember your choice of columns across sessions.
Note that the same column preferences are shared across all browsers on your PC as the SharedObject is per Flash player install rather than per browser.
For now it won't remember your preferred order of columns (did you know you can drag and drop columns to change the order!?). I'll work on that. The updated demo now remembers the order of your columns! Nor does it remember the width of them. I'll work on that too.
In the mean time here's the updated source code for both the Domino database and the Flex source code. Enjoy. More to come...
...can anybody think of anything else this View component is lacking before I can consider it a universal solution for all your Notes-to-Flex migration tasks?
4/9 Comments Read - Add | Wed 10 Mar 2010 | Open »
Flex: A Toggle-Style Column Component for Your Views
Adding even more functionality to Flex "view" I've been building I've now added a "toggle column" to the list of available column types:

The idea is simple. You click the icon in the column to toggle a field value on the back end document. The icon in the view is either on or off and is dictated by the value stored in the field. It's an idea I've mentioned before which I've now made into a re-usable and customizable component.
In this example I'm using the idea of being able to mark certain contacts as favourites and you can see a working example in the Contact Manager app. The component itself can be re-used in almost any scenario though.
Adding a toggle column to a View is as simple as adding one line of XML to the View's configuration, which is specified in the backend Domino database, as discussed previously.
The XML looks like this:

As you can see it's fairly easy to configure and customize. You can easily change the icon, field name and what the "on"/"off" values should be for the field. You can also add a tooltip for the column.
The Column value of "starred" refers to the name of the XML node of each document which holds the field value we're interested. When the grid is first loaded it will show the icon as on or off depending on the value in the "starred" node.
Clicking on the toggle column on sets the value of the field called "Favourite" to "1". Clicking it again sets the value to "".
To see the XML used in the demo open the Contacts view as XML. This is the XML format that defines the structure and data of the View component. Simple, no?
Taking It Further
If you want to go further than simply modifying a single field at a time and want to perform a more involved action then you can do what I tend to always do and add a self-referencing "computed for display" field to the backend Domino form called something like "Action". In the WQS agent you can then check the value of this field. If the value is something like "Approve" then you can run a set of actions against the document.
In this scenario the XML data for each row just needs to define a true/false value to let Flex know whether to show the icon as on or off depending on whether it's approved or not. The value for the fieldValueOn would be "Approve" and for fieldValueOff it would be "Unapprove". The actual XML data for approved documents would be "Unapproved" and for unapproved documents the column value would be "Approve". If that makes sense.
Summary
It's the simple little components like this that show how powerful Flex can be once you get going with it. With the View component and the components I'm adding to it I feel like this is getting to the point where it's a viable product that can be re-used in live applications. In fact I already am using it in live applications for paying customers.
In the next couple of days I'll update the downloadable version of the app with updated Flex source code. Before I do I want to blog about another addition to the code -- the ability to store a user's choice of columns across sessions using the Flash/Flex equivalent of cookies - the SharedObject. Give me a day or three.
