Rockford Lhotka's Blog

Home | Lhotka.net | CSLA .NET

 Saturday, February 08, 2014

The Modern Apps Live! conference is coming up soon. Not only am I speaking at this event, but I’m the conference chair so I had the privilege of laying out all the content for the show.

map2014logo

This is the third Modern Apps Live! event and I think it offers something you won’t find in many (any?) other conferences. It is a single track, a single room. The content builds on itself through the entire conference. If you stick with us for the whole show we’ll walk you through the entire process of architecting, designing, and implementing a modern app.

What is a modern app? We define it as an app that has a compelling user experience that is available across all modern devices (Windows, iPad, Android, HTML 5) and that provides the user with a great touch/keyboard/mouse experience as appropriate for each device. A modern app’s data is ubiquitous, so it follows you from device to device, providing a consistent experience and access; as you can imagine, this implies a cloud-based back end system.

The great thing is that Modern Apps Live! is part of the Live 360! event, so if you want to branch out you’ll have full access to all the Visual Studio Live!, SQL Live!, and SharePoint Live! sessions as well.

There’s still time to register for Modern Apps Live! in Las Vegas, and I hope to see you there!

Saturday, February 08, 2014 4:43:16 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  | 
 Tuesday, February 04, 2014

I got this in the email today, and I literally laughed out loud.

I’ve been fighting these spammers for years, and they’ve cost me ridiculous amounts of time and money over that time.

The fact that these inherently evil people are now asking me to spend more of my time and money to resolve some issue they brought on themselves is hilarious!

Now maybe if they’d offered me a bunch of money – enough to cover my time now to remove the links, plus enough to cover all the hours I’ve spent fighting their spam over the years – I’d be motivated to “help” them.

As it is, I find that I’m highly motivated to do two things:

  1. Use these people as public examples of evil in the hopes that few enough people will ever use their services that they go out of business
  2. Leave their spam in my web site as long as the Google ranking harms them by my actions

(what’s even funnier is that their spam is in a fake user profile, not in the actual forum, and the spammer that created that user profile has the password and could thus clean up the spam themselves – I think these national positions people should just pay their spammer to clean up the mess – that would be pretty funny too :) )

==================

Name: Webmaster

Email: webmaster@nationalpositions.com

Comments:Hello,

I am the webmaster for http://www.nationalpositions.com.

Sometime in the past we were paying a company for a link building campaign for our website. At the time, we didn't know what kinds of links they were building, and we were assured they would help our rankings. We are now in a situation where these links are causing a Google penalty on our domain.

We have identified which links we believe could be causing this, and we found your domain is hosting links we need removed.

I would greatly appreciate it if you removed all of the links to http://www.nationalpositions.com from your domain. Here is an example of the URLs hosting the links:

http://forums.lhotka.net/members/seowebmaster/announcements/default.aspx

http://forums.lhotka.net/members/seowebmaster/announcements/default.aspx?ProfileMessageID=7c814777-8d16-45cf-94ad-8dde74f57a17

Please let me know when you have removed our links from your domain.

We are very sorry if spam was placed on your domain on our behalf.

Thank you,

The nationalpositions.com Team

Tuesday, February 04, 2014 9:39:49 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [2]  | 
 Monday, February 03, 2014

I’ve had my Nokia Lumia 1520 “phablet” for around 6 hours now and thought I’d record my earliest thoughts.

(phablet is a term used to describe a huge phone, big enough to be a small tablet – hence “phablet”)

Good:

  1. The phone is as solid and well built as other Lumia devices
  2. Even though it is bigger than my 920 I don’t think it weighs much more; not what I expected from such a large device
  3. From what I’ve seen thus far, the battery doesn’t go down unless I run the Waze app (which drains batteries even if your phone is plugged into a charger)
  4. Reading email, browsing, and other data consumption activities are a lot of fun on the bigger screen
  5. Not only is the screen bigger, it is 1080p so it is so clear and sharp! Watching Hulu Plus and NetFlix on this thing is nice!!
  6. Moving from one WP8 device to another is a breeze; all my data and apps are in the cloud so the new phone just spent a while downloading everything and it just worked!

