Technology Status Update 2016

by Jon Davis 10. July 2016 09:09

Hello, peephole. (people.) Just a little update. I've been keeping this blog online for some time, my most recent blog entries always so negative, I keep having to see that negativity every time I check to make sure the blog's up, lol. I'm tired of it so I thought I'd post something positive.

My current job is one I hope to keep for years and years to come, and if that doesn't work out I'll be looking for one just like it and try to keep it for years and years to come. I'm so done with contracting and consulting (except the occasional mentoring session on code mentor -dot- io). I'm still developing, of course, and as technology is changing, here's what's up as I see it. 

  1. Azure is relevant. 
    image
    The world really has shifted to cloud and the majority of companies, finally, are offloading their hosting to the cloud. AWS, Azure, take your pick, everyone who hates Microsoft will obviously choose AWS but Azure is the obvious choice for Microsoft stack folks, there is nothing meaningful AWS has that Azure doesn't at this point. The amount of stuff on Azure is sufficiently terrifying in quantity and supposed quality enough to give me a thrill. So I'm done with hating on Azure, after all their marketing and nagging and pushing, Microsoft has crossed a threshold of market saturation that I am adequately impressed. I guess that means I have to be an Azure fan, too, now. Fine. Yay Azure, woo. -.-
  2. ASP.NET is officially rebooted. 
    image
    So I hear this thing called ASP.NET Core 1.0 formerly known as ASP.NET 5 formerly known as ASP.NET vNext has RTM'd, and I hear it's like super duper important. It snuck by me, I haven't mastered it, but I know it enought to know a few things:
    • It's a total redux by means of redo. It's like the Star Trek reboot except it’s smaller and there are fewer planets it can manage, but it’s exactly like the Star Trek reboot in that it will probably implode yours.
    • If you've built your career on ASP.NET and you want to continue living on ASP.NET's laurals, now is not the time to master ASP.NET 1.0 Core. Give it another year or two to mature. 
    • If you're stuck on or otherwise fascinated by non-Microsoft operating systems, namely Mac and Linux, but you want to use the Microsoft programming stack, you absolutely must learn and master ASP.NET Core 1.0 and EF7.
    • If all you liked from ASP.NET Core 1.0 was the dynamic configs and build-time transpiles, you don't need ASP.NET Core for that LOL LOL ROFLMAO LOL LOL LOL *cough*
  3. The Aurelia Javascript framework is nearly ready.
    image
    Overall, Javascript framework trends have stopped. Companies are building upon AngularJS 1.x. Everyone who’s behind is talking about React as if it was new and suddenly newly relevant (it isn’t new anymore). Everyone still implementing Knockout are out of the loop and will die off soon enough. jQuery is still ubiquitous and yet ignored as a thing, but meanwhile it just turned v3.

    I don’t know what to think about things anymore. Angular 2.0 requires TypeScript, people hate TypeScript because they hate transpilers. People are still comparing TypeScript with CoffeeScript. People are dumb. If it wasn’t for people I might like Angular 2.0, and for that matter I’d be all over AureliaJS, which is much nicer but just doesn’t have Google as the titanic marketing arm. In the end, let’s just get stuff done, guys. Build stuff. Don’t worry about frameworks. Learn them all as you need them.
  4. Node.js is fading and yet slowly growing in relevance.
    image
    Do you remember .. oh heck unless you're graying probably not, anyway .. do you remember back in the day when the dynamic Internet was first loosed on the public and C/C++ and Perl were used to execute from cgi-bin, and if you wanted to add dynamic stuff to a web site you had to learn Perl and maybe find Perl pearls and plop them into your own cgi-bin? Yeah, no, I never really learned Perl, either, but I did notice the trend, but in the end, what did C/C++ and Perl mean to us up until the last decade? Answer: ubiquitous availability, but not web server functionality, just an ever-present availability for scripts, utilities, hacks, and whatever. That is where node.js is headed. Node.js for anything web related has become and will continue to be a gigantic mess of disorganized, everyone-is-equal, noisily integrated modules that sort of work but will never be as stable in built compositions as more carefully organized platforms. Frankly, I see node.js being more relevant as a workstation runtime than a server runtime. Right now I'm looking at maybe poking at it in a TFS build environment, but not so much for hosting things.
    I will always have a bitter taste in my mouth with node.js after trying to get socket.io integrated with Express and watching the whole thing just crumble, with no documentation or community help to resolve it, and this happened not just once on the job (never resolved before I walked away) but also during a code-mentor mentoring session (which we didn't figure out), even after a good year or so of maturity of the platform after the first instance. I still like node.js but will no longer be trying to build a career on it.
  5. Pay close attention and learn up on Swagger aka OpenAPI. 
    image
    Remember when -- oh wait, no, unless you're graying, .. nevermind .. anyway, -- once upon a time something called SOAP came out and it came with it a self-documentation feature that was a combination of WSDL and some really handy HTML generated scaffolding built into web services that would let you manually test SOAP-based services by filling out a self-generated form. Well now that JSON-based REST is the entirety of the playing field, we need the same self-documention. That's where Swagger came in a couple years ago and everyone uses it now. Swagger needs some serious overhauling--someone needs to come up with a Swagger-compliant UI built on more modular and configurable components, for example--but as a drop-in self-documentation feature for REST services it fits the bill.
    • Swagger can be had on .NET using a lib called Swashbuckle. If you use OData, there is a lib called Swashbuckle.OData. We use it very, very heavily where I work. (I was the one who found it and brought it in.) "Make sure it shows up and works in Swagger" is a requirement for all REST/OData APIs we build now.
    • Swagger is now OpenAPI but it's still Swagger, there are not yet any OpenAPI artifacts that I know of other than Swagger. Which is lame. Swagger is ugly. Featureful, but ugly, and non-modular.
    • Microsoft is listed as a contributing member of the OpenAPI committee, but I don't know what that means, and I don't see any generic output from OpenAPI yet. I'm worried that Microsoft will build a black box (rather than white box) Swagger-compliant alternative for ASP.NET Core.
    • Other curious ones to pay attention to, but which I don't see as significantly supported by the .NET community yet (maybe I haven't looked hard enough), are:
  6. OData v4 has potential but is implementation-heavy and sorely needs a v5. 
    image
    A lot of investments have been made in OData v4 as a web-based facade to Entity Framework data resources. It's the foundation of everything the team I'm with is working on, and I've learned to hate it. LOL. But I see its potential. I hope investments continue because it is sorely missing fundamental features like
    • MS OData needs better navigation property filtering and security checking, whether by optionally redirecting navigation properties to EDM-mapped controller routes (yes, taking a performance hit) or some other means
    • MS OData '/$count' breaks when [ODataRoute] is declared, boo.
    • OData spec sorely needs "DISTINCT" feature
    • $select needs to be smarter about returning anonymous models and not just eliminating fields; if all you want is one field in a nested navigation property in a nested navigation property (equivalent of LINQ's .Select(x=>new {ID=x.ID, DesiredField2=x.Child.Child2.DesiredField2}), in the OData result set you will have to dive into an array and then into an array to find the one desired field
    • MS OData output serialization is very slow and CPU-heavy
    • Custom actions and functions and making them exposed to Swagger via Swashbuckle.OData make me want to pull my hair out, it takes sometimes two hours of screaming and choking people to set up a route in OData where it would take me two minutes in Web API, and in the end I end up with a weird namespaced function name in the route like /OData/Widgets/Acme.GetCompositeThingmajig(4), there's no getting away from even the default namespace and your EDM definition must be an EXACT match to what is clearly obviously spelled out in the C# controller implementation or you die. I mean, if Swashbuckle / Swashbuckle.OData can mostly figure most of it out without making us dress up in a weird Halloween costume, surely Microsoft's EDM generator should have been able to.
  7. "Simple CRUD apps" vs "messaging-oriented DDD apps"
    has become the new Microsoft vs Linux or C# vs Java or SQL vs NoSQL. 

    imageThe war is really ugly. Over the last two or three years people have really been talking about how microservices and reaction-oriented software have turned the software industry upside down. Those who hop on the bandwagon are neglecting to know when to choose simpler tooling chains for simple jobs, meanwhile those who refuse to jump on the bandwagon are using some really harsh, cruel words to describe the trend ("idiots", "morons", etc). We need to learn to love and embrace all of these forms of software, allow them to grow us up, and know when to choose which pattern for which job.
    • Simple CRUD apps can still accomplish most business needs, making them preferable most of the time
      • .. but they don't scale well
      • .. and they require relatively very little development knowledge to build and grow
    • Non-transactional message-oriented solutions and related patterns like CQRS-ES scale out well but scale developers' and testers' comprehension very poorly; they have an exponential scale of complexity footprint, but for the thrill seekers they can be, frankly, hella fun and interesting so long as they are not built upon ancient ESB systems like SAP and so long as people can integrate in software planning war rooms.
    • Disparate data sourcing as with DDD with partial data replication is a DBA's nightmare. DBAs will always hate it, their opinions will always be biased, and they will always be right in their minds that it is wrong and foolish to go that route. They will sometimes be completely correct.

  8. Integrated functional unit tests are more valuable than TDD-style purist unit tests. That’s my new conclusion about developer testing in 2016. Purist TDD mindset still has a role in the software developer’s life. But there is still value in automated integration tests, and when things like Entity Framework are heavily in play, apparently it’s better to build upon LocalDB automation than Moq.
    At least, that’s what my current employer has forced me to believe. Sadly, the purist TDD mindset that I tried to adopt and bring to the table was not even slightly appreciated. I don’t know if I’m going to burn in hell for being persuaded out of a purist unit testing mindset or not. We shall see, we shall see.
  9. I'm hearing some weird and creepy rumors I don't think I like about SQL Server moving to Linux and eventually getting itself renamed. I don't like it, I think it's unnecessary. Microsoft should just create another product. Let SQL Server be SQL Server for Windows forever. Careers are built on such things. Bad Microsoft! Windows 8, .NET Framework version name fiascos, Lync vs Skype for Business, when will you ever learn to stop breaking marketing details to fix what is already successful??!
  10. Speaking of SQL Server, SQL Server 2016 is RTM'd, and full blown SSMS 2016 is free.
  11. On-premises TFS 2015 only just recently acquired gated check-in build support in a recent update. Seriously, like, what the heck, Microsoft? It's also super buggy, you get a nasty error message in Visual Studio while monitoring its progress. This is laughable.
    • Clear message from Microsoft: "If you want a premium TFS experience, Azure / Visual Studio Online is where you have to go." Microsoft is no longer a shrink-wrapped product company, they sell shrink wrapped software only for the legacy folks as an afterthought. They are hosted platform company now all the way. .
      • This means that Windows 10 machines including Nokia devices are moving to be subscription boxes with dumb client deployments. Boo.
  12. imageAnother rumor I've heard is that
    Microsoft is going to abandon the game industry.

    The Xbox platform was awesome because Microsoft was all in. But they're not all in anymore, and it shows, and so now as they look at their lackluster profits, what did they expect?
    • Microsoft: Either stay all-in with Xbox and also Windows 10 (dudes, have you seen Steam's Big Picture mode? no excuse!) or say goodbye to the consumer market forever. Seriously. Because we who thrive on the Microsoft platform are also gamers. I would recommend knocking yourselves over to partner with Valve to co-own the whole entertainment world like the oligarchies that both of you are since Valve did so well at keeping the Windows PC relevant to the gaming markets.

For the most part I've probably lived under a rock, I'm sure, I've been too busy enjoying my new 2016 Subaru WRX (a 4-door racecar) which I am probably going to sell in the next year because I didn't get out of debt first, but not before getting a Kawasaki Vulcan S ABS Café as my first motorized two-wheeler, riding that between playing Steam games, going camping, and exploring other ways to appreciate being alive on this planet. Maybe someday I'll learn to help the homeless and unfed, as I should. BTW, in the end I happen to know that "love God and love people" are the only two things that matter in life. The rest is fluff. But I'm so selfish, man do I enjoy fluff.  I feel like such a jerk. Those who know me know that I am one. God help me.

image2016-Kawasaki-Vulcan-S-ABS-Cafe1 
image  image
Top row: Fluff that doesn’t matter and distracts me from matters of substance.
Bottom row: Matters of substance.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

ASP.NET | Blog | Career | Computers and Internet | Cool Tools | LINQ | Microsoft Windows | Open Source | Software Development | Web Development | Windows

Two First Things Before Switching To Windows 8 (And A Rant On Single Identity)

by Jon Davis 29. November 2013 00:20

I am normally an eager if not early embracer, especially when it comes to Windows. Windows 8, however, was an exception. I've tried, numerous times, to embrace Windows 8, but it is such a different operating system that had so many problems at launch that I was far more eager to chuck it and continue calling Windows 7 "the best operating system ever". My biggest frustrations with it were just like everyone else's--no Start Menu, awkward accessibility, etc., since I don't use and don't want a tablet for computing, just like I don't want to put my fingerprints all over my computer monitor, hello!? But the dealbreaker was the fact that, among other things, I was trying to use Adobe Premiere Pro for video editing and I kept getting bluescreens, whereas in Windows 7 I didn't. And it wasn't random, it was unavoidable.

At this point I've gotten over the UI hell, since I've now spent more time with Windows Server 2012 than with Windows 8, and Server 2012 has the same UI more or less. But now that Windows 8.1 is out and seems to address so many of the UI and stability problems (I've yet to prove out the video driver stability improvements but I'm betting on the passing of a year's time), I got myself a little more comfortable with Windows 8.1 by replacing the host operating system for the VMWare VM I was using with my [now former] client. It was just a host OS, but it was a start. But I've moved on.

In my home office environment, making the switch to Windows 8.1 more permanently has been slowly creeping up my priority list particularly now that I have an opportunity of a clean slate, in multiple senses of the word, not the least of which is I had a freed up 500 GB SSD hard drive just begging to be added to my "power laptop" (a Dell) to complement its 2nd gen i7, its upgraded 16GB of RAM, and its already existing 500 GB SSD drive. Yes I know that 1TB SSD hard drives are out there now but I already have these. So last night and tonight have been spent poking around with the equivalent of a fresh machine, as this nice laptop is still only a year old.

The experience so far of switching up to Windows 8.1 has been smooth. The first things that went on this drive were Windows 8.1, Visual Studio 2013, and Adobe Creative Cloud (the latter of which has taken a back seat for my time but I plan on doing video editing on weekends again down the road). Oh, and Steam, of course. ;) All of these things and the apps that load under them were set up within hours and finished downloading and installing overnight while I was sleeping.

But in the last hour I ran into a concern that motivated me to post this blog entry about transitioning to Windows 8. It has to do with Microsoft accounts. Before I get into that, let me get one thing out of the way: the title mentions "two things", so the first is that if you hated Windows 8.0, try Windows 8.1, because the Windows 8.0 quirks are much more swallable now, which means that you won't be so severely distracted by all the nice new features, not the least of which is amazing startup time.

Now then. Microsoft Accounts. I want to like them. I want to love them. The truth is, I hate them. As a solution, it is oversold, and it is a reckless approach to a problem that many if not most people didn't have until Microsoft shoved the solution down their throats and made them have the problem that this is supposedly a solution for.

So before I go on ranting about that, here's the one other thing you should know. If you're tempted to follow the recommended procedure to setting up Windows 8.x but you want a local login/password for your computer or device and not one managed by your Microsoft Account, don't follow the recommended procedure. Look for small text for any opportunity to skip the association or creation of a Microsoft account for your device. But more importantly, once it is installed, even if it is a local user account, your account will be overhauled and converted to a Microsoft Account (managed online), and your username/password changed back to the Internet account username/password, unless you find that small text at every Microsoft Account login opportunity.

signin1signin2

If you want to use apps that require you to log into a Microsoft account, such as Microsoft Store, or the Games or Music apps, when your Windows profile is already a Microsoft Account profile then you might be logged in automatically, otherwise it'll prompt you and then all apps are associated with that account. You may not want to do that. I didn't want to do that. I don't want my Internet password to be my Windows password, and I certainly don't want my e-mail address to be visibly displayed to anyone who looks at my locked computer as the account name. I like "Jon". Why can't it just be "Jon"? Get off, Microsoft! Well, it's all good, I managed to stick with a local account profile, but as for these apps, there was a detail that I didn't notice until I did a triple-take--yep it took me three account retroactive conversions for me to notice the option. When you try to sign into a Microsoft Account enabled app like Games or Music and it begins the prompting process to convert your local user profile to a Microsoft Account profile, there is small text at the bottom that literally saves the day! It reads, "Sign into each app separately instead (not recommended)". No, of course it's not recommended because Microsoft wants your dependency upon their Microsoft Account cloud profile strategy to succeed so that they can win the cloud wars. *yawn* Seriously, if you want a local user profile and you didn't mind how in the last couple decades on Internet-enabled apps you had to reenter the same credenials or maintain a separate set of credentials, then yes this action is recommended.

I would also say that you should want a local user profile, and you should want to maintain separate credentials for different apps, and let me explain why.

I ran into this problem in Windows because everything I do with gaming is associated with one user profile, and everything I do with new software development is associated with another profile. But I want to log into Windows only once.

I don't want development and work related interests cluttering up my digital profile that exists for games, and I don't want my gaming interests cluttering up my digital profile that exists for development and work. Likewise, I don't want gamer friends poking around at my developer profile, and I don't want my developer friends poking around at my gaming history. Outside of Microsoft accounts, I have the same attitude about other social networks. I actually use each social network for a different kind of crowd. I use Facebook for family, church friends, and good acquaintenances I trust, and for occasional distracting entertainment. I use Twitter and Google+ for development and career interests and occasional entertainment and news. And so on. Now I know that Google+ has this great thing called circles, but here's the problem: you only get one sales pitch to the world, one profile, one face. I have a YouTube channel that has nothing to do with my work, I didn't want to put YouTubey stuff on it for co-workers and employers to see nor did I want work stuff to be seen by YouTube visitors. Fortunately Facebook and Google+ have "pages" identities, and that's a great start to helping with such problems, though I feel weird using "pages" for my alter egos rather than for products or organizations.

I have a problem with Microsoft making the problem worse. Having just one identity for every app and every web site is a bad, bad idea.

Even anonymity can be a good thing. I play my favorite game as "Stimpy" or as "Dingbat", I don't want people to know me by name, that's just creepy, who I really am is a non-essential element to my interaction with the application, except so long as I am uniquely identified and validated. I don't want to be known on the web site as "that one guy, with that fingerprint, who buys that food, who plays those games, who watches those videos, who expressed those comments". No. It's trending now to use Facebook identities and the like for comments to eliminate anonymity, and that to get commenters to stop being so malicious, but it’s making other problems worse. I don't want my Facebook friends and family to potentially know about my public comments on obscure articles and blog posts. No this isn't good, let me isolate my identity to my different interests, what I do over here, or over there, is none of your business!

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , , , ,

Opinion | Windows


 

Powered by BlogEngine.NET 1.4.5.0
Theme by Mads Kristensen

About the author

Jon Davis (aka "stimpy77") has been a programmer, developer, and consultant for web and Windows software solutions professionally since 1997, with experience ranging from OS and hardware support to DHTML programming to IIS/ASP web apps to Java network programming to Visual Basic applications to C# desktop apps.
 
Software in all forms is also his sole hobby, whether playing PC games or tinkering with programming them. "I was playing Defender on the Commodore 64," he reminisces, "when I decided at the age of 12 or so that I want to be a computer programmer when I grow up."

Jon was previously employed as a senior .NET developer at a very well-known Internet services company whom you're more likely than not to have directly done business with. However, this blog and all of jondavis.net have no affiliation with, and are not representative of, his former employer in any way.

Contact Me 


Tag cloud

Calendar

<<  March 2019  >>
MoTuWeThFrSaSu
25262728123
45678910
11121314151617
18192021222324
25262728293031
1234567

View posts in large calendar