Matthew Lang avatar

Matthew Lang

Incubating Ideas

Techniques like brainstorming try to sell a way of generating ideas in a short space of time, but is there a better way?

Out of the blue you have an idea for something. A product, a book, a service, something. What do you do with it? The obvious answer here is to write it down. Anywhere. Whatever comes to hand, get that idea down. Give it an hour or two and you might simply forget it even existed.

Great. Now what?

The next step for many is to re-visit this idea at some point in the future and decide whether to act on it or not. The down side to this is that while the idea might have sounded great on its own, it is only one idea. One single good thought.

If the idea is so good then you might be thinking that it would be a challenge to improve upon it. What's better than a single idea though? How about two, three or even seven ideas that support this one single idea?

The problem is that while we might want to set aside a 30 minute session to brain storm more ideas to support this new idea of ours, the new ideas we want might not simply be there. You can't force yourself to come up with new ideas. You might be able to expand on an idea but limiting yourself to a time period will only leave you with a couple of new ideas.

If you're the patient type then how about trying a different approach?

Let your ideas incubate.

I've wrote before about incubating mind maps in the past. Rather than starting and finishing a mind map in a single session, I would re-visit my mind map on a weekly basis to give myself time to allow the central topic of the mind map to sink in. The benefits to this is that you allow yourself time to think about the central topic of the mindmap thereby allowing associations to that central topic to develop over time.

The same can be said for new ideas.

By allowing an idea to incubate over time, it gives us a chance to think about the idea. Thoughts and ideas often come at the most inconvienent of times. When you're walking the kids to school, when you're out on a bike ride, when you're anywhere other than on your computer to execute the idea.

This is a good thing though. Being away from your desk or your workplace means that you don't act on a sudden impulse to test the idea. Just make a note of it and then carry on with your day.

At the end of the day, make a more permanent note of your idea so that it can be easily found later along with any other ideas that you have had that support this idea.

Give it a couple of months and you should start to see that single idea develop into something more. And this is the benefit to incubating your ideas. An incubation period of two months can yield more positive results than a single brainstorming session could. It's not for everyone though, but I'm more of a believer that slow and steady wins the race.

Be More You ...

Fixie Friday - Look AL264

Reading Redmine: Multiple Assertions Per Test

In an effort to brush up my development skills I've been reading the Redmine source code this week. I've been curious to find out about examples of Rails applications that use Minitest.

Ever since I suggested a move away from RSpec for projects with my clients, I've been curious about real world examples of using Test::Unit/Minitest to test a Rails application. It was clear from a search of Rails applications on Github that RSpec was the preferred choice for many applications. However, after reading an email newsletter from developer Eric Davis, the RedMine project sprung to mind so I decided to check it out. Sure enough, it was the sort of application I was looking for. A mature code base using Minitest as the test framework. A few interesting points stood out which I'll cover over the next few weeks, but for today I'll talk about Redmine's multiple assertions per test.

I was always led to believe that tests ahould only contain one assertion per test. It was ingrained into me from reading countless books on TDD and hundreds of blog posts on the topic. The thing is I never questioned why this was so. It was clear from seeing the RSpec syntax why it was a benefit.

before do
  get :index
end

it "must respond with a success code" do assert_response :success end

it "must render the index view" do assert_template :index end

it "must assign the users journal" do assert_not_nil assigns(:journal) end

If your test (or 'spec' in this case) has one assertion and it fails then you know exactly what went wrong. Multiple assertions in a single test have always been frowned upon.

When I started using MiniTest as the test framework for a couple of Rails applications of my own, I started to write multiple asserts per test.

def test_index
  get :index

assert_response :success assert_template ‘index’ assert_not_nil assigns(:journal) end

It was discomforting to do but only from the view point that I had believed for so long that multiple assertions per test was wrong. However when I read the Redmine source code I was pleased to see that not only was the application not using the RSpec, it was also using multiple assertions in a single test. After an hour of reading through other tests in the code base I could see why it was done. The layout of the tests in Redmine are flat. Often there's just a single setup and teardown method and a list of tests. It makes it much easier to read.

