Category Archives: Uncategorized

Presenting on VS2013 and Windows 8.1 in Brisbane.

I’m up in Brisbane for a week at the moment and on Monday the 28th I am giving two presentations back to back on What’s new in VS2013, and a separate session on improvements in Windows 8.1 for Enterprise Applications. We’ve got quite a few registrations at the moment and I’m not sure what the cut-off is but if you would like to come along and check out the latest improvements in VS2013, and get a handle on how you might using Windows 8.1 in your business then register here.

I’ll be around for a little while after the event so if you want to discuss some app ideas or whiteboard anything then I’ll be available.

DNS Limitations in Windows Runtime

Lately I’ve been looking at line-of-business applications for Windows 8.x and how you would go about deploying such applications in the real world. When you build a line-of-business application in-house you can often get away with doing things like hard coding service URLs, but if you are building software that is going to redistributed to multiple customers or even on the Windows Store you need to figure out how your application is going to “discover” where the services are located.

The simple and obvious approach is for the application, upon starting to ask the user for a server name to connect to, but in enterprise environments this information is often opaque to the end-user. Further, once this information “gets out” it can be notoriously hard to retrain users to enter some other value if the network topology changes.

DNS Support in Windows Runtime

Discovering service endpoints is a common challenge. For example, when you set-up e-mail in many mobile devices an automated discovery process is undertaken which involves querying DNS for addresses such as “autodiscover.mycompany.com” when you tell the mail client that your e-mail is “someone@mycompany.com”.

The Domain Name System actually has a mechanism to support discovery of services associated with a domain name via the use of SRV records. An SRV record is a DNS record which combines a service name, protocol, domain and target address to tell a program (via a DNS resolver) which endpoint it should connect to. Many technologies and/or products such as Active Directory and Lync rely on this mechanism.

Getting back to Windows 8.x, I was investigating the best way to enable an service address discovery mechanism which followed this basic process:

  1. On initial start-up of application, ask user for their e-mail address.
  2. Use the domain part of the e-mail address to initiate an SRV record lookup (DNS)
  3. Use the target address from the SRV to connect to service address.

Unfortunately, Windows Runtime doesn’t expose a good mechanism to do this, and the .NET API subset exposed to Windows Runtime doesn’t contain the classes that you might have used to do this in a traditional desktop application. There is some suggestion that you can use the DatagramSocket class to do SRV record lookups for UDP endpoints, but my scenario is for TCP connections.

Workaround

Without the ability to execute sophisticated DNS queries from modern applications in Windows 8.x the only thing that you can do from a discovery point of view is abandon using SRV records and use an “autodiscover” mechanism similar to the way that Microsoft Outlook uses to find the mail server based on the e-mail address.

This process would look something like the following:

  1. On initial start-up of application, ask user for their e-mail address.
  2. Use the domain part of the e-mail address and prefix with a unique string (e..g myappdiscover.mycompany.com).
  3. Send a request to this endpoint to download configuration data which can be used to locate service endpoints.
  4. If this fails fallback to ask for detailed configuration information.

As it happens I believe that Microsoft has already encountered this problem. If you’ve used Lync, you’ll know that there are two different Lync clients for Windows. The standard desktop Lync client, and the modern version of the Lync client. The modern Lync client relies on a mechanism similar to the above (lyncdiscover.mycompany.com), whereas the desktop client can make use of the SRV records to discover the location of the server.

The “autodiscover” or “lyncdiscover” approach for Exchange or Lync respectively rely on a CNAME record being present in the DNS and a server available at that address to respond to the discovery requests. This would be largely unnecessary if the platform supported querying SRV records.

You might be tempted to look at implementing your own DNS client using the sockets API in Windows Runtime. Of course this would take some time to implement correctly, but more than that, you need to be able to discover the address of your assigned DNS server, which from what I can tell is not exposed to modern applications via Windows Runtime.

Presenting at TTUG on Visual Studio 2013 and Team Foundation Server

