kdmurray.blog

The crossroads of life and tech

Windows Phone 7 – First Impressions

LG Optimus 7The Redmond-based software giant’s previous offering in the mobile space (the much maligned Windows Mobile) has taken a lot of flack in recent years over the quality and features (or lack thereof) in their mobile operating systems. One of the biggest challenges was the fact that Microsoft did not control the hardware stack. Vendors could essentially build anything they wanted with “compatible” hardware with little or no enforceable guidance from the software maker. All that has changed in 2010. Microsoft has provided a minimum specification for Windows Phone 7 devices which seems to be providing a more consistent experience across devices, and overall better performance than in years past.

In trying to describe it over the past couple of days I keep finding myself referring to it as ‘not an iPhone’. Though it shares many of the same features and capabilities of its iOS brethren, it doesn’t follow the lead in OS design. The overall feel of the UI is very fluid. Screen transitions both in the OS and within many if the applications are smooth and scrollong through long lists of data or

The main screen of the WP7 interface is the set of configurable ‘Live Tiles’. These are in essence large icons which can also be updated by the apps they belong to. Messaging and email applications, for example, display the number of new message and the Marketplace app shows the number of apps you have which are waiting for an update.

The second panel on the main screen is the application list. All of the applications are displayed on a single scrollable list. This alone is a break with the now traditional layout of iOS and Android devices displaying screens and screens if icons. This difference provides an instant differentiation for the new Windows devices.

The one class of applications that is treated differently is games. Games are all listed from within the XBox Live hub isolating them a bit from the rest of the applications.

In the last sentence I mentioned a hub. This is the second major concept that the OS introduces. The hubs are, for want of a better term, points of convergence that bring together disparate sources of similar information. The best and most cited sample of this is the ‘peope hub’. the people hub allows you to merge in your contacts from your (multiple) email accounts and join it to contact information in your MSN messenger account and even your Facebook friends. The people hub uses all of that information to create a single list of contacts each of which contains information from the various sources.

The convergence of the people hub is nice. I’ll be happier once the OS can expand beyond Facebook and Windows Live to incorporate the services I actually use on a regular basis like Twitter, GoogleTalk, Tumblr and Flickr.

So far so good for the newest mobile OS. I’ll have more posts coming in the next few weeks getting into some of these features in more detail, covering other aspects of the Windows Phone 7 ecosystem, and hopefully touching on the developer story for WP7.

LG Optimus 7 — Unboxing

LG Optimus 7Last week I picked up an LG Optimus 7 as I begin my journey down the Windows Phone 7 path. The selection of this particular handset was driven partially by the carrier I am with, which is turn heavily influenced by where I work. Nonetheless I certainly had many other options for choice of handset and mobile OS and decided to go down the Windows Phone 7 route.

At first blush it seems as though LG has taken a cue fro Apple when it comes to the packaging of the phone. The exterior box, as well as the majority of the inner packaging material were very high-end (as far as paper products go anyway). The handset was nestled onto a form fitting tray with all the miscellany tucked beneath.

In the package was all the pieces that one would expect to find in a modern smartphone package; battery, USB cable, manual, “getting started” guide, wall-wart and of course, the handset. The wall wart is just a wall plug that takes a USB cable, so there’s really only one charging cable. A bit disappointing since that means I can’t leave one at work, and one at home. I’m a bit disappointed that LG didn’t throw in a second ten-cent cable considering that this is supposed to be a relatively high-end smartphone.

The device also came bundled with a SIM card for my provider, so I popped in the battery and the device came to life and — oh wait, removed the battery, popped in the SIM card, replaced the battery and the device came to life.

The Windows Phone 7 OS was very visually appealing right off the bat. I found it easy to navigate and find what I was looking for. The visual styling of the menus and titles (running off the edges of the screen) takes some getting used to, but I didn’t find it too much of a distraction.

