Windows is about work !

Despite being a programmer, I am not your typical mobile device user. I don’t have a smart phone, but instead share a cheap Tracfone with my wife simply for emergencies (really useful when your car breaks down on the highway). I now have two Android tablets, but simply purchased them so I have the option of getting into Android App development. I don’t really use them much right now. Got a great deal on a Nook HD for only $68, so it was not a big investment. I definitely am not going to be buying a $200 or $300 Android (or iPad) any time soon. Just don’t have any value to me.

Now I did invest a good bit on my ExoPC Windows tablet and in the future I hope to maybe get one of the 8 inch Windows tablets, now that Intel seems to have gotten it right with the latest generation of Atom SOC’s (system on a chip). So why would I invest in Windows tablets, where as I wouldn’t for an Android tablet ?

Computers for me have been mostly about work.

I started programming in the late 1980’s, early 1990’s, and some of my first work was for local businesses writing custom software. I was writing software before DOS and IBM PC’s became the fashion. Some of my first applications for businesses were written for CPM machines. When the IBM PC became the industry standard, computers were very, very expensive. It was nothing to spend 2 to 3 thousand dollars on a PC and they didn’t come with much power (can anyone say “640 KB Ram”). Computers were not for consumers. True some hobby computers existed back them like the Commodore 64, TI-99/4A, Atari, etc. But even they were in the $500 range initially (not cheap for what you got compared to a PC). Home computers were almost affordable, but by the time you started adding all the extra devices (ie. monitor, disk drive, expansion devices) it would start to add up. So for me computers were all about work, not play.

Windows computers eventually became mainstream and even consumers began to buy them. First it was people who used them at work and then wanted one at home. Finally most people began to buy computers when they became so cheap. Today you can buy a decent computer for about $300 and that is affordable. At some point the PC became a consumer device, even though the average user only used a small portion of what it was capable of. But when low cost tablets came along, particularly Android, consumers shifted from the PC to cheap tablets. Tablets were smaller, portable, but still allowed them to play games and do email and browse the web. So what about the PC ?

PC’s are for work and that is where they shine.

Attempting to try to turn the PC into a consumer device really isn’t the best course for PC’s, in my opinion. Let consumers have their cheap tablets. People who need to do real work will likely still need PC’s. For one, touch typing will never come close to what can be done with a keyboard. Personally, I am so picky about keyboards that I still use an almost 30 year old IBM Model M keyboard with my modern PC. Why ? Because I type fast when I code and the mushy cheap keyboards which come with most computers today won’t suffice. I need the feel of a real keyboard like my good old Model M. Touch can never replace the mouse. Trust me when I say that there is more to a mouse than meets the eye. Not only is touch not as detailed and accurate, but touch by its nature works very differently than a mouse (for examine a mouse can move the cursor but not have to register a click or touch event) and touch has some downsides. A mouse can make the cursor hover, touch can not. Touch for text is counter productive because you have to steal some real estate from the screen for the touch keyboard. Touch typing is slow at best. This is why so many tablet users struggle with finding a decent external keyboard for their tablets, so they wrap up their tablet in some kind of carry case shield embeded with a bluetooth keyboard. So the price of the tablet now includes a case and a keyboard. So why didn’t they get a laptop instead ? Oh, everybody has a tablet today and laptops are not “cool”. Personally I like my wifes little Netbook. Very light, but still a computer with a keyboard. Even when a bought a Windows 8 laptop (15 inch) I opted for a Lenovo (who bought out IBM PC business) because it got great reviews for the keyboard. Laptop keyboards are often poorly designed and have a poor feel compared to a quality desktop keyboard. The Lenovo keyboard has a real nice feel to it and with a 15 inch laptop the keyboard is of decent size too.

PC’s were originally designed for business and now with consumers all flocking to tablets, maybe business is where PC makers should concentrate on. Even with Windows 8 this should be a consideration. The Windows Store (aka. Metro) side of Windows 8 does make sense for tablets to some degree, but Windows machines are for business and even when it comes to Windows tablets this should be kept in mind. The Windows desktop was designed for more choices, not less. It is an “open book” rather than a “sandbox”. This is what business needs. Windows Store apps weren’t needed for Windows to be successful on tablets, at least for businesses. Developers simply needed to learn how to write small, high performance, touch friendly apps for the desktop. A forced look and feel, like what we see with WINRT apps, is not what businesses need. They need more choices, not less. One thing I learned from years of custom programming for businesses, was that software needed to be designed for the needs of the end user (business customer), not for the needs of the programmer or the operating system.

Dynamic software needed.

In the old days, programmers were always looking for ways to push the limits of the hardware. In the days of the Commodore 64, some really talented programmers created an operating system called Geos, which turned the Commodore 64 in a Mac like computer. The Commodore 64 only had 64 KB ram, part of which was for the screen  and the CPU was only 1 mhz (that is megahertz, not gigahertz for you young people). Most programmers today likely couldn’t even imagine how a Mac like operating system could be written for hardware like that. Programmers understood that the job of software was to push the limits of hardware, rather than be limited by it.

Modern Windows tablets are no different. The possibilities are almost endless. But instead of being forced into a sandboxed environment with look alike apps (at least the non-games), developers need to be allowed to push the limits of the hardware. They need to have complete control of what they display on the screen and how they build user interfaces. To be able to build powerful business apps which can push the limits of the tablet, they need to be able to build apps which perform at the fast speed possible (meaning native coding rather than slow scripting languages or bloated dot net) and to be able to design unique user interfaces which are totally different. User interfaces need to be smart, dynamic, changing based on their need. Apps should be able to be smart and know the difference between whether it is running on a tablet of running on a PC and reshape themselves accordingly. Rather than all aps working exactly the same, developers need to be able to experiment with new and unique interfaces.

