Tips for Working from Home

I’ve been working from home 2 days a week for a few years so thought I’d share a few tips. These are little things that work for me – they may not be for everyone.

Get Showered and Dressed

It sounds obvious but don’t slouch around in your pyjamas. You need to make a work day different from the weekend and any little things you can do to create this clear separation will help your work-life balance and ensure you’re in the right mindset, both ways.

Set Start and End Times

Don’t try to be too flexible with your hours. Stick to a normal working day. Don’t slack off and think you can catch up later in your own time, and don’t do extra to overcompensate for being at home. You need clear times when work stops and home life starts. It’s very easy to get sucked in to “just finishing off this bit” and still be working hours later.

Find Multiple Locations to Work

If you’re working from home for several consecutive days it can help to vary where you work. I wouldn’t keep moving in one day but maybe start every third day in a new spot. For some people having a fixed work space within their home helps the separation so if this works for you, great.

Finding a Good Work Space

For me it’s important to be near a window. I actually work sitting in a bay window looking out onto my street. This naturally makes me look up from my screen from time to time as people pass by. My sleepy town isn’t interesting enough for this to become a distraction but I appreciate this may not work somewhere busier. I would avoid spaces with no natural light, like lofts or basements. They’re just not good for your state of mind.


Set a start and end time for lunch as you would in an office environment. If you don’t, you risk not finding time at all, not taking a break or the day becomes one continuous snack-fest, which is not going to end well over a sustained period of time.

Managing Costs

If you’re home alone, do you really want to be heating your whole house? Or, if you’re lucky enough to be somewhere warmer, using air-con? I try to stick to being in one room, close the door and use a portable heater. This saves a small fortune on my heating bill.

Think about the money you’re saving on travel and put it aside for something which improves your home working lifestyle – a comfy office chair, a desk fan, a fancy microphone, a coffee machine.

Balancing Non-work Activity

Working from home does bring some advantages. You can have goods delivered. You can have the washing machine or dishwasher going. My tip would be to not worry about the small things like answering the door, putting a load of washing on – things that take a trivial amount of time. You should avoid the tasks that take longer and can be left until after work – online shopping, folding washing, cooking.


You’re at work. You can ignore the door. You can ignore your phone. Don’t use social media, unless it’s work related.

Don’t Get Isolated

If you’re alone for a period of time it’s easy to start to feel isolated. When working from home you need to make extra effort to communicate with colleagues. Try to make the effort to actually talk to people rather than just using email or messaging services like Slack. You won’t run into colleagues in communal areas, like the office water cooler or kitchen, so, if a few of you are working remotely you may need to create your own virtual spaces where non work related chat can happen to stay connected on a human level.

What Works for You?

Everyone’s different so do what works for you and if you have any good tips of your own please share.

Switching APIs

It’s completely normal now for web apps to work with external third party JavaScript APIs. The good ones give you lots of documentation making them pretty straightforward to implement and use. You load a script from a URL or local resource, use their methods and properties in your code and away you go.

But what if you then want to switch to another API provider? Maybe the one you were using isn’t accessible, doesn’t support the older browsers you need? Maybe they put their prices up? Whatever the reason you may need to switch at some point.

This change means rewriting your app’s JavaScript to work with the new API. You’ll have to find every point it touches and update it. What if it works differently? What if this one takes an object parameter rather than an array? You’ll have to completely rewrite the data parts too.

There is a better way.

Rather than working directly with an API and using the properties and methods in your code, you create an intermediary, your own internal service, which handles this functionality. The internal service maps the properties and methods you need to those of the third party API. It handles any data transformation needed. Your app works with this service, your own API, so that when a change of service provider is needed the app itself does not need to be rewritten, just the internal service.

An internal service can also be set up to work with multiple APIs at once so it maps everything it needs for each. This allows you to push choice to your users. So, for example, if it’s a news, sport or weather feed built into a site, you can let your user choice their preferred information source. You could use different services for different regions, e.g. local news.

To use a slightly inappropriate analogy, it’s better to be dating these APIs than to move in with them. 😉

Edging Out of IE Support

Having to support a minority of users on IE11 is painful. It’s a browser that is still officially supported by Microsoft, until 2025, but active development has stopped, or at least slowed right down, so the gap between it and other browsers is growing wider with every update.

The growing feature gap means either not using newer features if we’re working to the lowest common denominator or else having to provide polyfills or fallbacks so IE11 can still be used.

But there could be a light at the end of the tunnel, and before 2025. Microsoft Edge is moving from using the EdgeHTML engine to open source Chromium, which will bring it in line with Chrome, Opera and Safari. That’s nice for compatibility but the big deal is that it will be available on older Windows operating systems. Up until now Edge was only available on Windows 10 but it will soon be available on 7, 8 and 8.1 too so more users can drop IE and use Edge as their official Microsoft browser.

The Edge team are going one better than that though. One of the big reasons for clinging on to IE is the use of legacy software which only works on that browser. Edge is introducing an IE11 mode, so users can seamlessly (hmm – I can already hear the massive crash) switch over to IE for specific sites. Very clever.

It looks like we might have a way out of IE11 support in the next 12 months or so. Just need to convince the large corporations to make the switch now but I’m sure Microsoft will be pushing hard on this too. Good news.

Performance Perception Trick: Processing Lists Faster

I’ve got a little trick to make the processing of lists appear to go faster than it actually does.

Let’s suppose we have a list of 10 items and there’s some kind of processing to be done on them, maybe sending them off to a service which returns a Boolean true/false response for each. In reality we post a single request with the data of the 10 items and we get a single response back after 3 seconds.

In the UI we can use animation to make it look as if each item is being sent one at a time by adding a 100 millisecond delay between each state change. This means that the user thinks the last item of the 10 is sent after 1 second but in reality it’s already gone a second ago buying us extra time.

When we get the response, rather than show all the results immediately, we can use a similar animation to make them appear one by one with a 100 millisecond delay again. Although this is slower than just showing them all it maintains the illusion of the items being processed one by one.

So, the reality, without the trickery, is like this:

0Request sent,
perceived waiting time begins
3Response returned,
UI updated,
perceived waiting time ends

This would mean a perceived waiting time of 3 seconds.

And with the trickery:

0Request sent,
animation started
1Animation ends,
perceived waiting time begins
3Response returned,
animation started,
perceived waiting time ends
4Animation ends

Even though the time to getting the final bit of data on screen is actually extended to 4 seconds, the perceived waiting time is reduced to 2 seconds.