Pages

Tuesday 7 May 2013

IPoAC (IP over Avian Carriers) #offbeat #fun


In computer networking, IP over Avian Carriers (IPoAC) is a proposal to carry Internet Protocol (IP) traffic by birds such as homing pigeons. IP over Avian Carriers was initially described in RFC 1149, a Request for Comments (RFC) issued by the Internet Engineering Task Force (IETF) written by D. Waitzman and released on 1 April 1990. It is one of several April 1 RFCs.


However, in September 2009, a South African IT company, based in Durban, pitted an 11-month-old bird armed with a data packed 4GB memory stick against the ADSL service from the country's biggest internet service provider, Telkom. The pigeon named Winston took an hour and eight minutes to carry the data 80 km (50 mi). Including transfering, it took two hours, six minutes, and 57 seconds for the data to arrive, the same amount of time it took to transfer 4% of the data over the ADSL.

Picture: Pigeon

Monday 22 April 2013

An alternative to the ubiquitous standup/daily/morning meeting. #scrum #projectmanagement

Almost all the software teams I've worked with have used daily standup meetings to share information about where each member of the project stands with regard to work completed, planned, or blocked. And I think standups are fantastic for this, but they have a major flaw; everyone needs to be in the same room at the same time. I currently work for a distributed, home working company that believe in working the hours that suit your creativity. Core hours are non-existent, and staff are actively encouraged to find a rhythm that works for them. For instance, one of my coworkers takes a "workout break" each afternoon, and another (now sadly moved on to pastures new) wouldn't dream of starting the day until an espresso has been drunk slowly, and with measured care. But even here the standup still exists. 9:30am every morning we all join a group Skype chat to share our updates. Yes, it flies in the face of "set your own working hours", but I can sympathise with why it's done, we all need the information. My question however, is does it need to be synchronous?



I don't think it does. And nor do Google, Facebook, Foursquare, Dispatch, and others. The idea goes by many names; Snippets, Show and Tell, etc, but the theory is broadly the same in all cases...

"Instead of reporting in at a meeting, every member of the team sends an email to everyone else with an update on their work. It's got the usual stand-up stuff: yesterday's work, today's work, and any blockers. We tend to send them as we begin to dive into the day. This means that Mike can send his update at 7am when he starts work and Nick can send his at 10:30 a.m. when he dives in. No one's flow gets broken and we can work whenever we feel most productive. Should something come up that has to be taken care of synchronously, we're on instant messenger all day. We can talk frictionlessly about what's going on. On top of this, if I ever have a question about what someone has been working on I can always glance back at their updates. No need to take notes in a stand-up or bother someone with questions, it's all right there."
I'm a CSM, and I can't see any reason why this method of checking in each morning shouldn't work for a distributed team, an asynchronous team (perhaps split by timezones), or even an everyday co-located team. But I'm keen to hear other points of view. So please, if you have an opinion, comment below or tweet me.

Picture: Clocks

Thursday 18 April 2013

How to avoid the three big problems of telecommuting. #telecommuting #wfh #timemanagement








"You work from home? Oh, you are sooooo lucky!" 











I hear this a lot, and don't get me wrong, it's true; I did hit the commuting jackpot. However, it's not without it's pitfalls for the unsuspecting. The following is what I like to call 'The Big Three Problems'...

Problem 1: Where does work time end and personal time begin?
Problem 2: Lack of communication with the world outside your window.
Problem 3: Sedentary no longer adequately describes your lifestyle.

Let's look at each problem a little more closely. I'll then give my personal solution and/or the solution that makeuseof.com helpfully suggests.


Where does work time end and personal time begin?


