Educating Self

There have been times I have seen employees who are frustrated because their employers don’t help them with their education, typically getting paid while getting educated and/or paying for classes. What is sad to see is when they don’t do anything about it, including getting a new job that is more in line with your knowledge hunger or investing in yourself. You can pay for classes or find low cost or free resources. Don’t let an industry, short sighted employer, or controlling manager keep you from advancing. Just the mere act or attitude of fighting for yourself can land you an improved position, better job, or increased credibility.

So where to start? While this is focused on the Windows platform, these approaches are available for Linux and Mac systems. Or even cloud based options using Chrome OS or tablets.

There are news sources such as ZDNet. Microsoft Channel 9 has free video educational content. If you are willing to spend some moola, Pluralsight and ITPro.TV offer rich technical content.

Podcasts are great ways to stay current with technology. TWIT.TV has a bunch of IT-based content. .NET Rocks has great developer information. Using a podcast player (e.g. Pocket Casts is a favorite) on a mobile device allows you to subscribe and play back content while you workout, drive, do house chores, etc.

With development, if your employer hands you a poor performing machine, you can still buy your own home machine with some decent RAM and CPUs (recommend quad cores).  You can freely use Hyper-V on Windows 10 Pro or use VirtualBox to run multiple systems at the same time on the machine. Microsoft offers a lot of free resources to help. You can use Azure for virtualized machines. Visual Studio Community 2017 and Microsoft SQL Server Express are free editions for development and database respectively.

If you want to education credibility, you can work hard to prepare for a Microsoft Certification Exam. Take the right exams to obtain a MTA, MCSA, MCSE, or MCSD (the last one is best for developers) certification. While the exams aren’t free, you can find deals on purchasing multiple exams, typically with time limit restrictions. Or if you are nervous about taking your first exam, you can opt-in for an exam replay (if you fail the first time) or exam replay with practice test.

In short, there is no reason to not educate yourself, whether you are new, need to catch up, want to shift areas, or want to stay current.

 

Migrating MSA to AAD “fun” (rant)

I am starting to go through the Microsoft push to move from Microsoft Accounts (MSA, a.k.a. live.com accounts) to Azure Active Directory (AAD), their cloud-based enterprise solution to user and group management.

With a heavy investment in Azure, Visual Studio Team Services (VSTS), Visual Studio Subscriptions (formerly MSDN subscriptions), etc., this has been challenging.  We have run into issues with moving Azure subscriptions to AAD (previously managed via MSA).  We have run into PowerShell for Azure scripting issues.  We have run into automation issues between VSTS and Azure. VSTS has strange requirements with the primary email address on MSA must be the VS subscription email address (change the primary email address on your MSA and you won’t see your VS subscription, unless it is the free one).

Add to the fact that my MSA used to have a custom domain.  They offered it, promoted it, and then are taking it away although “grandfathering” those that had it.  But this has been problematic in that I couldn’t renew it and their support kept trying to push me over to the business side (Office 365) when it is part of Outlook Premium.  I finally gave up and moved my custom domain to Office 365 to make it more straight forward.  But I shouldn’t have had to do that, now having two separate accounts where before I had one.

I know we will get through this.  In the long run, it will probably be for the best.  In addition to my navigating from MSA to AAD, I also access multiple AADs, so that fun should be interesting when the time comes.

Microsoft should have continued to embrace custom domains with Outlook Premium (via MSA).  Microsoft should have done a much better job of supporting both MSA and AAD integration, giving us migration tools to map MSA accounts to AAD (with the MSA accounts approval of course) so resource access wasn’t lost or confusing (instead of having to work with Microsoft directly, where they have made mistakes because of the complex array of services over the decades via MSA).

I did look at an alternative to O365 and Outlook Premium once I knew I was in trouble with their policy changes that were well supported.  Unfortunately, there wasn’t much that could provide the Exchange Active Sync (EAS) capabilities along with Webmail and Outlook support (with all the features of Calendar, Inbox, Folders, Contacts, etc.).

OneDrive for Business and SharePoint Online not so enterprising

It appears OneDrive for Business has a 15GB file size limit.  This is for business-class enterprise level cloud file storage.  15GB.  I am granted up to 1TB of space that comes with the Office 365 subscription.  Dropbox Personal even goes to 20GB per file.  15GB is easily possible with DB backups.  Or video editing.  Or a large zip/7z archive file.

