The rise of the tiny Windows device!
Beginning in the fall of 2014, something exciting started to happen. Microsofts new approach of low cost (and some times free) versions of Windows (x86) for OEM’s building small and low cost devices began to take shape. There is little doubt in the mind of this developer that this was a smart move on their part. But things would not really have taken shape if it were not for Intel’s amazing efforts in bringing to market extremely small , yet powerful PC form factors. The 7 inch Windows tablets, TV Box style mini-PC’s and soon the PC-Stick form factor. While likely this opens up all sorts of possibilities and markets for consumer oriented products, it also opens up all sorts of possiblities for education and business. Inexpensive $99 Windows tablets brings many new options for business and education. TV Box and PC on a Stick Windows devices turn already available large screen televisions into powerful educational and business tools, as well as brings many opportunies in the consumer markets.
What this means for developers
These amazing new devices though come with a hitch. While in many ways it may provide even more power and choices than either Android or Chrome (in my opinion) it also has its challenges for Windows software developers. Much of software development has gone cross platform today and with that, limitations which are simply part of the nature of cross platform design. Cross platform usually means some compromise, compared to coding for a native platform. Cross platform tends to lean towards machine independent programming methodologies, such as scripting languages or compile on the fly on the end user machine. Yet, experienced programmers likely recognize the raw power of using actual native code compilers for a specific platform. One can code for high performance using every tool available for that platform as well as for the hardware (in this case Intel x86 SOC’s).
The new Windows PC form factors though bring a challenge to developers, since some current development systems tend to lean towards the more powerful PC platforms, rather than the new PC form factors with minimal hardware. For years the lowly Intel Atom CPU (SOC actually, which means System on a Chip) was sadly the laughing stock among some software developers. Having been spoiled by the ICore CPU’s, large and fast SSD disk drives and huge amounts of RAM memory (8,16 or more gigabytes) software developers , if they were honest about it, likely didn’t want to see their software run on such lowly devices. Rather than see the Atom SOC as a benefit (small size, low power requirement, low cost), they likely saw it as a problem to be avoided.
But the new breed of tiny Windows devices, along with the new low cost Windows solutions from Microsoft, are bringing some very exciting opportunities for developers if they can simply realize the opportunities here. The Intel Atom SOC is no laughing stock in my mind, but a very smart, well calculated design which combined with the low cost Windows is an industry game changer. Low cost, small size and reasonable power (if properly used) makes this a very positive thing for the tech industry, which should be utilitized.
As a long time programmer and having helped a number of businesses find cost effective solutions to their computer and software needs, I have found that cost matters. If a business (or a school) can accomplish something for significantly less money, while still getting a solid solution, then it is something a software developer or IT person should serious consider and promote. So hows does a software developer help others get more from the new generation of small Windows devices ?
Its been there all the time, but you may not have noticed
One of the amazing things I have noticed about the Windows operating system over the years has been how consistant it has been in supporting the core WIN32 API. Programming techniques I learned over 15 years ago, still work almost flawlessly today. I have been an active WIN32 programmer for the last 15 years now and the more I learn the better it gets. But what really amazed me is how tiny native coded WIN32 apps can be and how fast they can run and how little hardware resources they require. Since Windows 95, core features in Windows have not changed but they also demonstrate the well planned design of the core operating system. How I have learned how to do all sorts of tricks with the simple and lowly DLL (Dynamic Link Library). It is simple to design software which can even deal with the slight changes in the operating system over the years, while maintaining full backward compatiblity, even as far back as to Windows 95. Even the lowly GDI still has some amazingly raw power in it. One of my favorite features in the WIN32 API is the lowly DIBSection (device independent bitmaps). It has been there since Windows 95 and yet this simple API engine can be used to build all sorts of powerful homemade graphic engines. Once I tapped into the DIBSection API’s all sorts of possibilities arose. Another feature of the Windows API which still amazes me is the customization features built into it. Things like OwnerDraw, CustomDraw, Subclassing and Superclassing allow programmers to customize almost anything. Even core API functionality like the Common Dialogs were designed for customization. One can easily create their own “hook” procedure into them and change their functionality. For an experienced WIN32 programmer, rather than see limitations in the WIN32 API, they more likely see all sorts of possibilities.
The real power of the WIN32 API
But the real power of the WIN32 API is how little resources it requires and how tiny and fast ones applications are. The typical programmer today requires a heavy weight PC for development and their tools usually take up not megabytes, but usually many gigabytes of disk space just to be installed. Not so with WIN32 programmers. Some WIN32 programmers entire development system (aside from API docs of course, but that one can get online) may only take a few megabytes of disk space. In my case the IDE and Compiler I use only takes up about 20 megabytes of disk space and I can run it on literally any Windows (x86) PC made in the last 15 years, possibly even further back with even as little 256 meg RAM or less. My Visual Designer front end, which my company built, as well as a complex, full featured GUI framework, only takes about 3 megabytes of disk space (plus another 6 megabytes for the help file). It too can run on most likely any Windows PC made during the last the 15 years.
Native code compilers are an area which deserves a closer look by software developers. The coming mini-device Windows PC’s can be made to perform amazingly well, despite their limitations, if we as programmers learn how to tap into the native WIN32 API. The extra expense in software development will be easily compensated by the savings when using these low cost devices. Imagine a school system only paying $99 per student for a tablet and still getting a powerful system. Imagine the savings to businesses by finding ways to use such inexpensive devices. Personally, I would like to see a real Windows version device of a Raspberry PI size and cost. Get rid of the operating system bloat (like dot.net) and provide simple and easy to use compilers capable of tapping into the WIN32 API directly and it is conceivable to have a tiny Raspberry PI size Windows PC device which could sell for only $49 (or less) and be more powerful than the PI.
If you doubt the importance of native code compiling, watch the video of Herb Sutter’s talk “Why C++?”.
Still doubt the power of writing software using the native WIN32 API (as well as OpenGL, Direct-X, etc.) ?
Check out two programing libraries this French developer has created:
GDImage, a powerful graphic engine with a tiny footprint.
WinLift, a powerful window skinning engine also with a tiny footprint.
Both were written using native WIN32 coding and even without any object oriented classes typical of C++.
Both were written using Powerbasic for 32 bit Windows and GDImage was ported to C++ for a 64 bit version.
2015 will be an interesting year for tiny Windows (x86) devices
I am excited about the new tiny Windows form factors coming along. My thanks to both Microsoft and Intel for all their efforts to make this possible.