Matthew Lang avatar

Matthew Lang

Which way?

A quick reminder to set your direction with NB.

The Last of Us

This is just a quick hat tip to The Last of Us on the PS4. I've been playing this game for the last few weeks and after playing a series of disappointing games like Destiny and Call of Duty: Advanced Warfare, it's great to see gaming being taken in a different direction. The game itself was brilliant, but not only that it was backed by a great story, believeable characters and a game that didn't rely on an arsenal of weaponry.

Highly recommended.

The De-cluttered Desk

I had been putting it off for weeks, probably months in fact. My desk was slowly becoming a paper-based version of Smaug's hoard of gold . It was time for a de-clutter.

We don't have a huge house but it's big enough for us. My workspace is located in the back of sitting room where my sons tend to congregate in the evening and at the weekend. I've got a desk, bigger than probably most people have in their homes but with it being my workspace for the whole day it needs to have space to allow me to be comfortable.

Over the weekend I started organising the top of my desk and moving things about to give myself more room. It took a few iterations but I'm seeing a benefit of the change now as I write this. I have more space on my desk almost all cables are out of sight. Having got this sorted I turned towards the tower of books, magazines, papers and other dead-wood that was accumulating under my desk.

I was glad to see that I managed to get rid of a few programming books that were aimed at more of a novice level. I've kept some of these books for years, but having not read one of them in the last year, it was definitely time for them to go. Never a bad thing to throw away the books you have learned from and moved on. Old magazines for healthcare and programming were consigned to the recycle box with a vow to keep only the last month's magazine.

Lastly it was the turn off the paper. With reams of paper cluttering under my desk, it was time to keep the stuff that needed to be processed and shred the rest.

The de-cluttered desk is now ready for some productive work. It's amazing the difference that an exercise like this does for your motivation.

Paisley Packer

Lambeau Field is over 3500 miles away. No distance is too great though to root for the team you love.

Ethan the Paisley Packer

My Development Tools - 2015 Edition

I forgot to do this last year. It completely went out of my head.

Hardware

Not much has changed since I last wrote about this.

  • MacBook Pro - I'm still using the same MacBook Pro I wrote about over a year ago. It has served me well in that time, but in hindsight I think I might have been better off with a MacBook Air. The retina is nice, but I do find the Pro rather bulky when I compare it to my Dad's Air. With all the hype of a new 12" MacBook Air circulating about, I am keen to see what new products have in line for the MacBook range.
  • Mighty Mouse - It's a great mouse but one annoying thing about it is that it frequently disconnects itself and has to be re-connected. A minor annoyance.
  • Logitech K811 - Last year I made the switch to the Logitech K811 keyboard. With a Mac Mini on the desk for the family and my MBP for work, switching between these two using the keyboard is simple.
  • Dell UltraSharp U2414H Monitor - Treated myself to a new Dell monitor at the end of last year. The thing I love about is the thin bevel around the edge and the screen is crisp and clear. Also it's adjustable in terms of height and angle. If I just had a bit more room on my desk, I would definitely stretch to having two of these sitting side by side.
  • External Hard Drive - I'm still using a Seagate external drive for Time Machine backups but I am considering a bigger external NAS for this.
Hardware nice to haves

As I mentioned above, the only change I would make at the moment is to replace my Pro with an Air, but with so many rumours flying around about changes to the MacBook line up, I prepared to wait a few months to see what emerges. Other than that, all my hardware is reliable and working well.

Software

This is the software that I use every day. These are the essential applications I need to work. If I had nothing else in terms of software, then these applications would be all I would need.

  • Mail - I still haven't found the need to switch to anything else. It handles all my email needs and it's baked into OSX as well.
  • Firefox - No complaints with Firefox and probably now the longest I have went without switching browsers. For a while it was almost a yearly thing. Chrome to Firefox to Safari to Chrome ... you get the idea. The tab groups is a particularly nice feature as I frequently have different tabs open for different clients and projects.
  • Todoist - Another type of tool that I used to do a lot of switching on. I must have tried over 20 different task apps in my time, but Todoist is the one I'm most comfortable with and it's baked into my workflow now. Can't recommend this product enough, especially their premium subscription.
  • iTerm2 - Still my preferred terminal emulator although I no longer use the pane splitting feature of it and defer to tmux for managing my panes.
  • Vim - I did it, I finally made the jump to Vim and I have stuck with it. Despite a few minor annoyances that could be fixed in the config, I am definitely more productive as a programmer in Vim.
  • Dropbox - I re-assessed Dropbox my need for Dropbox a while back wondering if iCloud might better suit me, but having my a seperate service handle syncing my essential files made more sense than relying on iCloud.
  • Facetime - Facetime, in particular the audio only calls, has become my main way of chatting to clients. I only defer to Skype now when I need to have a group conversation.
  • HipChat - It's probably not a good thing to be able to have clients get in touch with you at any moment of the day, but HipChat has become valuable as a portal where I can check-in with clients during the day. Also most of my work is done on Heroku, and I have a number of deployment hooks in place that feed back to client's rooms on HipChat. This way they get to see when code is deployed and ready to be tested as well as seeing notifications from commits I'm making on Github and Bitbucket.
  • 1Password - Probably my most valuable piece of software. Secure, easy to use and does make handling your passwords a lot easier. Also found their iOS app to be useful as well.

