Nepal: The trek to Everest Base Camp

Published 06 December 2013 by Michael McKenna

Sign to EBC

I've hiked to Everest Base Camp and I'm not going to lie; it's easier than everyone makes it out to be. Don't get me wrong, it's not a walk in the park either but you're rewarded with some of the most spectacular scenery on the planet.

Most tours complete the trek in about 12 days and even though this is manageable there is no room for unforeseen circumstances such as sickness or weather. Try squeeze in at least a few extra days as contingency, even if you don't need them you'll be thankful for the extra time to soak up the amazing atmosphere and scenery on the way down.

Without sounding overly dramatic – this is a life changing event, and comes highly recommended from me.

Read more

Fast times in Myanmar

Published 26 November 2013 by Michael McKenna

Sunrise over Bagan

Myanmar is an emerging tourist destination nestled between India, China and Thailand. Being a union of many different ethnic regions the country comes with a diverse range of traditions and customs. It is a country defined by its difficult past and promising future; you can’t help but notice the burgeoning optimism of the Myanmar people. Come with an open mind and sense of adventure and you won’t leave disappointed.

Read more

The Plan

Published 11 September 2013 by Michael McKenna

A very rough plan for life

1) Find love
2) Quit job
3) Find beach
4) Take risks

Read more

You probably don't want your development team to share a single database

Published 14 August 2013 by Michael McKenna

The shared database model has the developers building and running the web application on their own machine locally, but connecting remotely to the shared database. It's a super simple way to get started, and on the surface it has a few benefits:

  • Changes are reflected instantly so all developers are working on the latest version of the database.

  • Large data sets do not need to be replicated to each developer's machine.

But in reality there are quite a few problems with this model.

Read more

Packing for SE Asia Part 1: What I'm planning to take

Published 19 June 2013 by Michael McKenna

There are literally a million packing lists on the internet for SE Asia, but only a few of them follow up with the realities of living out of a 38L carry-on sized bag.

All these lists have one thing in common - pack as little as possible. I set myself the one carry-on bag challenge and... I failed. Mainly because I had a couple of items that I could not take carry-on so I had to use a very small checked bag. But everything could fit into my carry-on bag ;)

Read more

Is it mine or yours?

Published 02 June 2013 by Michael McKenna

When designing the interface for your application the exact wording often comes later in the process, once you have some wire frames complete and a basic app up and running.

But once you're up and running, what is the wording you should use when referring to items that belong to your user.

For example: how do I refer to the user's tasks in the interface for CronHQ? Are they My Tasks, or Your Tasks?

I like clean, consistent, natural interfaces. But I can't tell which of the two options above seem more natural, both the use My and Your seem to flow for me as I've seen both used through out the internet. I didn't know which one seemed more natural. And that bothered me.

Read more

The back button and browser caching

Published 24 April 2013 by Michael McKenna

I recently found out that browsers absolutely love serving up cached pages when the user uses the back button.

How was this a problem?

We had an issue where'd we'd update a page in place and save the changes using JavaScript. If the user navigated away then used the back button they'd be shown the original page with the original data. They'd then think the fancy JavaScript was completely broken.

That makes a developer sad face. Especially when they put a whole bunch of effort in to creating such a seamless editing experience.

Read more

Configuring a Live Connect application to use the new Microsoft Account permission page

Published 16 April 2013 by Michael McKenna

When I first configured the new version of ConceptHQ Accounts to federate with Microsoft account using OAuth I used these two endpoints.

It resulted in a slightly jarring user experience as we switch from the new look sign in page to the old style permissions page.

Read more

OpenID and OAuth: What's the difference?

Published 08 April 2013 by Michael McKenna

I'm currently in the middle of upgrading ConceptHQ Accounts to accept a small subset of third party identity providers. Microsoft Account (previously Windows Live ID), Google, Facebook, and Twitter.

New ConceptHQ Accounts layout

However they all have a slightly different ways of allowing you to authenticate users with them.

  1. Facebook: OAuth 2.0
  2. Twitter: OAuth 1.0A
  3. Microsoft Account: OAuth 2.0
  4. Google: OpenID

Read more

ASP.NET MVC and TempData

Published 18 March 2013 by Michael McKenna

TempData initially seemed kind of magical and uber useful!

Represents a set of data that persists only from one request to the next.

Today I almost used it in a multi-instance Azure set up which didn't use session state and so didn't have a central session store. Whoops.

Read more

Error handling in ASP.NET MVC Part 2: Our implementation

Published 11 March 2013 by Michael McKenna

In part 1 of this series we looked at the options available to us to handle errors in ASP.NET MVC. In this part of the series we will look at our implementation.

Our implementation consists of two components. A custom exception filter that’s registered globally to handle any exceptions while processing filters, actions, and views. The Application_Error method in Global.aspx to catch any other errors generated while ASP.NET processes the request.

Read more

Error handling in ASP.NET MVC Part 1: Our options

Published 04 March 2013 by Michael McKenna

This blog and most of the web applications we build over at ConceptHQ are based on Microsoft's ASP.NET MVC framework. We wanted a standardised way to approach error handling across our web applications.

We had a couple of requirements

  1. Super easy to implement
  2. Covers the entire ASP.NET request pipeline
  3. See friendly error messages in production and see stack traces in development
  4. Respects HTTP status codes - we do not want the site returning a 302 redirect on error to redirect to an error page
  5. Able to log exceptions

This is the first post in a two part series, in this part we will look at the options available to us in ASP.NET MVC.

Read more

The problem with absolute token expiration in Windows Identity Foundation (WIF)

Published 25 February 2013 by Michael McKenna

When a secure token service generates a token it has an absolute lifetime (usually around 60 minutes). When the token expires the relying party must redirect the user back to the STS to get a new token.

That's not normally too much of a problem unless the session times out when the user is in the middle of editing a form and loses data. This happens a lot more often with absolute expiration as the user can easily request a form a minute or so before their session is going to expire.

Read more

Simple pluralisation in ASP.NET MVC

Published 18 February 2013 by Michael McKenna

Your software application is like an iceberg. Your users only see a small fraction of the application, the parts that they interact with. Your application can be a mess under the covers but as long as you have a beautiful, quick interface that's super usable, your uses will think your app is designed really well.

If you don't bother with correct pluralisation your users will be less likely to appreciate the care you put into the rest of your application.

Read more

Keep calm and ship

Published 15 February 2013 by Michael McKenna

Developers take pride in their work. We want to ship beautiful software using the latest frameworks, with a full suite of unit tests, that performs well and is über scalable.

But if we do that we're probably not going to get anything out of the door, as it'll never be perfect. The secret is not to worry about making something flawless.

Read more

Single sign out with Azure ACS

Published 12 February 2013 by Michael McKenna

While developing CronHQ we initially had problems with our Facebook integration. Rule #6 of the Facebook guidelines require us to provide an explicit logout link.

6. Your website must offer an explicit "Log Out" option that also logs the user out of Facebook

However Azure ACS 2.0 doesn’t really support single sign out making the requirement a little harder to meet.

Read more

About Michael

I am a software developer that loves building Web Applications as well as Windows Phone and Windows 8 Apps.

Recent Posts

Malaysia: The road to Borneo Nepal: The trek to Everest Base Camp Fast times in Myanmar The Plan You probably don't want your development team to share a single database