RSpec has a number of advantages in that tests can be nested in different contexts and within each context you can define a before block to setup anything needed for the tests that follow. This can result in heavily indented code and with the practice of one assertion per test it can lead to a lot of tests relying on a number of different setup methods higher up in the test file. This can be difficult to read if a test file has a number of contexts within it.

It's re-assuring to see that while many developers might point out the benefits or reasons why we do one assertion per test, it's not a rule that is set in stone. You can include more than one assertion in a test, as long as it's a reasonable number of assertions.

Is it worth writing seperate tests for each of these or is it better to simply bundle them into a single test?

I'll leave that for you to decide. There's no right or wrong answer in my eyes. If I was still using RSpec I probably would still write one assertion per test out of habit, but having a flat layout using Minitest does make it easier to read and having multiple assertions isn't going to make it any harder for me to test my code and debug any problems.

Notebook Organisation

For the paper purists out there, a great tip for organising your notebook.

via Unclutterer

The Real Life Thor

An amazing account of a USMC pilot who ejected from his F-8 Crusader over a thunderstorm.

As the parachute opened, he felt the familiar tug upwards. Except instead of a slow descent, he experienced a rapid ascent. The powerful updraft filled his parachute like a sail and rocketed him vertically thousands of feet at a velocity of nearly 100 mph. During his ascent, he could see hail stones forming around him. The lightning was described by him as “blue blades several feet thick” and incredibly close. The thunder was so loud, he could feel it resonating in his chest cavity and remembered this more so than how loud it was.

Lt. Col William Rankin - Ejects Into a Thunderstorm by WeatherImagery

via Kottke.org

Need a Plan?

Fixie Friday - Cannondale Track Campagnolo Ghilbli Disc

Seriously, I have to question Father Tu's ability to collect bikes like this. Where does he keep them all? Still, this Cannondale Track is lovely.

Photograph of Cannondale Track Campagnolo Ghilbli Disc

via PEDAL Consumption

Book Reviews #4

It's been a while since I last posted about the books I have been reading so here's what I've managed to finish in the last couple of months.

Hannibal Series: Enemy of Rome, Fields of Blood & Clouds of War by Ben Kane

I do enjoy books based on this era and while there are many books in this genre, there are only a handful of authors who get it right. Ben Kane is one of them and his series set against the Second Punic War is great to read and grand in scale. Great characters, story and action and a little glimpse into a point in history that some might not know too much about.

Ready Player One by Ernest Cline

Set in the near future when fossil fuels have ran dry and the divide between rich and poor has grown, many people are escaping a harsh world into a virtual universe. If you grew up in the eighties you'll love this book. The story uses many of the popular videos games, table top games, movies and people who were popular with kids in the eighties. I loved it.

Blood Song: Book 1 of Raven's Shadow by Anthony Ryan

Fantasy books have been a bit hit and miss with me lately. To be honest I had almost given up on the genre. After a run of non-starters though I finally found something worth reading. Abandoned by his father at a military school, Vaelin Al Sorna has to pass a training programme that will test his limits. Then he must use his skills for the benefit of the Faith. A dark story, but it was really entertaining. Can't want to move onto the next book.

The Red Line: The Gripping Story of the RAF's Bloodiest Raid by John Nicol

After reading Anthony Beevor's book, The Second World War, my interest in the subject has been renewed with some interest. A chance spotting of a Lancaster bomber flying overhead on holiday was the nudge I needed to read this book about the RAF's raid on Nuremberg in 1944. Amazing stories of the crews who flew on this mission and amazing accounts of those who survived. Highly recommended.

A New Todoist Karma

Many of you will know my love for the Todoist service, but it just got better. The Karma part of Todoist's premium plan just got an overhaul with daily and weekly goals, streaks and it's now much more integrated into Todoist so that you can see it from your iDevice.

Definitely worth checking out.

Fixie Friday - Titanium GT Pulse

Aboslutely stunning bike. Has to be one of my favourites of the year.

Titanium GT Pulse

via PEDAL Consumption

The App.net Daily Post Experiment

For the month of September I committed to posting a 256 character post to my App.net account every day. It turned out to be more beneficial than being a simple daily nudge.

The Experiment