While I do use the following software every day, these are more like nice to haves rather than essential. Still, they make me more productive every day, so I'm glad I have them.

  • Alfred - Despite Apple's changes to Spotlight in Mavericks I'm still sticking with Alfred as my preferred application launcher.
  • Fantastical - Scheduling and calender management made easy. I also use this on my iPhone as well.
  • RSS Notifier - I still use this as a mini RSS reader for service updates from the likes of Dropbox, Cloud66, Heroku, Linode and other tech services.
  • Divvy - Great little application for managing your windows. Shortcut keys for common layout patterns have been commited to memory for a long time so it makes setting up different apps on my screen easy to do.
  • CleanMyMac 2 - Broom was great for identifying huge files and folders on my MBP but this goes one further and routinely cleans out junk and reclaims a great amount of wasted space. Usually run once a month now just to keep my MBP in good shape.

The Web

A web developer's playground. Just a small selection of the many services and products that I use online.

  • DuckDuckGo - Still my preferred search engine and I'm also finding that I use the Google bang operator a lot less.
  • Github - My preferred source code management tool for client work only.
  • Bitbucket - A solid source code management tool for my private repos. It's a shame that so many people are automatically are drawn to Github. Bitbucket works well, but it does lack a number of features that Github has.
  • Heroku - I mostly work with Heroku when I am working with clients. I no longer use it for my own projects and products though.
  • Linode (Referral link) - This blogs runs on a small Linode server. Yes it is costing me money each month, but Heroku's scale of pricing from one dyno to two dynos is simply too expensive.
  • Cloud 66 - Despite many attempts at getting a bare server up and running with all the software I would need for a Rails application, I always found the maintenance and deployment of servers too much of a pain. Cloud 66 have an interesting solution in that they analyse your application and configure a server of your choice with all the correct components you need. Deployments can be done from the command line or the Cloud 66 website. So far I have two production applications running on Cloud 66. I'm happy with the setup so far.
  • LinkedIn - Jury is still out on it's usefulness. I get the odd request now and again, but most leads have come directly from email.
  • FreeAgent (Referral link) - Still the best invoicing and time tracking solution for people like myself. Works flawlessly and the FreeAgent team do a great job of keeping you notified with tips and suggestions through their Monday Motivator email.
  • Instapaper - Still the best 'read it later' service there is. Left it for a few months but quickly returned after realising how great it is.
  • Feedbin - My preferred RSS reader and still delivering new features. I am pleased to say that Feedbin is still going strong.
  • Gauges - I haven't reviewed this recently but I'll probably still stick with it. Which reminds me, I have another service in the pipeline that could be using this.

Backups

I haven't had any major backup disasters in the last year, but that doesn't mean I can stop backing up my data.

  • Time Machine - I had a minor run in with Time Machine a while back trying to get some files from a folder that had synced to iCloud. I stick with it for the moment but I'm wondering if I should look at alternatives.
  • Backblaze - I started using this at the recommendation of Curtis McHale. Good to know that if the worst happens I can get a copy of my data sent to my home asap.

So that's the tools round up for this year. I might do a progress report in the summer with any changes that happened since then. Glad to see that small paid services such as Instapaper and Feedbin are still going strong. Also good to see that I'm not constantly switching tools like I have done in the past. I seem to be reaching a state of 'tools zen' where I know what works for me and what doesn't.

Fixie Friday - KRZBERG V5 Team Edition

To TDD Or Not To TDD

Skipping the TDD cycle isn't always a bad thing to do. After all, sometimes you just want to write code.

