Thursday, 20 of June of 2013

Tag » User Interface

Windows 8 and the software gap !

Not enough apps for Windows 8 new modern UI !

So that is what I hear anyway. So from the perspective of a non-Microsoft language developer, what do I think is part of the problem ?

While I understand the so called Modern UI concept and some of the reasons Microsoft has created it, I find that one serious flaw is failing to appreciate what Windows already has. The Windows Store (aka. Metro) environment is so radically different that it can not even run so called legacy software. There has to be a separate desktop for that, giving it a second class status.

So, didn’t I say I like Windows 8, before this ? Yes, I do. But many of the concepts of Windows store apps could have just as well been implimented using the WIN32 API’s by providing a few extra API’s to tap into. The strength of Windows is its long history. Backward compatiblity is something rare today in the tech industry, but Windows has provided this for many years now. Windows 8 attempts to break this and this may be a seriously failing in it. Yes, the desktop is still very backward compatible with the WIN32 API’s, but will it stay that way.

Another problem I see is Windows RT. OK, I understand the value of ARM for some things, but Intel is doing an amazing job of catch up and Windows and Intel (or AMD) for decades has been like a hand and glove fit. There is nothing wrong with improving CPU’s, but backward compatiblity is also important there too. Now cross platform sounds great in theory, but having been programming since the 80′s, I have found that concentrating on a single platform that “just works” makes life so much easier and you can tap into the power of the platform more fully.

Software developers have not made things any better in my opinion. It hasn’t been enough to just improve programming languages, but too many want to make radical changes to programming languages in the unending quest for the perfect language. Programmers want their tools to solve all their problems, rather than become better programmers. There is nothing wrong with building better tools, but at some point it all comes down to coding. Yes, coding to some is considered a bad word. I like RAD tools just as much as the next guy, but programming is all about coding.  Have you ever tried to keep up with all the latest programming lingo today ?

Terms like:

  • abstractions
  • agile
  • design patterns
  • fuzzy logic
  • obfuscation
  • polymorphism
  • waterfall model
  • namespaces

Now of course there are always going to be unique terms to any trade, but I have found that despite having been programming for a couple decades now, that I some times dislike reading articles about programming because, what should be relatively easy tends to be made overly complex. Windows programming has experienced the same thing. You don’t appreciate how something really looks until someone who has never seen it before sees it for the first time. Are they excited by what they see or are they confused ? Having been a non-Microsoft language programmer for nearly a decade now, I was excited to get a look at the latest Visual Studio for building Windows 8 (Metro) apps. I had once been an avid fan of Visual Basic (now some call it Classic Visual Basic). I had purchased Visual Basic versions 1.0, 2.0 and later 50 Professional. Visual Basic, despite its limitations (performance) was a dream to use. It was easy to use and concentrate on building software quickly. When I switched to PowerBasic, which required an extensive knowledge of the Windows API back then, it was a challenge. I was learning how to program the hard way (like C programmers of old use to). Compared to Visual Basic it was 10 times harder (not the core language, but the GUI stuff using the WIN32 API’s). But I endured and today, much of it is relatively easy for me. Now having endured a decade of learning the Windows API, you would think, anything else would be childs play for me. Not so.

When I downloaded the latest Visual Studio and started to play with it, my first reaction was “what happened to programming ?”. Even by resorting to the Visual Basic part of Visual Studio, nothing felt familar. Object Oriented Programming had changed programming and not for the better, in my opinion. If the editor did not have intellisense, it would be totally unusable. Complexity has ruined programming.

When you break down programming to its lowest level, it is simply the act of moving a lot of bytes around, doing a lot of calculations and trying to make it all mesh together to get some work done. The new Windows 8 style of everything being so flat in appearance, so much open space in apps, etc. does not make it more productive. True, designing for touch is quite different than designing for a PC with a mouse and large screen, but it is not the operating system and a bunch of UI rules which determine how well suited an application is to the device it will be used on, but it is how well the apps developer took into consideration the different device type he expected the app to be run on. What works well with touch may not work well with the mouse and visa versa.

