20 Years of Visual Studio: #MyVSStory

Today Microsoft is marking the 20th anniversary of Visual Studio, their integrated development environment. To celebrate, they’ve released Visual Studio 2017! Over the last month or two, Microsoft has encouraged developers to share their Visual Studio story on social media. Here’s mine!

Microsoft Visual Studio .NET

I became interested in programming at a very early age and started playing with BASIC on our computer at home. I remember writing a program that asked you for your name and favorite color and then printed something like “Hi Name!” in that color to the screen. I’m pretty sure I tested it on my younger brother, but he was much less interested than I was. I thought it was magical.

One day I was in my Dad’s office and found a box for Visual Studio 97, the first release of the product. He let me take it home to install on our home computer and that started a long and fruitful relationship with Visual Basic. Though I started to learn other languages too, it was VB6 that I really enjoyed. When I started my software company Paramagnus back in 2000, it was VB6 that we wrote our first programs in.

While I probably did use Visual Studio 6.0, the second version that Microsoft released, it was Visual Studio .NET that came out in 2002 that really changed things. I was able to transition my VB6 knowledge into VB.NET and became smitten with the new .NET platform. I remember reading a magazine article about something called “COOL”, a new “C-like Object Oriented Language” from Microsoft that was kind of like Java. Well that became C# in Visual Studio .NET, and it wasn’t long until I switched from VB.NET to C#. It became my primary language and remains so today.

Microsoft Visual Studio .NET

In the early 2000s, I was involved with a .NET user group here in Edmonton. I remember meeting developer evangelist John Bristowe through that in 2005 when he came up from Calgary to show us “Whidbey” which would become Visual Studio 2005. I always enjoyed John’s presentations and his passion for Visual Studio, which he often called “God’s IDE”. That always stuck with me!

From 2003 until 2005, during my time at the University of Alberta, I had a side job as the Alberta Student Representative for Microsoft Canada. Part of my role was to organize and deliver presentations for students, and in 2004 I became an Academic MVP. That brought some nice perks along with it, including an MSDN subscription which meant all of a sudden I had access to everything!

Tech·Ed North America 2010
With the Channel9 guy at TechEd North America in 2010

It’s safe to say that Visual Studio has had a big impact on my life. Everything from my profession to some really rewarding personal experiences. I competed in the Imagine Cup student programming competition in 2003 and represented Canada at the worldwide competition in Spain, for instance. Along the way I’ve met some great people and learned a lot from some excellent developers.

I still use Visual Studio every day, though not always the IDE. These days there’s Visual Studio Team Services, which offers a place to store code, plan work, and test, build, and deploy software. I also use Visual Studio Code, a lightweight, cross-platform code editor. In fact, I’m writing this blog post inside Code because it is such a fantastic Markdown editor. I can’t wait to see what the next 20 years bring.

Happy birthday Visual Studio!

10 days with Windows 10

Windows 10 was released on July 29 and I was one of the millions who upgraded my PCs right away. I had been running the preview builds for a few months on a test machine as one of Microsoft’s five million or so Windows Insiders, so I knew more or less what to expect. After running Windows 10 for ten days on my main PCs, I’ve found some things I like and some that I don’t. The upgrade process was smooth, Cortana and Continuum are great new features, but Edge is disappointing and OneDrive integration could be improved. Here are my thoughts.

windows 10 hero
This is the new Windows 10 hero image, which you can learn more about here

Upgrading

If you’re running Windows 7 or Windows 8 and have all the latest service packs installed, you can upgrade to Windows 10 for free until July 29, 2016. So should you upgrade and if so, when?

I don’t think there’s any compelling reason to stay on Windows 7 or 8. The design philosophy for Windows 10 seems to have been to combine the best of both its predecessors and for the most part, I think they have succeeded. If you avoided Windows 8 because it took away the Start Menu, you’ll be happy to hear it has returned for Windows 10. And likewise if you enjoyed the touch features of Windows 8, I think you’ll find the approach that Windows 10 takes is familiar, if a little incomplete. Users of both Windows 7 and Windows 8 should feel right at home in Windows 10. It’s new, but it’s still Windows.

If you reserved your upgrade then it’s probably best to wait until you’re notified that the upgrade is ready. That way you can be sure that drivers and other aspects of your computer will continue working properly after the upgrade. If you’re a little more adventurous, you can of course go ahead and upgrade now using this tool.

I got the notification to upgrade right away on one of my PCs and of course went about manually upgrading the rest of them. The only problem I ran into was on my Surface Pro 3, because I had VPN software installed. The good news is that it takes just a couple of clicks and a few minutes to go back to your previous OS, which I ended up doing a few times while troubleshooting. It’s incredibly comforting to know that you can revert back to exactly the way things were before if the upgrade doesn’t go well.

Windows Central has a solid roundup of other upgrade issues you may encounter and how to resolve them.

You should note that not all Windows 7 PCs will be upgradable to Windows 10. They still need to meet the minimum requirements. I tried to upgrade my old Toshiba Portege M200 for example, but of course it didn’t work because just like Windows 8, the PAE, NX, and SSE2 processor features are required for Windows 10. So if you have really old hardware, don’t be surprised if it won’t upgrade. Anything in the last five years should be fine though.

Start

As mentioned, the start menu is back in Windows 10. When you turn your PC on, you’re presented with your desktop rather than the start screen that appeared in Windows 8.1. And when you click the Start button, you now get a more or less familiar looking menu. There’s “all apps” from Windows 7 and also tiles from Windows 8. You can resize the start menu to be skinny like Windows 7 or to take up more of the screen, similar to Windows 8.

start menu
My start menu right now

