Buyer Beware

March 11th, 2012 No comments

You pay a monthly service fee for Cable TV, Cell Phone, and Internet.  If you buy Windows 8, then be prepared to pay a hefty monthly service fee for your software too.

Microsoft has had “lock-in envy” for Apple’s product distribution model for years.  Microsoft’s newer product offerings, such as Office 365, clearly indicate their future direction.
 
The Windows 8 Metro Desktop is designed to break existing Windows software applications, while simultaneously keeping developers trapped inside a Windows world.  They intend to move to a Software As A Service (SAAS) business model.  With this model, there is no installation.  Instead, the software runs on a remote server and is accessed through a web browser, and soon through the Windows Desktop itself.  In addition, SAAS has the benefit of centralized file storage.  This means your documents will be available anywhere, on any computer.  Sounds perfect, right?  Not so fast.  Corporations are in business to make a profit.  So the idea is that the end users enter into a MONTHLY service contract.

You upgrade traditional “installed” software product when YOU decide it is time.  For instance, if you had bought Office 2000, you might have decided to skip a few upgrades before purchasing Office 2010.  With SAAS, Microsoft decides once and for everybody the frequency of updates, and how much of your monthly service fee is dedicated to adding new features.  This is a win-win for Microsoft.  The more features they add, the harder it is for competitors to match their services, and the more they can charge for their monthly service.  As with any monthly service, they can raise the price anytime they feel like it.  This way they can ease users into their ever-increasing service fees.  They can also play the “locked-in price service fee” game where the consumer is “locked” into a price as long as they don’t drop their monthly service, effectively using fear to trap users into perpetual bondage.

These monthly fees remain cheap while traditional “installed” alternatives exist.  But if SAAS takes off, then there will be few people using “installed” alternatives, and thus little incentive to continue developing/supporting them.  At that point Microsoft and other SAAS vendors are free to charge whatever they want.  Remember, companies are in business to make a profit.  How much is Microsoft Word worth to you?  $5 per month?  $10?  $20?  It will probably be offered in bundles, the same way as phone and cable are, meaning it might cost $60 or $100 per month for a suite of products.  As long as Microsoft controls the platform, they get to decide how much you should pay per month for SAAS, and what is included.

What should we do?

In my last article I stated my belief that Windows 8 will be largely irrelevant.  That belief presumes that end-users will make wise decisions about the software and services they purchase, and not be beguiled by marketing trickery into a dead-end path where users no longer have ownership of their own content, and are forced to pay excessive monthly licensing fees.  To prevent this, end-users must make the following decisions:

  1. Insist that cloud/SAAS products must be interchangeable before opting-in.  If there is no open standard across vendors, then make sure that your data can be downloaded and used locally before opting-in.
  2. If you prefer the pay-once per version model, or better yet the pay-nothing model, then consider using Free and Open Source alternatives, such as Linux.  At one time Linux was considered by many as difficult to install and administer.  Hardware support was once hit-or-miss.  But Linux has changed dramatically over the past few years.  Installation is usually a trivial task and hardware support is excellent and getting better all the time.  If you know you are interested in running Linux before you purchase your next computer, then you can select a computer based on its support for Linux.  Today it’s difficult to argue that Windows 7 poses any significant usability or technical advantage over Linux.  In fact many users, including myself, were pleasantly surprised to find that Linux was actually an improvement over Windows.  You can try Linux from a CD or USB stick without installing anything on your machine.  It has also become simple for end-users to create dual-boot computers where Linux can be run alongside Windows. 

By supporting the Free and Open ecosystem, you help to guarantee that there is an alternative to SAAS.  As long as there are alternatives, users have a fighting chance at having fair and reasonable prices.

Developers should consider supporting Free and Open technology stacks, to reduce dependencies on Planned Obsolescence for Overt Profiteering (POOP) Technology stacks. They should work towards ensuring that SAAS is used in a manner that benefit the development community and end-users, and treats end-users as the rightful owner of their own content.

Categories: Uncategorized Tags:

Windows is a Dead Operating System

December 14th, 2011 No comments

Windows is a dead operating system. Microsoft just doesn’t know it yet.  It’s not just me saying this, either.  IDC told Computer world recently that “Windows 8 will be largely irrelevant to the users of traditional PCs, and we expect effectively no upgrade activity from Windows 7 to Windows 8 in that form factor.”