Windows 8 has a lot of potential and I do not consider it a failure as some may. But software is software, no matter the device. Software must be designed to get work done and do it well. Software must take into consideration the devices it will be used on and remember, it isn’t always possible to make something so universal that it works perfectly on all devices. Maybe it would be better of the software had the ability to know what kind of device it is running on and then to morph into what would work best for the specific device it is run on. If run on a tablet, then dynamically change the app so it looks well on a tablet. If it is run on a desktop, then dynamically change so it works well on the desktop, even if it is significantly different looking than the tablet version.

Also software developers need the freedom to be creative. At times the best software comes from those who see the need to do things just a little bit differently, because the situation warrants it. Have you ever noticed that trees are not all alike ? Some trees are well adapted to living in areas with a lot of swamps. Some trees have large bean like pods they drop (for seeds), because in a swamp they stick in the mud and grow better because of their design. Other trees drop acorns or nuts (not in a swamp of course) and they get seedlings to grow and also feed all the squirrels. The point is that some times different makes sense, when it accomplishes something practical.

Software design is similar ! As a programmer, I just want to be able to easily access the core functionality of the operating system without having to jump through hoops. Native procedural based API’s are the simplest form of this. Sure, if you want to add some layers on top (be it OOP or COM) fine, but the core of an operating system needs to be simple and easy to access. This allows a variety of developers to even build new tools for programming applications for the platform. The long time WIN32 API’s had this advantage, though I would not have called them easy. Still they were easily accessable, so programmers could built upon them. But don’t we need high level tools to get work done ?

Of course, but high level languages don’t always mean simple. Sure, I would like to see some of the low level API’s in Windows made a good bit easier. But the high level tools used today don’t appear very easy to me. Visual Studio is overwhelming and not friendly to a new programmer. High level is only beneficial when it really is easy to use and it really accomplishes important tasks. Modern OOP based languages are not easy by any means. Remember, building an application which does its job well is hard enough to begin with. But why make the development of an application any harder or more complex than it needs to be ?

Now many would take issue with me, because I have been a long time BASIC programmer. BASIC is not a professional language some will say. But what is the definition of professional ? Does someone using tools which are too hard to use or more complex than need be make them a professional ? Professionals are those who know how to choose the best tools which make their life easier and more productive, not more complex. If a programmer chooses a language because it is easier to use, more readable (easier to maintain), requires less resources and produces smaller and faster applications, how does that make him a novice rather than a professional ?

In many trades, more experienced tradesmen are often noted for telling the novices of their trade the often heard lesson or rule of “Keep it Simple” (or something similar). Yes, professionals know how to keep it simple, not make things more complex. Microsoft could learn a few things from this. It is time to get back to basics and to “keep it simple”. Windows reimagined doesn’t have to mean a total face lift and more complexity. Why not reimagine Windows and make it easier for developers ? Why not make programming so simple that even a child could do it ? (aren’t they the next generation of developers). While I have yet to tackle building Windows Store apps using a non-Microsoft language yet (that is one of my goals), I currently have been doing so for the desktop for a decade now and making things “easy” , while still providing power features, is my goal.

As a developer of tools (EZGUI) for programmers (PowerBasic programmers), I don’t want to see all my customers build the exact same thing. I want them to build the best they can for their particular need or market. The variety of user interfaces that some of my more experienced customers are designing is surprising.  Windows (even previous versions, not just Win8) has so much untapped power in it, it would amaze you. Windows 8 would benefit from having more developers tapping into that power.


Comments Off

Windows 8 and Metro – an analysis

I have had a chance to use Windows 8 for awhile and here are some of my impressions of it.

I downloaded and installed the Windows 8 build preview on both my ExoPC tablet and a desktop PC (Dual Core Pentium D 3.2 ghz with 2 gig memory). I found the tablet the best experience and the desktop was not too bad. While it isn’t always the most intuitive with a mouse, it does work fine.

I later downloaded the Consumer preview and RTM preview versions as well.