I would be fine with OneDrive for Personal having such a limit (okay, well they should at least be up to 20GB to match Dropbox).  But the enterprise class service limitation is ridiculous.  This is also true with SharePoint Online (SPO) having a view limit of 5000 files.  That is nothing for an Enterprise organization.  SPO should be equal or better than on-premise (our on-premise SharePoint 2013 Enterprise easily handles over 80,000 files in one library).  OneDrive for Business should have the same vision of enterprise class capabilities.

Microsoft, you need to start thinking enterprise for your online services if you expect the enterprise to actually jump over to your services.  And what is good for the enterprise is also good for SMBs because, well, they are even more dynamic and agile with data storage needs.  This is the real world knocking on your door.

Yes, I can break the file up with multiple archive files (e.g. using compression software) but that is a pain especially given bandwidth capabilities where direct access to files is desirable for efficient work effort.

Microsoft Servers forgetting developers?

I do development using a Hyper-V guest with Server 2016 (and 2012R2).  These Virtual Machines (VMs) are hosted on Windows 10 Professional.  This is a requirement for SharePoint development.  This is desirable for web-based development to work in a similar environment that will host these applications (even if hosted in Azure).  Windows 10 is too far removed.

So when Microsoft released Server 2016 without UWP or Microsoft Store support, that was  bit of a surprise.  That meant no Edge browser support, so we cannot test our applications against their premiere browser.  We cannot develop and test UWP applications.  So we don’t support them.

Microsoft Windows Server 1709 is Server 2016 on Build 1709 but without an GUI.  So that isn’t very useful for running Visual Studio.  That means our developers (myself included) are using Server 2016 Build 1607 because we need a GUI for our development tools.  This means we can’t take advantage of 1709 features available in Windows 10.  This includes OneDrive Files On-Demand.  Why is this feature so OS-specific anyway?  It should be a product feature that we can install anywhere.  This makes no sense.

At the end of the day, Microsoft is making it hard to support OneDrive and Edge browser.  And UWP applications.  Okay, I am better about not supporting UWP applications if Progressive Web Apps (PWA) becomes a first class development platform in Visual Studio.  But think of all of the developers who program in C# and don’t want to learn JavaScript, HTML5, etc.  They are desktop developers, not web developers.

So they have created a set of really inconsistent platforms (read: fractured) and confusion with developers on how best to support various platforms.  Or not support them because it is too hard for us.  Developers help make the platform because the ecosystem cannot survive without them.

I will take a look at moving to Windows 10 Pro VMs as a development platform.  Maybe that is the way to go, with the exception of SharePoint development (unless such can be done with the upcoming SharePoint 2019).  In years past, it was too painful to do DevOps on a desktop OS while supporting a server OS.  That is why we developed on server OSes.  Time will tell.

Why we chose to use OAuth2

Single Sign-On (SSO) is a complicated topic once in the weeds.  Sure, at the high level it is easy at a conceptual level.  A user logs in once and can access all of the associated applications that participate in the SSO system.  It is complicated to implement.

OAuth2 seemed to be the most current adaptation used by various vendors, including Microsoft, Twitter, Google, and Facebook.  It is an open standard that handles authorization and authentication (with OpenID Connect).  It uses JSON for its payloads.  It is less complicated than other protocols.  Being a .NET developer, IdentityServer was a good fit with it being open source (originally on .NET Framework 4.x, now on .NET Core 2.0).

Modifying IdentityServer allowed us to integrate the solution with the desired authentication back-end systems.  We could choose Microsoft ASP.NET Identity Database (already setup really) or a custom user/password system.  This gives us complete control.  There are examples of using with 3rd party authentication systems (e.g. Google).  You can integrate it with Azure Active Directory (AAD), Windows Active Directory (AD), and even home brewed systems.

The down side is that it is still complicated, especially if you aren’t fluent with OAuth2 (which was my case).  There are a lot of examples, but determining which ones were the best to use and ultimately understanding how to implement different types of clients such as CORS with JavaScript, ASP.NET .NET Framework with Webforms and MVC, ASP.NET .NET Core with MVC, and .NET Framework Winforms.  Nuget packages are often needed with various different library versions and the moving nature of software libraries and IdentityServer (.NET Core 2.0 clients and resources don’t because it is all built-in now).

Then there are cookies, back channel communications, front channel communications (and being careful what crosses into that area for security sake), tokens (and how to refresh them if applicable), etc.

Using OAuth2 for SSO made it more complicated than if we wanted to have unified login (each app requires a login but shares the same credentials).  The Windows applications (e.g. Winforms) required interaction with the default browser.

