Wednesday, February 29, 2012

My Anywhere Working Tips

As prompted by this.

I often find that I work from a combination of home, client site, coffee shop and even, sometimes, trains.
Here are my tips for anyone else who may be in such varied working connections, and yes, they all come under the umbrella guidance of ensure that you take responsibility for having power and connectivity.

  • Charge devices whenever you get a chance. - Whether it's laptop, phone or something else. It's when you get confident about remaining battery life that you run out.
  • Get spare batteries for everything and keep them charged. - Laptop batteries are the most obvious one, but don't forget phones and even a keep a few AA batteries around for your mouse.
  • Get a universal charger. (Probably a USB based one so you can plug any usb device straight into a waal socket/outlet). - With all these devices to keep charged you could end up with a lot of cables to carry around too. Avoid this as far as possible.
  • Get good headphones. -You want to be able to listen to quiet music/podcasts but still not hear ambient noise around you. Just make sure you can always hear when the phone rings.
  • If you're working somewhere public and distractions come to you (i.e. Someone noisy sits down at an ajacent table) move! - The short interruption of moving is better than a long period of being distracted.
  • Spare laptop battery. - Because coffee shops don't have enough public sockets/outlets.
  • Spare phone - Just in case or if you haven't got a spare batteryand you have to make, or take, that important call.
  • MiFi Unit - So you don't have to worry about finding WiFi
  • 2nd MiFi unit (or sim) for a different network - Once you get stuck somewhere with no WiFi and no signal on a particular network you'll know why.
  • Carry a tablet as well as your laptop. - 2 screens are a must for productivity but carrying a second monitor or laptop around isn't always practical. For moving web browsing or email off your laptop while you're working, a tablet can be a great alternative.


I hope some of this is helpful and doesn't just make you wonder how much kit I carry around with me each day. ;)

Friday, February 03, 2012

So I was wrong: W8 & WP8 to have a shared core.

Back in December I gave some fairly well reasonsed arguments about why I thought that the next version of Windows Phone 8 would not be based on the same underlying framework as the also forthcoming Windows 8.

Based on a leak reported yesterday (see here and here), it looks like I was wrong and I have 3 reactions.

I'm excited.
In many ways this is more than I could have hoped for. There are loads of cool features previously announced for Windows 8 that I would love to see and be able to use on the phone. And yes, also some I wouldn't.

I'm not counting my chickens yet.
There are still no public confirmation, details or timelines for any of this. I also wouldn't be surprised if we didn't see a greater similarity with Silverlight 5 than with WinRT in the short term.

I'm a bit nervous.
What will it mean for things going forward? (If advances in both platforms are to be kept in sync in the future.)
In the mobile space the market demands yearly updates. (Just consider the reaction when there was no iPhone 5 announced last year.--The 4S was considered by most as a disappointing stop gap to whatever comes next.)
On the desktop this (yearly frequency of updates) hasn't been seen in the past and is something that businesses don't want, as frequent (even yearly) updates become very expensive and awkward for them to manage. (Supporting the enterprise has always been one of Microsoft's strengths so I don't see them looking to upset the enterprise. Especially as one of the reasons for this initial synchronization and a lot of the upcoming changes are to support enterprise scenarios.)
Forcing updates to multiple systems to be permanently tied together just causes more work and slows releases. Microsoft know this and we've seen lots of products which were historically always released together change to be released separately and more frequently over recent years. I trust they're smart enough to do the right thing here (whatever that may be).

Don't use the OnSelectionChanged event to trigger navigation #wp7dev

It's a comon practice. Hey, it' even in some of the default templates.

But don't attach an event handler to the `OnSelectionChanged` (or equivalent `OnSelectedItemChanged`) events and then use this as the trigger for  starting navigation.

This is typically used when there are options displayed in a list[box] and the user can select an item to navigate to the appropriate page. It's also really common for such a list to be large enough that the user must scroll to see all the items. Therein lies the problem. It's common for the first part of the swipe gesture (intended to scroll the list) to be interpreted as a selection. This then causes the app to navigate to the item that was touched while swiping, not the one the user actually wanted.

Instead, add a handler for the `Tap` event of the individual item. This way you don't risk confusing the gestures.

This way you'll have an app that behaves as the user expects. This is definitely a step towards having happier users which will hopefully help lead to you havinng more of them.

Wednesday, February 01, 2012

I'm heading to Scotland to talk about #WP7Dev and "thinking mobile and beyond""

On the 21st, 22nd and 23rd of February, I'm heading north of the border to talk at user groups in Edinburgh, Dundee and Aberdeen.

If you're anywhere near and can make it, it'd be great to see you there. Or if you know someone nearby then please spread the word.

Yes, this is further than I've ever travelled to present before but I thought the opportunity to feel like a rock star, jet setting, developer/presenter was too much to miss out on. (At least this once.)

Tuesday, December 13, 2011

The absolutely most important thing developers need to know about #Windows8

Forget Metro.

Forget tablets.

Forget WinRT.

Forget building apps in HTML/JS.

The absolutely most important thing developers (and anyone involved in the creation, design, sale, marketing, etc. of software) need to know is based on the fact that it is designed to be used on multiple devices.

Which leads to my point. People (your users/customers) are starting to use a wider variety of devices. And not only that, they are using them in different/new ways and this requires that the applications which run on them work/behave in different/new ways too.




Windows 8 tells "desktop" developers they MUST start thinking about developing for multiple devices and uses.




Whether it's a 10" tablet, a 15" laptop or a desktop PC with a 32" screen, these different form factors encourage use in different ways. But that's just an example of where we'll initially see Win8. There's also the even smaller tablet and phone devices. There's table based interfaces. There's wall sized interfaces. There's also many more we probably can't even begin to imagine yet. Even in Sci-Fi films. But one day, probably sooner than you think, we'll be building apps to run on such devices.

If you've heard me talk at any point in the last 4 years or so, you will have inevitably/hopefully heard me say that all developers should start learning about developing for mobile NOW as it will help prepare you for all the plethora of devices they'll inevitably end up building for in the future.

If you're a developer who currently only targets the laptop/desktop environment usage scenario whether for APPS OR WEBSITES and you care about how your skills will meet the future demands of the marketplace. I can't recommend strongly enough that you should go and learn about HOW developing for mobile is different.
I'm not saying you should go and learn how to build apps for Windows Phone, iPhone or Android, etc. What you need to know is how apps designed for those platforms are different from ones that run on the "desktop".

If you have experience developing apps for the desktop environment you'll bring with you (whether you intend it or not) a number of assumptions and expectations about what your app should look like, how it should work and how people will use it. The good thing about mobile development is that it challenges all these common assumptions and so forces you to think differently.
Once you know how to challenge your thinking about these areas regarding mobile development you'll be prepared and ready to approach developing for other devices, form factors, etc. in a way which will help you create apps which work well on that platform.
In turn this will lead to apps which are easier (possible?) for your users/customers to use. Which can only be good for you/your company. Afterall, if people can't use your software they wont do so for long. This makes it much harder to get repeat business or referals.
Alternatively if your business is based on income from selling support contracts then you probably want (or need?) your software to be bad. So you should probably check out all the things you shouldn't be doing as it would only make your app better.


Side note.
You may try and argue that previously PC apps were used on PCs and laptops. But, seriously, can you show me the apps you have been building which allow for these (slightly) different environments. Thought not.