It was initially an idea by Matt McCabe (@mttmccb) on App.net who was committing to posting a 256 characters post with the hash tag #adn256month included in the post somewhere. It sounded like an interesting challenge, and so I also joined in for the month of September.

I set myself a couple of guidelines at the start of the month for this. A rules of engagement sort of idea.

I didn't include a task in my to-do list for this or even set a reminder. It was the one thing each day that I had to remember to do. I like to think of it as a little mental exercise for the day. Settings reminders and scheduling appointments is great for the really important things, but for little tasks like this, I wanted the responsibility to remember to fall on me.

I limited myself by excluding any tools that would automate any part of the process. Most days I opened Kiwi on my MacBook and composed a post for a few minutes, editing it down to what I needed and then posted it. At the start of the month I did manage to write three posts ahead of their intended days but I stopped doing this as it meant on those days I didn't have too much to do and that seemed to go against the whole reason why I wanted to do this. I wanted to build up a daily habit using only me. No apps, tools, or other medium to remind me or to pull posts from.

My Findings

The month went well. I only missed a single day out of the whole month. I was surprised by this as I thought I would miss at least one a week, and not having an iPhone for the last two weeks I thought I was going to miss even more days. As it turns out I was able to keep the habit going missing just a single day.

The posts themselves started out as mainly random snippets for the first week and then for the remaining three weeks I themed the weekday posts to follow a specific topic. Weeks two and three were about productivity and week four was about Rails development. The weekend posts were usually kept light hearted and not too serious.

The posts also turned out to be great for expanding on ideas for essay posts I have considered but haven't drafted anything for. The chance to write something small on an idea kept me focused on the core idea for the post and also let me test how each post was received by my followers. A favourite or a repost signified that a post might be worth expanding on.

What Next?

The experiment has finished but the idea of the daily post of 256 characters lives on. I've committed to posting a single snippet of 256 characters to App.net on a daily basis using the hash tag #team256.

It's simply too good an exercise not to do on a daily basis. My only concern is that the audience for it is rather small at the moment. I have just over a 100 followers on App.net but I suppose it's better to start somewhere.

How to Build a Popular Content Section for Octopress using Gauges

In this post I'm going to try and briefly describe how I built the popular content section working on my Octopress blog using data from Gauges.

I'm using Gauges as the traffic and analytics service for my blog. I have done for over a year now. It's simple and very easy to use which is why I like it so much. One of the great things about it though is that it also provides an API for people who want to do more with the data that they have accumulated. One feature I wanted to include on my blog has been a link to what most people have been reading in the last few days. I thought that this would be extremely easy to add given that Gauges already has all the data that I need for it.

The Leaderboard

What we essentially want to build is a leaderboard comprising of the most popular articles sorted by the number of page views they have with the most popular article at the top. With this analogy in mind I just needed to populate the leaderboard with page titles, URLs and views for popular articles from my Gauges data.

In adding this feature to my Octopress blog, I started thinking about how I would interact with this feature. That was easy. A Rake task. Adding this as a Rake task means that I can add this to another Rake task that could pull in the popular content during the generate stage. For now though I run it as a separate Rake task on its own as I might generate the site a couple of times before publishing it.

Here's how I envisioned this popular content section to run:

PopularContent.top_content(3)

So, all we're doing here is passing in the number of days that we want to look back on but there's a number of things that need to happen here:

  1. We need to connect to the Gauges API.
  2. We need to ask for the content stats we need.
  3. We need to calculate the most popular article over the time period that we pass in.
  4. We need to return the most popular article as an object with a title and a URL.

Get Connected

When we initialise this object we need to do two things:

  1. Connect to the Gauges API
  2. Create our leaderboard

This is done quite easily. When we initialise the TopContent class we pass in our Gauges ID and API key so that we can connect to our own data. In order to make this process even easier, we're going to use the Gauges gem rather than working directly with the Gauges API.

Once this is done we create a blank array that will serve as our leaderboard for compiling the top viewed articles over the last few days.

def initialize(gauges_id, api_key, days = 3)
  @gauges_id = gauges_id
  @api_key = api_key
  @client = Gauges.new(token: api_key)
  @leaderboard = []
end

Building the Leaderboard

Gauges doesn't group popular content data. Instead it serves the data you need on a date basis. So we need to ask for each date that falls in the date range we specified:

def build_popular_posts(days)
  end_date = Date.today
  start_date = end_date - days

while start_date <= end_date do content = @client.content(@gauges_id, date: start_date) content["content"].each { |c| update_leaderboard(c["title"], c["views"], c["url"]) if valid_content_page?(c) } start_date = 1 end

@leaderboard = @leaderboard.sort! { |x,y| y[:views] <=> x[:views] } end

There's a lot going on here, so let's take it one step at a time. First of all we initialize some variables for our start and end date using the number of days variable that pass in.

end_date = Date.today
start_date = end_date - days

Next, we iterate over these dates beginning with the start date.

while start_date <= end_date do
  # ...
end

For each date we're going to pull the data we need from Gauges. This is a list of top content for the date we are on.

content = @client.content(@gauges_id, date: start_date)

Next we update our leaderboard by iterating over the content that has been viewed for the current date.

content["content"].each { |c| update_leaderboard(c["title"], c["views"], c["url"]) if valid_content_page?(c) }

This is the point where we start accumulating page views for each page. The update_leaderboard method takes the page title, URL and number of views and uses them to create or update an existing entry on the leaderboard.

def update_leaderboard(title, views, url)
  position = @leaderboard.index { |a| a[:title] == title }
  if position
    @leaderboard[position][:views]  = views
  else
    @leaderboard << { title: title, views: views, url: url }
  end
end

Finally we sort the leaderboard according with the highest number of page views at the top.

@leaderboard = @leaderboard.sort! { |x,y| y[:views] <=> x[:views] }

Display the Results

Once this is done, it's a simple matter of writing the popular content to a config file using the Rake task so that we can use it in the generating of our Octopress blog. Accessing these from an html file is straight forward enough if you're familiar with working with Octopress layouts. I have the following code located in my post layout just after the post section:

<div class="related">
  <h2>Popular Posts</h2>
  <ul class="related-posts">
    <li>
      <h3><a href="{% raw %}{{ site.popular_post_first_url }}{% endraw %}">{% raw %}{{ site.popular_post_first_title }}{% endraw %}</a></h3>
    </li>
    <li>
      <h3><a href="{% raw %}{{ site.popular_post_second_url }}{% endraw %}">{% raw %}{{ site.popular_post_second_title }}{% endraw %}</a></h3>
    </li>
    <li>
      <h3><a href="{% raw %}{{ site.popular_post_third_url }}{% endraw %}">{% raw %}{{ site.popular_post_third_title }}{% endraw %}</a></h3>
    </li>
  </ul>
</div>

That's it really.

If you look at the code, you'll see a few other methods that are used to filter out data. I intentionally filter out the home page views and other pages that I don't want to include in the list. This is done just by checking page titles or paths.

I've been running this code on my blog for quite a while now. Previously it only returned a single page URL and title, but I wanted to include a list of posts so I added methods to pull the second and third most popular posts.

The code itself is quite straight forward to read and follow. It might not use all the latest Ruby idioms and tricks that many Ruby developers know and love but for me it's straight forward code that works.

The fully listed code to accompany this post can be found on Github.

Time and a Place for Client Work

There's a time and a place for client work. Rushing out the door on a Saturday morning isn't one of them.

Over the weekend I made mistake in some code I had changed for a client. After pushing the quick change to Github and then to the test environment for the client, I then realised the mistake I had made. With no time to correct the change, I decided to leave it until Monday morning. After seeing my mistake in all it's glory this morning, I admitted my mistake to my client and then proceeded to fix the code correctly.

There's no excuse for the mistake that I made but making the change on a Saturday morning when I was due to leave the house probably wasn't the best time to do it. Also I didn't read the message fully from my client that prompted the change. In my haste I missed the last sentence which would have changed the way I updated the code. A hard lesson learned.

Freelancing is definitely a learning experience and with each mistake you make you see the correct process you should be following. In this case it's client work. It should be reserved exclusively for your typical working day. In my case it's during the week at my normal office hours and only when I have at least 30 minutes to carry out the work and review it accordingly. The only exception should be for emergencies and when carrying out that work it should receive your complete focus.