I came to that epiphany two days ago after I installed Ubuntu on an old laptop and realized Linux doesn’t suck anymore.  In fact, my old laptop now seems to be my best computer. Windows 7 kinda sucks in comparison. Meanwhile, 550,000 Android phones and 210,000 iPhones are activated every single day and processors are gaining power so fast that a desktop computer is just a smartphone and Bluetooth keyboard away. Amazon.com has the Appstore for Android, not for Windows. Now that Microsoft has decided to start jailing their users, the sole remaining advantage of Windows seems to be evaporating. As for Windows Metro touting its HTML5/JavaScript prowess, isn’t that what a browser is for?

Categories: Uncategorized Tags:

Five Things…

April 17th, 2011 No comments
  1. We’re all waiting on a divine revelation, even if just big enough to get us through the next week.
  2. We all long for our own indelible ideas to remind people that we’ve been here.
  3. We’re all lost in our mundane routine, awaiting that moment when we can break out in spontaneous childhood.
  4. We’re all consistently paradoxical.
  5. Our dreams are on a ship, passing in the night upon a storm of things we cannot change.
Categories: Uncategorized Tags:

What Will Be The Programming Language of 2050?

March 24th, 2011 No comments

The biggest language of 2050 will seem like an accident as it occurs, and make perfect sense in retrospect.  In recent years, open source is proving itself to be slow and steady, but also the solutions with long-term longevity.  Few companies can offer the stability of a global community.  For this reason, the biggest language of 2050 will be a fully open-source language for which no company can claim any intellectual rights.  It will combine the best features of dynamic and statically typed languages.  It will make parallelization far simpler than anyone in 2011 could possibly fathom.

Categories: Uncategorized Tags:

The Other Side of Microsoft

March 11th, 2011 No comments

When you corner an animal, almost any animal, it becomes ferocious.  It appears this also happens to companies. 

Microsoft has spent billions building and promoting Bing.  I have strong empirical evidence that few people actually use Bing.  When I launched readmusicfree.com, I submitted to the major search engines.  I immediately got good SEO placing in both Yahoo and Bing (meaning that when I use the keywords designed to produce top search placing, my site was listed in the first page of returned results).  But with Google I got placed in the “sandbox” that Google claims doesn’t exist.  My site comes back on page 492, or thereabouts (I don’t know the exact page because I don’t have the patience to search beyond the 8th or 10th page).   Yet Webalizer (and the other traffic analysis tool that I forget the name of) shows that Google is referring far more people to my site from page 492 than from the first page of returned results from either Yahoo or Bing.  (The reason is simple:  when something is good enough, there is no problem to be solved, and we default to being simple creatures-of-habit).

Today Microsoft responded as a cornered animal.  I notice the little exclamation point next to the “Shut Down” button, which is Microsoft’s way of saying “reboot right now, else the computer will inexplicably reboot itself next time you’re watching Netflix while on the treadmill.”  So, like a good little drone, I shut down to let Windows do its “thing”.  A little later I log on to discover that Microsoft has violently removed the Google toolbar (reduced it to an empty bar with an “X” to close it), and installed Bing in its place.   I don’t know about you, but I’m getting tired of being mauled by my computer.

Next exhibit is the Windows Phone 7.  As a .NET developer, I have a vested interest in the language and infrastructure.  Even after relentless taunting of my iPhone toting friends, I remained loyal to Microsoft in the time period leading up to the release of WP7.

First let me premise this by saying that I always thought Richard Stallman was a nut-job.  I thought his viral licensing agreement was worse than the problem(s) it was designed to solve.  Well, as it turns out, Richard Stallman is NOT a nut-job.  When it comes to computers, choice is GOOD.  Users should have choices.  Companies that provide key pieces, like operating systems, can abuse their power and forcefully remove freedom of choice from the users…  

From “Getting Started with Visual Basic Development for Windows Phone 7” by Joe Kunk in this month’s Visual Studio Magazine:

“Windows Phone 7 does not support user-accessible memory cards in the traditional sense; rather, It’s treated as a secured permanent extension of the on-board system memory.  If your handset has an empty SD Card slot, you must reset your phone to the factory default in order to install and use the memory card (get a good backup first!).  The SD Card will be paired with the handset via an internal password and will become unusable in any other device.  It’s essential that only Microsoft-approved SD Cards be used; unapproved cards are likely to cause phone instability and loss of data.”

