Pages

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.