It can be tempting to be the ever accommodating freelancer and provide help on your client's every request and wish, but going down that path will only degrade the quality of your work. Your clients will come to expect fully working changes when they demand them regardless of the hour of the day. Responding in this way isn't in the best interests for you or your client. Instead, defer fixes for client work for first thing the next morning or even before your main day begins if you have the time.

There's a time and a place for client work. It's during the agreed times that you already have with your client. Keep it that way to ensure your clients get the complete attention and focus they paid you for.

Want to Blog?

Write Carl's question on an index card. Put it on your wall. Answer his question. Repeat daily.

I miss longer-form pieces. I miss the minds behind the writing. Anyone can share a link with a snarky comment. I want to read the words behind your thoughts. I want to read your why.

Share by Carl T. Holscher

The Smartphone Impact

I've been without my iPhone for a week now. It's amazing how many things you miss when a single device can do so much.

It's been seven days now since I turned off my rather erratic iPhone 5. Due to a hardware fault with the screen, it phones people in my contacts, looks for voice commands I've not given and in general was just becoming a nuisance. The phone is out of contract and warranty. With a new iPhone 6 coming in the next couple of weeks, it was false economy to fork out the money for a replacement device. The last week without an iPhone has been an eye-opener.

I always hear people ask what did we do before the smartphone arrived. To be honest, we probably did a lot of the same things we do today, however the arrival of the smartphone has allowed many people to do different things with just the one device. Aside from the interruptive nature of smartphones and many people's persistence in being glued to their device, they are in fact amazing little devices. Regardless of your choice of operating systems from the big three of Apple, Google and Microsoft, it can't be said that smartphones aren't useful. In the last week I've had a real chance to see what aspects of my life are influenced by it.

I start the day with my alarm clock going, or in fact the alarm on my iPhone. I've been using the alarm on my phone for a few years now. Without it to wake me up, I've resorted to using my wife's phone to wake me in the morning. Before taking our oldest son to school I also usually flick through my RSS subscriptions with Unread. I do this just about every morning. Just a quick scan to see what's new.

One thing I have missed is the phone and messaging capabilities of my iPhone. Arranging for clients to get in contact with me is now a list of places where I might be available at certain times of the day. They can get me on iMessage, HipChat, Skype and email on my MacBook and we have a landline number that they can reach me on during normal working hours during the day. I now try and work from home rather than working from a cafe as it's easier for clients to get in contact with me.

These are the essentials parts of my phone that I truly miss having. Each has a fall-back plan to keep me going, but the loss of the convenience of the smartphone is something that's been hard to adjust to. These are the essentials, but what else is there that I miss doing?

I love taking pictures with my phone. Having the facility to snap a nice picture during a bike ride, the kids mucking about or even the latest attempt at cooking in the kitchen. Preserving these moments with images is great to do.

It's not a massive priority but participating in the social network of your choice is something just about everyone does. Staying in contact with family, friends and followers on different networks lets you connect to others in a way we couldn't before. I don't mind the hit on things social networks like App.net but it I do use Path a lot for staying in touch with family.

Logging. No, not the timber kind, the geeky, self-improvement kind. Logging tasks, actions, goals, journal entries, images, bookmarks, ideas and all that other stuff. I do this a lot with my phone. It is perhaps the one action that I do the most on my phone.

Lastly there's reading. I do a lot of reading on my Kindle, but there are times during the day where I might sit for five minutes and read a couple of things on Instapaper. The convenience of having a reading list on hand is great when you've got a few minutes to kill.

These are the non-essentials things I like to do on my phone. While my world won't stop if I don't do these things, they do make a degree of contribution to different aspects of my life. Of all these I think I miss having a camera on hand the most.

It is only for a couple of weeks more though, but what the past week has taught me is that there's only so many things that you can do on a phone and that there are apps I had installed in the past that I didn't use and therefore won't need them on my new phone. Also there's parts of the day where I enjoy not having a phone. I definitely need to tuck away my phone in the morning and in the evening. The only time should be on my phone is doing any of the actions I mentioned above and when I'm not in the company of others. Hopefully this will be easier to follow through with a little break from the magic little glass box.

Fixie Friday - 1995 Cannondale Track