Now I have upgraded to Windows 8 on my tablet (the $40 deal was well worth it) , but after dealing with a issue or two with drivers, I wasn’t so sure about upgrading any of my desktops. The ExoPC ran fine with Windows 8, but the Microsoft video drivers for the Intel onboard GPU did not support OpenGL and defaults to software emulation, rather than using the hardware. Basically that means OpenGL was useless. Even though I bought the ExoPC with Windows 7 on it original and it isn’t even a year old (bought it from Microsoft Store), ExoPC does not make it any more and you can’t get OEM drivers for Windows 8. Microsoft should have done a better job of providing drivers in Windows 8, especially since the tablet I have was purchased from the Microsoft Store and yet the Windows 8 upgrade did not even have the correct drivers (for OpenGL). I went to Intel’s web site and download the generic drivers for the GPU and I got OpenGL back running at the speed it should.

All in all though, I am happy with Windows 8 on my tablet. The operating system was designed for mobile and it shows.

Now because of the concerns about getting drivers for Windows 8 for my desktop PC’s, I opted to forgo upgrading but instead purchased a new laptop which came with Windows 8. At least it will have all the drivers. Now while I didn’t mind Windows 8 on my desktops (when testing the preview versions) and I got around some driver issues by using the Vista drivers for it, I wasn’t thrilled with the idea of the upgrade. IMO if one wants Windows 8, I think one would be better to buy a new PC with it than to try to upgrade, unless you recently purchased a Windows 7 PC and then the upgrade may make sense. I really don’t think it wise to upgrade from say Vista or Windows XP, to Windows 8. I would worry about driver issues and the license for the upgrade basically says that once you upgrade you lose the right to use the old version of Windows, which I read as “you can’t go back”.

Now while I really like the laptop I got, I am not really happy with how Windows 8 works with a touchpad. Actually while I didn’t mind it with a mouse, I think a touchpad is a totally different animal and Windows 8 was poorly designed for touchpads. Why ?

In my case, the touchpad supports a form of ‘swipe” similar to what you do with a tablet. You can swipe from the right side to display the charms bar. The problem is that the touchpad drivers are too sensitive to swiping and I end up having the charms bar pop up when I don’t want it to. I tried changing some settings , but still can’t solve the problem. Now I am a computer programmer and if I find it difficult to figure this out, I am sure the average consumer won’t be happy with it. I may have to try different touchpad drivers to solve the problem. The laptop is new and made by Lenovo, a major company, so you would think they would have tested this out and made sure it works right.

Also Windows 8 needs some good tutorials and I don’t mean that little “Hello I am Windows 8″ mini-tutorial when the computer is started the first and Windows sets everything up for the new user. There should have been a bunhc of quality videos provided to teach new users the “tricks” of Windows 8.

Now how about Metro (or whatever they are calling it now) ?

While I like Metro apps on the tablet and I like how easy it is to download apps from the Microsoft store (a lot easier than Android), that is about as far as it goes. I have no desire to offend Microsoft, since they have put a lot of work into Metro, but I have to say it gets boring after a while. App navigation is not intuitive. It seems every app (no Games) you have to keep clicking a BACK button all the time. There is too much open space in Metro apps, as well and desktop apps when run using touch are not going to be a great experience. Controls like the combobox don’t work well with a touchpad (again maybe I have a driver problem). Now Metro is better suited to touch, which is good, but I don’t really feel the overall software experience to be anything great.

Now I really don’t like the flat look of everything in Metro. Now consider why the Metro concept (signs for travel) was developed. When you travel down a highway at 70 miles and hour, it is important to be able to read a sign while moving fast. The flat design and simple colors of road signs make sense when driving. But when you are using a computer or even a tablet, you are not moving 70 miles per hour. You have time to take it all in. Colors and 3D depth make software appealing and natural. Metro with its flatness makes it boring and unappealing.

Now this does not mean I think that Metro is a failure, nor do I think it is doomed. Metro has a lot of nice features about it. I just think that Microsoft should back off a little bit and stop defing how a user interface should look. Now it makes sense for some UI elements to be similar among apps (ie. how it responds to touch or a mouse), but the look and feel should not be dictated. That stifles creativity.