I’m off to Hobart tomorrow. I’m heading down to present at the Tasmanian Technology User Group on Visual Studio 2013 and Team Foundation Server. I’m really looking forward to presenting down there again (it’s been a while). Not sure when registrations close, but if you are in the area and interested in attending the details are here.

Thanks to Christopher Baker for getting this organised.

Lync with Windows 8.1 and Internet Explorer 11

I’ve been using Windows 8.1 preview as my day-to-day environment for a good 3-4 weeks now and in general everything is working extremely well. One of the problems that did crop up however that has been impacting me is participating in Lync meetings with customers and partners from other organisations.

The problem I experience is when clicking a meeting Lync, instead of launching the desktop Lync client I get routed to the Lync web-client login page. The web client is okay but I prefer the desktop client and it has a few extra features which I find quite useful.

LyncWebClient

 

It appears that the code behind the meeting link is doing some browser detection, not recognising IE11 as a compatible browser for the desktop client launch mechanism and then falling back to the web experience.

To work around the issue I pressed F12 to bring up the new IE developer tools. On the emulation tab (look on the left hand side down the bottom of the panel), change the user agent string to Internet Explorer 10. As soon as you’ve done this the page should refresh and the Lync desktop client will get launched.

LyncWebClientUserAgentHack

 

I’m pretty sure that this will get fixed soon either as a compat update to IE, or as a patch to Lync. Hope this helps you in the meantime!

Windows 8.1 & Improved SkyDrive Integration

Home Screen

Windows 8.1 is in many was a refinement of Windows 8. One of the areas of welcome focus is the integration between SkyDrive and the Windows shell. To be clear, Windows 8 shipped out of the box with integration with SkyDrive with a Windows Store App that allowed you to navigate through the files stored up in the cloud.

In Windows 8.1 Microsoft have gone one step further and allowed desktop applications to integrate with SkyDrive directly via Windows Explorer WITHOUT having to download a separate desktop application to synchronise files. I suspect that it is really a case of the separate desktop application now being integrated with the Windows product out of the box, but nonetheless it is one less thing to download and install.

ProgressThis alone is note worthy but the real improvement in my opinion is the fact that you now no longer have to synchronise all files down to your local machine in order to access them via Windows Explorer, instead a stub file is visible which triggers the download of the real content from SkyDrive.

Previously you had to download all your files from SkyDrive or select a  subset that you wanted to have visible on your local machine. This lead to either massive and largely unnecessary data transfers, or placing folders in directories that ultimately didn’t synchronise leading to potential data loss.

Search ResultsBecause there are stubs present on the local machine, that content is instantly available for searching via the Windows search charm. Once a file is selected from the results it is them streamed down from SkyDrive.

This subtle change in the way cloud files are handled is important in the context of two converging trends. The first is the shrinking form factors of Windows devices, and the corresponding limited storage available and the growing demand for digital media storage. It simply isn’t possible for me pull all that content down onto my local device, and I can’t even choose (at the time of configuration) an intelligent subset of the content I want synchronised. I want that complexity managed by the operating system.

Room for Improvement

Overall I think Microsoft is heading in the right direction here, but there is still room for improvement.

Like many folks I have a relatively large personal media collection of family photos. If I was a single guy, I would probably dump all this up into SkyDrive, but I want to share this media with my family members and allow them to contribute to it, and organise it.

SkyDrive allows me to share files, or folders with specific users but sharing isn’t really a first class feature in SkyDrive. For it to really work it needs:

  1. True shared ownership of folders, with clear “unshare” process (clone/merge).
  2. Ability to pool SkyDrive quota for shared folders.
  3. Better surfacing of shared content as a first class citizen in the file list.

Something akin to the rooms feature on Windows Phone would probably help resolve this where someone can create a room, and the room itself has a SkyDrive which borrows its storage quota from the participants.

Business Considerations

Most businesses that are using Windows 8 and Office 2013 should probably be looking at SkyDrive Pro for managing shared content (which is backed onto SharePoint). This is a completely different animal to SkyDrive with which it shares only a name (no actual code). In the future I would like to see Microsoft unify these two experiences so that it is possible “mount” a SkyDrive folder in SkyDrive Pro and vice versa. I doubt it’ll happen due to data security concerns with corporate data leaking out through individuals SkyDrive accounts, but it’d be nice to see a unified end-user experience.

