Rockford Lhotka's Blog

Home | Lhotka.net | CSLA .NET

 Sunday, 04 June 2017

I read this thread on reddit thanks to terrajobst - with some amazement, and empathy.

Perhaps most people haven't made a major mistake in their careers, but I've made more than one. And my mistakes were probably more directly my fault than the mistake this poor person make - a mistake that was clearly caused by poor practices by the employer, not be the fresh-out-of-college employee.

I'll summarize what I believe are the two worst mistakes I've made.

Major mistake one was about eight months into my first real job out of university. This predated the concepts of source control like we know it now, so we all worked on a common directory structure that contained the source code for everything. And I deleted it all.

Yup, thought I was deleting something else, but did a recursive delete of the entire source code directory structure, instantly bringing all our developers to a full stop and losing a day's work (or more if the backups weren't good).

Fortunately the backups were good, thanks to a competent system administrator who not only performed the backups, but also regularly tested them. Yeah, just because you "have a backup" means nothing unless your regular IT process includes testing the restore process.

My mistake essentially cost all developers at least two days of time. The day lost when I deleted their work, some hours for the restore, and then another day for everyone to redo their work.

Still, I didn't get fired, though I did get a lot of crap from my colleagues and was on management's sh*t list for a while. And rightly so in my view.

This is probably a bit arrogant, but I strongly suspect I got to keep my job because I was a young hot-shot with no kids, and really no life to speak of, so my productivity as a developer was the best on our entire team. Except probably for my boss, who was an amazing developer!

Major mistake number two was about three years into my career (working at my second real job after university). I worked in IT and had (temporarily) left software development to become the system administrator and manager of the help desk.

I thought our security policies were too lax, and I'd been researching how to tighten up the rules around who had which kind of network and system permissions. Unfortunately what I didn't know was that changing these policies would invalidate everyone's password. Nor did I have the wisdom to do this over a weekend or anything - so I made the change midday.

Next thing you know, a few hundred people lost access to the entire computer system, basically bringing the entire bio-medical manufacturing company to a halt.

Sweating profusely, with basically every manager in the company breathing down my neck, I wrote a script to reset all passwords to a known value so it was possible to get everyone back online.

Basically I cost the company a half day's work, and I'm sure people had to work overtime to catch up and meet deadlines for products to be delivered to customers on time.

Yet again, my f*ckup to be sure. Fortunately I'd been there for quite some time and had built up non-trivial personal capital - all of which was probably spent in that one brief moment when I pressed enter on the line that accidentally locked everyone out of the system.

I read through that reddit post from the poor junior dev, apparently just following flawed onboarding instructions. I suppose the end result of that mistake is comparable to mine, and they had no personal capital to spend (this being day one on the job).

Regardless, from the poster's account it is so clear that the mistake was absolutely the responsibility of the employer - flawed onboarding instructions, extremely shoddy separation between dev and prod environments, apparently no regular testing of backups to make sure they could restore. The sort of environment I experienced back in the 1980's - and wouldn't expect to see anywhere today!

In my view the poster on reddit shouldn't have lost their job like that. They probably should get a lot of crap from coworkers, and perhaps go down in company history as the person who accidentally instigated better processes for development and IT. But not job loss.

On the other hand, perhaps this is for the best - a place run so poorly perhaps isn't a great start to anyone's career. Just think of all the bad habits a new employee might pick up working in a place like that.

Sunday, 04 June 2017 13:39:38 (Central Standard Time, UTC-06:00)  #    Disclaimer
 Tuesday, 02 May 2017

There seems to be some confusion around what Microsoft announced today around Windows 10 and the Surface Laptop.

These are two separate things.

Windows 10 S

This is a new flavor of the Windows 10 operating system. It has nothing to do with hardware. Numerous hardware vendors announced Intel-based devices that'll run this flavor of Windows - including Microsoft.

This version of Windows 10 is restricted to running apps deployed from the Windows store. That includes WinRT/UWP apps, and it includes Win32 apps. For some time now it has been possible for software developers to deploy Win32/.NET apps via the store - Slack is a good example.

Microsoft has said that they'll soon have the full Win32 version of Office in the store. Which makes sense, since they'll want Windows 10 S users to also use Office.

It is also the case that Windows 10 S is more locked down than standard Windows 10, both from a security and battery life perspective. Lower-level features/tools used by developers aren't available, improving security and battery life by eliminating things you don't want students (or most users) to do anyway.

Can a flavor of Windows survive if it only runs apps deployed from the store? I don't know, but given that it is pretty easy for software developers to deploy their existing apps via the store, plus there's quite a lot of nice UWP apps there too, I think it might have a shot.

Personally I wish more software vendors deployed via the store, as that radically reduces the chance that people will get a virus from some random website deploy.

Surface Laptop

This is a new member of the Surface hardware family. It is a laptop, not a tablet or convertible like the Surface Pro or Surface Book.

This is a nice looking and pretty high end laptop. It has Intel Core i5 or i7 chips, a beautiful touch screen like all the other Surface devices, works with the stylus, and comes with as much as 16gb memory and a 1tb SSD. Microsoft is claiming up to 12 hours battery life.

Personally I really enjoy my Surface Pro 4, and use it as a tablet quite often, so I'm not planning to switch to a laptop. So I'm holding out for a Surface Pro 5 😃

But I understand that a lot of people really like the laptop form factor, and this is like a super-powered Macbook Air with a touch screen and (imo) a better operating system.

Speaking of which, the Surface Laptop will ship with Windows 10 S, and can be upgraded to Windows 10 Pro. So for a lot of "regular users" they'll be able to use it as-is, and for power users or developers we can upgrade to Pro to unlock all the power (though Microsoft warns that this will reduce battery life, because Windows 10 S does a better job in that regard).

Summary