Working from home full time makes it ludicrously simple to bleed work into your evening (as Mrs the Geek will readily attest to!). The thought process goes like this "It's 6 o'clock and Mrs the Geek is cooking. I'd better finish up now." So far, so good... "But this sprint test report isn't going to write itself and Johnson is going to need it for the client meeting tomorrow. I'd better take my laptop downstairs with me. I can talk to the missus while I type." Hmmm. Not so good, but the report is almost finished. 30 minutes later, just as the report is finished and Mrs the Geek hands you a glass of wine... *ping* "Oh, Skype message. Smith just finished that new piece of functionality and wants me to run some automation against it before he goes to the pub. Why not? It's only running a few commands and leaving the laptop open on the coffee table." Before you know it, it's 12:30, Mrs the Geek is already in bed and you realise the Blue Ray player has looped the menu music so many times you are mindlessly humming it while hacking out that new page object.

Solution: Create a work schedule. Set time periods that are dedicated to work and work only. You don’t have to work the typical 9-5 job because telecommuters have the freedom to set their own schedules, so if you’re most productive at midnight, go ahead and set your work hours at that time. But either way, set work hours. Also, telecommuting is a real job, so treat it like one! When you wake up, go take a shower and get dressed. You don’t have to wear a suit and tie but you’ll feel a huge difference just by slipping into a pair of jeans and a comfortable shirt – wear anything but your pajamas.


Lack of communication with the world outside your window




I'm a man that enjoys his own company, and sometimes solitude allows me to really focus. But telecommuting can be a lonely world, a really lonely world. Cabin fever is alive and well and strikes without warning after the third day where your only contact with the outside world was 15 minutes of technical updates from coworkers at the standup. But even worse than that is how easy it is to lose touch with your friends. It's devilishly simple to slip into an insular daily routine without even realising it; Wake up, radio on, shower, dress, eat cereal, turn on laptop, work until falling asleep, eat and drink occasionally, turn off laptop and radio, sleep. Repeat ad infinitum. As you can see, there was no social time in that routine. No 'drinks with Martinez from DevOps'. No 'lunch with Yvette from HR'. Not even 'meet up with Tom for a run after work' (more on this is in problem 3). You'll soon find that weeks have passed by and you didn't even notice. This is bad and needs to be rectified, hopefully before you consider the Amazon delivery man your best friend.

Solution: Video calls (Skype, FaceTime, Google Hangouts, etc), social media (Twitter, Facebook, Yammer, etc), texting, picture messaging, phone calls. Anything that involves contact with another human being, preferably involving seeing their face, is key here. I'm lucky that my current employer has a policy of "No matter what you're trying to communicate, a video call is almost certainly the right way to do it". And work extra hard to keep in touch with your friends through social media and your phone, as the usual channels of communication are limited to you when you only leave your house to buy more coffee.

Sedentary no longer adequately describes your lifestyle


The definition of being sedentary or physically inactive is;
Expending less than 1.5 kcal/kg/day in leisure physical activities, according to the National Population Health Surveys of Canada. This is the equivalent of walking a little over two kilometers or 1.3 miles, or approximately 3000 steps. For most people, that is a walk of 25 minutes or less.
3000 steps a day! There have been times when I could have walked less than that in a week! And it's easy to see how this happens. I wake up and walk to the bathroom (11 steps), I then walk to the kitchen and make coffee and toast (24 steps), back to the bedroom to get dressed (35 steps), walk to the office (7 steps), and that's where I could stay for upwards of 8 hours sat in my office chair, Mrs the Geek occasionally bringing me hot drinks and snacks. Finish work and walk to the sofa (20 steps), hire a movie from Netflix, order a pizza using the phone in my pocket, and that's my day done. I could have walked as little as 97 steps that day, a mere 3.2% of what is considered medical inactivity.

Solution: I have a standing desk at home. Not only will your back thank you 1000 times over, you can combine it with walking on the spot or a treadmill to hit your daily steps. I go for a long walk to the other side of my village and back on 2 of my 5 weekday lunches, I do my best to fit in a 30 minute workout everyday (I use my Wii for this, so it hardly seems like a workout at all) and I Geocache and hike with the family on the weekend. These are just a few things I do personally, all of which I got the inspiration for from Nerd Fitness, a site I cannot recommend highly enough for anything fitness or diet related.