I like the live tiles, so I have made the start menu on my desktop PC three groups wide. On my Surfaces, where there is less space available, I’ve shrunk this down. If you had groups of live tiles in Windows 8.1 those will be combined into a single group in Windows 10, so you need to reorganize them again. It’s annoying but only takes a few minutes.

My main complaint about the new start menu is the wasted space on the left. It doesn’t seem like “Most used” is actually accurate and there’s an awful lot of blank space between that and the primary commands at the bottom (because I have resized the menu to be taller). It feels like the perfect spot to let me pin a few more things. I wish the tiles for desktop apps looked better too.

On the plus side, opening apps is done the same way it has been since Windows 7: simply press the Windows key, start typing, and hit enter.

Tablet Mode (Continuum)

Windows 7 worked on touch-enabled devices, but it was horrible to use because everything was designed for mouse users. Windows 8 focused on making the touch experience great, but many feel that negatively impacted mouse and keyboard usability. Windows 10 tries to find the middle ground.

The new thing is called Tablet Mode, or Continuum as it also known. If you’re on a touch-enabled device, you can turn on Tablet Mode which expands the start menu to take up the entire screen (kind of like on Windows 8.1), opens apps in full screen mode, and adds a handy back button to the taskbar. When you swipe in from the left, you get the new Task View, which lets you pick from the running apps. And of course the on-screen keyboard pops up as appropriate in this mode. The other big change is that you can swipe an app down from the top to close it, just as you did with Metro apps on Windows 8.

tablet mode
Same start menu, but in Tablet Mode

On devices like the Surface that have a detachable keyboard, you’re prompted to switch in and out of Tablet Mode when you disconnect or reconnect the keyboard. By default Windows will ask you every time but you can tell it to remember your selection too.

You can see a video of how this works here.

After using Tablet Mode for a while, I’m finding I like it a lot more than I thought I would. It’s a really great experience on my Surface Pro 3 and I don’t mind the prompt to switch modes at all. The marketing speak is that it “puts you in control” but I’m finding that to be true, sometimes I want one mode and sometimes I want the other mode and I get to pick when.

Cortana

One of the compelling new features of Windows 10 is Cortana. I’ve been using Cortana on my Windows Phone for a while now and was eagerly awaiting a version on my PCs. Unfortunately Cortana is not yet available in Canada, though Microsoft has promised that’ll happen before the end of the year. If you want to use Cortana now, you can change your region to be the US instead of Canada. The only downside I have found to this is that the Calendar app will display temperatures in Fahrenheit instead of Celsius (the Weather app let’s you choose and the News app still lets you pick Canada as your region).

I’m a big fan of Cortana and the Windows 10 implementation is off to a great start. You can enable an active listening mode so that simply saying “hey Cortana” engages the assistant, or you can simply click the button. Cortana will surface your calendar, news related to your interests, weather, stock prices, and much more. I’ve found the speech recognition to be surprisingly good and am thrilled that Cortana does an increasingly useful list of things, like converting measurements. For anything else, you’ll get kicked out to Bing.

cortana
Cortana telling me about Edmonton and Microsoft

Probably the most useful aspect of Cortana is reminders. You can set reminders by time, place, or person (“remind me to tell Mike congrats when I speak to him next”). It’s very handy to be able to quickly ask Cortana to remind me about something. Unfortunately, reminders don’t currently sync from Windows 10 to Windows Phone 8.1, but that problem will go away as soon as Windows 10 Mobile is released in the fall.

I really like the direction Microsoft is going with Cortana.

OneDrive

One of the biggest differences between Windows 8.1 and Windows 10 is in how OneDrive is handled. In 8.1 we had placeholder files, so you could open up your OneDrive folder and see all of the files there even though they weren’t actually there. If you tried to open one, Windows would magically download the file then launch the correct application. It was pretty handy, because on devices with limited disk space you could see everything without wasting gigabytes of space.

Well in Windows 10 none of that works. Now you have to select which folders you want to sync, and after you’re done choosing, OneDrive does a more traditional sync where the files actually exist on disk. But if you have folders you haven’t chosen to sync, you won’t see those unless you go to OneDrive on the web as there’s no longer a OneDrive app either.

For the most part, this hasn’t bothered me too much. There are some folders that I use all the time so I set them to sync, and others that I use almost exclusively as cloud storage, so I don’t need those on my PCs. Depending on how you have your files organized, this may or may not be an issue. I hope there are improvements on the way though, because it would be nice to have an app again to manage all my files without necessarily syncing them.

The other point to make here is that if you use Office, the placeholders were always unnecessary and so your experience in Windows 10 shouldn’t change much. You can simply open Word, Excel, or PowerPoint and choose your OneDrive files from there without syncing. Same goes for OneNote, it loads your notebooks from OneDrive automatically.

Microsoft Edge

While Windows 10 does ship with Internet Explorer 11, the default browser is a new one called Edge. In theory it is a faster, slimmer, more compliant browser without all of the legacy cruft that IE carried. And while it is those things, it lacks key features right now that make it feel like a step backward in many ways.

edge
My blog in Edge

Let’s start with the things I like. The minimalist interface is great, and I love that there’s an option for a dark theme. I like the integrated reading mode and reading list features. The ability to draw all over a web page and send it to others is also extremely handy as a Surface Pro 3 user. I’m also optimistic about Cortana integration. And…that’s about it. Yes, it renders web pages correctly. But that’s its primary and most important job so I don’t count that as a positive.