Hopefully this helps with some of the confusion. This is not another Surface RT sort of thing. Nor is it a return to ARM-based hardware.

It is a new flavor of Windows 10 focused on regular computer users, thus providing enhanced security and battery life, with a consistent way of deploying apps.

And it is a new member of the Surface hardware family. A high-end laptop for Windows 10 S or Windows 10 Pro.

Tuesday, 02 May 2017 14:45:50 (Central Standard Time, UTC-06:00)  #    Disclaimer
 Tuesday, 26 April 2016

thHU21A440There’s a lot of speculation at the moment, mostly I think from the tech press, that there’s no future for Windows 10 Mobile (aka Windows Phone). To the point that Terry Myerson apparently released a statement to clarify that Microsoft is committed to mobile for many years.

Over the past couple years I’ve been increasingly critical of Microsoft’s mobile strategy as well – it is hard not to be when the platform has such low market share, there’s been a lack of flagship devices released, and there’s still a major issue with apps (that don’t exist or that are quite poor compared to iPhone/Android versions).

So at the beginning of this year I “threw in the towel” and switched to the iPhone. This was after talking to a lot of people in person and via twitter about whether to go iPhone or Android. The overwhelming advice was that if you live in the US you should go iPhone, so I did exactly that.

After a couple weeks with the iPhone I wrote a comparison between Windows 10 Mobile and the iPhone – from my perspective. I’m selfish – I’m looking for a good answer for me, so my blog post was about me and my personal experience. After a couple more months I realized that this is a real tradeoff, because Windows 10 Mobile the operating system is more consistent and polished than iOS, but the apps on the iPhone are almost universally superior.

At that point I thought I’d try Android. This was right after Microsoft Build 2016, where it seemed like there was a lot of love for Android, and where I encountered a whole lot of my peers who were incredulous that I had an iPhone instead of an Android (where they were last fall when I was soliciting input I have no idea – I begin to suspect that people only advocate for their platform when you have “the other platform” in your pocket). Basically, some of the iOS frustrations and inconsistencies were bugging me enough I wanted to look elsewhere.

I didn’t even last a couple weeks on Android though. I bought a OnePlus 2 – a high-end device with very generic Android. It turns out that generic Android pretty much sucks – much like generic Linux. You need to spend (in my experience) hours and hours and hours researching and trying different launchers, lock screen apps, email apps, calendar apps, contact apps, etc. Just to get basic functionality that works out of the box in the iPhone and Windows 10. O.M.G. I don’t understand how people can waste that much time just getting the basics to work on their phones!?!

Now I’m back to Windows 10 with a Lumia 950xl. And I’m happy.

I keep hearing how Windows “lacks polish”. Clearly this statement is being made by people who have not actually used Windows 10, iOS, and Android back to back like I just did. In some ways iOS might have more polish, but it is far, far less consistent than Windows, so I give the OS polish nod to Windows 10. Android isn’t even in the running – it has no polish or consistency – though maybe with another many hours of research and testing I could have found a launcher that I liked? That’s not how I want to spend my life.

I also keep hearing about the Windows “app gap”. That is obviously a real problem. It is absolutely the case that the iPhone has a lot more apps, and almost all the apps are superior. It is also the case that the Android apps are plentiful, but they generally look like crap compared to their iOS counterparts. But I’ll give it to Android that, though its apps are inconsistent and often cartoonish, they are full featured, unlike Windows apps.

One other note on apps: Android is clearly designed to work well if you are a Google user (mail/calendar/contacts) and it is pretty half-baked for people not on Google. I can’t say I support the EU going after Google any more than I did when they went after Microsoft so long ago – I think that’s just dumb – but at the same time, I understand their consistent view here, because Google is using Android to drive usage and lock-in around their cloud service offerings, not unlike what Microsoft did 20 years ago with Windows.

Finally, I keep hearing how Windows phone hardware is inferior. I even heard that from someone at Microsoft. I’m skeptical. It is true that the iPhone 6s is a really nice device, and I love the fingerprint unlock feature. Android device quality varies a lot, but the OnePlus 2 is pretty nice (if a bit heavy) and has a fingerprint reader (if you can find a lock screen app that supports it). The Lumia 950 is nicer and lighter than the Android devices I’ve seen and used (including the Samsung ones). But I’ll grant that it isn’t as nice as the iPhone. At the end of the day though, I think all three platforms have hardware that are basically in the same ballpark: reasonably stylish, light, fast, with decent battery life, and great cameras. If it was just down to hardware my ranking would be iPhone 6s, Lumia 950, Samsung Android, other Android – in that order.

At this point though I’ll remind you that I’m selfish here – I’m after a solution for me.

That means it comes down to iPhone vs Windows 10 Mobile – the Android OS is too unpolished, clumsy, and inefficient; and its apps are too ugly, inconsistent, and cartoonish. It is clearly the cheapest platform, and you get what you pay for. I’m willing to pay to get a more productive experience.

And at the end of the day there are only 3 apps that don’t exist or don’t work on Windows that I actually need: Swarm, Waze, and the Parrott Bebop app for my drone.

My bank does have an app on iPhone/Android, but it sucks and so not having it isn’t really a loss. To solve my bank app issue I need to switch to a better bank, not a different phone.

I weighed the value of those 3 apps against Windows 10’s more polished and consistent OS experience; and I considered that Siri is like Cortana’s dullard older sister (yes, Siri is really an idiot compared to Cortana, and Cortana on the iPhone is crippled compared to Windows or Android).

Ultimately I’ve decided that I’d rather go with the best OS on a regular basis. In my case I’m fortunate enough that I can carry a second phone (sans SIM) so I can still fly my drone – it just needs the app and wifi after all. That also gets me Waze and Swarm, because they also work over wifi, and my Lumia works great as a wifi hotspot when I’m out and about.