The classic Cannondale Track.

Photograph of a Cannondale Track bike

via PEDAL Consumption

Be a Rock Star

Fixie Friday - Look Track Columbus Altec 2

Look Track Columbus Altec 2

via FGGT

I Voted No to Independence

Today is a big day. Not just for us Scots but for the rest of the UK as well. From that last sentence you're probably assuming that I will be voting no in today's independence referendum and you would be right. In fact I've already gone and cast my vote this morning after dropping my oldest off at school.

I haven't been convinced by the yes campaign's argument that Scotland will be richer on its own. No one can foretell what will happen if Scotland becomes independent. The best laid plans of mice and men often go awry. What I do know however is that I've lived in a country that's been part of a union for my whole life and for over 250 years before that.

Ever since I was old enough to know about politics and the prime minister, I've seen the effects that the government's decision can have on the countries they serve. Growing up in Scotland during Margaret Thatcher's time as prime minister brings back lots of bad memories from headlines in newspapers and the televised news. The backlash against the Conservative government at the time was evident everywhere. Newspapers and conversations were the main source of information and criticism. For a while it seemed that no one in Scotland liked the Conservative government that was in power at the time.

It was during this time that many Scots started to hold a contempt for politicians, especially Conservative politicians. That contempt for Conservative politicians is still around today. A lasting scar from the days of Margaret Thatcher. It's something that many people today are clinging too as their main reason for voting. They want to secure a future for Scotland that won't have Conservative government again. That's not a reason to vote. A reason to vote yes is that you firmly believe that Scotland can make it as an independent nation. You believe that a yes vote for Scotland is the best way forward. The yes campaign for me has become a campaign against the current government rather than a campaign about what an independent Scotland could achieve. And that's not the message that I would want to hear if I was considering voting yes.

So why am I voting no then?

Today I count myself very lucky. I have a flourishing career as a freelance web developer, my family have a home to live in that we can call our own and my kids have untold opportunities ahead of them. We're doing good. I've had my fair share of bumps in the road of life including three job redundancies but each time I've managed to find a new job. Some might call it luck, others determination. Whatever you want to call it I think we're doing well under the current government and the previous governments that we have had before.

Maybe I'm being cautious about the independence vote by voting no and I know that in my heart I would love to see Scotland flourish on it's own. That's when my head clicks in with a reminder that there are so many unanswered questions about being independent. I don't have all the answers and neither do the politicians. What I do know is what I know now, what I've always known. And it's working for me and my family.

I'm proud to be Scottish, but I'm also proud to be British. And that's why I voted no.

Getting Fridays Back

I really need to learn to say no.

I've been freelancing for over 18 months now. It has brought a new sense of freedom to my career but at the same time I've had to become more disciplined. Every morning I have to get up, check in with clients, work, find clients, work, invoice clients and yes, work. It has been this same cycle for 18 months now and while it provides a good income for me and my family to live on, I am beginning to question how much longer I can carry on this cycle.

The last six months in particular have seen me working flat out. I have days now where I simply close the lid on my laptop and leave the desk, glad that I don't need to see another line of code for at least 15 hours. At the end of those days I am exhausted. Mentally drained from the amount of work I've had to do in a limited amount of time. It's what a hard days work should be, but it's becoming repetitive.

At this rate, I'll be grudgingly opening my laptop in the morning. It's not how I envisioned this to be. I knew there was going to be hard work involved at the start, but I didn't think I would be working this hard for this amount of time. It feels like I've lost a sense of freedom with my freelance career.

Fed up with the five day week, I decided at the start of the year to stop accepting freelance work on a Friday and give myself time to work on my own things. It has not gone according to plan. Some Fridays I have a meeting, some Fridays I work to catch up on and other Fridays I have meetings and work.

The four day week clearly isn't working, but that's partly because I end up making myself available on Fridays.

Another plan for the future is to perhaps schedule one week off every eight weeks. I'm not sure at the moment that this will be any better than working just a four week but it is an option.

With a bit more control on work commitments I should be able to get my Friday back and start working on my own projects again. It's definitely long over due and would afford me a bigger gap between each working week.

Decision Making with Spikes

Big decisions are often fraught with risk. Sometimes though the only way to make the right decision though is to test the options first.