There are many, many issues with Edge right now. Simple things like the fact that it won’t remember window locations (so if I open it up, move it to my second monitor, close it, and then open it again, it appears back on my first monitor). More significant things like the fact that back and forward gestures are gone from touch devices, something that made Metro IE a joy to use. Favorites do not sync between PCs like they did with IE. When loading pages in many cases scrolling doesn’t work until the entire page has loaded, which makes it feel frozen or slow. There’s no ability to choose where to save a download, nor is there a proper download manager that will continue when the browser is closed. Actually you can’t even choose whether or not to start a download, if you click a link to a file it just downloads it. You can’t hold the back button down to access recent history. There are no jumplist options, so you can’t right-click on the taskbar icon and start an InPrivate window, for instance. The list goes on, as you’ll see in the Windows Feedback app. Edge is half-baked at best.

I want to like Edge, but it’s just not there yet. Hopefully some of these shortcomings are addressed in an upcoming update. And I know Microsoft has already said that some features would be coming in the fall, like support for extensions. I’m using it day-to-day for now, but if it doesn’t improve quickly I may have to switch.

Also: I think it’s pretty ridiculous how many “reviews” of Edge I have seen that are positive, apparently just because the reviewer has some hate for IE. Have you actually used IE11? It’s a good browser.

Other things I like

  • Dark theme. I like that Windows 10 by default has a dark look to it, and I hope that this is expanded on in the future. You can of course change the color to suit your mood.
  • Task View (WIN+TAB) I know that OS X users won’t be impressed as they’ve had Mission Control (Expose) for a while now, but the new Task View is fantastic. You can still Alt-Tab of course to get to your apps as you always have, but Task View is critical for touch devices and works well.
  • Multiple desktops. I guess this is a bit of a power user feature, but having the ability to turn on multiple desktops baked into Windows is a win. I can keep my email, notes, and other productivity stuff on one desktop and my development apps on another. You can switch between them using Task View, or by pressing WIN+CRTL+(RIGHT/LEFT).
  • Feedback app. Have a problem? Don’t like something? Fire up the Windows Feedback app and see if someone has already reported it. You can upvote things or you can submit your own feedback. Hopefully Microsoft acts on all this feedback quickly.
  • Groove Music. It’s basically the same as the old Xbox Music app, but with a new name (which I like) that hopefully means it can stand on its own (this is a good sign).

task view
Task View is pretty great

Other things I don’t like

  • Too much white. There’s no contrast anymore! File Explorer is blindingly white for instance, and most Win32 apps now have all-white title bars and menu structures. Some color would be much appreciated.
  • Lack of features in Mail. It’s inexcusable that with an apparent focus on keyboard and mouse users, the Mail app in Windows 10 doesn’t let you select multiple messages using CRTL+SHIFT+ARROW like pretty much every other app in history does. There’s a long list of other limitations too (switching between accounts feels half-baked, for instance). Outlook, it is not.
  • Battery life. I haven’t measured it, but anecdotally the battery life on my Surface Pro 3 seems to be maybe slightly less than it was with Windows 8.1. But on my original Surface Pro, it’s abysmal. There’s definitely room for improvement.
  • Volume mixer still needs work. I was really hoping for change here, but no such luck. Some apps have individual volume controls, but others (like Songza) do not. It’s annoying. I want better control over this!
  • Minor bugs. There are still little annoying bugs all over the place. On my desktop, choosing what apps to show on the lock screen doesn’t work. On my Surface, the Mail live tile never seems to update. Once or twice in tablet mode Windows has seemed to get stuck in right-click mode, requiring a logoff to fix. That kind of thing. If you’re concerned, wait til the fall when I’m sure these and other issues will have been largely addressed.

Xbox, Phone, and beyond

Windows 10 is not just a desktop OS, it will also run on a variety of other devices. The user interfaces may look different, but the core is the same as are the services that run atop the OS. By the end of the year, Windows 10 variants will be released for the Xbox One and for Windows Phone devices. I’m very much looking forward to Cortana on my Xbox, not to mention an update to my Lumia to better align it with my PC.

Yes I have a slight bias toward Microsoft products, but Windows 10 has still impressed me, and it’s only going to get better from here. I absolutely think you should upgrade!

OneNote + OneDrive = Awesome

Without good tools to keep me organized, I’d be totally scatterbrained and lost. Well, good tools and an understanding partner who helps me keep on top of things! I have tried a bunch of different tools over the years, but two in particular have become absolutely critical: OneNote and OneDrive. This isn’t a sponsored post, I just want to share two tools that have really made a difference for me. Maybe they’ll have a positive impact on your life too!

OneNote

OneNote has developed into an amazing tool since it was launched over ten years ago. I originally used it locally on my computer to keep track of typed notes. I also had a Tablet PC, so I would use it for handwriting too. OneNote supports more advanced features also, like audio or video notes, photo notes, smart tags, document scanning, screen clippings, and much more.

Here’s an overview of the new OneNote:

I use OneNote many times a day, across most of my devices. I track my computer activity with RescueTime, so I know with certainty that OneNote is consistently in the top five applications by usage. It works on my desktop, my laptop, my Surface, and my phone. I run Windows everywhere, but even if your devices are a bit more varied, OneNote can work for you. There are apps for Android, iPad, and iPhone too. There’s even a web app.

At the moment I have two high level notebooks – one for personal stuff and one for work stuff. When I’m doing research for a blog post, I store everything in OneNote. I’ll even write some of my drafts there. I keep recipes, lists, and ideas in my personal notebook. My work notebook is filled mainly with meeting notes, often captured in ink using my Surface Pro, but I also use it for UI reviews, to keep track of technologies I’m exploring, and a variety of other things.

One of the greatest things about OneNote is the search. The ability to organize notes into sections is handy, and if you use tags you can quickly find any note that has a specific tag. But most of the time I just search. The best part is that OneNote will even search my handwritten notes, without any conversion to text. It’s surprisingly accurate, and it’s this feature that I typically demo to people when I’m showing them OneNote on my Surface. Support for this was added years ago and it still never fails to amaze.