And why do you think Microsoft has done this?  The reason is obvious; to lock-down the device and force all software to go through Windows Marketplace.  Yes, they took a play right out of Apple’s playbook.  Microsoft figures if Apple can get away with it then they can too.  Here’s the part Microsoft forgot:  Apple didn’t succeed because of this, they succeeded despite it.  Apple succeeded because of Microsoft’s (and other mainstream companies) profound and prolonged failure when it came to mobile devices.   Apple’s users are a minority in this world that voluntarily gives up their freedom-of-choice because they are capable of paying every exorbitant and greedy cost Apple wants to charge.

But since I’m not rich, I flat out refuse to use or support Windows Phone 7.  Sorry, I’m with Richard on this one.

Categories: Uncategorized Tags:

Learn to Read Music

January 13th, 2011 No comments

Please allow me to take a break from posting about technology to tell you about my new years resolution.  I have decided that this year I would like to learn to play the piano.  Being the techno-geek that I am, I decided to create a game to help students become proficient at reading music.  The game is called Grand Staff Defender, and it can be played for free online at http://www.readmusicfree.com. The cool thing about it is that it runs on anything, including Android, iPhone, iPad, and even my Kindle 3.  I achieved this little feat by writing it purely in JavaScript.  To compensate for the fact that JavaScript doesn’t have double-buffered graphics, I used gif images with transparent backgrounds and cycled the images to simulate double-buffered animation.  It worked quite well.  In fact the animation is smoother than another flash music game I found.

Categories: Uncategorized Tags:

Popularity of Web Application Frameworks September 27, 2009

September 27th, 2009 No comments
The following is a rundown of the adoption rates of various web application frameworks by programming language, according to Indeed.  Keep in mind that there are many other considerations, besides popularity, when choosing a framework. Framework feature sets vary dramatically and this is just as important as popularity.  This article simply displays the adoption rates (according to indeed) of the various frameworks listed in the Wikipedia Comparison of web frameworks article and gives some brief summary information.  In some cases there are so many competitors that it takes some effort to narrow them down.  The intermediate graphs (prior to narrowing down the number of items on each graph) are not shown.  To further narrow down the criteria, I will only look at frameworks that produce web based output that can be viewed without a plugin (thus Flash and Silverlight frameworks will be ignored for this article).  Lastly, there are some framework names, such as “PHP Work” (I mean really, you’re going to name your framework THAT?!?!  Ambiguous names are a Microsoft FUD trick to hide a technology’s unpopularity until it’s marketing department convinces the world that it is taking-off), are too generic to be search on and so thus are ignored.  Lastly, this article then pits the winner from each category to determine an overall winner.
PHP Web Frameworks:
PHP Web Frameworks

PHP Web Frameworks

PHP Frameworks: Agavi, Akelos, CakePHP, DooPHP, CodeIgniter, Drupal, Elixon, jFramework, Helix, Horde, eZ Components, FUSE, Kohana, KumbiaPHP, LISA, Orinoco, PEAR, PHP For Applications, PHP Work, Qcodo, Rapyd Framework, Samstyle, Satya Portal Pack, Seagull, SilverStripe, Simplicity, Solar, SPIP, Symphony and CMS, Tekuna, Tigermouse, Vork, Wigbi,Yii, Zend,  and Zoop.
PHP Observations: Joomla is not listed.  Is this not considered a general-purpose web framework?  PHP Work and PHP For Applications are ignored.
PHP Winners:  Drupal, cakephp, and CodeIgniter.  Nothing else is shown on the graph because there are no close fourth-place PHP frameworks.

Java Web Frameworks:

Java Web Frameworks

Java Web Frameworks

Java Frameworks: Apache Cocoon, Apache Struts, Apache Wicket, AppFuse, Aranea, Eclipse RAP, Google Web Toolkit, Hamlets, ItsNat, IT Mill Toolkit, JavaServer Faces, JBoss Seam, ManyDesigns Portofino, OpenLaszlo, OpenXava, pirka, RIFE, Shale, Sling, SmartClient, Sofia, Spring, Stripes, Tapestry, ThinWire, Vaadin, WebObjects, WebWork, ZK, and ztemplates.
Java Winners: GWT, Tapestry, JBoss Seam, Wicket.

Python Web Frameworks:

Python Web Frameworks

Python Web Frameworks

Python Frameworks: CherryPy, CubicWeb, Django, Grok, Pyjamas, Pylons, TurboGears, web2py, and Zope.
Python Winner(s):  Django