For now however we’ll have to make do with the SkyDrive Pro desktop application and SkyDrive Pro Windows Store App. The former has an advantage over the later in that it allows you to connect to multiple SharePoint locations – the later only connects you with your Office 365 personal site – and only for one Office 365 tenant.

Installing Windows 8.1 Preview on the Acer Iconia W3-810 from scratch!

I was lucky enough for my employer to send me to BUILD 2013 this year (videos on Channel 9). The major topics for the event were Windows 8.1, Windows Azure and improvements in the development platform and tooling coming with Visual Studio 2013.

Of course, nobody does giveaways like Microsoft (and their partners). Each attendee that was at the conference received two free tablet PCs. The first is an Acer Iconia W3-810 and the second was a Surface Pro. As you can imagine the attendees were all pretty excited to pick up their goodies at the end of day one.

The devices came pre-loaded with Windows 8, and we had a USB stick that we could use to load up Windows 8.1 preview to give it a spin on the new hardware. That was exactly what I did that night back at the hotel and I can say that I am pretty happy with the progress that has been made with Windows 8.1 since Windows 8 was shipped. I’m now running Windows 8.1 on all of my devices and its working great.

Nothing Like a Fresh Install

One of my long established hang-ups about new hardware is that I like to go through the process of installing Windows on a blank drive, removing all of the cruft that comes out of the box from the hardware vendor. You’ll often hear people referring to this as bloatware.

I’ve done this regularly with almost all of my devices, except the W3-810 (and Surface Pro) which I simply did an in-place upgrade on. This weekend I decided it was time to go through the ritual. Boy did I regret it!

The Acer Iconia W3-810 is very new hardware for the Windows platform. Whilst it ships with Windows 8 pre-installed, the engineers at Acer would have pre-loaded the image with all the drivers necessary to make Windows 8 work. I had no such conveniences when doing a fresh install of Windows 8.1 from the MSDN ISO image.

The first challenge you have to over come is kicking off the installation. The way that I did this was hold down the power and start menu on boot to get into the diagnostic menus for Windows 8. I then navigated my way through the advanced settings and launched a command-line. When Windows is running out of this mode it appears to be operating out of a RAM disk, so I plugged in the USB key that had Windows 8.1 on it and ran setup. I stepped through the process and deleted the partitions on the local machine and then triggered the install of Windows 8.1 itself.

All was going fine until it rebooted and I discovered that neither the WiFi or the touch-screen had in-box driver support. So I pulled out the USB key that I used to install the operating system and plugged in a USB keyboard (the bluetooth keyboard that came with the device was no good at this point either). I used the keyboard to navigate through the personalisation prompts whilst I started downloading the drivers for the device from Acer’s web-site.

The next challenge was how do I get the device drivers onto the tablet with no network, and only one USB port currently being used by the keyboard (note, I didn’t have a USB hub handy). In the end I wrote a simple little batch script and kicked it off which copied all the files from a particular directory on the USB stick to a local directory and then looped around and did it again. I yanked the keyboard out, plugged the USB stick in and bingo, the driver files copied across to the local disk on the tablet.

Next I plugged in the USB keyboard again and triggered the installation of the drivers. There are three driver packages that come with the device. One is a big “other” drivers package which basically contains all the Intel drivers which make up the bulk of the hardware in the device. The remaining two are for Wireless LAN and Bluetooth.

The Intel drivers went on without a hitch and I noticed almost all the unidentified hardware on the device was detected sans the Bluetooth and WiFi adapters of course (Broadcom devices both). When I tried to install the WiFi driver it didn’t work. The driver package has a simple “install.bat” file which if you double click on results on plenty of activity on the screen before disappearing.

In the end I opened up a command-prompt window and ran install.bat and saw the nature of my error. Basically the command prompt needed to run elevated to install. I did so and suddenly the WiFi driver kicked into action.