OneDrive

OneDrive is the new name for SkyDrive, which first launched in 2007. It’s kind of like DropBox in that it is a place in the cloud to store your files. You get 7 GB of storage space for free, and it’s pretty easy and expensive to boost that amount.

Here’s an overview of the new OneDrive:

Again, OneDrive works across all of my devices, and again, there are apps for Windows, Mac, Android, iPad, and iPhone. There’s even an Xbox app, which comes in handy when you want to show some photos (which are stored automatically on OneDrive as I take them with my phone).

I put all kinds of stuff in my OneDrive (I’ve got over 47 GB of storage total, 20 GB of which comes from my Office 365 subscription). Everything I scan using my Doxie goes into OneDrive. Documents, presentations, audio recordings, graphics, mind maps, blog post drafts in MarkDown, – you name it, I store it in OneDrive.

Using OneDrive I don’t worry as much about backups (though I still use Backblaze and a few other approaches to do regular backups). Using OneDrive means I rarely have use for USB sticks, because my files are always in sync, across all my devices. OneDrive has completely changed the way I think about file storage, for the better.

The one and only feature I desperately want for OneDrive is co-owned folders, to bring DropBox-like folder sharing to the platform (you can share and collaborate on documents now, but I want to have an entire folder that is kept in sync across multiple OneDrive accounts). The good news is that the co-owner feature is apparently coming very soon.

OneNote & OneDrive are better together

The magic happens when you store your OneNote notebooks on OneDrive. All of the new Microsoft Office apps support logging in with a Microsoft Account, so it makes it super easy to do. I think this approach is probably the default for the phone and tablet apps too.

With OneNote on OneDrive, it doesn’t matter what device I’m using, because my notebooks are kept up-to-date with changes. The sync is completely automatic and fast. So fast actually, that it fits into a 6 second Vine:

I rely on this each and every day, so I’m glad I have never run into a sync problem. I can take some notes at home, walk over to the office, and pick up right where I left off on a completely different computer. I regularly take notes on my phone when I’m at an event, and when I get back to a computer to start blogging about it, I don’t need to worry about where my notes are. They’re always there, ready for me.

These two tools have made a big difference in my life. If you want to give OneDrive a spin, use this referral link and we’ll both get an extra 0.5 GB of storage space for free. If you want to try OneNote, you can download it for free here.

Building a Results Dashboard for the 2012 Alberta Election

Like many Albertans, I have spent a significant amount of time over the last month paying attention to the election! Reading about the candidates, following all the drama, and spending lots of time with the #abvote hashtag on Twitter. As the candidates were making one final push over the weekend before the election, I decided to build a results dashboard. I like a good challenge and enjoyed building it, but it was especially rewarding to see that it proved to be quite popular too! In this post I’ll tell you a little about how and why I built the website, and what I learned from it.

abvote results

If you haven’t checked out the dashboard, you can see it here. I’ve added a bunch of stuff since election night, which I’ll explain below.

The Idea

By late Friday afternoon, my thoughts had drifted to election day itself. I started to think about how exciting it would be to see the results come in – I love election nights! I knew there would be television coverage and that the media would have some web coverage as well, but I also felt that I could build something unique and valuable. If only I had the data! So I looked around, and found the Elections Alberta results site. At that time, the results page was full of test data. I immediately saved a copy to my computer, and saved a few of the electoral division pages too. That proved to be a wise decision, because a few hours later the site went offline!

elections alberta

Before I took a crack at scraping the website, I wanted to know if there was a data feed of some kind available. I blindly emailed the general Elections Alberta address, and to my surprise, received a response shortly thereafter! Unfortunately there was no data feed available, so I set about writing a scraper. Within a couple of hours, I was correctly scraping the main results page as well as all of the electoral division pages. Now that I had the data, I felt pretty confident that I could build a dashboard over the weekend. I didn’t get back to the project until Sunday morning, so that meant I had to prioritize what I was going to build. It took about six hours, but my I finished my initial version late that evening.

The Design

This was not my first election results dashboard. If you’ve been reading my blog for a while, you’ll recall that I built a dashboard for the municipal election here in Edmonton back in 2010. I learned a lot from that experience, and I remember it being a lot more rushed and difficult than this dashboard! Among other lessons, it was clear that design and colors matter, and that mobile devices are important (even then lots of people were asking for mobile support). I also knew that forcing users to refresh the page is less than ideal – it’s not a very delightful experience, and it puts unnecessary strain on the server. I also disliked the limited real estate that I had to work with (the current ShareEdmonton page width is fixed…but I’m working on a new version that is fluid).

So, I wanted a mobile-friendly, fluid-width, Ajax-enabled, attractive looking design. I immediately decided to use Twitter Bootstrap. I have used it a few times now, and I absolutely love it. I can’t thank the folks at Twitter enough for making such an excellent framework available for free! It gave me everything I needed to get going from a UI perspective. In particular it features responsive design, which makes it possible for the pages to scale from the desktop down to mobile devices without much work. For the backend, I used ASP.NET MVC 3. I use it for everything, so I know it well.

For performance reasons, it definitely made sense to cache the data. I decided on a fairly straightforward approach: I’d scrape the data from Elections Alberta and would store it using Memcached for two minutes. That meant that every two minutes, a request would take slightly longer because it had to download the data again, but this seemed reasonable (and as it turned out, the Elections Alberta site was incredibly quick). I also designed the pages to poll for new data every 30 seconds, which prevented users from having to reload the page manually.

The Cloud