At the end of the day, until Foursquare, Google, and Parrot (and my bank) get their heads out of their @$$’s I am working around them via a two phone solution.

But most importantly, I’m happy using Windows 10 and Cortana for my 99% use case of email/calendar/phone/text/messaging/Office/etc.

And fwiw, I think the continued rapid adoption of Windows 10 itself (on my Surface and Desktop for example) will drive more and more companies to create UWP apps – perhaps not initially for the phone, but at least for the 300 million (and climbing) people running Windows 10. The thing is, once your app runs in UWP, getting to the phone is a pretty small step – and one companies would be foolish not to do for such little effort.

Tuesday, 26 April 2016 15:46:05 (Central Standard Time, UTC-06:00)  #    Disclaimer
 Friday, 12 February 2016

This Neowin article asks people whether they use many actual Windows 10 (WinRT or UWP) apps. I knew I used quite a few, but decided to make a list of the ones I use on a regular basis (all at least once a week, but many of them several times a day).

Of course I have a lot more installed, but I don’t actually use them often, or at all. Someday I should do a purge of old stuff I installed to try and then never used again…

Here’s my list of apps that I use on a regular/consistent basis (not in any particular order):

Cortana - my indispensable digital assistant (Siri is like her dullard older sister)
Clipboard - share anything to the clipboard - indispensable utility app
PowerBI – watch my VSTS and GitHub repos, plus Magenic business dashboards
Email and Calendar (yes, they are finally quite good apps)
OneNote (the touch version is better than the Win32 version on a Surface - by far)
MyRadar - useful on every device everywhere!!
Tweetium - excellent twitter client - I love it!
News - the msn/bing news app - I use it on my iPhone too - very nice
Weather - I wish wunderground had an app, but the msn/bing one _is_ very nice
NextGen Reader - I wish _this_ was on the iPhone - what a great way to consume the web
Groove Music - as a subscriber, this is a no-brainer
Movies and TV - this is how I get my Doctor Who (legally)
iHeartRadio - better ad-hoc radio than Groove
Vevo - when I want music videos, not just music
MyTrips - TripIt client that's better than the 1st party offering
Wunderlist - how I organize my life
Words with Friends - a primary source of entertainment
HealthVault - with my health issues, this is critical
Readit - I'm not a reddit fan, but sometimes you gotta go to reddit
Reading List - Msft seems to want to kill this off, but it is a really nice app!
DropBox - access my lesser used files (mostly I use OneDrive)
Box - access my even lesser used files
Fitbit - nicer/easier than via the web
Gitty - adequate gitter client for chatting about OSS GitHub-hosted projects
Hulu Plus - obvious
Netflix - obvious
LastPass - Win8-era app, but still nicer than using the browser
NFL on Windows - every NFL fan should have this app - seriously!
NPR One - best way to listen to NPR (and in my case MPR)
Uber - order my ride at the end of a work day when travelling
Photos – I have a _lot_ of photos, all in OneDrive

Friday, 12 February 2016 11:28:12 (Central Standard Time, UTC-06:00)  #    Disclaimer
 Wednesday, 02 December 2015

I think this article about Apple's attempt to transform the iPad into a laptop - and contrasting it to Microsoft's Surface-based attempt to transform a laptop into a tablet - is quite good.

Personally I'm a strong advocate for the hybrid device scenario, having spent the last few years entirely in Surface-land. Starting with the Surface Pro 3 (SP3) I have been quite happy with that choice. The SP1 and SP2 widescreen concept was interesting, but impractical for doing real work like editing documents or running Visual Studio. The SP3 and now SP4 screen sizes are very practical (especially the Surface Pro 4 - what a beautiful screen!!).

The idea that Apple would create some sort of hybrid was a foregone conclusion from my perspective - once I'd become hooked on using a Surface instead of an old-fashioned laptop.

When I'm sitting in a cramped airplane seat, or relaxing on the couch in front of the TV I want a tablet - one with all my stuff on it.

And when I'm trying to actually compose an email, write a document, or do some coding, I want a laptop - one with all my stuff on it.

Interestingly enough, "my stuff" is the same at all times. I want access to all my stuff whenever and wherever I am.

I use OneDrive to store all my documents, music, photos, etc. All my files are on my desktop, Surface, and in the cloud – so they are available anywhere and everywhere. And that would be true on a Mac and iPad too (though probably not offline on the iPad, so not accessible on an airplane?).

Another big reason my stuff is always available is because of the way Windows 10 roams everything - all my app/browser/desktop settings sync across my devices. And that could maybe be done between a Mac and iPad I would guess - with some effort to address the mismatch between Mac and iPad apps that do similar things, but aren’t the same apps.

But on Windows 10 I am using the same apps on my desktop and Surface (and often my phone). So there's no mismatch, they are literally the same.

Maybe not everyone values this consistency like I do - but I want my same browser with my same favorites/shortcuts/etc. on every device I use. And I want my news reader (NextGen Reader) and Reddit  (Readit) and weather and twitter (Tweetium) and Facebook apps to know what I've done and what I like without having to tell every device the same stuff over and over.

So yeah, I'm a big fan of the hybrid model - and I hope Apple is reasonably successful at it, if for no other reason that competition will drive Microsoft to keep making Win10 and Surface better and better so I love it more and more :)

Wednesday, 02 December 2015 13:16:16 (Central Standard Time, UTC-06:00)  #    Disclaimer
 Friday, 06 November 2015

.NET Core is somewhat confusing to a lot of people. In short, .NET Core is an open source reimplementation of .NET that Microsoft has been, and continues to, work on completing. The Universal Windows Platform (UWP) runs on .NET Core, as does the upcoming ASP.NET 5 technology. What is a little confusing is that ASP.NET 5 also runs on full .NET 4.6 – it can run on either NET implementation.

