Posted in : In the field
Once again May arrived on time this year and it was time to slap on the shorts and drag the trusty old rotavator kicking and screaming out of it's winter hide away. A swift tankful of petrol later and it was a much happier bunny and almost looking forward to playing in the soil. We had a lot to do in a very short space of time this year as everything was running a tad behind schedule due to one thing and another. This basically meant that we had 8 afternoons to rotavate and stake out both greenhouses so that we could slap 600+ plants in the ground. So, without further delay, I fired up the rotavator and started meandering along flower beds.
This year we'd once again sterilised the beds to keep the weeds at bay, something that we didn't do last year, and regretted when the rains came ... and stayed for a while ... it ended up being to wet to pull the weeds out, without dragging out huge clods of soil, and the blanket of weeds kept the beds wet and stopped them drying out ... rock and a hard place springs to mind ... so this year we decided to kill the buggers before they got beyond the "I'm a seed" stage ... unfortunately this meant that all the beds needed an extra rotavation to make sure that the soil was turned over and the sterilising agent dispersed, we don't want to kill the plants before we even get going ![]()
After several days and a few passes of the rotavator the beds are pretty much ready for staking out so that we can plant up. A few years ago Barry decided that he should knock all the stakes in as I'm incapable of knocking in any of the 600+ stakes in an upright manner ... I've done my best to make sure he continues with that decision ... so a tad later, with a knackered Barry stood beside me, we're looking at 12 beds fully staked up and ready for the plants ... it's a good moment ... especially since I'm not the knackered muppet ![]()
The next day started early ... 11am is very early for me to be dragged off a pc huh? ... and was basically a production line involving Barry wheeling barrow loads of plants from the small greenhouse, where they'd been waiting patiently, and putting one by every stake. I got the job of shuffling along on my arse, in just my shorts, planting each one in it's new home, you should see how fast they'll grow now that they're in the soil. Eventually all the plants had been brought in and slapped by the stake that was gonna be their support for the next few months, so Barry started to help me plant up the last couple of beds. I gave Barry the glory of planting the last plant in the large greenhouse ... not because I'm generous, but because he finished his side of the row slower than me, he's getting on a tad huh? ![]()
After the large greenhouse the small greenhouse is a doddle, it only holds about 120 plants so with a tad of effort it can be prepped up, rotavated and planted all in the same day ... unfortunately this time I'm the muppet that has to make the effort. The rotavator lept through the beds happily, knowing that it was one of the last times it would be used and could soon go back to it's winter home and sleep for the rest of the year. In next to no time the 3 beds were ready for the stakes to go in ... time to go remind Barry how crap I am at knocking them in straight ... thankfully he once again agrees with me.
It wasn't long before we were standing back and looking at a fully planted up small greenhouse. It's a good job really because he was off for a weeks holiday in a couple of hours time and Wendy would have killed him if it had been delayed. Now all that was left was for me to rescue our veg patch so that the rotavator could head off for its much needed rest until next year, but that's another story and another post
... for now we were just happy to finally see all of the plants in the ground as they're far happier when they get out of their pots and everything is much easier to water ... made even easier by the fact that we have an irrigation system in both greenhouses, although you still need to hand water to ensure that each plant gets enough without drowning them all.
With all that done I meandered off to console a lonely looking crate of beer. It seemed to cheer up when I offered to take it out to sit in the sun for a quiet evening ![]()
¥
Posted in : Techno Babble
In the past I've ranted about "webmasters" and their total failure when it comes to designing websites that are accessible to everyone on the web, and Scott and myself have had many a conversation on the same subject, especially that favourite of "webmasters" called CAPTCHA's. Not only are they 100% pointless because they can be easily broken but they require that humans jump through hoops to prove that they are a human and are impossible for people with certain conditions to solve .... such as dyslexics :
Ask Oxford wrote :
dyslexia
/disleksia/
noun a disorder involving difficulty in learning to read or interpret words, letters, and other symbols.
— DERIVATIVES dyslexic adjective & noun.
— ORIGIN from Greek lexis "speech" ( apparently by confusion of Greek legein "to speak" and Latin legere "to read" ).
I single out Dyslexics in particular because I happened to be chatting with Tilqi on IRC about accessibility and the mentality of most "webmasters", the edited version of the conversation went a little like this :
<tilqi> i insist on the impossibility of an absolute globalization / standarization or whatever you call it
<yabba_hh> whilst people think that, you remain correct
<tilqi> when so much obstacle about it
<yabba_hh> the obstacles are 100% man made
<tilqi> i agree the need of it, but like many other things it is both vital and impossible
<tilqi> and you are not very comprimising today (:
<yabba_hh> lol, I'm not compromising on any day when this is the subject, I believe in it passionately
<tilqi> yea but it's like 'world peace' , lol it even sounds funny anymore.. you know it must be established but you can not and never will
<yabba_hh> but you know that it is the right thing
<yabba_hh> accessibility is the same "right thing", and is far more achievable
<yabba_hh> it's only getting "more impossible" because current "webmasters" are making it that way
<tilqi> i mean may be you can do it confiscating all the computers and re distribute and 'locked' computers with firefox installed
<yabba_hh> lol, you need to change the mentality of the coders, not the capabilities of computers
<yabba_hh> I have zero problem with using flash / js ... but things *must* work without both
<tilqi> yea but they mostly *dont*
<tilqi> sector leader websites
<yabba_hh> then that's a failure of coding
<tilqi> all the portals in the world
<tilqi> and nba.com uefa.com etc etc
<tilqi> all use flash %90
<yabba_hh> the fact that they use all this stuff doesn't make it right, it's crap coding and excludes a large percentage of web users
<tilqi> there are countries below %90-99 literacy percantage still
<tilqi> and i am not talking about African countries
<yabba_hh> pretty sure that UK is below 90% literacy
<yabba_hh> and that's without taking into account blind people and dyslexics
That sparked off a google search, where I found this site beingdyslexic.co.uk, not that it was that hard to find, it was the top result in a google search for "dyslexic forum". They have a really cool quote on their home page :
beingdyslexic.co.uk wrote :
At Being Dyslexic with have a strong sense of community built upon the ethos that dyslexia is a gift.
Becuase dyslexia has a right brain dominance, this allows you to see every day activities from a slightly different angle. Dyslexics tend to be more creative and inspirational than your average joe.
Our brains are amazing. Try to learn stratagies that help you overcome any day-to-day problems, this will then allow you to explore the world in our unique but amazing way.
Now these people sound like they really know what they're talking about huh? Sooooo you'd expect that their forums, out of all of the forums in the world would be as dyslexic friendly as possible right? Well they pretty much are, low on images, high on text content and lots of other dyslexic members that are eager to help and share, assuming they can register of course. If you click that link and then agree to their terms and conditions and proceed to the next page, guess what you get to see? That's right a bloody CAPTCHA. Misunderstanding your target audience when you run most sites is bad enough, but whoever made the decision to implement a captcha on a dyslexics site should be put against a wall and shot for total stupidity ![]()
If you use captchas on your own site, whether they're targeted at visually impaired people or not, then I'd advise you put them in the bin where they belong, not only are they a complete waste of time they lock a lot of the web away from people who do not have the ability to complete them ... ohhh, and before anybody mutters anything about audio captchas, don't, there should be no hoops for humans to jump through just to be able to use the web, period.
¥
Posted in : In the field
Our season began bloody early this year, I'd just about recovered from celebrating the new year when we started! After last years problems with the weather, when we almost lost a hundred or so plants due to the fact that it pissed it down for so long that people started buying plans for wooden boats and searching for pairs of animals that they liked. This year we were taking no chances and decided that we'd slap in a spanking new drainage system for the top beds. When I say "we" I mean the royal we, Barry just sat on his arse in a nice warm room playing with google
Did I mention it was cold? Seriously, I had to wear a jumper that was thicker than a redneck convention.
We started off with a trench that extended almost the full length of the large greenhouse, thankfully I wasn't the one who had to dig it. It ran from the existing drainage system, which is about a quarter of the way up, all the way to the very top of the greenhouse. Each of the other three top beds also had trenches dug along there full length, we're not taking any chances, and all four were connected by a cross trench. Did I mention that I'm glad that I wasn't the muppet that had to dig them? It looks like a lot of work, although the guy who dug them managed it in a long morning!
So, in I bimbled, shivering my poor nuts off, on a very cold January day, to find all our flower beds sitting on the paths and looking in a smidge of a sorry state. It's a tad weird looking at them from the under side. There was also a huge mound of stones and a coil of pipe lurking maliciously in the corner next to the wheel barrow and shovel ... so I went into the office to see Gary and grab a coffee, I'm not a cold weather person .... if it can't be done in shorts then it should be done by someone else huh? .... several coffees later, none with brandy in .. the stingy sod .... I gritted my teeth and stepped out into the cold .... after several days of acclimatising myself to the weather in this manner I started on the task of turning all the pipe, stones and soil into flower beds with a drainage system.
The first thing to do was to slap a thin layer of stones in all the trenches for the pipe to sit on, eventually it'll be wrapped in stones to stop soil clogging it up. It was interesting to see the exposed cross-section of the existing drainage system as you could see just how effective the stones were at keeping the soil away from the pipe, they looked as clean as the day that we ... that'd be the royal "we" again ... put the system in a couple of years ago. With that done I decided that enough was enough and meandered off to find a warm place and a crate of beer ... Eventually I ran out of beer so I had no excuse to not go and play with a hacksaw and some blue pipe.
Once the layer of stones was in .... and the beer finished .... it was time to start cutting the pipe to length and joining all the various sections together. The most important joint being the junction between the old and the new as it's pretty pointless draining all the beds and giving the resulting water no place to go ... kinda defeats the object. Although this was a simple task ... I'm blonde, I only do simple
... it's a smidge time consuming and playing with a hacksaw with frozen hands is not my idea of a fun day. Luckily the only arteries I cut we're all to do with drainage system. At this point I called it a day again, I used the excuse that it goes dark early, and once again went to hunt out a warm place and a crate of beer.
The next task involved a wheel barrow, a shovel, a few tons of stone and a lot of man power .... all provided by one man ..... As all of the pipework needed to be surrounded in a cosy coat of stones ... they're cosy to a pipe .... as I mentioned earlier, these act as a kind of filter and stop the soil from clogging the holes in the pipe, if you forget them then you might as well not bother digging the hole in the first place ... not that I dug the hole of course, but you get the point ... It gets pretty boring filling a barrow with stones and meandering it the length of the field, just to empty it into a hole, and then start again ... so once again I blamed the lack of sunshine and went to see if there was any beer left in the crate that was sat in a nice snug room at home.
At last the pile of stones was lower than a snakes neck tie and all of the pipes were covered with a good layer, so it was time to start putting the flower beds back where they were expected to be. This was a smidge easier than playing with the stones because at least the soil was beside the holes that it was expected to be in. However, when you're talking tons of soil, I shudder to think of just how many tons, there is no such thing as "an easy day". Once again it was just a matter of grunt work with a shovel and was more boring than watching England play cricket with ... well, just about anybody ... although the end result would be faster. Eventually all the soil was back where it was before we started and I was able to see the paths again for the first time in many a week, so I took my aching and frozen body off to accost a crate of beer.
So far the system seems to be performing as expected but until we take the roofs off the greenhouse, and have a bout of torrential rain, it's a bit hard to judge. I do know that the beds were in a far better state when we came to prepping them up ready for planting, but that's another story and another post
We're pretty confident that we won't have any problems with them flooding like they did last year, of course this now means that we'll have problems keeping them watered enough for the plants to grow, but it's easier to turn a tap on than it is to turn the weather off huh? ... anyway, I've just spotted a lonely looking crate of beer so I think I'll just go keep it company.
Have fun
¥
Posted in : Babble
Due to the fact that I decided to keep all blogrum posts out of my home page, and therefore out of my summary feeds, I've made a new full summary blog/feed for the psychotic few that actually want to be informed of all new posts on my blogs *and* my blogrums. If you're one of those psychotic few then you can now use http://innervisions.org.uk/everything/?tempskin=_atom or http://innervisions.org.uk/everything/?tempskin=_rss2.
At some point during a today that's a "today today" I might look into a way of allowing mix 'n' matching of all the 7 available feeds so that you can choose which of my blogs you want to follow. Today isn't that today though huh? ![]()
¥
Posted in : Plugins & Widgets
This plugin adds a shiny new tab to your users profiles tab in admin and allows your users to have such delights as avatars, signatures, location. It also adds the ability for each user to enter their time offset from the server and set the date and time formats that they prefer to use, although that bit means you need to do a tad of skin work
These extra profile fields, and settings, can then be used to enhance your current skin and there's also the ability to display each/any users profile instead of that ugly "edit profile" page that you get in the stock evo skins. There's a setting to allow you to restrict the viewing of profiles to logged in members so that the spamming arses don't get access to any details like aim/msn/etc
There's actually a couple of ways that you can call up the new settings in your skin. The individual methods are listed below. I'll ( try and ) explain the second method after them all ![]()
PHP:
<?php | |
$Plugins->trigger_event( 'UserAvatar', array( | |
'display' => true, // echo the results | |
'block_start' => '<div class="userAvatar">', // html used before the <img> tag | |
'block_end' => '</div>', // html used after the <img> tag | |
); | |
?> |
PHP:
<?php | |
$Plugins->trigger_event( 'UserSignature', array( | |
'display' => true, // echo the results | |
'block_start' => '<div class="userSignature">', // html used before the signature | |
'block_end' => '</div>', // html used after the signature | |
); | |
?> |
PHP:
<?php | |
$Plugins->trigger_event( 'UserSignature', array( | |
'display' => true, // echo the results | |
'block_start' => '<div class="userLocation">', // html used before the location | |
'block_end' => '</div>', // html used after the location | |
); | |
?> |
PHP:
<?php | |
$Plugins->trigger_event( 'UserSignature', array( | |
'block_start' => '<p class="userDateTime">', | |
'block_end' => '</p>', | |
'display' => true, | |
'output_format' => '$date$ @ $time$', // $date$ && $time$ will be replaced with users preferred format for date and time | |
); | |
?> |
PHP:
// for $Item use : | |
'localdatetime' => $Item->get( 'datecreated' ); | |
// for comments use | |
'localdatetime' => $Comment->get( 'date' ); |
An alternative method is to use the skintag call and pass it multiple parameters at the same time. It looks a tad more complicated but it really isn't that bad
Rather than repeat what's in the plugin code I'll just copy + paste it here and then try and explain it ![]()
PHP:
/** | |
* This is gonna be a doozy to write :p | |
* Displays all the various bits and bobs from the users profile | |
* Triggers event AMProfileSkinTag() to allow other plugins to hook in ;) | |
* | |
* @param array $params | |
* avatar - html output $avatar$ replaced with <img> tag for users avatar | |
* joined - html output $date$ && $time$ replaced with date/time user registered, display in current users preferred format and time offset | |
* location - html output $location$ replaced with users location | |
* name - html output $name$ replaced with users name ( replaces 'profile' if no linked profile ) | |
* posts - html output $posts$ replaced with total posts and comments by user | |
* profile - html output $profile$ replaced with profile link | |
* signature - html output $signature$ replaced by users signature | |
* website - html output $website$ replaced by website url, $name$ replaced with users preferred name | |
* no_guests - html output displayed when telling guests to piss off | |
* profile_display - boolean are we displaying the profile | |
* ouput_format - html output | |
* replacement vars | |
* $avatar$ - replaced with avatar html if set | |
* $joined$ - replaced with joined html if set | |
* $location$ - replaced with location html if set | |
* $posts$ - replaced with posts html if set | |
* $profile$ - replaced with profile html if set | |
* $signature$ - replaced with signature html if set | |
* $website$ - replaced with website html if set | |
* | |
*/ | |
function SkinTag( $params ) | |
{ | |
$params = array_merge( array( | |
'signature' => '<p class="userSignature">$signature$</p>', | |
'profile' => '<p class="userProfile">$profile$</p>', | |
'name' => '<p class="userName">$name$</p>', | |
'avatar' => '<p class="userAvatar">$avatar$</p>', | |
'datetime' => '<p class="userDateTime">$date$ @ $time$</p>', | |
'location' => '<p class="userLocation">$location$</p>', | |
'joined' => '<p class="userJoined">$date$</p>', | |
'posts' => '<p class="userPosts">$posts$</p>', | |
'website' => '<p class="userWebsite"><a href="$website$" title=" '.sprintf( $this->T_( 'visit %s\'s website' ), '$name$' ).' ">'.get_icon( 'www', 'imgtag' ).'</a></p>', | |
'no_guests' => $this->T_( 'You need to be a registered member to view profiles' ), | |
'profile_display' => false, | |
'output_format' => '', | |
), $params ); |
Looks simple huh ?
The main value is the output format, this is where you get to choose what's spat out and in which order. Continuing in my copy + paste fashion this is how it's called for the comments on my blog :
PHP:
<?php | |
$Plugins->call_by_code( 'am_profiles', array( | |
'obj' => $Comment, // change this to $Item for posts or $current_User for profiles | |
'profile' => '<span class="profileLink">$profile$</span>', | |
'name' => '<span class="userName">$name$</span>', | |
'avatar' => '$avatar$', | |
'posts' => '<p class="postCount">Posts : $posts$</p>', | |
'joined' => '<p class="userJoined">Joined : $date$</p>', | |
'location' => '<div class="userLocation">Location : $location$</div>', | |
'output_format' => '$profile$'."\n" | |
.'$avatar$'."\n" | |
.'$posts$'."\n" | |
.'$joined$'."\n" | |
.'$location$'."\n" | |
) ); | |
?> |
Displaying profiles is pretty similar to the code I pasted above. The main difference is that you want all fields and you pass on an extra parameter to tell the plugin that it's displaying the profile as opposed to just showing the users fancy new settings. When you do that the plugin will automatically trigger any other plugins that have the right hooks
Rather than re-pasting the sample profile pages code ( which is included in the zip ), you can see it here ( Sample _profile.disp.php ). You can just drop that page into your skins folder and it'll work
To enable other plugin developers to add their own profiles stuff this plugin adds a few new hooks. To use them you need to inform the core that you can react to them with the following :
PHP:
function GetExtraEvents() | |
{ | |
return array( | |
'AMProfileTabAction' => 'AdminTabAction() when on our profile tab', | |
'AMProfileTabPayload' => 'AdminTabPayload() when on our profile tab', | |
'AMProfileSkinTag' => 'Triggered when our SkinTag() is called', | |
); | |
} |
The events should be pretty self explanatory and are passed the following parameters :
PHP:
$Plugins->trigger_event( 'AMProfileTabAction', array( | |
'AMProfileUrl' => $this->url, | |
'user_ID' => $user, | |
) ); |
PHP:
$Plugins->trigger_event( 'AMProfileTabPayload', array( | |
'AMProfileUrl' => $this->url, | |
'Form' => & $Form, | |
'user_ID' => $user, | |
) ); |
PHP:
$Plugins->trigger_event( 'AMProfileSkinTag', array( | |
'AMProfileUrl' => $this->url, | |
'output_format' => $params['output_format'], | |
'user_ID' => $user, | |
) ); |
So, now that you've read all that, go download the plugin ( am_profiles.zip ) and enjoy your shiny new tab ![]()
¥
Posted in : Techno Babble
Finally, I've mostly integrated the old blogrum code with InnerVisions .... I've even started a tutorial on how to add a blogrum to your own b2evolution blog .... don't get excited though, it's nowhere near finished and I'm not in any great rush
. There's still a fair amount of work to do with it before it's anywhere near the end result I have in mind, and the skins a tad shagged in IE6, but I'll be re-skinning it as soon as I've got all the code working and testing, so either put up with it or switch to a browser that it does work in ![]()
I've decided that I can't be arsed importing all the current blogrums posts/comments/users, it's more hassle than it's worth so I'll just leave the current version where it is and shut down the ability to post/comment there. I also haven't redone the ability to create a new post from the frontend, I'll work on that when I get more free time. For the moment it's only linked in my drop down menus as I'd need to redo the header graphic to add it to the menu buttons, and I'm liable to go for a whole new skin if I have to go to that effort anyway ![]()
Anyway, feel free to have a play, and let me know if you find any bugs/quirks ![]()
¥