When I built the ShareEdmonton dashboard a couple years ago, it was hosted on one of my servers. That worked fine, but it did slow down under load and I didn’t have much ability to scale up or out without a lot of additional cost, time, and effort. I really wanted to avoid that situation this time, so I decided to host the dashboard using Windows Azure. I’m in the process of migrating ShareEdmonton to Azure, so I already had an account and was pretty familiar with how it worked. Deploying to Azure is so easy – I simply had to add a deployment project in Visual Studio, and then I could deploy new versions in just a couple of clicks.

Windows Azure supports a range of instance types – basically you get to choose how big and powerful you want your server to be. I started with “Extra Small”, the least powerful and therefore least expensive type. As the polls were about to close at 8pm, I scaled up to “Small”, which meant redeploying the app (which took about 8 minutes, but happened completely behind-the-scenes). About half an hour later, I had to add capacity because the site was starting to get quite sluggish. This time I scaled out, by adding a second instance. All I had to do was change a configuration setting in the Azure management console, and the service took care of everything. Within a few minutes, I had two load-balanced “Small” instances. The performance boost was immediately noticeable. About an hour later, I added a third instance, and kept the system running that way until about 1am. I scaled it back down in stages, and now have it running as a single “Extra Small” instance again.

Two Key Decisions

I think the two most important decisions I made were:

  1. Using Twitter Bootstrap
  2. Using Windows Azure

The decision first meant that the website looked good and worked across browsers, screen resolutions, and devices. I got all of that engineering effort and testing for free, which meant I could focus on building an election results dashboard rather than building a website. I didn’t have to figure out how to lay things out on the screen, or how to style tables. The second decision was perhaps even more important. By using Windows Azure, I could deploy new versions of the dashboard in minutes, plus I could scale up and out simply by changing a few settings. That meant I could quickly respond when the site came under load. The other big advantage of using Azure was the cost – running the site on election night cost me just $1.54. Incredible!

Some Statistics

The dashboard served around 60,000 page views on election night alone, which is pretty good for a website launched just hours before the main event. Keep in mind that because the data on the site automatically updated, users didn’t have to refresh the page which kept that statistic lower than it would otherwise have been. The visit duration metric is another way to see that – 20% of all visitors spent at least 10 minutes on the site. I actually would have guessed a higher percentage than that, but perhaps the high mobile usage was the reason.

The top screen resolution for visitors was 320×480, not a desktop resolution! Roughly 36% of all visits that night were made on mobile devices (which includes tablets). The iPhone was the most popular device, followed by the iPad. Clearly using a framework like Twitter Bootstrap with responsive design was a good decision.

The other statistic worth sharing is that the vast majority of visitors (about 73%) found the site by way of social networks, and two in particular. Facebook accounted for 78% of all those visits, while Twitter accounted for 20%.

Recent Improvements

Since Monday I have made numerous improvements to the dashboard. Here’s a brief overview of the new features:

  • All the data is now stored locally, which means I’m no longer reliant on Elections Alberta. They have made numerous updates over the last two days, and I have updated the site’s local data store accordingly.
  • I updated the voter turnout chart and added regional voter turnout to the front page. I also added a table of the five closest races.
  • District pages now show voter turnout and the list of polls is now sortable.
  • There’s a new Districts Grid, which lets you see lots of information about all the districts in a single, sortable view. For example, you can quickly see which district had the best voter turnout, which were the closest races, and which had the most candidates.
  • There’s also a Candidates page, which lets you see information about all of the candidates in a single, sortable view.
  • Last night I also added a Maps page, which has interactive maps for the province, as well as zoomed-in maps for Calgary and Edmonton. Click on any region for details and a link to the district page.

What’s Next?

I plan to keep the dashboard up as it is now, though at some point I’ll probably transition it from being a dynamic website to a static one (far cheaper to host over the long-run). If you have any suggestions on things to add or improve, let me know! I hope the site will serve as a valuable reference tool going forward.

Thanks for reading, and thanks to everyone who sent positive comments about the dashboard my way. It’s great to hear that so many people found it useful on election night!

Edmonton Transit’s new lost & found system: Foundtastic by Hybrid Forge

A little over a year ago, the City of Edmonton held an open house for a new initiative known as Leveraging Technical Expertise Locally (LTEL). The initiative was created as a way to allow the City to gain access to innovative local technology companies who may not otherwise have the scale or resources to participate in a traditional RFP process. The pilot project was a replacement for Edmonton Transit System’s electronic lost and found system. A total of fourteen local companies proposed solutions and the field was narrowed to six finalists in January: Hybrid Forge, Aldata, Aurora Bar Code, Damaag, Stage 2, and XEA Services.

Hybrid Forge was selected in February, and they started work on their lost and found solution in early spring. Called Foundtastic, the application goes live today and tomorrow at the City of Edmonton.

Foundtastic

I caught up with Geoff Kliza and Chad Smith from Hybrid Forge, as well as Loren Andruko and Bruce Beecher from the City of Edmonton, to talk about the process and the new solution.

Geoff and Chad told me they “underestimated the seriousness with which ETS treats lost and found.” This is good news for you, the transit user! Here’s how the process worked before Foundtastic:

  1. You lose something on the bus in the morning.
  2. Later that day, at the end of his/her shift, the driver collects all the items found on the bus and hands them off to the dispatcher at the garage (there are six garages, plus DATS, and the ETS security officers who also find items).
  3. The dispatcher does the paperwork for the lost items and prepares them for transport to Churchill Square.
  4. The items are transported to Churchill Square, and the items are entered into an Access database.
  5. By the middle of the next day, your item has been catalogued at Churchill Square and is ready for staff to respond to your requests.

Certain items are special, of course. For passports, driver’s licenses, cell phones, or other easily identifiable items, ETS will proactively try to contact individuals. But for the most part, that’s the process. There are signoffs along the way, so that ETS can track items from bus to customer.