One of the issues that I noticed after installing the large Intel driver package was that any of the modern user experience elements in Windows 8.1 were showing blocked out text (like the CIA had redacted Windows or something :P). That is a sure hint that video drivers are a problem so I flicked over the the desktop Windows Update screen and triggered a download of all the drivers/updates (one of which was an Intel Graphics driver). After this update everything was working as expected, except the Bluetooth driver which I then installed.

Phew! I managed to go from nothing working to a clean tablet!

Some Lessons for PC Vendors and Microsoft

One of the great things about the Windows eco-system is that of choice. When you choose to run Windows, you can choose which hardware you want to run it on and it comes in a variety of form factors with a multitude of different features.

However, all of these features aren’t worth anything if you load the base image for the PC up with loads of junk that is either truly useless, or just gets in the road of the native experience. As long as vendors keep doing that, people like me are going to continue to tear down the machine and reload a vanilla version of the operating system.

I can accept that if I am going to do that then I’m choosing to inflict some pain on myself, but at a minimum a tablet PC should have the following in-box driver support:

  1. Keyboard / Mouse
  2. Touch Screen
  3. Wireless LAN
  4. Video

Even if it is just rudimentary support out of the box with a subsequent Windows Update delivery to get it all up to the latest drivers. My installation experience would have been dramatically simpler if I had just had WiFi support.

I hope that moving forward Microsoft continues to put pressure on vendors not to mutilate the installation of Windows, and provide improved in-box driver support. After installation, detected hardware can have updated drivers delivered via an improved Windows Update experience which might (if we are lucky) lead to more Windows Store apps being installed which interact with those drivers through the app/driver bundling methods included in Windows.

Finally, I should say that the Acer Iconia W3-810 is a really nice device – thanks to Microsoft and Acer for giving them away at BUILD 2013. I’ve got a Google Nexus 7″ and it effectively replaces that for me.

Upcoming Talks at DDD Melbourne and TechEd Australia

For those of you who are interested in catching up, I’m going to be attending DDD Melbourne (20th July 2013) and TechEd Australia (3rd-6th September 2013) this year. Looking forward to catching up with folks.

At DDD Melbourne I’m going to be delivering a hands-on workshop on Windows 8 Apps for Business, and at TechEd Australia I’ll be delivering two sessions. One on Windows 8 Application Architecture for Enterprises, and another on Adding PowerShell Support to Enterprise Applications.

The DDD Melbourne Windows 8 talk and the TechEd Australia talk will be similar in content but delivered slightly differently where the DDD talk will be hands on (and the TechEd talk will be up on stage). I’m particular passionate about the PowerShell talk because although I think that IT pros have now embraced PowerShell, we can do more as software developers to make the solutions we produce more manageable, which is an important piece in the overall DevOps story.

Anyway – see you at DDD Melbourne and TechEd Australia!

Windows 8 Tablets in Queensland Schools

I’ve read two articles (Australian, ZDNet) today mentioning a rather large deal between the Queensland Education, Acer and presumably Microsoft around the deployment of Acer Iconia W701 tablets to students within schools. This news is of interest to me because although I now live in Victoria, I grew up in Queensland and actually worked for the Department of Education there as a teachers aide (focused on IT administration/network support).

This deployment is significant because I think it is fair to say that Apple has quite a bit of the mind share around deployment of hardware into the hands of kids. This deployment of Windows 8 onto convertible tablet devices shifts the deal significantly towards Microsoft’s offering.

After a quick search, I found this PDF file on the department’s web-site which outlines some setup instructions for students which lists the pre-installed software (predominantly desktop app focused). One of the interesting things that I picked up was that they have deployed “SCCM” or System Centre Configuration Manager. This is a piece of agent software that the department can use to manage the fleet of devices. In particular this could be used to push out native Windows 8 applications when the devices connect back to the education network.

I hope that the department is strongly considering the deployment of native Windows 8 applications which take advantage of the impressive hardware that they are deploying.

