Click here to Skip to main content
15,886,199 members
Articles / API

Windows and The Internet of Things !

Rate me:
Please Sign up or sign in to vote.
0.00/5 (No votes)
14 Jul 2014CPOL4 min read 6.9K   3  
Windows and the internet of things

Having just read an interesting article by Paul Thurott, about Microsoft's Internet of Things SDK built upon 32 bit x86 Windows and using Intels Galileo device (an x86 device the size of the Raspberry PI device) which uses Intel's tiny system on a chip CPU (Quark), I found very interesting one of the core development methods which will be required. The WIN32 (or at least a subset of it) will be making a comeback. So why does this interest me ?

A Decade and a Half of WIN32 Development

Because I have spent the last decade and a half not only learning the WIN32 API, but also learning how to build tiny sized software which require minimal hardware. How many programmers today can write software which not only runs on the latest computers, but also can run on something with only the power of what we would call a legacy PC?  If Windows 8 could run on a PC with only a 500 mhz CPU or less and with only 256 megabytes of RAM and only minimal disk space available for applications, say 50 megabytes or less, could your software run on that?

Well designed WIN32 software can!

No, really! Why do I say that?

The Proof Is In the Pudding!

You have to be a WIN32 programmer to appreciate this. You also have to know how to design software without all the object oriented fluff most software has today. The core WIN32 is actually very procedural in nature. It is basically a flat API and the most efficient WIN32 software is that which is written using the flat API directly, without something like MFC (Microsoft Foundation Classes). Just plain pure WIN32. Now there is no reason that well designed GUI libraries could be written to make things easier, but such would best be written using the WIN32 as a flat API. No OOP stuff to get in the way.

As a long time developer of programming tools and GUI libraries based on the WIN32, I know how “lean” WIN32 applications can be. Maybe because of my going back to the old DOS days, I can appreciate the importance of writing software which requires minimal hardware (Once I wrote a complete point of sale system for a video rental store, which ran on a CPM computer with only a 2.5 mhz CPU,  64 KB memory and two floppy disk drives). Old time programmers knew how to squeeze every byte and CPU cycle out of a computer in those days.

Would you like to see what can be done using the pure WIN32 API ?

Download this application I wrote for testing WIN32 backward compatibility on Windows 8: Win8 Test app

The app uses a GUI library which is 100% pure WIN32 based. The real test of any WIN32 app is how well it runs on minimal hardware. First, try the app on your current PC and see what it does. It demonstrates WIN32 features like Forms (Windows) and standard controls and the common controls, complex window regions, ownerdraw, customdraw, custom controls (written in pure WIN32),  WYSIWYG similar to what Visual Designers do (based on low level GDI), MCI multimedia, GDI drawing, DIB based drawing, OpenGL 3D.

Now feel free to try the app on the slowest Windows PC you have. Try it even with legacy PC’s such as Windows XP (ie. with only 256 meg RAM or less), Windows ME, even Windows 95/98.  Try to imagine how little hardware an Internet of Things device may have. Try it with a PC with less than a 500 mhz CPU and less than 256 meg ram.

Back when Windows XP was the current operating system, I purposely developed WIN32 software on a Windows 95 PC which I boosted to 256 meg RAM. The purpose was to see how well the software ran on minimum hardware. WIN32 software can be designed to run on very minimal hardware and you may be surprised how little you really need.

Native coding for Windows can produce high performance software. Learning how to leverage the low level WIN32 API using a native code compiler like C++ or others can produce even smaller, faster software. Is there is a need for this today? Yes there is. Watch Herb Sutters talk “Why C++?” and see why and how. Native coding produces smaller, faster, software. The WIN32 coding produces even smaller, faster software. Just what we need for the coming “Internet of Things”.

Now if Microsoft can just learn how to squeeze a complete embeded GUI version of Windows 8 (no Metro or dot.net needed) into a small enough size to run on Intels Galileo device, then we would have something worth coding for. WIN32 programmers may then be in high demand. Whether you code in C, C++ or other languages (I code in Powerbasic, which is a BASIC compiler on par with many C compilers) doesn’t matter. They key will be learning how to leverage the WIN32 API so you can write tiny, tiny, tiny software which can perform even on the most minimal hardware. Combined with embedded Windows 8 designed for such small devices, then the internet of things just could become a reality.

This article was originally posted at http://cwsof.com/blog?p=789

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer Computer Workshop
United States United States
Chris Boss is the owner (and programmer) of a small software development business in rural Virginia, called the Computer Workshop. For the last ten years or so he has been developing tools for use by Powerbasic programmers (see: http://powerbasic.com ). His main product called EZGUI (Easy GUI) is a high level GUI engine with Visual Designer and code generator. It is in its fifth generation now. He is an experienced Windows API programmer (more low level) and has experience in writing GUI engines (forms/controls), drag and drop Visual Designers, Graphics engines (printing and to the screen) and one of his favorites is a Sprite engine (2D animated movable images). His current project is version 5.0 of his main product EZGUI, adding such features as multi-monitor support, component engine, custom control engine, superclass engine and the latest project a 3D OpenGL based custom control. One of the goals he has is to push the limits of Windows software development, while making it easy, fast execution speed, small footprint (size of executables) and code reusability while providing a more graphic experience in user interfaces, while still being able to write software which can fit on a floppy disk (small footprint), use minimal amount of memory and able to run on multiple versions of Windows from 95 to Win8.

Comments and Discussions

 
-- There are no messages in this forum --