Over the holidays I had some free time. An idea has been in my head for most of the year, but I never got round to scheduling anytime to work on it. I decided now was the chance to throw something together to see if this idea was worth exploring. To change things up a bit I decided to not follow my usual practice of TDD. Some might call that laziness and that might have been a minor factor, after all it was the holidays and this was just me trying something out, but the major factor in skipping TDD was that I had the knowledge to build the application quickly. Over the course of a couple of days I put together the first attempt at implementing this idea.

Aside from a couple of typos and minor bugs, the application is working fine and doing its job. The bugs were just oversights made by myself during those two days and they were easy to fix once found. I'm not surprised by the this as it is a simple application comprising of some basic CRUD operations and a single Rake task. Once everything was looking good, I deployed the application so that I could see it running for a few days. After a week it was clear that all was in working order. I've shared the idea with a couple of people who have so far been positive about it.

Now being a good developer I mostly write tests before I write code. It's the TDD way. This time though I skipped the tests in favour of getting something basic up and running. I had the knowledge and I ran with it. It was supposed to be just a prototype after all.

In the past I've stuck with using TDD when building even the smallest of products. At that point in my career however I was a less experienced developer. I was still figuring things out. The tests made sure that everything was working as I stumbled through different parts of the product. Now though, I have the knowledge and confidence to throw small web applications together without writing tests to in order to explore simple ideas for web applications.

Is it still a prototype then now that it has been shipped and is being used daily? Yes and no. The line between prototype and product is definitely blurred here. I would have to say that until the code itself was backed by a test suite, it's still just a prototype, an idea. So why not trash the code I have at the moment and start again from scratch using TDD?

I could, but I already know what code I need to write. Do I really want to scrap the whole thing knowing that I'm just going to write similar code again? In an ideal world I would probably do this but I knew it would be a while before I got free time like this again. The next obvious step then would be to add tests to the prototype and gradually refactor this code into something more stable. Something ready for the masses.

TDD is still a great practice to follow when writing software, but I think there's a time and a place for it. When writing software as part of your job, for a client, or as a contribution to an open source project, then yes, TDD should be used in these cases, especially if they are expected of you. However, when you are exploring code, ideas and simply playing around then I think it's down to yourself to decide. And if you decided not to TDD, don't sweat it.

TDD might be advantageous when learning a new language or framework but when you have the knowledge to build something quickly then why not. If it's worth pursuing further then start writing tests for the code that you have before things start to get more complicated.

Double Win

It was a bit of a double win today for me and my son. We each got good news today that have changed how we're viewing the rest of the year. I'm looking forward to seeing what this will end up for both of us. I'm staying tight lipped at the moment on both sets of news but I'll be sharing both of them in due time.

The Developer's Sketchbook

I've been thinking for a couple of week now about learning Rust, but something that's been bugging me has been what to build with it. Rather than focusing on what to build first, I should really be focusing on learning Rust first.

This sketchbook of implemented ideas isn’t a paper book, but a collection of small programs. It could be as simple as a folder full of Python scripts or Erlang modules. It’s not about being right or wrong; many ideas won’t work out, and you’ll learn from them. It’s about exploring your interests on a smaller scale. It’s about playing with code. It’s about having fun. And you might just become an expert in the process.

A Developer's Sketchbook for the Twenty-First Century by James Hague

Smaller Goals, More Opportunities

Setting a goal for the year is made by many at the start of each year, but people frequently give up or just abandon their goal because it seems too far away. With a little change in tact though, there's a better way of hitting your goals for the year.

Set Smaller Goals

Instead of focusing on big goals for the year, what about setting smaller goals for throughout the year? Smaller goals are within easier reach, easier to track and it means that if the goal isn't hit you can try again the next month.

When goals are set for the year, people usually forget to set aside regular checks to ensure they are on the right track. After a few weeks many people simple give up. With smaller goals though, you can set yourself a more manageable and attainable goal that will give you the confidence to succeed on subsequent goals.

Continually Refresh

The start of the new year is traditionally seen as the only and best chance to start afresh but there's more than one opportunity available in the year to do this. New year, new month, new week or even new day. There's more opportunities to start afresh than you think.

If you set yourself goals for smaller periods of time then you give yourself more chances to achieve that goal. Right okay, you didn't do that bike ride in the time you wanted for January. Could you do it in February though?

The chance to start afresh is there every day, every week and every month. You just need to decide what you can realistically achieve in those periods of time.

Love Mondays ...

... with NB.

Surprise them. Shock them even. Don't even complain once. About having eaten too much, the vacation being too short, the ridiculous queues at Starbucks on New Year's Eve afternoon. Don't let that stuff get to you. It's a little friction in the wheels of life. It may be the first week back. Heck it's the first Monday of the new year.

Back to Work? by Nicholas Bate

Click through for the reason why you do this.

Journal Prompts

In this roadmap are many questions. In your journal — whether digital or by hand — you can simply write out the question at the top of the page, and answer as if having a conversation. Don’t worry about formality, how it may sound out loud, grammar, etc. Just write your thoughts. It may seem mundane, but there is a magical quality in writing something down that cannot be fully explained. You just have to trust me and try it out.

Jumpstart Your Journaling: A 31-Day Challenge by The Art of Manliness

What a terrific idea. A roadmap of journal prompts to build up a journaling habit.

Worst movies of 2014

I would have to say that the Jack Ryan reboot was by far my most disappointing movie of 2014.

Chris Pine seems suffocated to be playing the straight-man hero (he is more at home in Stretch and Into the Woods), Kenneth Branagh is really not Russian, and really you just want to weep for Keira Knightley, whom everyone assumed would have a secret role to play in the film but is merely there to have a light bulb shoved in her mouth while she tearfully waits for her man to save her.

'Exodus,' 'Maleficent' And The Worst Films Of 2014 by Forbes

My own cinema going experience for 2014 was limited, but I'm glad to see there's a few must-see movies for 2015. Roll on 2015!

Uses for Notebooks

Sadly I failed to completely fill a whole notebook this year. Seems like a trivial goal to have, but having a notebook full of notes, ideas, mind maps and lists gives you more book than a notebook only partially filled with notes and other stuff. Armed with these suggestions though I'll have a better chance at finally filling a notebook.

via The Cramped

I Should Write More

I was on a roll there for a while, but it's been difficult to get that consistentcy back again. I am working on it, it's just the hovering over the publish button that has frequently held me back.

Software engineers should write because it promotes many of the same skills required in programming. A core skill in both disciplines is an ability to think clearly. The best software engineers are great writers because their prose is as logical and elegant as their code.
Software engineers should write by Shubhro Saha

Contextual Resolutions

Resolutions rarely affect only ourselves when we make them. Patrick makes a good point of getting those around you to help support your resolutions.

And even those things you think are just for you — to exercise more, to eat better, to meditate — may not be able to be successful without our partners actively supporting those efforts and allowing us the time, space, and resources to achieve them. Accountability helps here too. If those around you know them you are more likely to be held to the goal.
Resolutions don't happen in a vacuum... by Patrick Rhone

Fixie Friday - Anson's Pelizzoli

Ending Fixie Friday 2014 with a lovely Pelizzoli.

Photograph: Side shot of Pelizzoli bike

via FGGT, photo by Father Tu

Boxing Day

Boxing Day: a day where you avoid anything too clever and start by reflecting on (1) identifying the boxes in your life and (2) checking what's inside them.

Jagged Thoughts for Jagged Times 130 by Nicholas Bate

I already have too many boxes. Perfect timing to de-clutter.

The Burst Method

An early Christmas present from Arizona. All you need to know to get things done.

Have You Changed?

It turns out, 31-year-old me who’s played a handful of sports in adulthood is substantially more coordinated than 17-year-old me who’d played none and was suddenly five inches taller than before.

Clear Your Mental Cache by Thoughtbot

Is it time you re-visited those things that you think you know about yourself?

Goals for Fans of The Beatles

Read from the best, read from Nicholas Bate.

Fixie Friday - Sparkle Pony Holeshot Disc SS

Yeah, I know. It's a single-speed. But you can't deny it's a rather fetching bike.

Photograph: Front angle view of the Sparkle Pony Hotshot bike

via PEDAL Consumption

Christmas Quiet

I can't wait for the run-up to Christmas to finish, and for Christmas itself to begin. This frantic running about gets worse every year.

I may take NB's advice this weekend and start bringing the quiet forward.

What a Hunk of Junk

The different sound components of the Millennium Falcon's hyperdrive failing explained by Ben Burtt. The biplane used was probably more reliable than that hunk of junk.

School Run Topics

This morning's topic of conversation in the car to school with the kids was very enlightening.

Where would you go if the zombie apocalypse started?

Some barmy theories were proposed, but perhaps the best one was to hole up in a bike shop.

There's coffee, energy bars, bike tools, plenty of bikes for barricading doors and their reliable as transport.

And they say kids today aren't imaginative!