There are a number of issues with that process. Two of the most obvious issues are the disconnect between the paper trail and the database at Churchill Square and the time delay between an item being found and that item being searchable. If you called on the same day you lost your item, staff would tell you to call back the next day because they’d have no way of knowing if something was found until it was in the Access database.

Foundtastic solves both of these problems, and more. The process is largely the same, except that dispatchers no longer need to catalogue items on paper. Instead they enter them into the system directly. A paper manifest is still kept at each garage, but it is printed now, reducing the likelihood of mistakes or illegible handwriting. And by enabling each location to add the items into the database directly, the delay for customers is also removed. Now staff can tell you the same day if its likely that your item was found or not. Auditing is greatly improved now too. The system records whenever a change is made, whereas in the past something could be scribbled and crossed out on paper, making it difficult to track.

I asked whether the idea of using scanners or photographs as part of the process was considered. Maybe using barcodes at the garage and Churchill Square to further automate the process of ensuring that everything that was found made it to the station. Both sides looked at the idea, but ultimately decided that the costs outweighed the benefits.

Chad told me that like most software projects, the scope evolved and changed over time. Instead of “here’s the problem, give us a solution” it evolved into more of an agile development process. When it became clear that the paperwork could be reduced by allowing dispatchers to enter items directly, a slight business process change was required. That’s where Loren came in – he played a key role in the process, acting as the key connector between the City and Hybrid Forge. Chad remarked that Hybrid Forge “would not have been successful if Loren had not gotten involved” in the project. Loren was equally as positive about working with Hybrid Forge, saying he would love to work with them again.

One of the most interesting things I learned is that Foundtastic is software-as-a-service, which means Hybrid Forge is responsible for hosting the application. At the open house, it was specifically stated that the solution would have to run in-house, so I’m quite pleased to see that the City relaxed that requirement (they indicated they would as the deadline for submissions approached). Foundtastic is an important system, but it’s not mission critical, so it was a great opportunity for the City to experiment with SaaS.

Foundtastic

An interesting challenge that Hybrid Forge ran into was the interface. As you can see, they’ve created an attractive user interface, but it was actually scaled back somewhat from their original designs. The application needs to be efficient for staff to use, so maintaining the Access-like data entry interface was important. While tabbing from column to column and making extensive use of the keyboard is the way Access works, that’s not typical on the web. Hybrid Forge used jQuery to maintain that experience for users. For those of you interested in the technical side of things, Foundtastic is built using ASP.NET MVC 2.

With Foundtastic, the City of Edmonton received a cost-effective piece of software, with a user interface that isn’t typical of City applications, and the opportunity to explore SaaS. For Hybrid Forge, the opportunity to showcase what they can do and the ability to count the City of Edmonton as a customer were both positive outcomes. And for you, the transit user, improved customer service is the big win.

The idea that the LTEL project would be a way for local companies to springboard into a larger market seems somewhat less successful, however. While the City has arranged contracts and such to ensure that Foundtastic could be used in other departments, there are no immediate plans for that to happen. And Hybrid Forge would of course need to spend the time and money to identify opportunities and market their solution if they wanted to sell it to customers beyond the City, something they’re not likely to do as a company focused on custom solutions rather than product development. It seems that aspect of the project is something that TEC Edmonton could have helped with, but they were not involved beyond the initial selection process.

I asked all four gentlemen if they’d do the LTEL process again, and if they’d recommend it to other software companies or other departments at the City. All said yes. That to me suggests that the pilot was a success! Of course, there are lots of improvements that will be made, and Bruce said the City is now operationalizing the process, and that an LTEL2 seems likely. I hope it happens.

In the next six to eight weeks, another key aspect of Foundtastic will go live. Instead of having to call ETS to check if your lost item was found, you’ll be able to fill out a form on the website. You’ll be asked for some identifying criteria, and the system will tell you whether or not it’s likely that your item was found (it’s important to avoid specifics, to reduce the potential for abuse) and what the next steps are to retrieve it. It’s another improvement to the customer service experience made possible by Foundtastic.

Kudos to Geoff, Chad, and the team at Hybrid Forge for showing the City of Edmonton what local software development companies are capable of. And kudos to the City for experimenting with something new. It’ll be interesting to see how LTEL evolves!

Exploring Apps4Edmonton using Microsoft Live Labs Pivot

You’re going to hear a lot more about apps over the next few weeks! The deadline for submissions for the City of Edmonton’s Apps4Edmonton competition was Friday evening. Local developers came up with more than 30 really interesting and useful local apps, which will now compete for your votes and for the attention of the judges. You can learn more about the prizes and the competition here.

I started looking at some of the apps, and decided I wanted a better interface to browse them. I thought it would be nice to be able to sort the apps, to see a screenshot of each one, and to see which datasets each of the apps made use of. I also didn’t want to spend too much time on it, so with all of that in mind, this seemed like the perfect opportunity to experiment with Pivot.

Here’s what I came up with! Click on the image below to load the Apps4Edmonton Apps Directory in Pivot. You’ll need Silverlight 4 installed for it to work. Alternatively, if you have downloaded Pivot and have it installed on your computer, you can browse to this URL inside Pivot.

Click here to launch the Pivot!

Might take a minute or two to load. If it doesn’t, just refresh it. What you see are all the apps from the contest page, with a screenshot, description, contest URL, and list of datasets for each one. If you want to see just the apps that use the “Police Stations” dataset for example, you can select it in the navigation pane on the left and the view will update.

Ever since TechEd, I’ve been really interested in Microsoft Live Labs Pivot, an interactive data visualization technology. It’s great for exploring large datasets, identifying relationships, visualizing patterns, etc. The Apps4Edmonton dataset isn’t very large of course, but the tool still does a great job.

How It Works