I hope this article helps anyone out there suffering from the Big Three Problems of telecommuting, and maybe helps people to understand that while working from home full time is an amazing benefit, and one I would fight tooth and nail to retain, there are very real pitfalls to it unless you are careful.

Tuesday 16 April 2013

My musings on the 'perfect' password. #security #passwords

A quick search on the internet for "password security" and a few clicks will get you the following conflicting advice...
Helpful website 1: “Think of a song title or memorable phrase, take the first letter of each word and combine that with the first three letters of the website. For instance ‘I want you back’ becomes ‘iwyb’, you’re logging into GMail, so add ‘gma’ and you’ve got ‘iwybgma’. Perfect.”
Helpful website 2: “Never use a song title or memorable phrase, first lettered or not in your password. There are password crackers that can detect this.”
Helpful website 1: “Ok, well replace letters with symbols or numbers, for instance @ for a, 3 for E, etc. so you can’t tell. ‘1wybgm@’ Wow, look at that! Best password ever, eh?”
Helpful website 2: “Symbol replacement is useless nowadays as those same password crackers will take this into account.” 
Helpful website 1: “Ah ha! Well, instead of typing those keys, type one key to the right instead. So now it’s... hang on... I can get this... ‘2eunh,£’ is that right? I think so, yeah. Beat that!”
Helpful website 2: “Shifting keys up, down, left or right, can totally be accounted for too. Also, looks like you’re starting to forget how to translate that password. How many different logins do you have again?”
I'm sure you'll agree, this is pretty unhelpful. So I decided to break down my advice into the two facts I know to be correct...

  1. The best password for you is the one you’ll remember
  2. The only secure password is the one you don’t even know

These facts aren't mutually exclusive, in fact they are complementary and easy to implement. Let’s take a look at them one at a time.

1. The best password for you is the one you’ll remember

I’m certain at this point that we’ve all seen the following XKCD webcomic...



And it’s undeniable, unrelated phrases enjoy better entropy. Even when made up of common dictionary words. Allow me to demonstrate; according to howsecureismypassword.net our seemingly secure password from earlier ‘2eunh,£’ would take a mere 9 days to crack. Whereas a four unrelated word phrase ‘weird winter mass publicity’ would take 3 octillion years to crack brute force style, and is eminently more memorable. 

But you don’t want to have to remember a random four word phrase for every password you use, and didn’t I say that...

2. The only secure password is the one you don’t even know

Password managers are a godsend. I personally use 1Password, but I’ve heard great things about LastPass and KeePass too. With a few clicks I can generate the following password; ‘78/e^6HY2B+}V3nCEt&n’ for 2 nonillion years of brute force protection, save it in an encrypted file store, have it automatically submitted next time I browse to the associated web page, and even sync these details securely across my devices. And all without having to remember a thing, other than the one master password that decrypts the rest of my unknown saved passwords in the file store, and that’s where we loop back to point one (I told you they were complimentary didn’t I?), a simple to remember, four unrelated word passphrase.

TL;DR

No, the perfect password doesn’t exist. But we can get pretty close by:

1. Installing a password manager
2. Making the master password a four unrelated word passphrase

And finally; let us not forget that no matter how entropic our passwords are, this will always be true…



Saturday 13 April 2013

100,000 Scoville homemade salsa. #cooking #delicious #keepabeerhandy

Cooking the finest chilli con carne this side of New Mexico in bulk for 13 people means having to cater to the person with the lowest capsaicin resistance in the group. So, how does one ensure the hot heads in the group remain satisfied? Well, with lashings of 100,000 Scoville homemade salsa to smother their meal with of course!


I'd describe the taste as fresh and fruity, leaving a herby aftertaste and 'refreshing' heat on the tongue. Delicioso!

Friday 12 April 2013

Inspiring video on how to reduce noise and deliver quality. #inspiring #video #creativemornings

My friend Lloyd sent me a link to this video today. After some fairly shocking statistics about the shear volume of data we (as human beings) create on a daily basis, the presenter Brad Frost goes on to deliver an inspiring message on how we as the creative, impassioned minority of content creators on the internet can help to reduce the noise that people are bombarded with on a daily basis. Well worth 20 minutes of your day. 