I’m looking forward to digging into the device more, learning the ins and outs of the product and figuring out its hidden dark secrets.

Enabling AutoComplete Excel 2007

This is far from ground-breaking information, but it took me 20 minutes of searching to figure out how to (re-)enable this feature in Excel.

When you’re filling in data on a spreadsheet Excel will (by default) offer auto-complete suggestions based on previous values in a column back to the last white-space (empty) column.

For some reason my Excel decided to turn off this feature. While I’m not entirely sure why, I’m just glad I was able to get it turned back on.

Click on the Office button:

Click on Excel Options…

Click on  Advanced and check the box marked Enable Autocomplete for cell values


Security for Client Applications: OAuth

Recently I was listening to Security Now when the topic of OAuth keys being hacked out of Android applications came up. There was some discussion on how services that require OAuth for authentication (as Twitter now does) cause problems for client applications. (NB: In this post I’m referring to client applications specifically as something that the end user downloads to their PC or other device.) The case was made that the problem is that OAuth was not written for client development, and is really only secure when running from a web-server.

The key to the “vulnerability” with OAuth is that each application is given its own key. That key ties any request made to the service (Twitter for example) to the application which owns the key. The concern was that if the key falls into the wrong hands users’ personal information could be put at risk. With the key needing to reside somewhere that the application can read it, they’re typically stored within the application code which makes finding the key a trivial matter for a hacker.

The thought occurred to me that if you need to access a web-based service which requires OAuth, it might be helpful to have an intermediary service handle that authentication for you. By adding a service tier which authenticates a specific user of your application and performs all of the direct interaction with the service there’s no need to keep the OAuth keys on the client which makes them much more difficult to compromise.

Admin Links Plugin Updated to 1.4.0

It’s been a good long while since I’ve had the time to make any changes to the two WordPress plugins I’m supporting. In fact if WP 3.0 hadn’t broken one of my plugins there’s a good chance I wouldn’t have made this change either.

That said, there’s a fresh version of the Admin Links plugin available and this one is compatible with WP 3.0.

In case you’re not familiar with the plugin, it provides access to common admin features from the public side of the site. Visible to logged-in admins, and completely invisible to the great unwashed masses of the interwebs.

Download it directly from WordPress.org.

Subversion – Can’t move [file]. The file or directory has become corrupted and is unreadable

Update 2011-02-11: Since the post was originally published Microsoft has issued a hotfix for this issue, which is slated to be included in Windows 7 SP1.

I recently ran into a problem on my fancy new machine while trying to commit a rather large number of files into an SVN repository. The error message stated that some of the files in the .svn control directory had become corrupted and unreadable.

After Googling around a bit I came across a post on the CollabNet issue log which identified this as an issue with the NTFS stack on Windows 7. This post included another link to a Microsoft technet discussion about the issue.

The long and the short of it is that this is an identified issue in the NTFS implementation in all editions of Windows 7 (both 32 and 64 bit versions). The indexing service is locking files which SVN is trying to move. This only appears to be a problem with large batch transactions. Smaller ones, for me at least, have been working just fine but YMMV.

In case you don’t want to read the whole discussion thread, here’s the response from the NTFS team developer who responded to the community reports:

This is a known regression in Windows 7 in the NTFS file system.  It occurs when doing a superceding rename over a file that has an atomic oplock on it (atomic oplocks are a new feature in Windows 7).  The indexer uses atomic oplocks which is why it helped when you disabled the indexer.  Explorer also uses atomic oplocks which is why you are still seeing the issue.  When this occurs STATUS_FILE_CORRUPT is incorrectly returned and the volume is marked “dirty” which is a signal to the system that chkdsk needs to be run.  No actual corruption has occured.

Neal Christiansen
NTFS Development Lead

The identified workaround for this issue is to stop the indexing service. If you don’t use search very often you can disable it. If you do, you can just stop the service and allow it to restart the next time you restart Windows.