Neutral:

  1. The GDR3 “Black” update auto-installed on startup, and of course it has nice features all by itself, but I had that on my 920 already
  2. Though the device is quite large, I mostly talk via BlueTooth headsets or Microsoft Sync in my truck, so I haven’t yet encountered any awkward moments of holding a phablet up to my ear

Bad:

  1. Stupid AT&T prevents the Data Sense app from installing to the device; my 920 was a developer device and so it wasn’t blocked (even on ATT), and I really, really, really miss having Data Sense already (yes, they say I should use the myATT app, but I’m on a corporate plan so that app is total junk, and even if it did work it wouldn’t show the useful info shown by Data Sense)
  2. The screen is so big that even with my massive hands I can’t really use the device with one hand
  3. A small number of apps from the 920 apparently can’t run on the 1520, though that could be related to me moving from an unlocked dev phone to an AT&T branded device where they appear to cripple some things
  4. Though the battery life seems to be excellent, charging the battery takes _forever_ – or I’ve got a bad device, because it has been charging for a really long time and isn’t fully charged yet (and no, the Waze app isn’t running in the background :) )
  5. The device is big enough to be somewhat uncomfortable in the front pocket of my jeans, so I’m trying the back pocket; hopefully I don’t accidentally sit on it and break the phone…

On Waze:

Twice I mentioned the Waze app. It is a wonderful app if you need to get somewhere through traffic, snowstorms, etc. The user-driven data sourcing for traffic and related events is all in realtime, and I’ve found that Waze gets me around traffic that other GPS apps (even with traffic data) wouldn’t avoid.

BUT, the Waze app does literally drain the battery on phones even when plugged into a charger, so it is something you can _only_ use when the phone is plugged into a charger, and even then only for a relatively short period of time (such as on your commute to/from work). Even then, I suspect it would totally drain a battery with a longer commute like people have in some cities…

Monday, February 03, 2014 9:30:47 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [1]  | 
 Friday, January 17, 2014

Update:

Thanks to this post I learned something useful that addresses some of my concerns. Specifically that there is an “Xbox Music” app in the Windows Phone store that you can download for free. Rather than updating the built-in music app in the phone, they created a new one and nobody told me :)

This new Xbox Music app is pretty much comparable to the Windows 8 app, including the following:

  1. You can view music in the cloud, on the device, or both
  2. Playlists sync between WP8 and Win8

This addresses several of my complaints (around lack of playlists and playing every song twice).

It still doesn’t explain why the Xbox Music app on Win8 often mutes when it isn’t in the foreground (but sometimes works as expected). Nor does it alleviate the lack of music videos on the Xbox One compared to the 360.

But at least I can now use my phone to listen to music while at cardio rehab, and that was my single biggest desire.

Original:

I really like (or used to like) the Zune client and zune.net service, which were sort of renamed Xbox Music.

And even after the rename and changes the Xbox Music service is pretty good in some ways.