One of the biggest things to understand about .NET Core is that Microsoft is working hard to keep it very modular. Unlike full .NET, where a lot of things are in a few assemblies, in .NET Core there are a lot of assemblies with a few things in each. And those assemblies are generally available via NuGet, not included by default as part of the “.NET Core install”. The advantage to this is that your app can be more lean, because generally we’ll bring in only the framework assemblies we need, where in full .NET a lot of unneeded stuff tends to just come along for the ride.

Getting to UWP

Some time ago I added Windows 10 UWP support to CSLA .NET, which means that I already did some work to get CSLA running on .NET Core. However, the UWP project template in Visual Studio is somewhat forgiving, in that it brings in several .NET framework components that aren’t automatically brought in if you create a bare-bones .NET Core class project. This makes sense, because there are a set of assemblies necessary to support UWP and I think we’d all expect those to be automatically available to any UWP project.

The CSLA UWP project targets Windows 10.

snip_20151105231251

Or in project.json terms:

{
  "dependencies": {
    "Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0"
  },
  "frameworks": {
    "uap10.0": {}
  },
  "runtimes": {
    "win10-arm": {},
    "win10-arm-aot": {},
    "win10-x86": {},
    "win10-x86-aot": {},
    "win10-x64": {},
    "win10-x64-aot": {}
  }
}

Back in the Windows 8 timeframe we did a bunch of work to support the Wiindows Runtime (WinRT). WinRT is quite a lot like Silverlight, in that apps run in a sandbox and have access to a subset of .NET. So getting CSLA running for WinRT wasn’t too hard because we already supported Silverlight before Windows 8 came along. However, WinRT changed reflection in some pretty radical ways, and we had to do quite a lot of work to replicate the old-style reflection API and behaviors in the WinRT world.

UWP now runs on .NET Core, which is a reengineered subset of full .NET, and UWP apps use the WinRT API from a UI perspective. So really UWP apps are very comparable to WinRT apps. That said, Microsoft did take this opportunity to yet again tweak reflection, so I used the WINDOWS_UWP compiler symbol to provide UWP-friendly implementations of the reflection fixes we’d created for WinRT. Whew!

snip_20151105232029

(to be honest, some of the code in the TypeExtensions class are basically placeholders that need more work to be complete; for example: TypeExtensions.GetConstructor is not implemented properly)

The final thing to understand about the existing UWP support is that .NET Core code can be compiled to native – in fact it will be compiled to native by the Windows Store to provide the end user with the best performance. Compiling .NET code to native is a fairly complex process and one part of that process is that the end result only contains the code that is known to be invoked – all other code is literally left out of the end result. If you don’t use reflection this is not a problem, but if you do use reflection (and CSLA does) then it is important to tell the native compilation process not to “optimize” away code you might actually be calling.

To do this you edit a file in your UWP application’s Properties folder called myapp.rd.xml. In this file you indicate the assemblies that shouldn’t be optimized. For example:

<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
  <Library Name="Csla.Uwp">
    <Assembly Name="Csla" Activate="Required All" Browse="Required All" Serialize="Required All" Dynamic="Required All" />
  </Library>
</Directives>

This says that Csla.dll shouldn’t be optimized away – which is probably fine because it isn’t very big to start with. And you absolutely must ensure that your business assemblies aren’t optimized because CSLA reflects against your business assemblies to do its work. Again, probably not a big deal because your business assembly should be containing business code and not UI assets or other large artifacts – in other words it shouldn’t be terribly large either.

This is done in your UWP app project – the one that gets built and deployed to the user – and the one that typically references your business assemblies and CSLA.

Getting to .NET Core

Given everything I just discussed regarding UWP, it seems like getting a “pure” .NET Core assembly for CSLA wouldn’t be too hard. But there were some unexpected hurdles I’ll discuss.

The first step to creating a class library project for .NET Core is to create a portable class library (PCL) project that targets .NET 4.6 and ASP.NET Core 5.0.

snip_20151105233800

This creates a project with the correct functional cross-section to target .NET Core.

Some time ago I refactored the CSLA codebase so all the actual code files are in a shared project named Csla.Shared. We then have a concrete project for each target platform we support (Xamarin Android and iOS, iOS Classic, .NET 4, 4.5, 4.6, WinRT, UWP, etc.).

snip_20151105234241

This new PCL project is named Csla.NetCore5.0 and it just references that pre-existing shared project to get the same code as every other version of CSLA.

snip_20151105234409

As I mentioned earlier, this bare-bones class library project doesn’t bring in any more of .NET than absolutely necessary. As a result I had to add some NuGet packages required by CSLA.

snip_20151105234659

Or via project.json:

{
  "supports": {
    "net46.app": {},
    "dnxcore50.app": {}
  },
  "dependencies": {
    "Microsoft.NETCore": "5.0.0",
    "Microsoft.NETCore.Portable.Compatibility": "1.0.0",
    "System.Runtime.Serialization.Primitives": "4.0.10",
    "System.Runtime.Serialization.Xml": "4.0.10",
    "System.Threading.ThreadPool" : "4.0.10-beta-23409"
  },
  "frameworks": {
    "dotnet": {
      "imports": "portable-net452"
    }
  }
}

This brings in the BCL functionality required by CSLA.

The one exception is that I didn’t bring in WCF. Instead what I’ve done at the moment is to use a NETCORE compiler directive symbol to exclude the data portal WCF channel from building as part of CSLA for .NET Core. The reason for this is that I had a conversation with one of the Microsoft engineers responsible for this, and it turns out that referencing WCF has a cascade effect where a very large percentage of .NET gets brought into scope (to support WCF).

If your app doesn’t use the WCF data portal channel you shouldn’t have to include all that extraneous code/assemblies in your app. So rather than including the WCF data portal support into core CSLA my plan is to follow the lead of .NET Core itself and break the WCF data portal channel into its own separate assembly (Create .NET Core WCF data portal channel assembly).