One thing I learned a long time ago was that a user interface need not work just like the other guys apps to be easy to use. Ease of use has more to do with how natural and intuitive the user interface is and that has a lot to do with how creative the developer is in trying to satisfy the needs of their end users. Businesses can afford a slight learning curve to learn a new app, especially once they get use to it they are more productive than before.  I use to write custom apps in the DOS days and each new app I wrote often totally different than the last one. I would write the apps with the end user in mind. One common method I used was to ask the client, how do you do this task now on paper ? Often I would emulate what they do on paper, so when the employees started using the software they saw something they recognized. The learning curve was easy, even for a 60 year old lady who never used a computer before. Why ? Because the software was not designed with some kind of fixed user interface rules. It was designed for the end user and their needs.

But today with so much more complexity in the hardware and software, developers need to make their software smarter, more dynamic. In appreciated this when developing a demo apps for the Intel App Innovations contest. I was writing an app for a large all in one PC with touch. I found that some of the controls which worked well with the mouse were a bit unwieldy with touch. This required changing the size of common UI elements. Fortunately, I used ownerdraw for some of the user input controls. I was able to customize the controls to change their look and feel and the size of each element. But as I created the app, what seemed common sense at first, brought with it other issues. For example as I made UI elements larger, I quickly lost screen real estate. To solve this problem I then build slide in windows (rather than popups) which could be slide into view with more controls on them. But this raised issues with parts of the main window which now got covered. So I added alphablending to one slide in window, so one could still work with it and see what was behind it. I found that the more I worked on the app, the more I found myself customizing this and customizing that. Rather than force the user interface into some kind of fixed mould, I would customize it in what ever seemed useful, even if no other software did it the same way. I spent so much time doing this, I didn’t get to finish the app to the degree I would have liked for the contest, but I learned an important lesson. Developers simply need to take the time to build their apps so they are more dynamic, more customized to the need of the task at hand rather than simply be a clone of the last apps user interface. Customization is the key.

Windows tablets have a big potential in the business market and with prices dropping, hardware getting better and sizes getting smaller and more portable. But developers don’t need more UI rules, but less. They don’t need a fixed sandbox, but a rich environment to do different things. Just like in the old days when programmers had to be more creative to push the limits of the hardware, so to today developers need more ways to build better software, with more creativity, more customization and with less overhead.

It is possible

I learned an interesting lesson from the Intel contest. For nearly fourteen years I have been developing tools for programmers. My EZGUI user interface engine was designed for such customization as I speak about. While most of my customers only have used a small portion of the feature set in my tools, I was grateful to have them when I was building my app for the all in one PC. I finally realized why I put so many low level features in my software tools. My experience from the past in finding ways to push hardware to its limits had affected my attitude towards developing programmer tools. I build features into EZGUI, even knowing that most of my customers might now use them. It turns out, I built them for me. I built them so I would have the power features I needed. For years I have tried to explain to potential customers why customization features are so important. Now with Windows tablets take hold, customization is more important than ever. If ones user interface doesn’t work then change it, customize, create something totally new if you have to. Just don’t feel your app must look and feel like everyone elses. Don’t feel you have to follow some kind of fixed UI rules. Programmers need to design creatively. They need to build totally new user interfaces which are smarter, more dynamic. Have you ever taken a close look at nature and how different plants have different seeds ? Rather than all of them being carbon copies of each other, each one is unique to the specific needs of the plant. I use to wonder why bean tree in my yard had such long bean like seeds. I knew these type of trees tend to grow best near a lot of water, but mine was getting all of its water from an under ground stream so it wasn’t apparent how these trees grow in other places where they might be more common. These kind of trees grow well even in deep swamps. They love the water, but guess what happens when they drop their seedlings ? A normal seed would simply sink in the water and likely never grow. The bean like seeds of these trees are so long they can drop into shallow water or the mud and the stick upright with part of it above the water. The seed is perfect for shallow water around the trees or mud. Its unique design, though different, is perfect for its task.

So too with software. Business software needs to be designed for unique needs. Windows tablets for business require totally unique software, designed to be optimize for the task and the device. Rather than fixed UI rules, developers need to be creative instead. This is one reason I like native coding in Windows. The WIN32 has so many options for customizing user interfaces, the choices seem endless. As a WIN32 programmer I can build new controls from scratch if I have to. I can also customize existing controls to add new features and make them work differently. For example in my contest app demo I needed a customized listbox control which displayed 3D models. Each item had to be large so it was easy to touch them with the finger. The image of each model needed to be large enough so you can see what it really looks like. I had to actually copy images from the Files Listbox viewer part of the app when it displayed the 3D models using OpenGL, so I had to do screenshots directly from the desktop to get the images intially and then stored them in a bitmap array and then draw them dynamically in the custom listbox control. By using ownerdraw this was relatively easy. Since EZGUI supports all of these low features it was not too difficult to accomplish. Here is how the control looked in the app:

 

mycontrol

 

 

 

 

 

 

 

 

 

The point is that I build what I needed. If what I needed didn’t exist I created something new. Native Windows coding really lends itself to this kind of customization. The apps are fast and small, but also you have many choices for customization. Windows tablets offer many choices for developers who need to build business apps for the mobile world. The Windows Desktop still has many advantages to it. Windows for me is about building apps to do work, not play games. It is more about choices, not limitations. It is more about finding ways to push the hardware to new limits, rather than feeling limited and building apps which are all look alikes.