As a Mac and Linux user I think Microsoft has done a clever move with Windows 8

Or why merging mobile and desktop was Microsofts best strategic decision since hiring Dave Cutler in 1988

gorgogorbo
8 min readSep 24, 2013

When I started using computers the obvious decision of an operating system was Windows (Windows 95 a little later Windows 98). It wasn’t really a decision, it just came with the PC and it was the thing all my friends used and so did I. There was software available to buy and the most important thing many games. I spent a lot of hours playing games, but was always interested in how I could make a game myself.

The only computer related friend of our family (who works at DLR) gave me a Borland C++ Compiler and quickly showed me how I could print out the numbers from 1 to 10 to the terminal. Actually I wasn’t really satisfied because that obviously was not what I intended to do. I wanted to draw my own characters and make them move on key press and interact with other moving graphics on the screen. Nonetheless I kind of knew that this was probably the way to go. So I got about 30 Kg of books from our local library about programming and read lots of them. But for the 13 Year old me, german computer tech language was really hard to understand. I also know today some of the book authors didn’t know what they where writing about.

The first book that really got me into programming was called “QBASIC Schnuperkurs”. Why QBASIC? Because it was included in DOS and super easy to use. So from then on I knew the basic syntax and a few fundamental concepts of programming. A little later I heard about Blitz Basic. A BASIC compiler with some built in libraries for computer game programming. And of course I coded my first naive Pong game. Blitz Basic was exceptionally well documented for my use case so I got to quick results that satisfied me. But it was also the time when I heard about linux. A way superior OS as some hackers mentioned in the forums. So I started playing around with linux. No programming stuff. Just system setup. And of course very time consuming and teaching.

A little later I started making websites with HTML and PHP. I already had some Microsoft Frontpage experience and a personal website hosted on Geocities. But the real thing started when I first layouted a database and wrote a simple news script with user authentication in PHP for my school. The reason again why it was so easy to start with PHP was that it came with batteries included and was well documented (code samples for all my use cases already available). I didn’t really know what was going on on the server, it just worked.

Some jobs followed and every single time I was able to minimize the manual work I had to do by automating every possible thing. That was the time when I got to know the power of applications offering command line interfaces. You just need to get the job done in the terminal. Then paste all the commands into a text file. Define some parameters and you are done. Being able to write code that gets your job done (or even done quicker) is in my opinion an ability that comes in very handy for anybody.

Enough about my life.

What I am trying to say is that we must give the power of creating custom applications into the hands of everybody.

Why aren’t we there yet?

Windows

Windows always decided to go a way of strictly separating between developers and users. To the end user new software comes to the computer by executing a windows installer binary. No way to figure out what’s going on there.

Linux/Unix

The unix philosophy and pipe system is exactly what I would like to be presented in a nice and appealing way to the end user. Breaking every piece of software into its atomic parts and making it possible to compose them to fulfill higher deeds. Ok guys, we can stop here because paired with github that’s everything I want. But wait there are people (even developers) who fear using the terminal.

Mac OS

Have used but don’t know much about Mac OS before X. But founding Mac OSX on Unix was the best strategic decision apple has made from this point on. And there is the automator which enables users who are not used to the terminal to write little bits of software to make their life easier. With a built in distribution system (like github or an app Store like thing) it would probably be very popular. But distributing yourself and searching for software on the web (using Google) is not for the masses (they need an app store).

What I would like to see

A simple way to write software? there are lots of attempts/great solutions to make writing software easy to everybody.

  • Google app inventor
  • Mac OS X Automator
  • Yahoo pipes

Google had the App Creator, Yahoo had pipes and Apple still has the Automator. All these solutions lack/ed a central repository of building blocks (free and paid open to developers) and an app store like distribution system where users can publish and sell their composed apps to. The average computer user should be able to compose its own simple software by drag&drop after just doing a short interactive tutorial. And after that make it available to anybody else using that type of operating system.

Building Blocks

The system I am proposing in this article.

Every building block is a self contained independent application with defined input and output channels and configuration options. Like a node.js package it should know and handle its own dependencies. A few examples of roughly sketched out building blocks.

GMaps search

A simple text input field that searches the GMaps API and outputs a list of results. The input and data source of this block is already defined. The two output channels would be a list of results and the first result. And also some parameters which will be passed to the API like number of results.

Scrollable list

A scrollable list takes a list as input, offers some options to customize the presentation of a list item (which property to use as title and which to use as description) and a click event as output channel.

GMaps map

An element showing a Google map with one input channel that accepts ll coordinates

Bing map

An element showing a Bing map with one input channel that accepts ll coordinates

App examples

App 1

Using ‘GMaps search’, ‘scrollable list’ and ‘GMaps map’ we can easily build a simple Google maps app.

App 2

Using ‘GMaps search’, ‘scrollable list’ and ‘Bing map’ we can easily build a simple app that searches on the GMaps API but uses Bing Map as presentation.

OS plans for the future?

Windows

Microsoft with Windows 8 is trying to merge desktop and mobile operating system. That could lead one to think: “cool! now I can use the same software on my mobile phone I am using on my desktop”. And the greatest news is that it can be written in javascript. So Microsoft is providing a way to easily create applications with a Windows look and feel for both desktop and mobile (not easy enough).

Linux/Unix

In the linux world that job is left to the distributions and window managers. Gnome announcing to support javascript as first class application scripting language. Yeah great move, still not easy enough but it could be the foundation of something like the system proposed here.

Mac OS

Apple is also merging Desktop and mobile but I think Microsoft is one step ahead as Windows 8 desktop and mobile share a common ui. To me personally since recreating Mac OS on Unix everything is moving in the wrong direction. Away from a compatible Unix OS to a proprietary closed system/experience. So for me it’s time to move away.

FirefoxOS

Mozilla is the winner. As Boot to gecko is utilizing well known web technology such as HTML and Javascript. The concepts are done and the app store is already there. The only job left is to implement the building block repository and the app editor.

So what about Microsofts clever move

Really? Yes I think they are half way there. Everybody is complaining about Windows 8 as being confusing to the end user. Assuming that the value of an OS can be measured by the number of great apps available. Microsoft is doing a lot to make the work of developers easy. And providing a way to write one app for both desktop and mobile is one big step in this direction. By investing in javascript on client (native apps for windows in javascript) and server (node.js support for windows azure cloud) side they are supporting well known and used standards instead of implementing their own proprietary stuff (thinking of C# and VB). Microsoft had to do Windows 8 to catch up with competitors. Windows 8 isn’t a big success but probably the next version and which company if not Microsoft could handle every second OS being a failure. Just take Windows 8 and think the old surface and all the old apps away replaced by new windows8ish apps. To most of the end users probably the best operating system ever. And a Windows 7 se for the companies.

P.S.

Please don’t get me wrong here. I had the pleasure to fix some Windows 8 machines and it is not fun. It is actually the most misleading OS I have ever used.

tl;dr Any OS manufacturer should work on adapting something like the unix pipe system as a super simple “Drag & Drop & Deploy programming language”

--

--