There’s one other issue I had to deal with, and that is that in my UWP implementation I used some WinRT APIs – and those aren’t available in “pure” .NET Core. The most notable of these is code in CSLA that captures and restores the current culture and UI culture values on the current thread. Some of this is extremely old code that used to pull the information off the current thread, and then along came WinRT that required a different approach. It turns out that in .NET 4 Microsoft introduced a new API to consolidate the old and new styles of interacting with the culture values. For example, you can now do this:

request.ClientCulture = System.Globalization.CultureInfo.CurrentCulture.Name;
request.ClientUICulture = System.Globalization.CultureInfo.CurrentUICulture.Name;

The code here works on all platforms, no need to use the current thread in .NET and some WinRT API elsewhere. Very nice!

The one catch is that setting the culture isn’t universally supported in a single model because older versions of .NET (like 4) still require the use of the Thread object. So setting the culture requires a compiler directive.

#if NETFX_CORE
        _clientCulture = System.Globalization.CultureInfo.CurrentUICulture.Name;
        _clientUICulture = System.Globalization.CultureInfo.CurrentUICulture.Name;
#else
        _clientCulture = System.Threading.Thread.CurrentThread.CurrentCulture.Name;
        _clientUICulture = System.Threading.Thread.CurrentThread.CurrentUICulture.Name;
#endif

And that’s it – pretty easy really – thanks to having added Silverlight support years ago, followed by WinRT support, then UWP support. All the groundwork was laid for pure .NET Core support.

(and it helped that I was doing this work in Redmond so I had direct access to Microsoft engineers that are creating .NET Core Smile )

Just at the moment this work is available in a branch of my fork: https://github.com/rockfordlhotka/csla/tree/337-NetCoreSupport

Once I’ve done some more testing I’ll merge this into the actual CSLA master branch at: https://github.com/MarimerLLC/csla/tree/master

Friday, 06 November 2015 02:11:37 (Central Standard Time, UTC-06:00)  #    Disclaimer
 Thursday, 27 August 2015

csla win8_fullThis is a NuGet only release, we no longer supply an msi installer

Release details on NuGet: https://github.com/MarimerLLC/csla/releases/tag/v4.6.100

Supported platforms:

  • .NET 4, 4.5, 4.6
  • Android (Xamarin)
  • iOS (Xamarin)
  • UWP (Windows 10)
  • WinRT and WinRT Phone (Windows 8.1 and Phone 8.1)

Major changes:

  • Updated to the final release of Windows 10 and the UWP SDK
  • This and all future releases will be via NuGet only (no more msi installer)
  • Removes support for Silverlight and Windows Phone 8 (Silverlight)
  • Adds support for .NET 4.6
  • Adds support for UWP (though today NuGet deploys the WinRT assemblies for UWP projects)
  • Updates iOS and Android to the latest Xamarin versions
  • Move nearly all code files into shared projects
  • WinRT, iOS, Android, UWP all now use the exact same code files as .NET in every case - which is where a lot of the risk comes from because I may or may not have gotten all the compiler directives fixed up correctly.
  • Add analyzers for Visual Studio 2015 and .NET 4.6 projects
Thursday, 27 August 2015 08:40:34 (Central Standard Time, UTC-06:00)  #    Disclaimer
 Thursday, 20 August 2015

Windows-10-logoIn a recent article ‘10 reasons you shouldn’t upgrade to Windows 10’ the author ends by saying that he did upgrade even over his own objections. I can’t argue with that conclusion, as my only remaining Win7 ‘machine’ is a virtual machine I use for legacy work, and I have no Win8 devices left at all (except for my phone, and hopefully I’ll be on Win10 there soon too).

Note: to be fair, @woodyleonhard wrote another article earlier on why you should upgrade to Windows 10.

I’ve upgraded or installed Windows 10 on quite a few devices at this point, and have been using it continually for a long time as part of the Windows Insiders Program. So I thought I’d provide at least some quick thoughts on the 10 reasons “not to upgrade” based on my experience.

10. Ongoing privacy concerns

I think there’ve been a lot of good rebuttals of this issue – not least of which is that anyone using an Apple or Android (or Windows) smart phone already gave away all their privacy anyway Smile

Perhaps more useful is this good article about what Windows 10’s privacy settings actually do.

9. OneDrive regression

There’s some truth to this – I liked the way Win8.1 did OneDrive. Apparently the Win8.1 approach confused a lot of people though – including several of my co-workers. OneDrive in Win10 now it works more like DropBox. I’m personally unconvinced that this is a big deal one way or the other.

For me the big thing was access to my massive library of photos in OneDrive, and when I discovered that the Win10 file open dialog (from Universal apps) can tap into the Photos app (and other file sharing apps like DropBox) to get at cloud-based files my life was greatly improved.

apps

8. Missing Media Center and DVD player

VLC (from the store, and for desktop), k-lite, and CCCP solve this problem just fine, in terms of playing DVDs anyway. I suspect that’s the biggest issue for most people.

If you are an actual Media Center user then I agree, don’t upgrade until you’ve found a replacement solution. You might consider one of the numerous other options that run on Linux and/or Windows.

7. Not much in the way of Universal apps

This isn’t new – there were relatively few good apps in the store for Win8.1 – and it continues to be frustrating into Win10. I really hope that the new UWP and UWP bridge technologies help bring a lot more apps to Win10. That, and the reality that there are nearly 100 million Win10 installs already (in the first few weeks the OS has been out) so you’d think that app authors would start to care about reaching this audience.

On the other hand, if you are a Win7 user then why would this be a roadblock to moving to Win10? You have zero apps in Win7, so what little is in the store is infinitely more than what you have today.