One of the obvious applications that needs to be constructed is a native application which acts as “folio” for homework where files can not only be saved, but also shared with the teacher for marking. In fact this could be integrated with the report card processes. Further, I think that major eBook vendors with existing native offerings should consider updating their software so that it can “connect” to an educational account where student textbooks can be distributed in electronic form. There are literally hundreds of awesome things that could be done here to help students.

At Readify I’ve been doing a lot of work recently on approaches for designing and building Windows 8 applications for use inside organisations. The same design principles for internal line-of-business applications applies to software that will be used by students and teachers. Personally I am excited by what kinds of applications we could bulid that target students, teachers and even parents which help the educational process not to mention the side effect of technical literacy.

Back when I was a teachers aide there was some concern that technology like this would be unevenly distributed, and whilst that is a concern I don’t think that should stop Australian schools pushing forward with technology deployments like this. The future of this country depends on the quality of our education system and the ability for these kids to participate in an advanced technology society with intelligent use of our natural resources. Right now Australia has the edge in that this technology is within reach, but if we don’t invest when we have the opportunity the only place we’ll go is backwards.

Hats off to the Department of Education in Queensland. I hope that this is the beginning of a sustained deployment of assisting technology to support our students and educators.

Touted Demise of Windows RT and Marketing Lessons for Microsoft

I read an article this morning on The Motley Fool about a consumer electronics trade show in  Taipei. The headline “Does This Mean Microsoft Windows RT is Dead?”.

I won’t comment on whether devices running the “RT Edition” of Windows 8 are going disappear based on the presence of new devices at a trade show. But the headline did stand out for me because it is an example of the confusion caused when you “borrow” a technical term and slap it onto the end of a product name.

In this specific case Windows RT actually means two things. First, to me as a developer Windows RT means Windows Runtime, an API layer inside introduced in Windows 8 and Windows Phone 8 and is the basis for modern applications.

On the other hand, if you aren’t a developer and you are more focused on “products” and “devices”, the term Windows RT might identify a lower power device running a special build of Windows 8 which introduces some limitations for these lower powered machines.

The problem is when the journalists go around saying “Windows RT” is dead, IT managers who might not know about the lower level details of the Windows 8 platform might start to disregard the proposition that they might like to build a Windows 8 application that targets the Windows Runtime (Windows RT).

Confused? Yep, so are most folks and this is why MIcrosoft needs to be very careful about tacking the RT suffix on products like the Microsoft Surface RT and Office RT. They might accidentally build the impression that the underlying runtime itself is going away if indeed the industry is moving back towards an Intel centric architecture. I think Microsoft should drop the RT moniker all together on their OS, Office and devices (including partner devices) and come up with some other suffix. Leave WinRT to the developers.

Some might say it is unlikely that ARM processors running Windows will disappear, but the X86 and X64 architectures have proven incredibly resilient in the face of other architectures (ia64, ARM etc). One exception might be in the Windows Phone space where you really do have some heavy power conservation requirements and the expectations are considerably lower than that of a PC or a tablet device.

My gut feel is that Windows RT (the runtime, or the device class) aren’t going away any time soon, and it is certainly too premature to say that based on what you are seeing at this years trade shows. What is far more relevant is what we see announced at BUILD 2013 this year in terms of Windows and Windows Phone platform convergence.

The big question I have is will the rumoured “phablet” devices run a Windows Phone-like build of Windows RT, or a Windows-like build of Windows RT. Based on some of the projects I am seeing at the moment I am hoping that a phablet is running something derived from the current Windows 8 generation of platforms. The Windows Phone UX is great for small surface areas but I don’t think it will scale well up to a phablet size.

Lenovo ThinkPad Helix Review

2013-01-04_Helix-3aLast week I picked up a new laptop to replace the two devices that I lugged around, one for mobility (a Samsung Series 7 Slate) and one for power (Lenovo ThinkPad X220T). Both devices had served me well but I wanted something that would give me the mobility of the Samsung with the power of the ThinkPad.

I was introduced to the Lenovo ThinkPad Helix by Justin Taylor. As soon as I looked at the pictures and the specs I knew that I had to have one, so I went out that afternoon and found a local supplier and spent the evening setting the device up as a developer workstation.

