Sharing models between Windows Phone and Windows 8: An exercise in futility

Data access is hell.

I’ve been stuck on the same problem for a while now, working on MoodTracker. The problem comes down to SQL Server Compact and LINQ to SQL, and the lack of the former on Windows 8. You see, I’d like to get MoodTracker on Windows 8. However, to do so means reworking how the app does data access since SQL CE isn’t available for use in Windows 8 applications, and unfortunately, there’s absolutely no useful guidance on moving from using SQLCE-decorated model classes to a more portable solution for data access.

So here I am, working on separating my model classes from the concern of data access. And it’s not going too well. Sure, I have a portable library containing new model classes free of the attributes and various association-related classes, and I’ve moved the SQLCE-specific stuff into its own assembly. But that’s as far as things have gone. Trying to connect the dots between the model classes and the data access classes has gotten me nowhere. On a related issue, working out how to inject the DAL into the app had been troubling me, but the realization that it would be done in another platform-specific assembly has given me the clue to work that out (so long as I can work out an interface for data access that works).

I really wish there was some guidance on this, so that phone apps making use of a local database could be more easily ported to Windows 8, with a lot less fuss. If anyone has a good solution for this problem (bonus points if it’s MvvmLight friendly) please let me know!


Good Enough versus Perfect

Voltaire fought intolerance and fanaticism, an...

Voltaire (Photo credit: Wikipedia)

The perfect is the enemy of the good. – Voltaire

Motivation to perform to perfection is a strong force in western society. The attitude that we have to be better than anyone else at something, to achieve perfection in our activities, has been a strong force throughout modern history, from the world’s nations down to the individuals which form their bases. And it’s seen every day in projects of all scopes and sizes.

But Voltaire left a message that should be listened to, by everyone on every project – one that is unfortunately ignored by many, to their detriment.

It’s a somewhat heretical thought: What if we don’t have to be perfect? What if we just do good enough to pass? What will that offer us instead of striving to be the best? Well, what it offers is the ability to work more efficiently and still do a proper job of it.

Read more »


Exceptions and Tasks and Async, oh my!

This afternoon, I pushed out a couple bug fixes for Taptics to Windows Phone Dev Center. I feel like doing a bit of ranting about it, as the fixes are something that could have been done and pushed out a lot earlier were it not for the rudimentary level of detail I got through the crash logs from Dev Center and the bug reports generated by Telerik’s RadDiagnostics component.

What it all boils down to: The Task-based Asynchronous Pattern, known to most of us mortals as async/await. And, to a slightly lesser degree, parallelization.

Read more »


State of my brain

This isn’t so much a blog post as it is a laundry list of things I’ve got rolling through my head: responsibilities, projects, stuff I’ve been reading, etc. I think I need to just dump this somewhere so I can review it, so why not on my blog?

External projects:

  • District 60 Toastmasters spring 2013 conference. I am the workshops chair, and at the moment I am doing a lot of work regarding scheduling of the workshops and making sure workshop presenters have what they need in time. I am also presenting a workshop, which I need to finish preparing.
  • Ad Astra 2013 convention. As the game department supervisor, I’ve been dealing with what will be available to play and who will run individual sessions. Things started a bit late for this year’s conference so I’m playing a lot of catch-up.
  • Anime North 2013 panels. I’ll be on some game-related discussion panels, but there’s been a lot of issues getting things laid out with the panels I am on this year.

Internal projects:

  • Taptics. There’ve been a lot of bugs reported lately, but unfortunately the bug reports and crash traces aren’t providing me with enough information to fix them. I’m also implementing achievements, but I need help with designing the achievement icons.
  • MoodTracker. Currently stuck trying to make MoodTracker somewhat more portable so I don’t have to maintain different branches for Windows Phone 7, Windows Phone 8, and Windows 8. My fault, and would have been entirely avoidable had I taken more time to plan before starting the code for it.
  • Business planning for Charabaruk Information Solutions. This is the name I plan to consult under. The business side of projects has never been my strong suit, instead I tend to focus on technical aspects. I’ve been putting a lot of thought onto how to build up business skills lately.


  • Foundations of Business Strategy and Calculus 101 on Coursera. Currently playing catch-up with my courses.


  • Gamers at Work by Morgan Ramsay. I preordered the book, received it within a week of launch, and still haven’t finished it. Still a few chapters to go.
  • Currently awaiting the 1.1 edition of Mindfire by Scott Berkun. It’s already had a soft launch on Amazon, but the ebook editions are going to be given away for free on Wednesday from the author’s website.
  • Various light novels and manga when I go to bed each night. It’s been a little while since I read any western fiction.