And if you are a Win8.1 user there aren’t less apps than what you have, there just aren’t really any more apps either.

6. Key apps, including Mail and Edge, aren’t ready yet

I’ll argue here about Edge, because I like it a lot. I know it doesn’t yet have some features of more mature browsers, but then again it is lighter and faster than they are and I like that trade-off.

On the other hand, the points about the Mail (and Calendar and People) apps are totally on point. I’m extremely disappointed that these apps weren’t (imo) completed before Win10 shipped, and every day when Mail crashes or messes up in other ways I wish for a higher quality app. They are getting better fairly rapidly, but today they are frustrating.

If you are coming from Win7 you don’t have these apps and so perhaps won’t care. If you have Outlook you won’t care, because you’ll probably keep using Outlook.

But I really, really liked the Win8.1 mail/calendar/people apps and can’t wait for the Win10 versions to catch up to their 8.1 predecessors.

5. Win10’s Tablet Mode may not appeal to you

If you are upgrading from Win7 you almost certainly don’t have a tablet, so moving to Win10 with tablet mode is immaterial because you’ll never use tablet mode. Not a roadblock.

If you are one of the few people that does have a Win7 tablet then how do you live with it??? And if you do, then Win10’s tablet mode with be nothing but an improvement. Again, not a roadblock.

If you are on Win8.1 with a tablet then Win10’s tablet mode is basically the same thing you have today. Nothing to lose in this case, but if you sometimes use a keyboard/mouse with your tablet then there is a lot to be gained by upgrading to Win10.

4. The installer may not be ready for you yet

Having upgraded quite a number of machines (including my father-in-law’s old laptop) without any issues I must say that Win10 is the first time in Windows history that I would recommend doing an upgrade rather than a fresh install. I’m amazed at the upgrade process and how well it works.

That said, if the installer isn’t ready for you it is probably because some hardware vendor for some component in your computer hasn’t released a Windows 10 driver yet. That’s increasingly rare, but if you are in that situation then you really don’t want to upgrade yet – not until the drivers are available.

3. Forced updates

I don’t really know what to say about this one. Not forcing updates is bad because people fall behind and end up vulnerable to viruses and malware, but forcing updates is causing some issues. It seems to me that the solution is to roll forward on the current course and for Microsoft to figure out how to make forced updates work reliably.

As (I hope) more apps end up in the Windows Store they’ll tend to only run on the current version of Windows, so not applying updates almost certainly means your apps will stop working. I personally use a lot of apps from the store, and I sure don’t want them to stop running because I missed an update!

2. Ain’t broke, don’t fix

This is somewhat short-sighted. I get the idea here, just like most people stick with old versions of OSX, iOS, or Android (note my sarcasm: most people don’t stick with old versions of those operating systems).

Enterprises being slow I understand, but most users of personal devices should just keep current in my view. Take advantage of the new shiny stuff, and stay with the most supported version of any OS to help avoid viruses and malware.

1. Questions, questions, questions

This isn’t a real point at all – just FUD because the author is (presumably) being paid by the word. Then on the next page he goes on to say that he upgraded anyway, because really, who wants to be stuck in the past when you have a free avenue into the future?

My conclusion

In summary, I haven’t hesitated to upgrade numerous computers to Windows 10, including computers for non-experts such as relatives and some friends. The transition from Windows 7 to Windows 10 is pretty easy for most people, it is much the same but a little prettier. The transition from Windows 8 to Windows 10 is nearly always an improvement – in desktop and tablet modes.

So yes, I am in favor of most people upgrading.

Thursday, 20 August 2015 11:49:12 (Central Standard Time, UTC-06:00)  #    Disclaimer
 Thursday, 06 August 2015

After last night’s big cumulative update of Windows 10 one of my devices (my primary desktop) had some issues. Specifically, there were 4 apps the store wanted to update, but it seemed unable to download any of them (even after numerous reboots and running wsreset). And the Mail/Calendar apps were frozen; they’d launch but freeze.

The solution was in this article: http://answers.microsoft.com/en-us/insider/forum/insider_wintp-insider_store/windows-10-store-beta-problems-wont-update/d7fe3b06-63e1-44c7-a5b0-2b8b6868e16d?auth=1 (followed by a reboot and then re-running wsreset).

My region/format setting in Control Panel (the old Win32 one) was set to the default:

region-start

And the fix was to change it to my explicit region:

region-fixed

To easily get to this dialog, press windows-x and select ‘Control Panel’. Then in the search box (upper-right corner) type ‘Region’ and click the one search result to open the dialog shown here. Then reboot.

Why this works I don’t know – clearly something gets confused deep inside Windows – but as long as the problem is solved I’m happy Smile

Thursday, 06 August 2015 09:43:19 (Central Standard Time, UTC-06:00)  #    Disclaimer
 Thursday, 30 July 2015

It seems to be a common problem with the Windows 10 store to have issues downloading or updating apps. Any message you see is probably something like “Windows Store - Error Code: 0x80070005” or “Error Code: 0x803f7000”.

The problem seems to be that some metadata related to the store gets corrupted, because more often than not the solution is to run wsreset, a utility that resets the store app.

The wsreset utility is installed with Windows 10, so all you need to do is press the Windows key and type ‘wsreset’.

wsreset

Click or tap the wsreset app to run it.

Some people find that it works best to immediately reboot the computer, then open the store and your downloads should work. I find that the reboot is not typically required, so your mileage may vary.

Thursday, 30 July 2015 11:51:06 (Central Standard Time, UTC-06:00)  #    Disclaimer
 Tuesday, 30 June 2015