The next trick, of course, is finding the indexing service.  In Windows 7 the service has been renamed “Windows Search”. It serves essentially the same functions as the old “Indexing Service”.

There have been some reports that this issue affects Windows Vista as well, but I don’t have a Vista machine to test with.

Firefox Shortcuts for Bookmarks and Searching

It’s not new information, but since I just figured this out recently, I thought I’d punch it up here.  When you add a new bookmark in FireFox there are a few fields that you get prompted to fill out:

These fields are only a portion of the information that Firefox can keep for a particular bookmark. Among the most useful of these is the keyword field.

For people like me who prefer to use the keyboard over any form of pointing device, this is fantastic.  I can open a new tab and type in the keyword of the bookmark I want, in this case ‘kdm’ and firefox will load the bookmark in question.

Even though most browsers have a built-in search bar, that’s another toolbar that eats up real-estate in your browser. If you’re screen-space-challenged or you have a disdain for toolbars.  Take your bookmarks to the next level with a parameter.

By adding in the string %s you can create search bookmarks for your favourite searching sites. As a helper, I’ve included a few search links below which already contain the %s. Just right-click the links below and use the ‘Copy Link Location’ or ‘Copy Shortcut’ options.

Google (ca, au, de, jp)

Bing

Yahoo

Wikipedia (de, fr, pl, it)

Stack Overflow

Memory Alpha

Announcing EpubSharp

Over the past few days I’ve put some time into working on a library to create EPUB documents in .NET.  When I first did a search for this a few months ago I really didn’t find anything that suited my needs: a library that I could use to create EPUB documents on the fly, in code.

So I said to myself: “Self! You can write code, build the damn thing yourslef!”. So I did.

The initial version of the library has been published up on Google Code and is probably full of holes. If you’re interested, have a look and let me know what you think.  I’ll try to publish some more detailed specs for what the library does in the coming weeks.

For now, it can get got at: http://code.google.com/p/epubsharp/ — and yes, the documentation on that page is as sparse as it is here.  :)

The Future of Short Order Code

The future of Short Order code is very much up in the air right now. With a baby on the way in the near future and what seems like no time to work on things for the podcast already There’s a good chance that there won’t be another episode of Short Order code for at least another few months.

I have been considering using the SOC blog as more of a blog and posting all of my programming related posts there and leaving this one as more of a general blog. I have some posts coming soon for programming related things and I’m trying to figure out what makes more sense: posting them here where they’ll get a few more eyeballs, or posting them on SOC where the site is all about programming — albeit a programming podcast that hasn’t seen an episode since late 2009.

In short, the future is muddy. Hopefully I’ll be able to shed some more light on things as the next month or two roll on.

New Box – Dell Vostro 430

I’ve got no doubt I’ll take some heat for going this route, but my solution to the build it or buy it dilemma was in fact to buy a new box. I decided to go for a machine from their business lineup, the Vostro 430 MT. This machine comes with a bunch of cores and an ample amount of RAM will allow this box to become the base for my home computing activities.

This machine’s primary duty will be to take over the day-to-day computing tasks from my Macbook freeing it up for mobile-only duties so that I’m not carrying around the primary copies of most of my data every time I leave the house.  In addition, I’ll be virtualizing the two desktop machines I have in the basement today, one of which has succumbed to old age in the past couple of months.  The VMs will provide some added flexibility as far as Operating Systems and some single-duty machines.

For now I’m evaluating a couple of virtualization options to use on the new box when it arrives, and I’m re-working the layout of the home network, splitting out VLANs for the servers to help isolate them a bit from the rest of the network. The main goal of some of this is to play around and learn the technologies, of course.

Some of the VM applications I’m considering include test machines for development, SSH tunnel/proxy for remote access, web server, Mozilla Weave server, secure machine for my office VPN and whatever else my dreams, or nightmares (or conversations with Knightwise) inspire.

The machine should arrive in the next week, unboxing and other additional posts will follow.