That’s what’s on top of my head right now, but no doubt there’s more. Hopefully I can clear out a bunch of tasks related to these over the week. Which reminds me, I should probably get back to doing weekly reviews.


Nationalize the last mile? Breaking the telco monopolies for superior consumer choices

Phone pole with phone and mainly electric lines

Image via Wikipedia

During this whole debate about usage based billing, one idea that’s popped up is the idea of nationalizing the “last mile”, that bit of cable running between the home and the local phone service central office. Of course, the idea of nationalizing any service raises concerns about competition and limiting user choices. What I’d like to put forward is an idea that saves competition, while preventing the anti-competitive practices of current last mile operators/ILECs such as Bell Canada.

I’ll start off by explaining why some people believe that the last mile should be nationalized, or at least taken out of the hands of the companies that now operate it. All of the large telecommunications and internet service providers in Canada also own media companies and broadcasters. This creates a conflict of interest. Think about how Bell doesn’t just provide internet service (both as a wholesaler and direct to consumer) but also partially owns CTV (which competes with Netflix and other video services) and is a phone service (competing with Skype and other VOIP services). If you look at the other big providers here in Canada, it’s not hard to find similar conflicts of interest.

The big providers are very interested in controlling how people use the internet, so that online services can’t compete with their own subsidiaries.  Separating the last mile from the established telecommunications companies makes it harder, or impossible, for them to control consumers this way.

So what do we do?

We start off by putting everything from the local exchange to the customer’s curb in the hands of provincial or municipal agencies created for the purpose of operating the last mile (which we’ll call LMOs, or last mile operators). This means it’s no longer Bell or Telus who owns the cables running from the demarcation point, but rather a crown or municipal corporation that has no role but to handle the physical management of the local phone system. The LMOs are able to contract out the actual operations of the last mile to companies that would actually manage this work, most likely to the current incumbents, but would be able to use a competitive bidding process to ensure that costs would be kept as low as possible.

Costs for LMOs would come from subscribers via their service providers, with no additional bills to the subscribers. As the costs of maintaining the last mile would no longer be handled by the ILECs, any increase in costs to consumers would be minimal, to cover the overhead of remitting what once would go towards last mile management to the new LMO.

So we’ve covered how the nationalized system would be organized, and how competition would be kept, nay, expanded, under this scheme. But what about actually getting service? To be honest, that wouldn’t be much different than how things already are. Under current rules, the ILECs are required to make their exchange central offices open to competing carriers and service providers (CLECs), for users who don’t want to use the incumbent’s services.

Under the nationalized last mile scheme I am proposing, you’d no longer have one ILEC and several CLECs. Instead, everyone would be a CLEC, with the same level of access to the exchange. They would have the same options as now: connect their own network in at the exchange (or possibly at serving area interfaces, those tall brown and green boxes we see sometimes along the sidewalks). Or they could piggyback on someone else’s network, as some internet resellers do with Bell and Rogers.

It’s technically possible to do this with cable TV services as well. No longer would you be living in a Rogers neighbourhood or a Shaw one, but you’d be able to choose which company would numb your brain with TV stations. For landline phone service, internet service, and cable service, the result is greater competition, as carriers would no longer be able to shut out competition the way they currently can (and do).

What’s the result?

By nationalizing the last mile, consumers see more competition. Artificial measures are no longer required to keep the market open, and incumbent providers no longer have motivation or means to manipulate how consumers use certain services in order to gain more value of others. The new LMOs only handle the physical connection between your home and the exchange central office, and are funded by the services you use, rather than by you directly (making them transparent).

To be honest, nationalization isn’t actually required. The idea is that the last mile is independently operated from the actual service providers. This might actually be more easily accomplished by breaking up Bell and the other ILECs, rather than just taking control of the last mile from them – however, this break-up has to be done properly, unlike how AT&T in the USA was divided up. Rather than slicing up the cake into smaller but still vertical segments, we need to separate the layers of this cake to ensure that consumers will get real competition, rather than just a broader oligopoly.

As with anything else, there would be need for some regulation on the new system. Mainly, LMOs can’t be owned by service providers, in whole or part (that would just bring us back to where we are now). They can’t discriminate against service providers. What they charge to the service providers for managing the last mile, and how much, would likely be regulated by Industry Canada or the CRTC. But this is simpler and more preferable than the complex and confusing regulatory scheme currently in place for local telecommunications operators.

In the end, Canadians will be safer from abuse of telecom monopolies, enjoy greater choices for their phone, internet and TV services, and no longer have to deal with certain service providers using misconceptions about internet use to bolster their already enormous profit margins. Whether by nationalization or by breaking up the ILECs more directly, separating the last mile from service providers is an option Ottawa should carefully examine.