It has taken me over 8 months to get where I am today and I am still learning.  In the end, is it worth it?  Yes it is.  We are using open standards that are well supported (even if it is a jungle out there).  This solution will be used for a long time so we wanted to invest in a solution that will be well supported going forward.  Even if the technology morphs, we have a good base solution that can adjust as needed.  These technologies will also mature and change less.  They cover all sorts of devices and have good browser support.

Too many Windows 10 Editions

Dear Microsoft,

Please reduce the number of Windows 10 Editions.  Please make the platform more consistent across the editions.  Today, you have Windows 10 Home, Windows 10 Pro, Windows 10 Enterprise, Windows 10 Education, Windows 10 Pro Eduction, Windows 10 Enterprise LTSB, Windows 10 Enterprise, Windows 10 IoT, Windows 10 S, Windows 10 Team, Windows 10 Pro for Workstations.  Then there are the N and KN variants for Europe and South Korea.

How about this?  Windows 10 Home, Windows 10 Pro, Windows 10 Enterprise, and Windows 10 IoT.  That is it.  4 editions are plenty. This covers home users, home super users, corporate users, and devices/embedded.

All of the editions have the following modes.  S mode locks Windows down (can only get apps from the Microsoft Store).  LTSB mode will stop updates, except security patches, disable UWP applications (if you must – I still think this is wrong).  Exclude multimedia, making it a separate Microsoft Store application(s) so N and KN can go away.

This will make your product more competitive, easier to support, and provide more value to users.  This will help IT folks talk to regular users about their needs and help them make choices.  This will help regular users when purchasing equipment.

Sincerely,

Struggling to keep up

NuGet “Heck”

Oh NuGet, how I love and hate thee.

You make it easy to get packages (libraries) for a project inside of Visual Studio 2017.  You make it easy to update packages.  You help identify where multiple projects might be on different version for a given package.

You are also make it easy to break a project, causing code to no longer compile or work properly.

Those that have used NuGet in their projects know how much of a pain it can be.  NuGet dependency updates can break your code (and often do).  Removing a NuGet package doesn’t give a clue what is happening with respect to unused dependencies.