Other Web Frameworks:

The other category includes languages other than PHP, Java, and Python.  Flex framework was excluded because we are only interested in frameworks that deal with HTML/Javascript.

Other Web Frameworks

Other Web Frameworks

Other Frameworks: AIDA/Web, Apache Click, ASP.NET MVC, Axiom Stack, BFC, Camping, Catalyst, ColdSpring, Csla, CppCMS,DotNetNuke, Flex, Fusebox, Grails, Helma, Interchange, Kepler, Lift, Mason, Maypole, Mach-II, Merb, Midgard, Model-Glue, MonoRail, Morfik, Nitro, onTap, OpenACS, Orbit, Ruby on Rails, Seaside, Sinatra, Sproutcore, Wavemaker, and Wt.
Other Winners: Ruby On Rails, Grails, ASP.NET MVC, and Mason (Perl).

Overall:

Overall Web Frameworks

Overall Web Frameworks

Overall Winners: Ruby on Rails (by a wide margin), Drupal (PHP), GWT (Java)

If we remove our top three performers (Ruby on Rails, Drupal, and GWT) then we can see the remaining winners more clearly in our graph:

Overall Web Frameworks without Top Three Performers

Overall Web Frameworks without Top Three Performers

The remaining popular web frameworks are, in order of popularity: Django (Python), Grails, CakePHP, Tapestry, JBoss Seam, Wicket, and CodeIgniter.

Of the most popular, the following appear to be growing quickly in popularity: Drupal, GWT, Grails, Django,  CakePHP, CodeIgniter, and Ruby on Rails.

What is the most popular IDE, regardless of language?

September 19th, 2009 No comments

What is the most popular IDE, regardless of language?  That is a tough question to ask for a number of reasons.  For one, there are lots of open source IDEs that may have a tremendous home-user backing, but not a good backing in the business world.  Also, Eclipse is a platform, and as such it goes by many names.  You add a sliver of usage here and a sliver of usage there and it starts to add up.  Next, I’m not an SAP expert, so maybe there is some great IDE in that universe that can give our heavy hitters (below) a run for their money.

I like Indeed because it aggregates job postings and resumes from many sources.  I think it does a better job at filtering noise than Google trends.

Anyhow, a picture tells a thousand words.  Looking at the graph below you can see that  Visual Studio reigns supreme.  This is because of its virtual monopoly on .net language development (Yes, I tried many different combinations of IDEs in the graph below, but I remove the ones that don’t register at least a little blip).  VS is the gatekeeper of .net!  Eclipse itself (without Aptana, Flex Studio, IRAD, etc) amasses a huge second place victory.  Looks like Zend might be an up-and-comer.  With all of the PHP developers in this world, it sure seems like there should be a dominant PHP IDE.

Surprise: Low Netbeans numbers doesn’t surprise me only because I’ve seen it before.  But as a frequent user I’m always amazed that this terrific product doesn’t do better.

IDE Comparison

Ok, this is really boring since there are no real competitors.  When I first ran these numbers, Delphi showed up as a major player.  The problem is that it is also a city, so it was skewing my statistics.  So I qualified it as “Delphi and Database”, since its primarily used for database applications.  Once I did that, Delphi became one of the little guys.

In summary, happy coding in whatever IDE you choose!

Universal Health Care in the United States

August 15th, 2009 No comments

Sorry tech aficionados, I have to take a time out from technology and speak my mind about universal health care in the United States.  It’s important that President Obama first address these issues before pushing universal health care.

 

1)      Taxes are out of control.  First, each American pays Federal and state income taxes and sales taxes.  But what most people don’t consider is that corporations must recoup the money they pay in taxes by raising the cost of the goods and services the sell.  This means that the end consumers ultimately pay the corporate taxes as well.  Once you start adding up all these numbers, the average American pays anywhere between 60% and 75% of their money, depending on how it’s calculated, to government taxes.

2)      One of the main reasons why health care costs are out of control is because our legal system is out of control.  If we hide these costs inside the federal budget, we mask the problem rather than fixing it.  First FIX THE REAL PROBLEMS, then we can talk about federalizing health care.  This problem is perpetuating itself because we keep voting lawyers into congress, and lawyers don’t seem to have a problem with all profits from every industry ultimately ending up in the hands of lawyers.