I started out by building a Pivot Collection using Microsoft Excel. Pivot has a pretty handy tool for turning spreadsheets into collections, so that’s what I used initially. Quickly though I realized that I wanted to host this on the web somewhere, and that I wanted others to help me refine the dataset.

I uploaded the spreadsheet to Google Docs, and then downloaded the Just In Time Pivot Collection sample. After a little bit of experimentation with the Google Docs API (which I have never used before) I had the code working to create my collection on the fly. It loads the spreadsheet from Google Docs, creates the collection, and then serves up the XML and Deep Zoom images.

The spreadsheet is mostly complete, but a few apps are missing datasets. This is because either it wasn’t immediately obvious which they were using, or they simply don’t use any that are part of the data catalogue. You can update the spreadsheet here.

If you’d like to experiment with creating your own just-in-time Pivot Collection, you can download the sample code here and the code for the collection I wrote here. I also made use of CutyCapt to generate screenshots. You’ll also want to check the XML schema.

Apps4Edmonton

There are some really great apps in the Apps4Edmonton competition, so check them out. You’ve got until September 10 to vote for your favorite ideas and apps!

And for full disclosure, I submitted ShareEdmonton to the competition. If you like it, vote for it!

UPDATE: Thanks to John for helping me get the Pivot Collection right!

Edmonton’s Omni Technology Solutions brings CRM integration to the world

Last year, local software company Omni Technology Solutions celebrated its 10th birthday. They’ve had some incredible success during that time, and are well-positioned for future growth. With a focus on customer relationship management integration solutions, they’re probably not a company that you’ve heard of, unless you happen to be a customer. While almost all the leading CRMs are headquartered in Silicon Valley, it’s interesting to know that the number one CRM integration platform is developed here in Edmonton! That’s why I reached out to Trevor Poapst, Omni’s Director of Global Marketing, to learn more.

Their core offering, Riva, overcomes the limitations of Outlook CRM plug-ins that need to be installed, configured and managed on each user’s desktop, laptop and mobile device. Instead, Riva gets installed once on a server and transparently syncs CRM address book, calendar, sales and support data to all Microsoft Exchange and Novell GroupWise email clients. Riva is compatible with the very popular Salesforce, SugarCRM, Microsoft Dynamics CRM, Oracle CRM, SageCRM, Saleslogix and several other leading CRM systems. What’s unique about Riva is that the synchronization all happens server-side, so there are no Outlook plug-ins required.

The company’s second product is called eControl, and it satisfies the need for a simpler, web-based alternative to the native management tools for Microsoft Active Directory, Exchange, Novell GroupWise, eDirectory, SAP and other systems. Though eControl has been designed to be simple enough for non-technical users to use, it is still very powerful, and features full auditing, enhancing compliance with SOX and other regulations. Omni’s customers have used eControl to manage anywhere from 500 to 50,000 user accounts, and a typical deployment takes less than 3 hours.

You’ll notice that both solutions work with Novell’s products, which is really where Omni got started. They’re one of the top three GroupWise developers in the world, and have benefited greatly from participating in the Novell ecosystem. Being focused on Novell hasn’t been without challenges, however. The first was the size of the market. There are far fewer Novell customers than Microsoft customers. In the last year or two however, Omni has successfully expanded into the Microsoft marketplace, and is working hard to continue to grow in that area.

The second challenge is one that Omni continues to deal with. Though the company has always been based here in Edmonton, very few of its customers have been in Canada because GroupWise has traditionally had a stronger following elsewhere. Winning global sales hasn’t been easy. In addition to working with partners, Omni has started to open offices abroad. Offices in Chile and Munich opened late last year, and the company recently closed its first major eControl deal in Chile as a result.

Though reaching the global market is challenging as an Alberta-based company, Trevor wouldn’t have it any other way. The company has received lots of support from the provincial government, and has benefited from having access to a highly trained workforce and relatively low business costs. Trevor also mentioned that Alberta is a great place to raise a family, in part because you don’t have to commute several hours every day. In fact, Omni’s CEO and CTO both bike to work year-round, even in the snow!

Omni just launched version 3.5 of eControl (education customers can save 70% until August 31), as well as its new Riva website. The company is planning its second annual eControl conference in Santiago, Chile. Omni is poised for growth and is looking to expand its partner network, especially now that it can tap into the large Microsoft and CRM partner communities.

It was great talking to Trevor (who is actually working from Mexico this year), and learning more about a successful Edmonton-based software company making significant inroads into the global CRM and identity management markets. I think it’s a fantastic example of the success that companies based here can have, and I wish Omni all the best as they continue to grow. You can follow Omni on Facebook and on Twitter.

Recap: Tech·Ed North America 2010 Day 4

Yesterday was the final day of TechEd North America 2010 and the start of a max exodus of geeks out of New Orleans (they’re hard to miss wearing the official TechEd backpacks or other clothing emblazoned with tech company logos). I’m sure some people skipped the final day, but it still seemed pretty full. As you can see in this video I recorded mid-afternoon, many people were still attending the final sessions:

After a leisurely morning, John and I attended Mark Russinovich’s session on Pushing the Limits of Windows. Mark is one of just a handful Technical Fellows at Microsoft, and probably knows more about how Windows works internally than anyone else. As expected, Mark packed one of the larger auditoriums at the convention centre. He didn’t strike me as a natural-born presenter, but I still very much enjoyed his talk (and learned quite a lot). As John remarked on the way out, “my brain hurts.”

Tech·Ed North America 2010

I couldn’t resist attending the Coding4Fun session in the afternoon, titled Learn Windows Phone 7 Development by Creating a Robotic T-Shirt Cannon. Daniel Fernandez and Clint Rutkas walked us through how they built a Windows Phone 7 app to control the robot (affectionately named Betty) that debuted at Mix back in March. Along the way, they shot out a few dozen t-shirts and weren’t afraid to show off the robot’s capabilities! Here is a video I recorded of the robot in action:

Tech·Ed North America 2010

It was a fun way to get some exposure to Windows Phone 7 development. If you’ve never checked out Coding4Fun before, you really should! You can find the source code for the app they built here.

The final session I attended at TechEd was Programming AppFabric: Moving Microsoft .NET to the Cloud, presented by Pluralsight’s Aaron Skonnard and Keith Brown. Despite progressing a little slowly at times, I thought the talk was fantastic. In particular, the way Aaron started it was memorable. He fired up a console app running on his laptop and asked everyone with Internet-connected devices in the audience to hit a public URL. Immediately requests started appearing on the screen, prompting the very distinctive “how did he do that” murmurs among everyone in the room (turns out it is the magic of the AppFabric Service Bus).

TechEd officially finished with a large party in the evening at Mardi Gras World. Buses took thousands of geeks to and from the event, which featured a number of live bands, magicians, jugglers, palm readers, and an Xbox gaming room, among other things. It was fun to just walk around the party, taking in the sights and sounds.

Mardis Gras World

Mardis Gras World

I learned quite a lot at TechEd, and have a pretty long list of things I want to look into further! It was a fun week.

You can see more of my TechEd photos here, and also at the TechEd group on Flickr.

Recap: Tech·Ed North America 2010 Day 3

Maybe it was because I was wearing shorts, but the convention centre seemed especially cold yesterday (and today). Still really hot outside for TechEd attendees however, with temperatures hovering around the 30 degrees C mark. The day seemed to go fairly smoothly, with the exception of lunch (there was a session that went through most of the lunch break, and they ran out of food, which meant incredibly long lineups right at the end).

Tech·Ed North America 2010Tech·Ed North America 2010

The first session I went to yesterday was Windows Server AppFabric Caching: What It Is and When You Should Use It. I’m a fan of Memcached, and have been using it for a number of years now, so I really wanted to see how AppFabric compares (the codename for this was Velocity, which I wrote about here). I’d say that overall they are quite similar, though if you’re a .NET developer using AppFabric can give you some quick wins. One example is that with just a couple of lines in the Web.config, you can use AppFabric to store Session information, perfect for a web farm scenario. Another thing I like is that AppFabric Caching is managed through PowerShell. Here are some resources:

Tech·Ed North America 2010

After lunch I attended one of the bigger sessions, Overview of the Microsoft ADO.NET Entity Framework 4, hosted by Julie Lerman and Chris Sells. I really enjoyed it, first and foremost because it consisted mainly of demos, and secondly because Julie and Chris were really entertaining and worked well together. Here again, I have been using an open source solution – SubSonic. I remember reading about EF really early on, but didn’t spend too much time on it because of all the criticism it received. If nothing else, the session yesterday made me want to look at EF again – it has really come a long way. I was impressed.

Another session I attended was Building RESTful Applications with the Open Data Protocol. Although labeled a 300-level session, it was very introductory, and didn’t contain anything I hadn’t already seen. It was great to see so many people in the session though – clearly there’s some interest.

I also took some time yesterday to explore the Exhibition Hall a bit more, stopping by the Spoon booth to talk with them. They have some really interesting virtualization and application streaming technology. I recorded a short video and wrote more at Techvibes.

Tech·Ed North America 2010

There are lots of social events during TechEd, but last night in particular seemed like a busy night. John and I checked out the Springboard party at the House of Blues (where we saw some of the Hawks-Flyers game) as well as the Pluralsight mixer. Good times!

You can see more of my TechEd photos here, and also at the TechEd group on Flickr.

Recap: Tech·Ed North America 2010 Day 2

Full day of sessions at TechEd yesterday, though I did take some time in the morning to catch up on blogging, as I am doing today. Probably the most talked about topic at TechEd so far has been the breakfast! People are simply not happy with bagels, muffins, and scones. Either the breakfast or these mascots that everyone has been stopping to get a photo with:

The main feature of the day was the Business Intelligence keynote with Ted Kummert, Microsoft Senior Vice President, Business Platform Division. I missed it, so I’ll watch it online, which you can do here. You can also read a transcript here.

The first session I went to was Prototyping Rich Microsoft Silverlight 4 Applications with Microsoft Expression Blend + SketchFlow. It was really interesting to see how you could use SketchFlow to draw out some screens from your application, and then start to add behaviours and other improvements. We also saw the new feature that enables you to publish a SketchFlow document to SharePoint, making it easy to share a prototype/mockup with colleagues. For more information:

Another session I checked out was Intro to Workflow (WF) Services & Windows Server AppFabric. I’m getting increasingly interested in AppFabric. It seems like a no-brainer to use it if you’re on the Microsoft platform already. I probably should have brushed up on some WF before attending the session, but it was still useful to see how WCF, WF, and AppFabric work together. For more information:

My favorite session of the day was the final one, Open Data for the Open Web, presented by Douglas Purdy and Jonathan Carter. This session had two things going for it: open data, one of my favorite topics, and the hilarious tag team of Douglas and Jonathan. They were really quite entertaining, but still managed to do a great job of explaining what OData is, and what the vision is. And, bonus, the City of Edmonton logo was on screen briefly! Some resources from this session:

The Internet at TechEd was pretty reliable yesterday, which meant that everyone on Twitter was able to find out that it was raining outside:

Some other sights:

Tech·Ed North America 2010
Microsoft Tag spotted at TechEd!

Tech·Ed North America 2010
Developers don’t actually talk like that…

Tech·Ed North America 2010
Top Secret! mPad!

You can see more of my TechEd photos here, and also at the TechEd group on Flickr.