For the last few months I've been working on a CMS application for a client that has been steadily growing in size. We both agree that there will come a time where we will need to make some decisions about the design of the application so that it remains easy enough to maintain and develop but also scales up with the client's expected growth for the next few years.

It's something we've both been putting off for some time now, but with more projects and clients appearing in the client's pipeline, we've decided that now is the right time to start making these decisions.

The problem has always been though that if we make the wrong decision we end up too far down a path that we don't want to be. Backtracking might not be an option and working towards a different solution is something that we don't want to end up doing either.

The answer to this dilemma has been surprising simple. For each technical decision we have to make, we have a number of options that we can consider. Rather than analysing and committing to the most attractive option (in theory anyway), we have decided to take a day and implement that option in a single day to see where we get to. If by the end of the day, we're still happy that we've made the right decision, then we continue on with this option. If we're starting to have doubts, we abandon the option and try something else.

Software developers will recognise this concept as a spike. This is the idea that you carry out enough work to recognise the risks and knowledge that are associated with change in design or functionality. The spike gives the developer the chance to find out the risk and complexity involved in such a change. With the information, developers can provide better estimates for these changes or completely rule out a change.

The spike is a great way to ensure that you limit risk from a decision without committing to that decision. It will involve some time to determine if the option you are spiking is worth pursuing, there's no getting around it. However it is better to invest some time in pursuing the right decision rather than blindly committing to the wrong decision is it not?

Fixie Friday - Cinelli x Mash

Love the raw finish on this.

Cinelli x Mash

via FGGT

Death of the Watch?

Apple's addition of a smart watch to their product line is a sign that smart watches are definitely here for a while but is it too early to be calling time on watches?

A few people have mentioned that smart watches will kill the watch. I think it's a little too early to be making that statement.

The smart watch is still new in terms of technology. We've had attempts at smart watches in the past, some good, some bad, and there will be a few more iterations on what makes a good smart watch. That is until companies all meet at that point where they all agree sub-consciously agree on the design template for a smart watch. There will be a few more years yet before we get to that stage where we know that the smart watch will just work for us.

Then there's the technology aspect of the smart watch. It does so much more than a regular watch does, but do you want it to do that? Despite the fact I've had smart phones for over five years now and they've all been able to tell me the time, I still wear a watch. I like wearing a watch. It means I can keep my phone in my pocket when I need to know what time it is. If I didn't wear a watch I would probably have my head buried in phone everywhere I went. As soon I would check the time on it, I would leave it out and read it until I got bored. Thankfully I don't do this thanks to single purpose of the watch. It just tells the time.

I also don't want another device in my house that requires charging on a daily basis. I wouldn't say my house is brimming with technology but we have our fair share of gadgets in the house. A couple of smart phones, a tablet, a laptop, a Kindle, a games console and a couple of televisions. Maybe slightly less than most people but it's something I've tried to keep a cap on. The Kindle is great as it only requires charging every two or three months and only needs an hour to be fully charged. Adding a smart watch to this mix is not something that appeals to my environmental side. I'd rather have a watch that required a single small battery every couple of years than having to charge my smart watch on a frequent basis.

We've seen these statements before about technology phasing out tried and tested ways of doing things in the past.

Remember when Amazon launched the Kindle? Lots of people made predictions that books would be phased out in favour the new digital books. As convenient as a Kindle is though, sometimes a book is definitely better. It requires no power to read the book, it's just as portable and there's that great feeling of scribbling notes in the sidelines. Thankfully today there are still a healthy number of book stores around and they're filled with books. The death of the book? Not yet, which makes me wonder if making statements about the death of the watch is just technology fans getting ahead of themselves.

The smart watch does herald a change in the way we can carry technology about with us. We have another small window to look at when we're out and about seeing the world, meeting people and making experiences. That can still be done with or without a smart watch. For me, I'll be casting my eye towards the traditional mechanical watches for my next timepiece purchase. They're less intrusive, more reliable and cheaper to run over time and besides, I can do everything I need with my smart phone, right?

A Quick Guide to the Other Football Sport

Love American Football? Love writing code?

Here's a quick run down of American Football related terms in the context of software development.