3)      Figure out how UHC is going to work by first fixing Medicare, Medicaid, and Social Security.  I’ve seen different estimates for impending doom, but even the most optimistic forecasts for these programs don’t look good.  It comes down to a fundamental reality of group collaboration.  The full natural lifecycle of any entity is from struggle to success to bureaucracy to failure.  No entity, whether it be corporate or government, is exempt from this natural evolution.  I know there are companies that reinvent themselves and prolong their natural lifecycle, but all successful entities ultimately collapse under their own bureaucracy.  What is the oldest standing government?  We, as Americans, can stagger the damage caused by essential reinvention by following the example of our constitutional authors and placing as much power in state and local government as possible.  Then we have state-by-state competition to sharpen the system.  We have monopoly laws, but they can’t protect us from a federal monopoly.  This is a fundamental flaw that will destroy us if we continue down this path.

4)      Historically, congress has proven to be the creators of knee-jerk regulation.  This is why even our allies have strained relationships with the USA.  Our foreign policies reverse themselves every time a new president enters office.  Do you want your health care mandated by an institution that is going to reverse its policies on virtually everything the instant the public is sick of Democrat rule and votes a Republican majority back into office?

 

Please, President Obama, fix fundamental problems first, then we can talk about universal health care.

Categories: Uncategorized Tags:

Universal Data Entities a Necessary First Step towards Interchangeable Global Services

July 3rd, 2009 No comments

First, I want to plug Jonathan Sapir. A colleague pointed me to this gentleman while we were discussing End User Development. I read most of his blog entries on http://www.powerinthecloud.com and came to the conclusion that his description and thoughts on what he calls “Situational Applications” are remarkably similar to my own ideas. Amazing…

There’s lots of smart people, including Jon, asserting that services are the future of software development. Jon says, “In the future, there won’t be such a thing as an application. Applications are artificial barriers. You just need services that you can synchronize.”

I think this viewpoint is MOSTLY correct, but its missing a key element. Currently, OOP has a blinding stranglehold on software development. OOP is a wonderful tool, but one of its key tenets may be holding us back. The problematic tenet is the integration of data and logic. The problem rears its ugly head when you begin to think of the world as an enormous collection of compatible services.

The problem is that data has a much broader application than logic does. For instance a Person data entity has much broader usefulness than any set of logic that is wrapped within it. The situation becomes worse when you consider that data objects are tied to their APIs/framework/technology stacks. If I create a Person object in Java, I can reuse it in .net.

I’ve put a lot of thought into Universal Data Entities over the years and I’ve come to the conclusion that data needs to finally make a clean break from its technological chains before we can finally realize the true productivity benefits of worldwide software reuse.

Why shouldn’t data objects automatically be compatible by name and/or attributes? If Application A uses a Person object with 5 attributes and Application B was written on another continent using a Person object with 3 attributes, all of which are in the Person object from Application A, then why shouldn’t Application B accept the Person object from Application A?!?!

The likelihood of two incompatible data objects sharing exactly the same attributes is extremely unlikely. And we could avoid it completely with a few ground rules. For instance, entity and attribute names can use the “extends” construct, and introduce a new construct called “aka” that provides a list of synonymous terms. Attributes would need to match by name or one of the aka names. Entities on the other hand can match up even if their names don’t match, as long as their attributes do. Perhaps the matching would trigger a warning if the names were not matched by name or one of the aka names.

There are some problems to be solved, such as implicit use of measurement units. If we had two Person objects that both had a Height attribute, then we would almost certainly encounter a unit problem. So any attribute that quantifies a value in space or time would need to also handle the unit of measure. This could be as simple as some form of Hungarian notation. For instance, the Height attribute would need to be HeightInch, or HeightFeet.

The aka construct could even go a little further by providing conversions from one unit to another. So, for instance an attribute named HeightInch might be declared as;

HeightInch aka HeightFoot computed as HeightInch/12

I’m quite certain there are many other details that need to be worked out. This type of object would certainly need a text-based intermediary representation to become universal. I think it would be relatively easy to produce an XML notation (Schema). I’ve also considered using JSON, but there is not yet a specification that gives data objects their well-deserved universal liberation from logic and implementation. I’ve produced a proof of concept implementation that I would be happy to share if there is some interest. I do believe that the Universal Data Entity is a necessary first step towards the vision of a global Services library. It almost certainly is a necessary first step towards creating a Situational Application development environment that is both powerful and user friendly.

Thanks for your time!

Categories: Uncategorized Tags: