One Year, 1Password

It was a year ago today I wrote (very briefly) about trying 1Password. As the title suggests, I ended up buying the software during the trial period. In fact, it wasn’t long after I wrote that post that I bought the software.

A lot has changed in that year (in terms of 1Password, that is). 1Password 5 for OS X and iOS was released, as well as 1Password 4 for Windows and an Android client was released. Perhaps most interestingly, the iOS app changed to a ‘freemium’ model, with an IAP to unlock other functionality such as software licences. The change that caught my attention, however, was the support for unlocking via TouchID with iOS 8. This was, for me, something that transformed password entry on my phone, particularly when combined with the app extension support that allows one password to be integrated into other apps, or in the case of Safari, in the share sheet.

Now, don’t get me wrong, I’m well aware other password managers exist, and probably have the same (or more) functionality than 1Password. I’m also well aware that 1Password is quite “Apple-centric”, although they do now have a Windows client that’s pretty much on a level playing field with the OS X counterpart. I can’t comment on the Android app though, having never used it.

For me, it’s just that 1Password gives me what I want and need from a password manager. For example, last week, there was an update to the iOS and OS X apps, which – on iOS at least – brought support for One-Time Passwords as a premium feature. Since I use 2 factor authentication on a number of sites, I decided to replace the Google Authenticator app I was using for these codes with 1Password’s implementation instead. Technically it means that there’s more involved in me getting the codes, but I also don’t have 2 separate apps that are essentially doing the same thing.

Ultimately, I have very little to say against 1Password. Sure it’d be nice to have a Linux client, and I’m not sure how much use I’d find the software on a mobile device only… but they’re hardly deal-breakers. I’d certainly recommend people at least look into it, and at the end of the day, if the cost puts you off, there’s always another password manager’s around!

On Unit Testing

I hate unit testing, I also love unit testing; not like Marmite, I always hate Marmite.

Unit testing is one of those things, in my experience at least, that every developer dislikes doing – particularly in a TDD team. Working using TDD feels completely backwards (initially, at least); you don’t have any code to test, so how could you possibly write any tests? But more importantly, unit testing takes the developer away from the developing, from what they enjoy, and in their mind, from what they’re employed to do.

This is wrong, and developers should know it – deep down, I actually think a lot of developers do know this – testing is not a bad thing, and certainly isn’t something to avoid like a plague. Automated testing is a painful process to start adhering to, and even painful to support as the software grows. I’d definitely say that it’s worth it over time, because as the source code continues to grow, and be refactored, the automated testing should at least give peace of mind when making changes.

I don’t have any references for anything I’ve said so far, it’s all opinion, and I’ve yet to work anywhere that has unit testing nailed down; I’ve certainly worked in places where the intention is there, and there’s even some unit tests, but they’re often not kept up-to-date, or cover a tiny percentage of the codebase. Personally, in a non-professional sense, there’s one reason I like unit testing – the passing of tests.

Unit Test passes

Who doesn’t like things to pass?

This may just be me, but I feel a huge sense of satisfaction when I’ve written a unit test and I see the little green ticks against the test (I’m very aware this is an image of Visual Studio/ReSharper’s unit testing UI, but I’m sure unit test results are similar in other IDE’s). I always have the small niggling doubt in the back of my mind that the test is wrong, but that’s when I can go back and check. The test has passed, so now I can relax knowing that the result of what I was testing is what the expected result was. Sure I’m going to get tests that fail, but that’s the point, it highlight’s that something is wrong (even if that something is the test itself).

I’m not always for unit testing, however. I’ve seen some places where people insist on unit testing a UI; I don’t get that, it seems like a lot of effort for very little gain, particularly as UI’s are much more prone to changing than back-end/business logic. I’m happy for someone to prove me wrong if there’s a convincing argument for why I’m wrong, but as things stand I can’t think of any time I’d want to unit test a UI.

All that being said, however, I still can’t find bring myself to write a unit test, so for now I’ll have to rely on good old-fashioned test plans.

Working With Flux

Sadly, not flux capacitors; happily, a short post, because there’s not much to say. I’m talking about f.lux, small application that has made quite a noticeable impact on my daily usage of computers.

