The O2 Complaint Blog is Live
Thursday, November 26, 2009 at 1:33PM I'm having difficulty with my O2 service here in London. I've tried complaining, I've tried setting up a petition. I've been talking and eMailing the CEO's office. And guess what.
Its still broken.
I'm running an alternative blog about this here
LotusFear 2010 Sessions
Wednesday, November 18, 2009 at 2:01PM I'm rather shocked and humbled to be riding on the coattails of the irrepressible Paul Mooney again next year, helping him present The Worst Practices. We have a whole bunch of new stories and categories - but feel free to send us what you have..
Can this user Edit this document?
Monday, November 16, 2009 at 7:37PM Sometimes, we develop applications in Notes. Well, most of my time I do. And sometimes, I find that I just cant figure something out. I'm convinced that there's some magic-bullet function that allows us to quickly do something. For instance, today, I wanted to show something on a web or notes form, but only if the user was allowed to edit this form. Now, remember the first rule of lazy programming: Do as little as possible. So after quite un-lazily searching for stuff, I chatted with Julian and he mentioned that he had to code something like this too. Horrible, I thought. Oh well.
So lets create a field using @formula, which will give us "1" for 'this user is allowed to edit this document', otherwise "0"
rem {if he's lower than author, say no. Higher than author, say 'yes' };
thislevel := @userAccess(DbName);
@if(thisLevel < 3; @return("0"); thisLevel > 3; @return ("1"); "");
rem { Lets get a list of allowed authors for this document } ;
allowedAuthors := @name([Canonicalize]; @Author);
@if (allowedAuthors *= @UserNamesList; @return("1"); "");
Rem {default to 'no' };
"0";
So whats the magic ?
- @userNamesList returns all the users name variants, as well as his hierachical name wildcards, a global wildcard and (on a server) all the groups he belongs to - including nesting, and all the roles for this database. Its like a babel fish. One suspects this is exactly how the database itself works out permissions. Its far too useful to exist otherwise!
- The *= (permuted equality) operator compares every permutation of both lists and if one or more pair is equal, returns true. Pass in two lists and if one item is in both sides - bingo.
- @Author returns a list of all allowed authors for this form. Watch out as its not in canonicalized format.
- @return allows me to bale out as quickly as possible without having to evaluate the rest of the formula.
So there you have it. 15 years into notes and this still made me stop and think. Mostly think:
- Formula language is dammed powerful.
- I wish Formula language had a debugger!
A Pox on all NAS devices!
Monday, November 9, 2009 at 8:11PM Moores Law states that CPU power will double every 18 months and half in price. Hard drives havent really kept up with this rate of performance increase (and I'm not rich enough to buy SSD yet), but have came down in price. Our local Tesco's for instance, sells 1tb USB hard drives for £65. Very cheap. And now you have to consider that just about every household out there have these drives kicking around. Some households have multiple computers and currently use wifi for networking between them.
So how do you back up your 300gb Music collection, your 100gb photo collection, and the two machines on your network ?
Slowly.
Even the 'plug-in-the-USB' port devices take over 15 hours to copy 1tb of drive. Currently, I'm moving stuff from older USB drive storage in the back of machines into NAS devices:
- A Netgear ReadyNas Duo Device (running the latest firmware) with two fast 1tb drives in it
- FreeNas - a free NAS set of utilities, hosted on one of my VMWare ESX 4i servers.
I'm looking at 4 days to copy 1.5tb of stuff around. Honestly!
Surely there's faster solutions around ? Or do I just rip the drives out of the NAS devices and put em back into the Windows 2003 servers I have ?
Extra points for a Mac AND PC solution (three Macs in this house, one Vista PC, one Netware 7, one XP, and four Windows 2003/8 servers)
