Matthew Lang avatar

Matthew Lang

Goodbye Dr Dobb's

I haven't been reading the Dr Dobb's site for a while but back in my days as a .NET developer, it was a regular place to visit. Still, it's a shame to see there won't be any new content after the end of the year.

No amount of analysis and explanation can mask the deep, personal sadness I feel at writing about this decision. Like many of you, I grew up reading Dr. Dobb's. For me, as I suspect it was for many of you, Dr. Dobb's Journal was the lifeline to a thorough understanding of programming. I recall that when the magazine appeared in my mailbox, all other activity for the day came to a sudden stop and the remaining hours were spent blissfully poring over article after article, soaking in the information. I learned C from Allen Holub's C Chest column, operating systems from the 18-part series on 386BSD, video programming from Michael Abrash's Black Book, and data compression from Mark Nelson. And so on — each month brought new, enabling insights and explanations of often arcane topics.

Farewell, Dr. Dobb's by Dr Dobb's

Feedbin's New Updated Section

Feedbin has been my goto RSS Reader ever since Google Reader closed. I'm glad to see that development is continuing at a good pace with new features being added regularly, including the new Updated section that includes articles that have been updated after being published.

Screenshot of Feedbin's Updated section

Excellent for keeping track of changes to articles.

Custom Assertions with Minitest

In the last few weeks I've been working on a Rails 3 application for a client. The test suite doesn't cover the whole application, so along with features being added for the client, I've been gradually expanding the test suite to cover the entire application.

The test suite itself uses Minitest and the test syntax. So far I've had an enjoyable experience in adding tests for each part of the application. This week though I faced an issue of duplication in my tests. The application includes a number of mailers. Each mailer has an erb and plain text template. In my first pass at testing this mailer I had some duplication going on with the different templates for each mailer.

assert_match(/Hi there #{person.first_name}/, mail.text_part.to_s)
assert_match(/Hi there #{person.first_name}/, mail.html_part.to_s)

This is just one of many lines in the tests that assert that the two mailer types include the right content. Wouldn't it be nice to wrap these two assertions into one?

Minitest allows you to define your own assertions but up until this time I made do with Minitest and Rails' own assertions. Turns out that adding your own assertions to Minitest is easily done. I included the following assertion in my test_helper file but you can include your own assertions in a seperate file if you want to and then include that in your test_helper file using require.

module Minitest::Assertions
  def assert_mail_match(expected, actual)
    ["text","html"].each do |mail_part|
      assert_match(expected, actual.send("#{mail_part}_part").to_s)
    end
  end
end

What we're doing is adding a wrapper around Mintest's assert_match method and pass in our expected value and the actual value. The method will iterate over the two mail parts in the mailer and assert that each format has the correct corresponding content.

We can now call the new assertion in our tests:

assert_mail_match(/Hi there #{person.first_name}/, mail)

Wrapping these two assertions into one makes sense. The template formats for the mailers is unlikely to change and the two different formats have the same content albeit with different formatting.

After a couple of years of using RSpec, Minitest has been a nice change to how I test the Rails applications I'm working on. Its syntax and single way of doing things means that I find it easier to write tests. Hopefully, I'll be able to share more insights into using Minitest in the future.

This Will Help

A little self promotion. My latest book, This Could Help, is now officially available on all platforms. It’s a collection of essays and asides, all of which could potentially help you in some way. Each one is purposely written to land hard and make an impact that matters.

This Could Help — Now Everywhere by Patrick Rhone

Patrick's latest book will help many people. Not too late to buy as a stocking filler!

Measurable Goals

It's that time of year where you should be thinking about goals and plans for next year. Here's a little tip. Try measurable goals.

2015 is just around corner. Just over two weeks in fact. For many the setting of goals and plans for next year won't begin until that period between Christmas and New Year. Right about that time where the over-indulgence of food will probably lead to a planned diet for the length of next year but will most likely only be until the second week of January. I learned a long time ago that setting such goals and plans on the eve of the New Year rarely last beyond January.

Such goals often fall apart simply due to them being set in such a short period of time with little thought to making actual plans to achieving those goals. They also rarely succeed due to the fact that there's no clear end goal in mind. If your goals are financially related, why not think about the amount of savings you have just now. How much more would you like to have in savings by the end of next year? If your goals are health related, think in terms of improving the numbers you have now. What's your time for a five minute mile now? How many seconds do you reckon you can take off by the end of next year?

At the end of last year I set myself a few goals. One of them was the total amount of income I wanted from my freelance work. I had a figure in mind that was more than the previous year. A good 25% more in fact. I managed to hit that goal this year with a steady stream of work coming in. Next year I'm increasing that figure again by a further 25%. With the projected work I have for next year, that figure can't be gained by invoicing clients alone, it will require me to start thinking about income from products and services as well as perhaps re-negotiating my rates before the start of the new financial year in April.

A measurable goal is much more achievable when you define the figure you have now and the figure you want to achieve. It doesn't need to be a goal for the whole of next year either, it could be a attainable in nine months, maybe even six. The point is that a measurable goal is an attainable goal.

Faster Golf

Rory McIlroy reckons a faster version of the game is required to get more kids interested in the game again.

Everything’s so instant now and everyone doesn’t have as much time as they used to,

Golf needs speeding up - McIlroy by BBC

Having watched Ethan and the rest of his friends develop in the junior section over this year I would have to say that the pace of the game isn't the main problem. There's plenty of enthusiasm from kids to play and professionals and golf clubs are trying to provide facilities for even the youngest of aspiring golfers.

Facililties and equipment for these young kids might be more of an issue. Golf is an expensive sport (even for kids) and there's still a lack of accessible facilities that allow kids to simply go out and play when they want.

10x Your Business

If you’re serious about growing your business, I want to challenge you to aim high. Don’t just think what you need to do to grow your business by 20% — or even double your business. As you work on your goals for next year, my challenge to you is to consider thinking big. Can you imagine growing your business by 10X?

Getting your goals ready for the next year – go for 10x by Curtis McHale

I've been following Curtis McHale's career closely and I would love to see him making this goal. He's already got me thinking about my convservative goal to increase my income by 25% for next year.

Santa Science

The Santa deniers just ruin it for everyone else. The Guardian hits back with some key evidence to prove Santa is real.

Santa’s workshop is located in a very snowy region that very few people can access, so it’s unlikely that many people would get to see it. It would theoretically be possible to view it from above, via an aircraft or satellite in a polar orbit, but what would Santa’s workshop look like from this perspective? A snow-covered building on a background of ice and snow? That’s basically just blank whiteness. And infrared scans can be tricky with snow.

Santa Claus deniers: why do they get so much airtime? by The Guardian

Fixie Friday - Москва-80

Bootstrapped: Under Armour

From small beginnings to billion-dollar sports apparel giant, the story of Kevin Plank and Under Armour is proof that bootstrapping your business can succeed.

If it doesn’t sell, there’s probably something wrong with your business. If it does sell, then you don’t have to give half your company away and you can be the one making the decisions for the long term. We did that, we bootstrapped, and my first year in business, we did $17,000 in sales out of a little townhouse on the corner of 35th and O Street in Georgetown.

When we were small: Under Armour by The Washington Post

Esteemed Company

Always glad to be featured amongst some really great bloggers.

YNOT Winter Beanie

Small Moon

Makes me laugh everytime I read it.

Small moon comic from XKCD

via XKCD

Simple Job Performance

What does your job really boil down to? Execupundit knows.

My iPhone 6 Setup

For a long time now I've kept my iPhone setup largely the same. Just two rows of apps on the home screen with other apps on the following screens. I've had it this way for over a year now, but recently I've changed this setup.

More Screen, More Apps

With a larger screen on my iPhone 6, I've started adding more apps to the home screen. I started adding a third row of apps. Then a week later I added another row of apps. The following week after that I added another row.

Screenshot of my home screen

There was two reasons I kept just eight apps on my screen in the past.

  1. I like using photos of my family on my phone and so keeping the number of apps to eight means I have more screen to use a nice photo.
  2. I kept the number of apps down to the ones I used on a daily basis. At the time I also had an iPad, so I didn't need as many apps on my phone.

Things have changed though. I no longer use an iPad. The iPhone 6 screen is big enough to do most tasks I throw at it with the sole exception being programming. This means I do use my phone alot more. The tade-off of using my phone alot more rather than using two seperate devices is well worth it.

Also, I just set a nice picture of the family on the lock screen and reserve the wallpaper on the home screen for a different image from Unsplash. These two changes mean that I am free to use more apps on my home screen.

No More Folders

Another change to my previous setup is the abolishment of folders to group apps. In the past I used a verb based grouping for apps to keep related tasks together. It was fine for a while but I found that even by using the verb based folders, I wasn't gaining anything other than keeping the screen organised. I was also allowing myself to hoard apps. Even the apps that I used infrequently I kept on my phone in a folder. I didn't have a need for these apps, I simply kept them there, "just in case".

Now I simply keep a couple of subsequent screens with apps on them. My second home screen is largely apps I've installed for use every other day like banking, health tracking, server management and games for the kids (and me!).The third home screen is all Apple's own apps that I don't use often or at all. It's still annoying that you can't delete apps like Notes, Voice Memos and Tips, but with them being on the last screen I rarely see them.

One Last Thing

One last change that I have been making in terms of app usage is I've started to use web based services instead of apps which is why I have a Feedbin icon on my home screen. Previously I've used Reeder and Unread for scanning through my RSS feeds, but Feedbin has such a great user-interface for the phone that it makes more sense to use Feedbin with it's sharing feature available on my iPhone rather than adding another app layer between myself and the Feedbin service. This doesn't work for all services, but where a web based client has been designed with a phone in mind, it can be just as easy to use the web based client rather than an app to connect to your service in question.

That just about covers my iPhone setup. Tools have definitely changed since the last time I wrote about this. I might delve into these apps more in the future and my reasons for choosing them but for the foreseeable future this is what I'm sticking with.

Build a Better Business for 2015 ...

... with Nicholas Bate.

The NOW Year Calendar

I love the idea of incorporating monthly themes into the calendar.

The NOW Calendar

Each month leaves a space on the first day to enter your Monthly Theme, and you can also theme your weeks as well if you wish. These themes will act as catalysts to inspire you to move the projects forward that you want to complete and the goals that you want to turn into reality. By planning these things now, you’re setting yourself up with a better chance for success in the future. And The NOW Year Calendar keeps the plan front and centre in a design that is both simple and stunning.

The NOW Calendar

Pong Traffic Light

Wonderful idea.

Wonder if there's any other games planning on being released?

via Swissmiss

New Gaming Market

So I finished the Call of Duty: Advanced Warfare single-player campaign last night after just three sittings. I was really disappointed with the length of the game. I seemed to be finishing levels in a matter of minutes and then moving onto the next.

I know these games are popular due to their multiplayer element, but I simply don't have the time or patience for that. I like the single-player element of games. Story, plot and characters make them interesting to follow and get more involved with. Let's face it, the multiplayer element of the games doesn't really change with each new game in the series.

Maybe there's a new market for games that strictly focus on the single-player element rather than the multiplayer element?

Or maybe I should simply give up on the Call of Duty series now.

The Tech Behind the Catch

It's that catch again. This time looking at the tech behind Odell's gloves.

Beckham’s are custom-made versions of the Nike Vapor Jet 3.0, which features molded fingers, a “strategic mesh,” and “MagniGrip CL” on the palms and fingers. MagniGrip CL is a sticky material made from a mix of neoprene and silicone designed to help receivers hold on to a ball.

Odell Beckham’s Helping Hands—the Tech Behind the Catch by Nautilus

Whatever Odell was wearing on his hands, I've a feeling that his 10 inch hands are the main reason that he made the catch look so easy.

Project or Context?

Ensuring that your productivity system is correct is important if you want keep the actions flowing through it. Like deciding if a project is in fact a context.

Many of you have been reading my post on using projects in Todoist. Up to now I've always used projects in Todoist as lists. They're just placeholders for actions. What I'm starting to see now though is that some of my projects might in fact be better used as contexts.

This week I listened to Mike Vardy's Productivityist podcast and caught up with two episodes focusing on context and their application in productivity systems. It made me look more closely at my own projects in Todoist. I singled out two projects that I think are better suited to being contexts, reading and writing.

My reading project is just a list of chapters from the books I'm reading on a daily basis. Breaking books into chapters means that I can schedule different books in for different days. Reading isn't a project, it's a label to describe a particular action. My writing project is essentially a list of ideas for the blog, but writing isn't a project. Writing describes the action. Clearly something is amiss here.

A context can be defined as the circumstances that surround a particular event. In the case of David Allen's GTD framework, a context is a label that you put on your actions so that you know two things:

  1. What you need to get that action done
  2. When that action can be done

When I look at my projects I see them differently now. In the case of reading and writing, they're not projects, they are in fact contexts. They are used to describe the circumstances in which I can finish their associated actions. I read a chapter of a book first thing in the morning as it's when I'm most receptive. Writing tends to happen in the morning as well. I'm just more swithched on during this time. So not only do these contexts describe the action but also when I schedule them in the day as well.

I can't recommend enough that you continually review your productivity workflow. Finding that point where everything falls into place isn't going to happen overnight or even come boxed up and ready to go in a system like GTD. It takes time to see what works for you and what doesn't. After taking out the reading and writing projects from Todoist, I'm starting to see a change in how I view projects in Todoist. I'm still digesting Erlend Hamberg's 15 minute guide to GTD and there's a few more changes that I'm going to try with projects in Todoist, but that folks is for another day.

New Bond Film, New Car

The new Bond movie, Spectre, is out next year but that's not what I was interested in. I'm not a petrol-head, but you can't deny that the new Bond car looks great.

Aston Martin DB10

He's Back (Again)

Yes, another Terminator movie. Anyone else think that these movies will keep going and going with the inclusion of a time machine in the plot?

Still, looks like it will be good fun to watch, especially with Emilia Clarke as a younger badass Sarah Connor.

Fixie Friday - Kerry Hopkins Aero Track

Love the exaggerated gussets on this frame.

Kerry Hopkins Aero Track

via Cycle EXIF

A Recipe for Killer Apps?

While I do believe that killer apps have had their day for the foreseeable future, I can't deny that the unbundling technique can be used to create some great apps.

Ed Rex reckons there are three reasons why unbundling works. Couldn't agree more with his reason for simplicity.

When your app only needs to do one thing, it can do it really well. You can have big, clear buttons for the things people use it for — because there’s no need to clutter up the screen with all those other options you’ve got rid of. This makes your app unbelievably easy to use — and that’s what smartphone users want.

The Formula For Creating The Next Killer App by Ed Rex

Read on for the full recipe.