Thursday, 20 of June of 2013

Tag » Intel Atom

Tablet PC’s and Windows 7, developers needed!

I have been following the discussions on the web (online magazines) and it is amazing how negative the views are of Microsoft ever getting any decent Tablet PC’s, running Windows 7, to the market in time to gain any decent market share.

Ok, Windows is a resource hog, I’ll admit to that. Yet Windows has a long and rich history with a huge user base and a huge developer base. Windows should be the major player in the Tablet market. So why isn’t it ?

From my perspective, there are two key issues. First, Windows requires some powerful hardware to run on and currently its hard to get decent CPU’s which can run Windows, and yet have a decent amount of battery life. Ok, maybe a Windows Tablet won’t have as long a battery life as say an android Tablet will, but is that the only criteria for a decent tablet ? Absolutely not! A Tablet PC is not a cell phone, or at least it shouldn’t be viewed as one. If you want a Tablet simply to use as a cell phone, then buy a better phone or buy an Android tablet, but don’t consider it a PC. Its an over grown phone. Even if you want a tablet for web browsing, then again, don’t think of it as a PC, but think of it as a web device.

If you want a real PC (Personal Computer) which is a Tablet, then Windows is a much better operating system. Windows has been and always will be a computer operating system, rather than a personal device operating system. The Tablet PC though, limits what kind of hardware you can put into it, so the next generation of Intel chips (ie. Sandy bridge) is what we are waiting for. This will improve the battery life and speed, so the Tablet can keep up with Windows. So the hardware is coming and when it gets here, Windows should be able to shine on Tablet PC’s.

The real problem is the software. Software needs to be designed specifically for Tablet PC’s, so they can run well within the limits of a Tablets hardware. So whats the problem ?

The problem is the mindset of Windows software developers and sadly even Microsoft. You see, Windows programmers have been spoiled by the fast pace at which hardware developers have improved PC’s. Harddrives got faster and bigger, so programmers didn’t care about saving disk space anymore. RAM got cheap and PC’s got more and more memory, so programmers didn’t care any more about using memory efficiently. Graphic cards got more powerful, so programmers didn’t care about efficient use of graphics thinking, I’ll let the GPU do all the work (aka. DirectX). The point is that programmers have been spoiled and hardware advances have been lost to bloated software.

The problem comes when Tablets come on the scene, because you have space and power limitations with tablets, which smack right in the face those spoiled programmers. Add to this bloated development systems like dot.net and you have a real problem. So whats the answer ?

Programmers need to start learning how to accomplish a lot, with a little, like in the old days. I remember writing full blown accounting software in the days when a PC only had 640 KB of memory. Anybody remember, writing software when PC’s only had floppy drives ? (I do !)

For years, PowerBasic programmers would tout how they could write software which could fit on a floppy disk and could run in very low memory situations. Dot.net programmers would laugh and say, “who cares. There plenty of disk space and memory.” But now, with tablet PC’s, such limitations have returned and it will take years before Tablets will be able to run the big bloated software with little problem. So maybe the old time programmers, who are used to counting CPU cycles and to saving bytes have a valid point after all.

When I look at my latest software, EZGUI 5.0, I still am disatisfied with the “huge” runtime DLL EZGUI has, which is 700 KB. Wait a minute. 700 KB is tiny by todays standards ! Yes, it is, but I am old school and its big to me. I have a runtime DLL, which can runs rings around other development tools and is less than 1 meg in size and the EXEs which use it are amazingly tiny and the reason why is because I “care” about the size of my software and how much memory it needs and how fast it runs. I benchmark my software to get maximum speed out of it as well. Its the caring about such things, which is needed to make Windows 7 a viable operating system for Tablet PC’s.

Steve Balmer of Microsoft one said “Developers, developers, developers” is what they need.

If you want to see Windows 7 on more tablet PC’s, we need “Developers, developers, developers” who care about the size of their applications and how they use resources. We need more PowerBasic programmers.

This much I can say, is that EZGUI users who are writing powerful applications (using EZGUI and PowerBasic) can be (and hopefully will be) at the forefront of the “Developers, developers, developers” who will be writing software for Tablet PC’s.


Comments Off

Maybe a shift in software development is required ?

I was looking forward to the news about Windows 7 tablet PC’s at the recent CES, but rather than be excited and have found it quite depressing.

I have read article after article about CES and all I hear talked about is ARM CPU’s, Android and Windows for ARM. For a long time developer who has primarily worked on Intel based computers (CPU’s) running some form of DOS and Windows , I find this very disheartening.

Over the years I have always tried to find the optimal programming language for my needs. For DOS it was QuickBasic 4.0 and PDS 7.1 (I unfortunately didn’t know much about TurboBasic at the time). My requirements were simple. I needed a language which was easy to work with, produced very readable code and which had a compiler which produced fast executables.