Video link: http://vimeo.com/63437853 (Warning: Naughty language)

Thursday 11 April 2013

Want to stay abreast of updates to your project's Gems? Then look no further. #ruby #development @bundlewatcher

I recently discovered BundleWatcher, a fantastic new service that tracks releases of your project's dependant gems and gives you a heads up regarding updates when you need it.
By simply pointing at your gemfile.lock in GitHub (or uploading it), it will create a bespoke RSS feed for you to subscribe to. Simple and useful, thanks @bundlewatcher.



Picture: RSS

Wednesday 10 April 2013

ZOMG! Look what I found in a dusty box under the spare bed! #offbeat #gaming #psone

Words can't express how happy I was to find this today...



Not only is it fully functional, but it was bundled up with Metal Gear Solid and Final Fantasy VIII. I see retro gaming dominating almost all my free time for the foreseeable future. 

Monday 8 April 2013

Adding the missing element back into your Watir tests... the keyboard. #watir #webdriver #testing





Sometimes it can feel that your test suite, like this keyboard, is missing all it's keys. But fear not, it's an easy problem to fix... 







To me, automating doesn't always mean removing the physical, sometimes it means faking it


99% of the time I will .set a text area/field. However, every now and then I will need to simulate a user typing, key by key. Or I will encounter a bit of Javascript (TinyMCE for instance), that will stubbornly refuse to be set. That's when it's important to know how to fake an actual key press.


Here's how to use your very own fake keyboard


And as with almost everything on this blog, it's easier than you might think.

browser.send_keys :escape 

And that's it. But even better, you can combine key presses. Need to select all?

browser.send_keys [:control, :a]  

Here's a list of all the special keys sendable using this method (as well as the standard alphanumerics):

  • :null
  • :cancel
  • :help
  • :backspace
  • :tab
  • :clear
  • :return
  • :enter
  • :shift
  • :left_shift
  • :control
  • :left_control
  • :alt
  • :left_alt
  • :pause
  • :escape
  • :space
  • :page_up
  • :page_down
  • :end
  • :home
  • :left
  • :arrow_left
  • :up
  • :arrow_up
  • :right
  • :arrow_right
  • :down
  • :arrow_down
  • :insert
  • :delete
  • :semicolon
  • :equals
  • :numpad0
  • :numpad1
  • :numpad2
  • :numpad3
  • :numpad4
  • :numpad5
  • :numpad6
  • :numpad7
  • :numpad8
  • :numpad9
  • :multiply
  • :add
  • :separator
  • :subtract
  • :decimal
  • :divide
  • :f1
  • :f2
  • :f3
  • :f4
  • :f5
  • :f6
  • :f7
  • :f8
  • :f9
  • :f10
  • :f11
  • :f12
  • :meta
  • :command
If you found this article helpful please share it using the relevant icons below. If you have another method for sending keys or setting text areas in Javascript please comment below or tweet me.

Photo: Keyboard

Saturday 6 April 2013

London food and wine explorer badge unlocked. #offbeat #fun