Windows_10_Logo.svg I installed 10158 on my Surface Pro 3 before bed last night, and having used it so far today I’m really pleased with the progress Microsoft has made since build 10130.

  • Mail and Calendar apps now work with exchange (to my extreme joy!)
  • People app now works with exchange (but still no facebook/twitter/linkedin like on the phone?)
  • My SP3 is running cool again, hopefully the battery won’t drain while asleep now (haven’t found out yet)
  • The overall feel of the OS is faster and smoother
  • The firmware update finally installed!
  • Cortana just gets better and better
  • The music app updated, and I’ve been enjoying my Xbox Music subscription all day today J

There are still some issues though.

  • Still can’t view only unread/flagged emails in the email app (this is a big issue!)
  • Still forced to use threaded reading view in email app (yuck)
  • No live tile for the weather app?
  • Numerous apps crash on launch, then often work after 2-3 more attempts (e.g. calendar, money, news)
  • Edge sometimes locks up with white blank screen after device comes back from sleep
  • The Phone companion app seems to always insta-crash
  • The twitter app crashes about once an hour (like in 130)
  • NextGenReader has no live tile (and crashes perhaps once a day like in 130)
  • Having the start menu on multiple monitors remains pointless as all apps still only start on the primary monitor

My little use of the photos app so far is inconclusive, but it seems more stable and faster.

I also haven’t switch a lot between tablet mode on/off, but it seems much better than in 130.

This update has addressed many of my concerns from 130. Keep up the good work Microsoft!

Tuesday, 30 June 2015 14:27:20 (Central Standard Time, UTC-06:00)  #    Disclaimer
 Monday, 16 February 2015

thDQW1BP2N Initial thoughts using Windows 10 consumer preview (keeping firmly in mind that there's at least one more preview before release, so everything I'm complimenting and criticizing here will probably change before release).

Perhaps most importantly, I like where they are going. I fully adopted Windows 8.1, and enjoy using it - including the start screen as well as apps from the store. I also understand how people don't like it, and prefer a more "Windows 7" experience. I share those views in terms of multi-monitor support and effective use of screen real estate on larger monitors; both are constant frustrations with Win8.

Win10 at this point feels like a pretty decent effort to make 100% keyboard/mouse/Win7 users happy while still making WinRT store apps attractive to them. And at the same time they've done a good job of allowing touch/keyboard/mouse people like myself to continue to be happy. I'm still not entirely sure they've got the pure touch user experience quite right, but they aren't done yet either.

I really like the new start menu, particularly the fact that I can set it to be full-screen since that's what I've become used to over the past few years with Win8. I get that some people like the menu view, but I find it cramped and would miss what I think of as my "life's dashboard" view that I get from the start screen. The way they've changed it in Win10 should make us all happy.

I like the fact that I can press the Windows key and just start typing the name of the app I want, just like we've been able to since … Windows Vista? As a bonus this is actually triggering Cortana and that makes me happy!

I dislike that the Places list on the start menu appears fixed. In particular, the Documents option is useless because it doesn't go to the Documents library or even OneDrive - it goes to the local Documents folder on the device, where I never store anything (because I use OneDrive). Sadly I can't see how to change this Documents option to point to a location I care about, so it just wastes space.

I'm not sure the Most Used list actually works yet. It lists a bunch of apps I almost never use (I don't think I've ever run something called 'Sticky Notes'); but I like the concept once it actually starts working.

th OneDrive has been nerfed and is nearly useless. They seem to have made it work so only way to see what you actually have is to use a web browser, or to sync everything local. I have a lot of content in OneDrive (pretty much everything) and so I can't sync local to every device because my tablet (for example) doesn't have enough hard drive. This means I need to use the web browser to download individual files or sync entire folders - a major step backward from Windows 8.1.