When Windows came a long, I dabbled with Visual Basic, but the early versions were very slow and later versions, while with much faster execution speed, became bloated in other ways (too many dependencies). I finally came across Powerbasic and once I got over the learning curve (Windows API) I began to be very productive and I had what I needed. I have a rule and that is to use only one programming language primarily and to learn to become an expert at it. I want my programming tools to produce lean (small) and fast executables. To be blunt, I have a lot invested in Powerbasic and also in Intel based Windows PC’s (target for my software).

One thing I have found is that it is better to work primarily with a single operating system (family such as Windows) and with a single programming language which helps leverage that operating system which works on a single CPU family. Why ?

No matter what anyone says, the panacea of cross platform development tends to always fall flat on its face. A good example is trying to write applications for both the Mac and Windows PC’s. I found it interesting that years ago a lot of graphic software was written for both the Mac and Windows (ie. Corel Draw) and the software, while it worked well, never really fully benefited from either operating, because you have to compromise to make software run on multiple platforms. What was interesting was that at one point, when my wife upgraded her CorelDraw suite, the version she got was only for Windows and no longer a hybrid app for both Mac and Windows. Why ? Likely because Corel had to compromise too much for multiplatform development or at least that is my guess about it and they wanted to leverage the operating system as much as possible (or maybe even the CPU).

The idea of Microsoft now trying to target the ARM CPU for Windows makes me wonder how this will effect the market for Intel based Windows software. There may be good reasons for the decision, but it forces developers like me to consider, “should I switch to a development tool which provides me cross platform development ?”. I have no desire to switch my development tools and for now, ARM is just not in my future plans. I have to ask myself, how can you write a compiler which is optimized for two different CPU’s ? Comprimise may be necessary and one may not get the most out of either target CPU. Now you can write libraries optimized for each CPU, but still a lot of code can not be in a library. Also each CPU may handle some tasks better than the other, so the software will not run the same (speed) on different CPU’s.

I have not been happy with the direction of software development tools for Windows. Microsoft pushes C# too much. The operating system is written likely in C++ and all of the documentation favors C. DotNet has been pushed on developers and a long time favorite programming language of many, like Visual Basic has slowly been put out to pasture. Supposedly all of this new programming language direction is geared towards making programming easier, more productive and better. COM components (while I see some of the benefits) was suppose to significantly benefit programming by making programming more component based and to increase code reusability. Actually IMO, I think it may have made the operating system more bloated and harder to work with. I think the Windows registry was a big mistake! I have been using my primary development PC (with Windows XP) for a good 7 or 8 years now and I am seeing the effects of the Windows Registry over time. COM requires all the components to be registered in the registry and it becomes a total mess over time. You see, I download a lot of trial software in the areas of graphics, multimedia, web development and programming and over time my registry is becoming a veritable nightmare.

I think what is needed to improve the Windows experience and Windows software development, especially for the next generation of Windows tablet PC’s is to start rethinking how we develop software. We need to stick to the basics and make programming simpler, in the sense of writing code that leverages the Intel CPU, rather than make it look bad. In the old days, compiler makers counted CPU cycles producing generated machine code which used minimal resources (memory, CPU time, etc.) and ran as fast as possible. There needs to be a push towards more simpler coding styles, rather than complexity which slows down modern PC’s. Is this realistic you may say ?

Yes, it is. I have been writing programming tools for about 10 years now and one thing I have learned is, that I don’t have to feel stuck writing applications which are bloated and slow. By using PowerBasic and following long time proven coding methods I can write software which can fly with minimal hardware resources. I use good code reusability methods, but I don’t use COM. I appreciate the importance of quality libraries (don’t reinvent the wheel). I also work hard to find ways to leverage the power of the Windows API.  Now I ask, “why can I write a GUI engine which can do so much, while the runtime (DLL) is so small and yet it runs so fast ” compared to what would be possible using other common programming languages today ? Its because of not being fooled into thinking that one must write software exactly the same way everyone else does (ie. Visual Studio, C#). I stick to long time proven methods of programming (BASIC and modular design, while avoiding OOP) and with the right compiler (PowerBasic) I can leverage the Intel based CPU running Windows.

For me, the Intel Atom processors and the new breed of Sandy Bridge processors coming from Intel have plenty of power for running the software I write. I have no problem in writing software which will run well on such CPUs. Yet computer magazine after computer magazine are saying that Intel will lose ground in the coming tablet market and that ARM is the future. Maybe to prove these negative views towards Intel CPU’s and Windows 7, we should rethink how we write software. Maybe a shift in software development is required ?


Comments Off