Today I had planned a morning of culture at the British Museum, followed by a blog post. But Foursquare tells a different story... 

  1. Stoke Newington (Friend's house & Breakfast)
  2. Liverpool St Railway Station
  3. Holborn Tube Station
  4. Patisserie Valerie (Coffee & Brunch)
  5. British Museum
  6. Shakespeare's Head (Pub)
  7. Copita (Tapas & Wine)
  8. Morito (Tapas & Wine)
  9. Voodoo Ray's (Pizza & Frozen Margaritas)
  10. Stoke Newington (Friend's House & Wine)

Sometimes life gets in the way of content creation. Luckily tomorrow is a new day...



Photo: Tapas

Friday 5 April 2013

Running your test suite on a headless environment. #watir #testing #ci

This post was inspired by my last post. It included a snippet that has sparked a few questions from friends, so I thought I'd put together a post on what is, and what it does. 







Having your test suite use the headless gem allows you to run them in other headless environments, such as Jenkins/Hudson servers.










So, what is the headless gem and what does it do?


The headless gem is simply a wrapper for Xvfb. Xvfb allows applications that require a GUI to be run on a headless Linux machine. This is perfect should we want to run our WebDriver tests on a headless Jenkins server. This also means that should you have screenshot functionality in place (if not, it's really easy), it will still capture the page.


First things first


You'll need to install Xvfb and Firefox on to your Linux server (commands assume a Debian based OS):

sudo apt-get install xvfb

sudo apt-get install firefox


Then we install the headless gem:


gem install headless


Next, the code


Paste the following into your env.rb file



OK. I've done all that. Now what?


Now all you need to do is pass in the ENV variable at runtime in your preferred fashion. Personally, I'm a fan of setting my Watir specific environment variables in the cucumber.yml for Rake to pick up.


As always, if you found this post helpful, please share it. If you have any questions or insights on headless environments, please comment below or tweet me.


Photo source: Headless Man

When blogging code snippets from an indie coffee shop wearing horn rim glasses just isn't enough. #offbeat #fun

Public gists a little too mainstream for your blog? Feel like you need a little more ennui in your snippets? Well then, instacod.es is for you...




Disclosure: I wear horn rimmed glasses, and have blogged from indie coffee shops.

Thursday 4 April 2013

Can't find the time to shop for a lame? Neither could I, so I made one myself. #bread #lowtech #diy

I'd always been envious of the beautiful slashes my village baker could achieve in a loaf, but could never suitably replicate them even with the sharpest knife in my kitchen. It would always lead to a nasty, jagged wound, rather than a clean, spread slash. Then I watched an interview with Richard Bertinet, and he described how important a baker's lame is; "It's how a baker signs his name on every loaf". Well, after those beautiful words, how could I not own one? But as with everything, I never got the time to go and shop for one and I'd been told you shouldn't buy one online as you have to feel them, make sure the handle suits you, the length is good, the curve of the blade is correct... it seemed like an endless litany of tiny things that Amazon just couldn't communicate to me. So, after looking through the first few pages of Google Images for 'bread lame' I resolved to put one together myself. And this is the result...



It's simply a double edged razor blade from my shaving supplies pushed onto the top of a wooden skewer from the back of a kitchen drawer. I then trimmed the skewer to a good length for me, and adjusted the curve of the blade until I could achieve a beautiful signature. I couldn't be happier and it cost me a grand total of 5p.

Why being a polyglot is good for you, but bad for your boss. #softwaredevelopment #projectmanagement #cloudtechnologies

We all know at least a handful of languages. For me Ruby is my bread and butter, both for application development and UI automation, I use CoffeeScript for my web based scripting, and Bash is my go to for server management, deployment, backup scripting, etc. That's three languages right off the bat, and we haven't even touched on PHP, SQL, HTML,... the list goes on. This improves our employability, and allows us to attend a variety of meetups. As Andrew Binstock points out in the article (link below), this is mainly due to web apps and the cloud. Both are multi-language beasts that require a broad skill set to develop. 

And that's where the headache begins for your project manager. How does he assemble the correct team anymore? Where do the lines in the sand lie with regard to division of labour? How on earth will he know what language to test potential new hires on in their interviews?

We could argue that the agile mentality of "we're all engineers, there are no lines in the sand" solves this dilema. And I think it does, to a point. But shouldn't there be a go to guy for C++? Shouldn't Andy be recognised for his outstanding Node.js work? And is it fair to make a candidate write Fizz Buzz in four different languages during his interview? I'd be interested to hear your thoughts in the comments below, or tweet me instead.

Wednesday 3 April 2013

Business Insider claims I should be earning at least £78,793 as the bearer of a CSM certificate. #scrum #really?

In this article titled "15 More Tech Skills That Can Instantly Net You A $100,000+ Salary", Business Insider claim that as the proud bearer of a CSM certificate I should be expecting the thick end of £80,000 a year in salary. Is this just an American/Silicon Valley love of Scrum, or do I need to forget software engineering and start applying for ScrumMaster roles?

"Certified ScrumMaster (CSM), $119,040: a certification for the project management system called Scrum."

Full Article: http://www.businessinsider.com/15-more-tech-skills-that-can-instantly-net-you-a-100000-salary-2013-4

This Google video explains nicely why I'm a Software Engineer (in Test), not a QA #softwareengineer #notaqa #testing

I build infrastructure, tools, and software that is going to be used for testing purposes.

I understand testing requirements at scale.

I write code not session reports.

I am a Software Engineer in Test, not a QA.





Video link for those viewing on mobile: https://www.youtube.com/watch?v=jI4iSG39b6Y

Tuesday 2 April 2013

New kneading board ordered, traveling bake kit complete! Great idea mr_goodwrench! #bread #ikeahack

I've been building a fully portable baking kit for a while now. But the one thing I could never take with me was my wooden counter top, which is my favourite place to knead due to the sturdiness (no sliding around, a la wooden chopping boards) and the natural grooves and troughs of the wood grabbing the dough and helping the process. Well, thanks to the great thinking of mr_goodwrench (Reddit), now I can! Who would have thought to just turn an Ikea Lämplig chopping board upside down!



Real-time QA a.k.a If you practice CI correctly, production is your test environment. #testing #webdriver #ci

Great article about how to correctly implement the QA process in a CI environment. Written by The Guardian's software architect Andy Hume.

"When you're releasing code multiple times a day, you don't have time for full regression tests. Running a full set of integration tests across all browsers can take many minutes, if not hours. When we merge code to the master branch, we run a full set of unit tests on the Scala and JavaScript codebase, as well as check the output of some key application endpoints in a headless browser. These take five to 10 minutes to run. If they pass, the code is automatically deployed to a continuous integration environment. Developers can sanity check their changes in this environment, and if they're happy (and with the conscience of the team on their shoulders), can immediately deploy to production. Once the code is in production, QA can really start..."

Continued at:
http://www.guardian.co.uk/info/developer-blog/2012/dec/06/real-time-qa-confident-code

Rumours of my demise have been greatly exaggerated. #notdead #startofsomethingnew

As I alluded to in my last post (and after a small break due to work load), I shall be macro blogging for the majority of my posts from now on to avoid work/life causing more breaks in service. This way of blogging is new to us all (bar Alec), and it may or may not work. Please act accordingly.

Monday 18 March 2013

Mea culpa everyone





Cute cat pictures are the accepted currency of apologies on the internet, right?








I'm very sorry nothing new appeared for a week


Sincere apologies for the lack of content this past week. I was working away from home in London for part of the week, and my family was blighted by illness and teething for the other part which led to no time for writing a half sensible blog post.

"That's all well and good. But what are you going to do to stop it happening again, huh?"


After discussing various ways of getting around this issue with my friend and avid blogger Alec, I have decided to try macroblogging. 

This is going to be a learning curve for all of us. If you would like to let me know if it is working, not working, or have a suggestion please comment below or tweet me.

Monday 11 March 2013

Get Sinatra to sing it your way


Everybody in software loves up to the minute statistics. Including being able to stay abreast of the latest test run from anywhere. So why not go one step further and have Sinatra sing it for you. 




In ancient times they had no statistics, so they had to fall back on lies Stephen Leacock


This may sound a little strong, but I've heard it become a reality in the workplace far too many times:

Smith: "I say Perkins, you're scrum master for the web store. How are the latest test runs looking?"
Perkins: "I... Uh... They're... They're looking spiffing Smith. All just fine. We'll be releasing bang on time."

Problem is, the test runs aren't looking spiffing. They look terrible. And there isn't a snowball's chance in hell that the release is going to be bang on time. Problem is, Perkins wasn't paying attention in the daily standup, one too many sherrys last night meant all he could think about was the paracetamol in Victoria from HR's desk. If only he'd had something quick and meaningful to look at. Something that was green when all was well, and red when things were decidedly not well. But that also had all the detail he could wish for should he need the facts. If only the web store test department had known Sinatra.


Don't allow others to lie when it comes to your reputation. Get Sinatra to sing the truth for you. Tweet this post


You'll be amazed at how little it takes to get Frank up and performing


If you're outputting your test runs in HTML format (–format html –out latest_run.html) Cucumber has already done most of the heavy lifting, you just need to follow a few additional steps. First, install the Sinatra gem 'gem install sinatra'. Next, create a file called broadcast_results.rb or similar in the same folder as your HTML output and paste in the following:


Now, in a terminal window navigate to the folder containing the broadcast_results.rb file and run 'ruby broadcast_results.rb'. You'll see output (run in a screen session if you want to close or reuse this terminal window) that looks like this... 

== Sinatra/1.3.3 has taken the stage on 4567 for development with backup from WEBrick
 [2013-03-11 14:39:31] INFO  WEBrick::HTTPServer#start: pid=8852 port=4567

which means you're done. Navigate to localhost:4567 in a browser and you'll see Cucumber's HTML output displaying the latest test run. If you want others to view these results too, simply replace localhost with your IP address and Sinatra will take care of the rest.

If you found this post helpful, please share it. If you have any questions, or use another method to broadcast your test results quickly and easily, please comment below or tweet me.

Thursday 7 March 2013

FFCFC. Democracy at it's finest



It's 8 o' clock. The baby is in bed. "Let's watch a film" is uttered by your other half. The sweat beads on your forehead, "Oh no! She'll never agree to watch Die Hard!" But it doesn't have to end in bad feeling. You need...





Fair Film Choosing For Couples


I'm a huge fan of gamification. I'm also a huge fan of fairness. So when an opportunity arises to combine the two, I find myself unable to resist. Me and my better half are both self confessed cinephiles and love nothing more than finishing up a hard day with a bottle of wine and a film. Sadly, on occasion the overlap in the Venn diagram of our preferred genre is smaller than we'd like, and we can find ourselves at loggerheads as to what to watch. We will critique each others choices until one of two things happen; 1) We realise it's nearly midnight and we go to bed having not watched a film, or 2) One of us will relent and watch the other's film while moaning about the "total lack of credible storyline" or sniping "you don't really believe you can take out a chopper with a police car do you?". And that's what led to the invention of FFCFC.


I guarantee these 10 simple rules will lead to a lifetime of happy evenings or your money back. Tweet this post


FFCFC Rules


  1. Each member gets three choices
  2. Choices do not have to be unique
  3. Choices do not have to be a film. A choice can be episodes of a series but must equate to the average length of a film (90 to 120 mins)
  4. Strictly no criticising of choice by the loser before, during, or after viewing of the choice
  5. The winner must make the loser a commiseration beverage of the losers choice. Ingredients must be currently present in the dwelling or new choice must be made
  6. If the choice has to be streamed and streaming is not available then the winner may pick one of their remaning two choices. If no other unique choice exists a new choice must be made within a five minute time frame or the win is null and void
  7. Choices to be written on equally sized pieces of paper
  8. Choices are folded in half, then in half again. No special folding
  9. The member who first suggested watching a film flips a coin. The other member calls. Whoever loses the coin toss places the choices in the choosing vessel and mixes until happy. If you flip, but fail to catch the coin, you automatically lose the toss
  10. The winner of the coin toss picks one choice from the choosing vessel whilst looking away


FFCFC led you to a great evening of democratic movie watching? Please share this post as repayment. If you have any suggestion as to how FFCFC could be improved, have noticed any loop holes in the rules, or would like to thank me for saving your relationship, tweet me or comment below.

Wednesday 6 March 2013

Embed screenshots in your HTML output



Cucumber's HTML output is fantastic. But I began to wonder if there was a way to embed the screenshots I was capturing separately. Turns out there is, and it's incredibly simple to do.




You have failed me test. Now say "Cheeeeeese!"


Screenshots are invaluable in the diagnosis of a test failure. Often a quick look at a screenshot is sufficient to know exactly why a test has failed, saving you the time of looking back through log files or manually retesting the failure in the event of an unhelpful test output such as 'Unable to capture snippet for eval'. For a long time I used to capture the screenshots in a dedicated folder within my framework. But this made adding screenshots a little cumbersome when emailing results, and I found myself constantly adding entries in my todo list to research embedding them in the HTML output of a Cucumber run, but I kept putting it off as I assumed it would be awkward or time consuming. I was really wrong, and it is really useful.

Sometimes, a screenshot is worth a thousand log files. Tweet this post

Remember I told it you it was simple to implement?


Just paste the following code snippet into your hooks.rb (or env.rb if you're not using a separate hooks file) and you're done. You'll now notice a small 'screenshot' link underneath failed tests in your HTML output. Just click the link to expand the screenshot, and again to collapse it.


If this post helped you, please share it. If you have any questions, or use another method to manage your screenshots, please comment below or tweet me.

Monday 4 March 2013

Sweet potato and rosemary boule



Dense, cakey, and moist, with a hint of floral rosemary. So filling it's almost a meal in itself, allow me to introduce a firm favourite of the women in my life.





Rosemary and potatoes, a match made in heaven


There are three smells in this world guaranteed to make me close my eyes, inhale deeply, and smile; the smell of freshly cut grass, the smell of a baking loaf, and the smell of potatoes roasting with a sprig or two of rosemary. This beautiful rustic boule (along with a morning of manual labour in the garden) allows me to combine all three in an olfactory opus in my kitchen. As I stated in the opening to this post, this boule has made me somewhat of a rockstar amongst the lady folk, even my gluten avoiding sister in law! To the point where I have had to take bread flour, yeast, and potatoes on a family holiday to bake this in a tiny electric oven that we had to feed with coins to keep running during the bake. I'm still not sure what it is that causes such unbridled emotion, but it seems to tick all the right boxes. 

Bear this boule in mind singleton bakers of the world, I might be on to something! Tweet this post


How you too can gain fame, fortune, and fancy with rustic bread (your millage may vary)


Ingredients:

  • 1 large sweet potato
  • 1 medium large maris piper potato
  • 450g strong white bread flour
  • 300g tepid water
  • 10g fresh yeast (7g active dried)
  • 8g fine sea salt
  • 10g roughly chopped fresh rosemary
  • 1 tsp honey
  • 1 tbsp light extra virgin olive oil

Method:

  1. Bake potatoes until flesh is soft all the way through, but remove before skins become too crispy as you want to retain a good amount of moisture in the potato
  2. Once potatoes have cooled (this takes a lot longer than you think), skin them and pass them through a potato ricer or force them through a metal sieve with the back of a wooden spoon.
  3. In a large bowl combine the flour and yeast
  4. To the bowl add the salt, oil, honey, rosemary and potato and stir well with a wooden spoon until combined
  5. Slowly add water while stirring until the dough comes away from the bowl cleanly
  6. Tip onto a lightly floured surface and knead with floured hands for around 15 to 20 mins. Ensure you have turned the radio on prior to this step as the dough is incredibly tacky at first and will stick to everything until suitably kneaded
  7. Place the dough into a floured bowl, cover with a damp tea towel and leave to rest in a warm place (or wrapped in a warm towel) until the dough has doubled in size
  8. Knock back the dough, shape into a boule shape, cover with a well floured tea towel and prove for 15 to 20 mins
  9. Brush dough with a little olive oil and cut four slahes to form a square on top of the dough
  10. Transfer to a baking stone (or a thick pre heated baking tray) and bake for 25 to 30 minutes at 220 degrees. You will know it's done when the crust is a deep golden brown and the bottom will sound hollow when tapped with a finger

Protip: Place a few ice cubes in a baking tray in the bottom of your oven along with the loaf to create steam and improve the crunch and colour of your crust. Also, don't open the oven until at least 10 minutes into the bake, this is another common crust killer.

If you liked this post, please share it. If you have any questions, or would like to brag about the fame, fortune and/or fancy this boule has brought into your life please comment below.