I have downloaded a number of free Metro apps and I have yet to be impressed. At least the non-game apps anyway. Games, don’t have the typical Metro UI. They use DirectX and the UI is dictated totally by the software developer. Non-DirectX stuff though is a bit boring, IMO. A label control and a button look just alike. There is a reason Button controls have always had a 3D look, so they stand out.

So what would make Metro better ?

Loosen up on the UI design rules. Allow and encourage developers to be more creative with the UI.

Don’t forget the desktop !

The Desktop can be just as “fast and fluid” as a Metro app. They also can be touch enabled.

Is Metro a failure ?

Absolutely not !  Metro will though be a learning experience and in time its weaknesses and strengths will become more obvious. If Microsoft is willing to “go with the flow” and make changes as it becomes obvious when they are needed, Metro can expand and grow into well rounded environment.

 


Comments Off

User Interfaces – be creative !

One of the things I find confusing about user interface design for Windows is how some programmers simply want to copy how other applications look, even if those applications are totally different than their own. For example, some people want to add Ribbons to their applications, not because they really believe that ribbons are perfect for their application, but simply because they want their applications to look just like something from Microsoft. Thats the wrong reason to use ribbons. Also while users may initially be impressed by a fancy user interface (ie. “wow, that app uses ribbons”), in the long run how an application works in general and how intuitive it is will have more to do with user satisfaction than the fancy user interface.

Skinning tools at times are the rage, but I am more impressed with how fast (flicker free, smooth, fast) the skin engine works, rather than how fancy it is. For example, the WinLift skin engine (see:  http://zapsolution.com/DW/US/winlift.html ) is fast and lean (small in size). Maybe because it was written using PowerBasic is part of the reason, but the point is that it doesn’t get in the way of the application. I downloaded another skin engine from a link on a programming forum and tried it out. The skin engine was so slow, it was totally unusable. It was fancy and the appearance was nice, but the lack of speed ruined it. Now maybe it works well on leading PC’s, but on my trusty old Windows XP machine (2.5 ghz Celeron CPU, NVidia graphic card and 768 meg ram) it ran terribly.

I am not against a little “eye candy” in an application, but I am more impressed with how fast and smooth (flicker free) an interface is and also how practical it is. I like when a developer adds a feature rarely seen elsewhere, not because it is fancy or the current rage, but because it does something truly worthwhile.  Software developers need to to copy others less and to be more creative. Some times it’s just the little things that make a big difference.  If you are going to copy a feature from anothers application, then make sure it is really something useful. Rather than ask yourself “what is everyone else doing” maybe it would be better to ask yourself “what could I do differently that would make my application easier to use, faster or just simply cleaner”.

To illustrate:

Thing about those who design wooden chairs. Likely you can find many different brand chairs that look similar to each other or with fancy designs in them. While initially most shopping for a chair may be impressed by its looks, what really sells a chair is when you sit down on it and you say “wow, this chair is so comfortable. How did they do that ?” . The real beauty of the chair is not appreciated until you sit in it. A well built chair is one where when you sit in it, you find yourself wondering “what did they do different that made this chair so confortable”. The difference may not be readily apparent. It may even be something very small and not easily noticed, but it is their.

So too with software. Be willing to think deeply about how people use your software and how functional it is. Try to “think outside the box” as they say. Look for ways to make your software easier to use or more friendly. The beauty of software can at times be hidden by its simplicity. One may first look at the software and say “it doesn’t seem that exciting” because it is so simple in design, but like the chair illustration, its when the user “sits down” and uses it that they will be impressed and say “wow, that feels really good” or “its so easy to use”.

True creativity need not be fancy. Some times simple is better. Don’t be afraid to invent new ways of doing things either. Think of the person who invented the pop top for aluminum soda cans. One day they must have said to themself, ‘”so many pull tabs from cans are litering the streets” so what could I do to prevent that ? The solution was so simple (connect the tab to the can so it can’t fall off and it slides inside out of the way). Creativity often comes more from common sense than it does from fanciful thinking. So use some common sense when designing a user interface. Don’t be afraid to design something totally different, even if it appears to be simple in design. The new style pop top on soda cans is so simple, yet it is amazingly useful. Our user interfaces need to be more like that pop top. Simple, clean, elegant and purposeful.


Comments Off