The concept is fairly straightforward, and I think the flux website does a much better job at explaining it than I ever could:

it makes the color of your computer’s display adapt to the time of day, warm at night and like sunlight during the day.

It’s even possible that you’re staying up too late because of your computer. You could use f.lux because it makes you sleep better, or you could just use it just because it makes your computer look better.

Essentially, the application reduces the amount of blue in your screen as the sun sets, meaning your display gets a much warmer tone. I originally started using f.lux at work; due to the location of my desk, I notice the diminishing light quite quickly, and found that the brightness of the monitors was a little too much to class as ‘comfortable’. This is the main reason I use f.lux – it makes using a computer in lower light settings much, much more comfortable, I find the screen to be easier on my eyes, so I can work later in more comfort, or I can use my computer at home later at night without straining my eyes.

You may be thinking, “I design X, so I need to see the colour as correctly as I can”, well you can disable f.lux for an hour, or until sunrise, or for an hour. The point is, that you can disable it to suit your needs, and then just re-enable it afterwards

The best part, in my mind, is that it’s free. There is no charge to use the application, all I wish is that I could have it on my phone without jailbreaking it. Regardless, I’d easily recommend f.lux, at the very least, it’s worth a try.

Getting Things Done

I’m fairly new to the concept of Getting Things Done (GTD), in fact, I suspect like many people, I’ve been introduced to it partly from the Free App of the Week promotion on iOS, where Things from Cultured Code is free for both iPhone and iPad – they’re separate apps – until the 28th (and the desktop application is discounted by 30%).

I’m not going to try and explain the concepts of GTD to you, there’s plenty about it online, and actually found this video to be quite helpful in helping me figure out how I should be using Things. This blog post was actually one of the tasks I had in my ‘Next’ list…admittedly for the last 3 days, but today I’m finally checking it off!

I think one of the reasons I’ll probably keep on using things is partly because I’m very prone to saying that I’ll do something, or that I need to do something, but then completely forgetting about it. I can remember to do things regularly; like go to work on week days, or shower in the morning, or eat… I can only assume, therefore, that I’ll be good at remembering to review items I have in Things. As soon as those items are in ‘Today’, I’ll have to move them or do them, because I don’t like having badge icons on my phone.

For me personally, I think something like this will be more of a benefit than I currently think, purely because (as mentioned above) I frequently forget what I needed to do. Adding the things I need to do to the Inbox just to get them off my mind has already been a benefit (even though I’ve only added around 15 items so far…).

While there are other software solutions available to use, such as OmniFocus, but for now I’m going to stick with Things and see how that goes. Who knows, maybe it’ll even help me keep up with writing posts on here (and thereby improve my writing!) – I already have another post I want to write…

Relocation, relocation, relocation

Rather than just mimicking the phrase “location, location, location”, there have been 3 things that have moved recently.

My Job
I recently moved job, after finding that I wasn’t enjoying things there anymore. An added bonus is the whole career progression aspect, but also the new experiences and people I’ll meet. Not to mention the table tennis, which I really need to improve on!

My Home
A mere 6 weeks after getting married, my new wife and I were told that we had to move, as the landlord of the place we were living had sold it. Cue a mad rush to find somewhere else to live! Luckily we’ve found somewhere that’s bigger and not much more expensive, and generally better for us than where we were, so with hindsight, a nice turn of events.

My Server
I believe I’ve mentioned his before, but my server is hosted with Digital Ocean. I’ve had nothing but good experiences with them; sure I’ve had to use their support a couple of times, but not because of reliability issues, more to understand how to do something with the control panel, or a billing type issue. I had to use their support again the other day, when I tried to move this server over to the new London data centre they launched, following an error when transferring a snapshot from the Amsterdam DC to London. The initial ticket, and subsequent responses were all received within 45 minutes – nothing marked as urgent, that’s just the response time for ‘normal’ users. Can’t argue with that!

A short 5 minutes (plus DNS propagation time) after the snapshot was in London, I’d got the server up and configured in a new home. If only moving house was so easy…