Key Features

There are three different models of Helix. The one that I picked up was the top of the line model which represents a reasonable power-user specification (without going into the gaming machine category).

  • Detachable Tablet Screen with Touch & Pen Capabilities
  • Detachable Keyboard with Integrated Battery & Replicated Ports
  • Intel Core i7 Processor
  • 8GB RAM
  • 256GB SSD
  • 1080p IPS Display
  • Integrated NFC
  • WiFi with WiDi Support
  • Ericson 3G+ Wireless Modem
  • 2 x USB 3.0 ports
  • 1 x Mini DisplayPort
  • 1 x USB 2.0 100Mb/s Ethernet Adapter

Altogether quite a powerful little machine especially considering it is about the same size as my series 7 slate from Samsung.

Overall Comments

The really good thing about this device is that it doesn’t sacrifice power for mobility, whilst at the same time not sacrificing mobility for power. You can totally use this machine as a developer rig, and it is especially useful if you are building apps for Windows 8 because it has most of the bells and whistles you’ll want to test our various scenarios (such as NFC).

Build Quality

The build quality is typical Lenovo, more importantly it is typical ThinkPad. The exterior of the device sports a rubberized plastic finish which makes it easy to old but also a generally understated style which tells you that this thing doesn’t need to pretend that it is powerful.

When you pick up the device it has the characteristic ThinkPad weight but the screen when detached from the base has the same feel as any 11.6″ tablet. The joint where the screen attaches to the base is sturdy and it feels natural being used as a laptop on your, well lap. This is enhanced by the nearly perfect balance between the keyboard and the screen. The engineers must have figured out exactly how much weight needs to be in the keyboard to make this style of design work.

One strange design feature is the magnetic flap which hides the attachment mechanism in two cooling fans. It is an interesting idea but I wonder if future generations of the product will feature the same design.

When detaching the screen there is a simple push lever which can be used with one hand, with another hand used to lift the screen (or the same hand if you want to do it in two steps). Overall the screen release mechanism is probably the best I’ve seen.

Pen and Stylus

The keyboard feels like a ThinkPad keyboard. The spacing is quite natural and has good movement when typing. The keyboard membrane itself doesn’t move at all unlike some of the other cheaper laptops with this design style. I am disappointed with the pen, my X220T had a good sized stylus with two buttons and an eraser. The pen on the Helix feels too narrow and too short to use comfortably. If you are going to use this as a note taking tablet I would recommend getting a better stylus.

Connectivity

Connectivity features all work as advertised. I’ve even managed to confirm that WiDi works OK but I found it to be quite laggy at 1080p, but I am not sure if that was down to the receiving device on the Lenovo.

There are three areas where I felt the device could have been improved in the connectivity space. First, the Ericsson wireless modem doesn’t support 4G has deployed here in Australia by Telstra (and Optus as I understand it). This means that you can really only get slower 3G+ speeds.

The second area where I felt that connectivity could be improved is the USB LAN adapter. It would have been great if Lenovo could have figured out a way to integrate the adapter into the tablet itself. There isn’t much room to work with but it would have been appreciated. Whilst the USB LAN adapter works it is only a USB 2.0 device, and only rated for 100Mb/s.

Finally I felt that the keyboard base itself could have extended the number of ports available beyond just two USB 3.0 devices.

Final Thoughts

The Lenovo ThinkPad Helix is exactly what a business-grade tablet-convertable ultrabook should be. It doesn’t sacrifice on power, and it provides the mobility required with a solid battery life (I haven’t really tested the 10 hour claims but as a developer I tend not to reach the theoretician limit that often anyway).

For most non-power users I suspect that the i5/4GB models would be more than adequate and save a little money since this is definitely not the cheapest device out there.

What surprised me is that I was able to find a device that gave me pretty much everything I wanted (putting the connectivity grumbles aside). The device I was going to go for was the Samsung ATIV SmartPC Pro but after getting my hands on one I felt that it feel short in a few areas.