But there are some key things that are just plain broken – to the point I’m thinking about dropping the service. These are my complaints:

  1. On the Xbox 360 the Xbox Music app had something called “Smart VJ” that played music videos; this is gone on the Xbox One, thus eliminating the primary reason I used Xbox Music on the actual Xbox (there’s no VEVO app for Xbox One either, so basically no music videos available at all – good thing I still have my 360!)
  2. On Windows Phone 7 I could sync my music to the phone; on WP8 I can copy my music to the phone via the file system, but all my “cloud music” shows as duplicated on the phone, so I hear almost every song twice (or if there’s no data signal every other song errors out when the phone tries to play it) – basically the experience makes the phone virtually useless for music (some more info about the broken cloud music feature is here: http://winsupersite.com/article/windows-phone-8/windows-phone-8-tip-xbox-cloud-collection-144703)
  3. I have to create playlists for my phone on my phone, which is tedious at best, especially compared to creating a playlist on a computer; this problem didn’t exist in WP7 And thanks to the nasty cloud collection behavior, creating a playlist automatically is kind of useless for when I want to listen offline (like on an airplane, or when I’m at physical therapy in the basement of the hospital where there’s no cell service)
  4. There’s no “Smart DJ” feature on Windows 8 if you are offline – even if you have a couple thousand songs physically on your computer; the lowly Zune HD device didn’t have this problem, but my super-powerful and much more modern Surface Pro can’t pick its own music when offline?
  5. About half the time the Xbox Music app on Windows 8 mutes the sound when the app is in the background – sometimes it works, sometimes it doesn’t – seems pretty buggy to me

Basically, compared to the original Zune and zune.net behaviors the Xbox Music clients and service are a major step backwards.

Is anyone using some online/offline music service or player that does work on Windows Phone 8 and Windows 8? Something that:

  1. Creates smart playlists using music that’s on the device
  2. Doesn’t duplicate music that’s on the phone and is in the cloud (so doesn’t play every song twice)
  3. Doesn’t attempt to play cloud-based music while offline
  4. When online does give streaming access to a huge song library
  5. Plays music on Windows 8 without muting when the app is in the background (Pandora is broken like this, and Xbox Music is unreliable in this regard)
  6. Allows me to download otherwise-streaming music for a playlist if I want that music offline (one of the things Xbox Music does well)

I know I might be an outlier, wanting to listen to music when I have no data service (or when I don’t want to burn my cell data plan down). And maybe I should just get an iPod and be done with it – but then I’d have to install iTunes on my computer, and last time I did that I was far from satisfied either…

Windows 8 | WP8 | Xbox | Zune
Friday, January 17, 2014 10:06:33 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [5]  | 
 Tuesday, January 07, 2014

CSLA 4 version 4.5.500 is officially released and is available via nuget or from www.cslanet.com.

This version includes some major new capabilities, including:

  • Support for Windows Runtime 8.1, including substantial updates to the Csla.Xaml namespace and controls
  • Support for Android via Xamarin using the latest version of Xamarin tools
  • Support for EF6
  • Support for ASP.NET MVC 5
  • Improved support for using IoC containers in the server-side data portal
  • The installer now includes a .chm file for the Csla.dll assembly

This version also includes a number of bug fixes and minor feature enhancements.

CSLA 4 allows you to create a powerful object-oriented business layer that encapsulates all your business logic. That business logic can then be reused across multiple UI technologies and platforms, including:

  • Windows 8 (WinRT)
  • WPF
  • ASP.NET (MVC, Web Forms, and Web API)
  • WCF
  • Android (via Xamarin)
  • Windows Forms
  • Windows Phone 8
  • Silverlight 5

The ability to literally write one set of business logic code that can be reused across all these UI and platform technologies is extremely powerful, and provides you with flexibility to support multiple client platforms, or to move from one technology to another over time without having to rewrite your entire application.

Tuesday, January 07, 2014 1:37:34 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  | 
 Monday, December 09, 2013

Magenic’s free day of technical training is coming to Boston this Thursday, December 12.

http://www.codemastery.com/events/boston

This event includes some great topics, such as:

  • AngularJS
  • Power BI
  • Social network integration into your apps
  • NoSQL using RavenDB, MongoDB, and Azure

The keynote by Magenic’s national practice lead for app dev Kevin Ford is focused on the trends driving the massive changes to our industry at the moment, and isn’t to be missed!

Register now and plan to spend your Thursday learning about cool technology!

Monday, December 09, 2013 1:40:07 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  | 
 Tuesday, December 03, 2013

So Google now has an infrastructure as a service (IaaS) offering to compete with Amazon and Microsoft Azure.

http://news.cnet.com/8301-1023_3-57614304-93/google-compute-engine-now-ready-for-prime-time/?part=rss&subj=news&tag=title

From my perspective as a developer this is a big yawn.

IaaS is an IT pro thing – a way of shifting costs from an internal data center (usually capital cost) to an external provider (usually a cash cost). Mostly it is a bunch of accounting details that ultimately result in the same sorts of servers running in a different physical location.

As a developer you don’t really change the way you code just because a server is running onsite, or in a co-location, or in a “cloud”. So who really cares?

IT managers and CFOs care. And really IaaS is fine for an IT manager because they still need pretty much the same size staff to run their servers regardless of where they exist physically. Somebody needs to do server admin, OS upgrades/patches, etc.

Now platform as a service (PaaS) like you can get with Windows Azure is FAR more interesting to a developer, but incredibly threatening to IT managers and IT pros.

Azure’s PaaS offering gives developers a higher level of abstraction. Instead of dealing with the OS we get to deal with versions of ASP.NET, and the underlying OS is automatically upgraded/patched (within limits you set).

PaaS radically reduces the number of IT staff required to manage and run the “servers” because almost all the work is handled by Azure itself. This can be a massive cost savings to a company due to staff reduction, but you can probably see why IT managers tend to look more at IaaS than PaaS – their “empire” would be in jeopardy by embracing PaaS…

But as a developer, I’d much rather embrace PaaS. IaaS gets me nothing, but PaaS helps me get new compute power provisioned in minutes instead of weeks/months. And it helps minimize the chances that some IT pro will change a low-level configuration on the server, thus breaking my app.

I understand why Google (and Amazon and Microsoft) chase the IaaS market – because there’s money to be had there.

But as a developer who dislikes IT cost accounting and cares little for the size of the IT staff necessary to admin tons of servers, I’d much, much, much rather build my software to run on Azure using the PaaS model.

Tuesday, December 03, 2013 11:38:53 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [2]  | 
 Sunday, December 01, 2013

This recent article is interesting:

http://www.neowin.net/news/windows-xp-remains-nearly-flat-windows-881-up-slightly-in-novembers-os-data

Of course it is talking about the “now dead” traditional computing market. You know, the market that totally dominates the business desktop/laptop world, as well as (still) most home computing.

Although tablets and phones have enjoyed massive growth over the past few years, the reality is that they have done little to actually replace traditional computing in many ways.

Of course as soon as anyone makes statements or draws conclusions about anything to do with market share numbers between OSes and/or mobile devices the conversation instantly devolves into meaningless drivel. I think the reason these conversations are almost always fruitless is that there's a lack of definition around terms and the nature of the conversation.

I want to be clear that this entire blog post is about smart client development. If you are already building all your business software as web sites then you don’t really care much right? The client device is merely a colorful terminal for your server-side computing, and for the most part it doesn’t matter what OS or brand device is being used as long as it has a modern browser to act as that terminal.

But from a smart client perspective the client device and OS matters a lot!

The primary focus in my career, and at Magenic is business app dev, and tablets have done little to replace traditional computers in the workplace thus far. They augment, but they don't replace. Hence the workplace computing space is still roughly 91% Windows.

People have tablets at home, and for a lot of home scenarios they are replacing traditional computers. And tablets are used in some limited business scenarios, mostly where employee’s jobs are made more efficient if they have computing while away from their desks. This is what we currently refer to today as "mobile" for the most part. This segment might be transitioning to tablets in a way that eats into computer sales, but even that isn't entirely clear. Anyone who brings a lot of work home almost certainly still has a home computer in addition to their tablet, and I still see a lot of “mobile workers” carrying around laptops or ultrabooks.

And then there's the pure consumer market, which is essentially entirely mobile, or will be soon. People who don't bring work home with them have little or no need for a computer other than to run iTunes. If Apple had iTunes for the iPad itself I suspect a massive number of people wouldn't need a PC or Mac – as long as they don’t bring work home with them (or if their work doesn’t require data entry or manipulation).

For my part I’ve spent my career in the business space, not the consumer space. And I don’t see myself getting rich building inventory management apps that sell for $0.99 per user. Instead I create inventory management systems for companies that pay hundreds of thousands or millions of dollars for such software. Then those companies expect that software to run for 7-10 years so they can recover their investment. This is almost entirely unlike the consumer app space.

What makes this interesting is that there's a broad assumption in the world at large that the PC as we know it is done for - that it will be replaced by "something else". This is bolstered by Microsoft's own moves that effectively deprecate the "desktop" in favor of a different approach.

That said, I am 110% certain that 20 years from now there'll still be "desktop" (Win32, .NET, etc.) apps - and people will use them from a terminal emulator (probably RDP into Citrix) via their then-current device and OS. Exactly like so many old mainframe/minicomputer apps are used today via 3270 or VT terminal emulators via Windows.

But I personally don't want to be a maintenance developer on one of those soon-to-be-ancient apps, and so to me the 60 bajillion dollar question is what (if anything) will eat into the 91% business OS market share currently dominated by Windows. It might be one of these options:

  1. Windows (presumably in the form of WinRT, assuming Microsoft fixes their flawed business app side loading cost model)
  2. "JavaScript"/TypeScript/etc. (assuming an offline deployment model for apps, including some js version of Excel that'd work offline)
  3. Android (again, assuming Android continues to expand into bigger and multiple monitors, and Office eventually gets spun off into a business so Excel works on Android)
  4. iOS (assuming iOS expands to handle multiple 30" monitors and Microsoft spins off Office so they fully support iOS with Excel)
  5. Windows Desktop (perhaps everything we're going through right now is a fad - a fluke - and "real work" will be done on Windows long into the future)

Personally I assume that what we think of as "mobile" today will disappear as it merges into the business "desktop" of the future, leaving us with the same old business vs consumer spaces.

And as a business developer I won't care any more about the consumer space in the future than I have in the past. Which is to say not at all, beyond being a user of consumer apps myself (I do enjoy email, calendar, Instagram, Facebook, etc.).

But I will care about "mobile" because it will (imo) become the future business platform. Something will end up eating into and ultimately replacing today’s 91% Windows business desktop market.

I still think WinRT has a shot at this. A good shot actually given that the networking and security infrastructure to support Windows is already dominant, so the easiest thing for most businesses would be to slowly shift to WinRT. Again, presupposing Microsoft wakes up and fixes their ridiculous business app side loading model.

I also think JavaScript (TypeScript, Angular, Knockout, etc.) has a good shot, especially if Chrome continues to mature its offline deployment story and Microsoft continues to create an artificial barrier to WinRT adoption by charging a "deployment tax" for WinRT business apps. I could totally see most business apps being built to assume Chrome on the client, because Chrome runs on every type of device/OS people are likely to have.

I am dubious that Android has a shot, but I don't discount it. Today you can buy 24" Android "desktops", so some Android vendors are certainly trying to adapt the devices, OS, and its ecosystem to the business world.

I am even more dubious about iOS, because I have yet to see Apple making any moves necessary to become a business/enterprise player at a device or OS level.

And I didn't mention OS X or Linux here because they've had nearly 20 years to become players and have yet to get more than 5% of the total market, so why would we think the future would be different? Though I must admit that Ubuntu and Mint are very usable user-focused Linux implementations, and if they’d have existed 15-20 years ago Windows would have been in trouble.

As a result I’m personally continuing to invest in C# and XAML in the hopes that Microsoft makes WinRT a viable smart client platform. And I’m investing in TypeScript, JavaScript, and various related frameworks because I think that platform is probably the next most likely to become the smart client business platform of the future.

Sunday, December 01, 2013 9:16:15 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [4]  | 
 Monday, October 07, 2013

The short answer to the question of whether the Microsoft .NET Framework (and its related tools and technologies) has a future is of course, don’t be silly.

The reality is that successful technologies take years, usually decades, perhaps longer, to fade away. Most people would be shocked at how much of the world runs on RPG, COBOL, FORTRAN, C, and C++ – all languages that became obsolete decades ago. Software written in these languages runs on mainframes and minicomputers (also obsolete decades ago) as well as more modern hardware in some cases. Of course in reality mainframes and minicomputers are still manufactured, so perhaps they aren’t technically “obsolete” except in our minds.

It is reasonable to assume that .NET (and Java) along with their primary platforms (Windows and Unix/Linux) will follow those older languages into the misty twilight of time. And that such a thing will take years, most likely decades, perhaps longer, to occur.

I think it is critical to understand that point, because if you’ve built and bet your career on .NET or Java it is good to know that nothing is really forcing you to give them up. Although your chosen technology is already losing (or has lost) its trendiness, and will eventually become extremely obscure, it is a pretty safe bet that you’ll always have work. Even better, odds are good that your skills will become sharply more valuable over time as knowledgeable .NET/Java resources become more rare.

Alternately you may choose some trendier alternative; the only seemingly viable candidate being JavaScript or its spawn such as CoffeeScript or TypeScript.

How will this fading of .NET/Java technology relevance occur?

To answer I’ll subdivide the software world into two parts: client devices and servers.

Client Devices

On client devices (PCs, laptops, ultrabooks, tablets, phones, etc.) I feel the need to further split into two parts: consumer apps and business apps. Yes, I know that people seem to think there’s no difference, but as I’ve said before, I think there’s an important economic distinction between the consumer and business apps.

Consumer Apps

Consumer apps are driven by a set of economic factors that make it well worth the investment to build native apps for every platform. In this environment Objective C, Java, and .NET (along with C++) all have a bright future.

Perhaps JavaScript will become a contender here, but that presupposes Apple, Google, and Microsoft work to make that possible by undermining their existing proprietary development tooling. There are some strong economic reasons why none of them would want every app on the planet to run equally on every vendor’s device, so this seems unlikely. That said, for reasons I can’t fathom, Microsoft is doing their best to make sure JavaScript really does work well on Windows 8, so perhaps Apple will follow suit and encourage their developers to abandon Objective C in favor of cross-platform JavaScript?

Google already loves the idea of JavaScript and would clearly prefer if we all just wrote every app in JavaScript for Chrome on Android, iOS, and Windows. The only question in my mind is how they will work advertising into all of our Chrome apps in the future?

My interest doesn’t really lie in the consumer app space, as I think relatively few people are going to get rich building casual games, fart apps, metro transit mapping apps, and so forth. From a commercial perspective there is some money to be made building apps for corporations, such as banking apps, brochure-ware apps, travel apps, etc. But even that is a niche market compared to the business app space.

Business Apps

Business apps (apps for use by a business’s employees) are driven by an important economic factor called a natural monopoly. Businesses want software that is built and maintained as cheaply as possible. Rewriting the same app several times to get a “native experience” on numerous operating systems has never been viable, and I can’t see where IT budgets will be expanding to enable such waste in the near future. In other words, businesses are almost certain to continue to build business apps in a single language for a single client platform. For a couple decades this has been Windows, with only a small number of language/tool combinations considered viable (VB, PowerBuilder, .NET).

But today businesses are confronted with pressure to write apps that work on the iPad as well as Windows (and outside the US on Android). The only two options available are to write the app 3+ times or to find some cross-platform technology, such as JavaScript.

The natural monopoly concept creates some tension here.

A business might insist on supporting just one platform, probably Windows. A couple years ago I thought Microsoft’s Windows 8 strategy was to make it realistic for businesses to choose Windows and .NET as this single platform. Sadly they’ve created a side loading cost model that basically blocks WinRT business app deployment, making Windows far less interesting in terms of being the single platform. The only thing Windows has going for it is Microsoft’s legacy monopoly, which will carry them for years, but (barring business-friendly changes to WinRT licensing) is doomed to erode.

You can probably tell I think Microsoft has royally screwed themselves over with their current Windows 8 business app “strategy”. I’ve been one of the loudest and most consistent voices on this issue for the past couple years, but Microsoft appears oblivious to the problem and has shown no signs of even recognizing the problem much less looking at solutions. I’ve come to the conclusion that they expect .NET on the client to fade away, and for Windows to compete as just one of several platforms that can run JavaScript apps. In other words I’ve come to the conclusion that Microsoft is willingly giving up on any sort of technology lock-in or differentiation of the Windows client in terms of business app development. They want us to write cross-platform JavaScript apps, and they simply hope that businesses and end users will choose Windows for other reasons than because the apps only run on Windows.

Perhaps a business would settle on iOS or Android as the “one client platform”, but that poses serious challenges given that virtually all businesses have massive legacies of Windows apps. The only realistic way to switch clients to iOS or Android is to run all those Windows apps on Citrix servers (or equivalent), and to ensure that the client devices have keyboards and mice so users can actually interact with the legacy Windows apps for the next several years/decades. Android probably has a leg up here because most Android devices have USB ports for keyboards/mice, but really neither iOS nor Android have the peripheral or multi-monitor support necessary to truly replace legacy Windows (Win32/.NET).

This leaves us with the idea that businesses won’t choose one platform in the traditional sense, but rather will choose a more abstract runtime: namely JavaScript running in a browser DOM (real or simulated). Today this is pretty hard because of differences between browsers and between browsers on different platforms. JavaScript libraries such as jquery, angular, and many others seek to abstract away those differences, but there’s no doubt that building a JavaScript client app costs more today than building the same app in .NET or some other more mature/consistent technology.

At the same time, only JavaScript really offers any hope of building a client app codebase that can run on iOS, Android, and Windows tablets, ultrabooks. laptops, and PCs. So though it may be more expensive than just writing a .NET app for Windows, JavaScript might be cheaper than rewriting the app 3+ times for iOS, Android, and Windows. And there’s always hope that JavaScript (or its offspring like CoffeScript or TypeScript) will rapidly mature enough to make this “platform” more cost-effective.

I look at JavaScript today much like Visual Basic 3 in the early 1990s (or C in the late 1980s). It is typeless and primitive compared to modern C#/VB or Java. To overcome this it relies on tons of external components (VB had its component model, JavaScript has myriad open source libraries). These third party components change rapidly and with little or no cross-coordination, meaning that you are lucky if you have a stable development target for a few weeks (as opposed to .NET or Java where you could have a stable target for months or years). As a result a lot of the development practices we’ve learned and mastered over the past 20 years are no longer relevant, and new practices must be devised, refined, and taught.

Also we must recognize that JavaScript apps never go into a pure maintenance mode. Browsers and underlying operating systems, along with the numerous open source libraries you must use, are constantly versioning and changing, so you can never stop updating your app codebase to accommodate this changing landscape. If you do stop, you’ll end up where so many businesses are today: trapped on IE6 and Windows XP because nothing they wrote for IE6 can run on any modern browser. We know that is a doomed strategy, so we therefore know that JavaScript apps will require continual rewrites to keep them functional over time.

What I’m getting at here is that businesses have an extremely ugly choice on the client:

  1. Rewrite and maintain every app 3+ times to be native on Windows, iOS, and Android
  2. Absorb the up-front and ongoing cost of building and maintaining apps in cross-platform JavaScript
  3. Select one platform (almost certainly Windows) on which to write all client apps, and require users to use that platform

I think I’ve listed those in order from most to least expensive, though numbers 1 and 2 could be reversed in some cases. I think in all cases it is far cheaper for businesses to do what Delta recently did and just issue Windows devices to their employees, thus allowing them to write, maintain, and support apps on a single, predictable platform.

The thing is that businesses are run by humans, and humans are often highly irrational. People are foolishly enamored of BYOD (bring your own device), which might feel good, but is ultimately expensive and highly problematic. And executives are often the drivers for alternate platforms because they like their cool new gadgets; oblivious to the reality that supporting their latest tech fad (iPad, Android, whatever) might cost the business many thousands (often easily 100’s of thousands) of dollars each year in software development, maintenance, and support costs.

Of course I work for a software development consulting company. Like all such companies we effectively charge by the hour. So from my perspective I’d really prefer if everyone did decide to write all their apps 3+ times, or write them in cross-platform JavaScript. That’s just more work for us, even if objectively it is pretty damn stupid from the perspective of our customers’ software budgets.

Server Software

Servers are a bit simpler than client devices.

The primary technologies used today on servers are .NET and Java. Though as I pointed out at the start of this post, you shouldn’t discount the amount of COBOL, RPG, FORTRAN, and other legacy languages/tools/platforms that make our world function.

Although JavaScript has a nescient presence on the server via tools like node.js, I don’t think any responsible business decision maker is looking at moving away from existing server platform tools in the foreseeable future.

In other words the current 60/40 split (or 50/50, depending on whose numbers you believe) between .NET and Java on the server isn’t likely to change any time soon.

Personally I am loath to give up the idea of a common technology platform between client and server – something provided by VB in the 1990s and .NET over the past 13 years. So if we really do end up writing all our client software in JavaScript I’ll be a strong advocate for things like node.js on the server.

In the mid-1990s it was pretty common to write “middle tier” software in C++ and “client tier” software in PowerBuilder or VB. Having observed such projects and the attendant complexity of having a middle tier dev team who theoretically coordinated with the client dev team, I can say that this isn’t a desirable model. I can’t support the idea of a middle tier in .NET and a client tier in JavaScript, because I can’t see how team dynamics and inter-personal communication capabilities have changed enough (or at all) over the past 15 years such that we should expect any better outcome now than we got back then.

So from a server software perspective I think .NET and Java have a perfectly fine future, because the server-side JavaScript concept is even less mature than client-side JavaScript.

At the same time, I really hope that (if we move to JavaScript on the client) JavaScript matures rapidly on both client and server, eliminating the need for .NET/Java on the server as well as the client.

Conclusion

In the early 1990s I was a VB expert. In fact, I was one of the world’s leading VB champions through the 1990s. So if we are going to select JavaScript as the “one technology to rule them all” I guess I’m OK with going back to something like that world.

I’m not totally OK with it, because I rather enjoy modern C#/VB and .NET. And yes, I could easily ride out the rest of my career on .NET, there’s no doubt in my mind. But I have never in my career been a legacy platform developer, and I can’t imagine working in a stagnant and increasingly irrelevant technology, so I doubt I’ll make that choice – stable though it might be.

Fwiw, I do still think Microsoft has a chance to make Windows 8, WinRT, and .NET a viable business app development target into the future. But their time is running out, and as I said earlier they seem oblivious to the danger (or are perhaps embracing the loss of Windows as the primary app dev target on the client). I would like to see Microsoft wake up and get a clue, resulting in WinRT and .NET being a viable future for business app dev.

Failing that however, we all need to start putting increasing pressure on vendors (commercial and open source) to mature JavaScript, its related libraries and tools, and its offspring such as TypeScript – on both client and server. The status of JavaScript today is too primitive to replace .NET/Java, and if we’re to go down this road a lot of money and effort needs to be expended rapidly to create a stable, predictable, and productive enterprise-level JavaScript app dev platform.

Monday, October 07, 2013 9:24:20 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [39]  | 
On this page....
Search
Archives
Feed your aggregator (RSS 2.0)
July, 2014 (2)
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 2014, Marimer LLC

Send mail to the author(s) E-mail



Sign In