What do I need to help?

  • Rollback capabilities.  Stop making me backup the projects beforehand manually
  • Allow me to uninstall a package and optionally select any dependencies in the chain, rather than giving me an error and making me manual uninstall the dependent packages.
  • Review potential problems in the projects within a solution (inspection would be a good thing)
  • Always require release notes to be viewed easily, before I install (or upgrade) a package
  • While ReSharper (R#) can help remove unused NuGet packages, this should be something that Visual Studio has already built-in (and I really like R# but this seems like a basic service item)

I am sure there are other things that could help.  I cringe right now when I see there are NuGet updates.  And with enterprise projects, the trepidation increases.

Windows 10 S

Think of Windows 10 S as the S-Edition of Windows 10 Pro.  Meaning, it is Windows 10 Pro, but locked down.  So it is a specific secured configuration.  When in S mode, it will only run applications that come from the Microsoft Store or are preinstalled.  So it won’t run a lot of applications, including Visual Studio, most Adobe applications, Google Chrome, many printer driver applications (although many printers will work, potentially with limited functionality), etc., until they are available in the Microsoft Store.

Windows 10 S can be unlocked and become a regularly functioning Windows 10 Pro through the Windows Store.  If a fee is required ($49 for Windows Pro), it is managed and collected with the Windows Store (or Microsoft Store for Education, which allows Windows S to be unlocked to Windows 10 Pro Edition for Education customers).  A valid Windows 10 Pro product key also works.  Once you switch to Windows 10 Pro, you cannot switch back to Windows 10 S.

The S mode is available for Windows 10 Enterprise and will be available for Windows 10 Home in the future.  So why use this S mode?  It will be less expensive, perhaps to compete with Google OS devices.  It will be more secure.  It will be more strict in that applications can’t just throw in startup applications that run in the background.  These consume battery, decrease reliability, and consume resources (CPU, RAM, etc.).

While S mode doesn’t allow joining Windows Active Directory, it does support Windows Azure Directory joining.  BitLocker is available as long as the underlying Windows 10 OS supports it (such as Pro, Enterprise).

This edition might drive developers towards PWA (Progressive Web Apps) or UWP, although it is unlikely.  Windows 2016 Server doesn’t support UWP (for running or developing).  While still much better than Windows RT, Windows 10 S hasn’t really taken off.  Low cost educational devices are not yet available.  It is ahead of its time in being overly aggressive in not supporting key non-store applications (e.g. Google Chrome), and there isn’t any development strategy in place that is obvious (inside of Microsoft or with partners/vendors/enterprises).  Many printer drivers with add-on utility programs simply won’t work and cannot be installed.

However, users who can take advantage of Windows 10 S, such as those that can find their apps in the Windows Store or use a web browser (well, really only Edge) to access their information, can benefit from additional security, less startup applications (no Windows Services, no scheduled tasks, no applications in the startup folder, etc.) which will speed up the experience and reduce CPU/RAM drag, and increase potentially battery life (presuming you aren’t just watching videos all day).

How does this compare to the iPad?  One could draw a lot of parallels with a reduced operating system (iOS versus MacOS and Windows 10 S versions Windows 10 Pro).  But it really depends how you use your devices.  Many could use either device if all they need is email, browser, Skype, Netflix, and so forth.  The Apple Store has a lot more applications,  And higher quality.  The browser experience may be mixed with mobile Safari versus Edge.  Windows 10 S has a mouse.  Windows 10 S can be changed to Windows 10 Pro and “unlocked” for the full Windows experience.  Windows 10 S has a much better Microsoft Office application experience.

In the end, time will tell and choice is good.  Microsoft is ahead of the game with Windows 10 S.  With Progressive Web Apps on the horizon, the potential for improved Microsoft Store apps, and a locked down system that feels more agile, there is a lot of possibilities to benefit users.

Sling

For well over 8 years, I have avoided paying for cable TV.  There was a time I was paying over $100 for the privilege to have channels I never watched and increase my couch potato actions to make sure I was using what I paid to have.  Unfortunately, there is good content on several cable TV channels.  I have heard the argument that paying for channels you don’t need allows less popular channels to exist.  Shouldn’t supply and demand dictate?  And the excuse by cable companies that they cannot unbundle is just their way of making sure they maximize profits now without regard to the long term damage created towards their customers who are turned off by their tactics.

Enter Sling.  They have a streaming service that provides some al-la-cart choices, lower cost, and the ability to start/stop the service as needed in my life.  In the winter, I am more likely to catch a show or sport event.  In the summer, it is time to be outside and not watch TV.

While not perfect, it has really come a long way.  Their Windows 10 application (UWP-based) is actually decent.  The web browser works.  Their iOS (testing on iPhone and iPad) and TvOS (tested on Apple TV) apps work.  Their DVR service is handy.

If you are an aggressive TV watcher, then it might frustrate still, unless you would like to reduce your costs as much as possible.  For the casual watcher, it does a good job.  I have been able to watch the Olympics on NBCSN and Olympic Channel.  I had been watching the World Cup Alpine Ski racing up to the Olympics to get caught up with the various athletes and their disciplines (Downhill, Super-G, GS, Slalom, Combined).

This is a taste of the future – a centralized (single provider – not separate apps for each piece of content – that is a hassle!), lower cost, a-la-carte service that is accessible from multiple devices.

Net Neutrality, Early 2018

On 12/14/2017, the FCC changed the rules, effectively eliminating Net Neutrality, so consumers legally lost equal access to all content for a given price based on bandwidth speed and amount of data consumed. With Net Neutrality, we could use the data as we wished, accessing the services desired on the same equal field. Paying for more data or bandwidth allows Internet Service Providers (ISPs) to receive more funds to pay for increased infrastructure improvements while still keeping an equal playing field for all content providers (and ISPs for that matter).

In each market, the internet services providers are essentially a monopoly.  While I could use my mobile carrier’s data, realistically for my data needs, I really only have DSL (one provider) and Cable (one provider).  This constraint is similar for most and for many one or both providers are not especially favorable in the big picture.  Like telecommunication providers before them, they provide the connectivity (or phone back in the day) to the rest of the world and should be treated as a basic essential service.  In reality, Internet access is required to live life such as getting a job, pay bills, monitor credit, research information, do schooling, collaborating, book flights, and so forth.  In essence, Net Neutrality helps people in a manner that is already stacked against them with the ISP monopolies.

One major problem for me is that ISPs also provide content.  They have every incentive to provide poor service to other content providers and give premium access to their content.  They can now charge extra to access outside content so their services look more attractive.  This is a very big conflict of interest.

Fortunately, while untested legally at this point, states are coming to rescue where the FCC (and specifically Ajit Pai, chairman of the Federal Communications Commission) has failed us individuals.  They are helping to represent their constituents.  There is overwhelming support by individuals to have Net Neutrality.  People should come before business on basic (essential) services.  Time will tell how this shakes up.  But it is a good idea to keep an eye on what is happening and keep the conversation going.