(I honestly think they just aren't done with OneDrive yet - this is such a major step backward to where we were perhaps 5 years ago that I doubt it is the planned experience.)

Win8 apps that use the AppBar are going to need to be rewritten to avoid it. The AppBar is really hard to bring up in touch mode, and apps (like Mail) where you need to use the AppBar to do common tasks are therefore really hard to use. Other apps, like NextGen Reader, that already show many common tasks as icons on their main screen were and are easy to use and probably are the future of modern app design.

You can see this in the new preview Word, Excel, etc. apps too. I'm not even sure if they have an AppBar, but they do have a ribbon that's easily accessible.

The same is true with the charms functions. Particularly Search, Settings, and Share need to be on every app's main UI because they are too hard to get to in the new Win10 UI model. Existing apps that have their own search, settings, and share buttons on the main UI seem just fine, but many apps followed Microsoft's (old?) guidance about the charms bar and are pretty hard to use now.

th4EJAOBW1 Search is particularly confusing now because Win-Q brings up Cortana, never a contextual search for the current app. I actually think that's fine, but I think we do need some standard shortcut key for search in the current app (maybe ctl-F or F3?).

I wish that all apps (especially the browser) could go into a real full-screen mode when I'm in tablet mode. I'm not 100% sure why even old Win32 apps couldn't go into a borderless mode at this point. Perhaps there's some technical reason, but if every app could be made borderless full-screen that'd make me happy on my tablet.

When I'm in a full-screen modern app and accidentally open a Win32 app or dialog the result is that the modern app switches back to windowed mode. I guess I'm not entirely sure what should happen in this case, but when I'm in tablet mode I really don't expect or like the idea of my full-screen apps being reduced to windowed mode out from underneath me. That's very jarring.

The new Notifications area is very nice. I've started using that very naturally and it just feels good and provides good information. This kind of fits under the "its about time" category of change.

I miss being able to bring up the charms bar to get the clock. In fact, I don't see how you can view the date/time when using a full-screen app unless you revert to windowed mode to see the system tray on the desktop. I guess that might be OK, but this change will probably get me to start wearing my watch again because I don't want to have to leave my current context just to see the time.

A colleague pointed out that having the Windows task bar along the bottom like it is by default is problematic when using a Surface 3. I've been using a SP2, but he put it on his SP3, and the problem is that the keyboard gets in the way of your finger when you want to tap anything on the task bar. I tried it, and he's right - it is annoying.

People who've never used a touch device probably can't relate, but once you have a touch screen it is so natural to seamlessly switch between touch, keyboard, and mouse for various interactions that I'd never go back. One of the most common reasons for touch is to launch or activate apps, because touch is almost always easier/faster than dragging the mouse around. Perhaps the answer is to put the task bar on the side or top, or perhaps the Surface Pro 4 will need to allow more space between the keyboard and the bottom of the screen to accommodate the increased use of the task bar in normal touch scenarios.

thS6QS80JM I'm still not sure what to think about File Explorer being the primary way to interact with files via touch. We've all suffered with it over the past few years of Win8, and I've tried a great many touch-based replacements with 'File Manager HD' being my current favorite. I'd rather expected to see a touch-friendly file manager with Win10, but instead what they seem to have done is left us with the Win7-era File Manager, which is fine with mouse or stylus, but can be pretty awkward with touch.

The new Store app is quite nice, and I like it quite a bit more than the old version. I'm also very hopeful that allowing WinRT/Universal apps to run in actual windows means people will be more accepting of this type of app. I am shocked at how few Win8 users have ever installed a 'modern app', especially given that some of them are extremely good - and perhaps more importantly they don't come with the same risk of viruses and malware as legacy desktop apps.

thG78WLN6L I remain disappointed that the only way to switch audio input/output devices is via that ancient and clunky Win32 audio settings window. I often switch between a headset and actual speakers depending on what I'm doing, so I use that crufty dialog almost daily, and it is particularly painful in a touch scenario. This is the same as in Win8, and it sucked there just like it does in Win10.

Monday, 16 February 2015 23:11:47 (Central Standard Time, UTC-06:00)  #    Disclaimer
On this page....
Search
Archives
Feed your aggregator (RSS 2.0)
June, 2017 (1)
May, 2017 (1)
April, 2017 (2)
March, 2017 (1)
February, 2017 (2)
January, 2017 (2)
December, 2016 (5)
November, 2016 (2)
August, 2016 (4)
July, 2016 (2)
June, 2016 (4)
May, 2016 (3)
April, 2016 (4)
March, 2016 (1)
February, 2016 (7)
January, 2016 (4)
December, 2015 (4)
November, 2015 (2)
October, 2015 (2)
September, 2015 (3)
August, 2015 (3)
July, 2015 (2)
June, 2015 (2)
May, 2015 (1)
February, 2015 (1)
January, 2015 (1)
October, 2014 (1)
August, 2014 (2)
July, 2014 (3)
June, 2014 (4)
May, 2014 (2)
April, 2014 (6)
March, 2014 (4)
February, 2014 (4)
January, 2014 (2)
December, 2013 (3)
October, 2013 (3)
August, 2013 (5)
July, 2013 (2)
May, 2013 (3)
April, 2013 (2)
March, 2013 (3)
February, 2013 (7)
January, 2013 (4)
December, 2012 (3)
November, 2012 (3)
October, 2012 (7)
September, 2012 (1)
August, 2012 (4)
July, 2012 (3)
June, 2012 (5)
May, 2012 (4)
April, 2012 (6)
March, 2012 (10)
February, 2012 (2)
January, 2012 (2)
December, 2011 (4)
November, 2011 (6)
October, 2011 (14)
September, 2011 (5)
August, 2011 (3)
June, 2011 (2)
May, 2011 (1)
April, 2011 (3)
March, 2011 (6)
February, 2011 (3)
January, 2011 (6)
December, 2010 (3)
November, 2010 (8)
October, 2010 (6)
September, 2010 (6)
August, 2010 (7)
July, 2010 (8)
June, 2010 (6)
May, 2010 (8)
April, 2010 (13)
March, 2010 (7)
February, 2010 (5)
January, 2010 (9)
December, 2009 (6)
November, 2009 (8)
October, 2009 (11)
September, 2009 (5)
August, 2009 (5)
July, 2009 (10)
June, 2009 (5)
May, 2009 (7)
April, 2009 (7)
March, 2009 (11)
February, 2009 (6)
January, 2009 (9)
December, 2008 (5)
November, 2008 (4)
October, 2008 (7)
September, 2008 (8)
August, 2008 (11)
July, 2008 (11)
June, 2008 (10)
May, 2008 (6)
April, 2008 (8)
March, 2008 (9)
February, 2008 (6)
January, 2008 (6)
December, 2007 (6)
November, 2007 (9)
October, 2007 (7)
September, 2007 (5)
August, 2007 (8)
July, 2007 (6)
June, 2007 (8)
May, 2007 (7)
April, 2007 (9)
March, 2007 (8)
February, 2007 (5)
January, 2007 (9)
December, 2006 (4)
November, 2006 (3)
October, 2006 (4)
September, 2006 (9)
August, 2006 (4)
July, 2006 (9)
June, 2006 (4)
May, 2006 (10)
April, 2006 (4)
March, 2006 (11)
February, 2006 (3)
January, 2006 (13)
December, 2005 (6)
November, 2005 (7)
October, 2005 (4)
September, 2005 (9)
August, 2005 (6)
July, 2005 (7)
June, 2005 (5)
May, 2005 (4)
April, 2005 (7)
March, 2005 (16)
February, 2005 (17)
January, 2005 (17)
December, 2004 (13)
November, 2004 (7)
October, 2004 (14)
September, 2004 (11)
August, 2004 (7)
July, 2004 (3)
June, 2004 (6)
May, 2004 (3)
April, 2004 (2)
March, 2004 (1)
February, 2004 (5)
Categories
About

Powered by: newtelligence dasBlog 2.0.7226.0

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2017, Marimer LLC

Send mail to the author(s) E-mail



Sign In