Click here to Skip to main content
15,880,725 members
Articles / Operating Systems / Windows

IOT, Makers and Windows

Rate me:
Please Sign up or sign in to vote.
0.00/5 (No votes)
10 Nov 2014CPOL10 min read 11.4K   3   6
IOT, Makers and Windows

It is exciting to see all the new computing devices that are being released in 2014. The latest Raspberry PI A+ device is a full PC motherboard at only $20 and is even smaller than its previous versions. In the 3D printing world, tiny computing devices have made it possible for the “maker” (those who like to make things from scratch) world to build all sorts of affordable 3D printers. The coming Internet of Things (IOT) depends upon creative people building inexpensive computing devices with a tiny footprint which can be embedded in small areas of common objects used in everyday life.

While I am not personally a fan of simply building such devices, simply for the sake of the latest fad, likely there are some real world and practical applications for such devices. In the business world, there are endless uses possible. In the medical world, affordable technology can have many benefits. So from a practical point of view, the Internet of Things, could have some real world benefits.

But to be truly useful, such devices need to be in the hands of more than simply the technology geniuses of the world. Technology needs to be in the hands of the common person who can see ways to use it in everyday life. A farmer who comes up with a practical idea which could prove useful on the job is more likely to produce something truly useful to others than the highly trained computer programmer sitting in the back room. Why ? Because, the Internet of Things is not about producing some fancy gadget which pushes the limits of technology which impresses people, while at the same time ends up being, simply put, totally impractical for everyday life. While scanning the internet (the web) to see what others are doing with these amazing prototyping computing devices, does not one often walk away with the sense that much of it is simply useless. Consumers get excited about some fancy computing device on a watch, which does little more than check your pulse or some other body function, which costs many hundreds of dollars, but often is impractical because the price is beyond the average person and its benefits are too small for the expense. True, there will always be people who are willing to throw away their money for the latest gadget, but as a computer programmer who spent years writing custom software for local businesses, to me it only makes sense to build things which are more useful and at an affordable price.

Where Really Useful Ideas Come From

Good ideas often come out of necessity, rather than from the science lab or computing lab. For example, in the programming world, most software is built using the latest scripting language or C++ compiler, which for the average person is so complex, that even those who write the code when they come back months or years later find it difficult to read their own code. Programming languages today are not designed for the typical person, but for a different mindset. One programming language (in different variants over the years) which though was designed for the average person, is BASIC. How many people have learned to program by being self taught, did so using BASIC ? Many ! But it gets better. Consider one of the most popular programming languages ever, classic Visual Basic. Why did it succeed far beyond the expectations of its developers ? Visual Basic was not originally developed by Microsoft, but they purchased it from another company (was not Visual Basic at first) and then turned it into what we today know as classic Visual Basic. My impression of this is that likely Microsoft did not plan on Visual Basic being a professional programming language. Yet, in the long run, classic Visual Basic became extremely popular and many a commercial application was written in it. But why ?

The real inventors of software, have often not been classically trained programmers, but self taught programmers who simply needed a solution for their business or job. They knew their job well and understood what was needed and because classic Visual Basic (especially the early versions) was so easy to learn, they could build a custom solution to their problem. Classic Visual Basic, in particular versions 1.0 and 2.0, were very affordable too, which made it a tool which the average person could afford. They became “makers” in the true sense of the word. The coming Internet of Things needs something similar today. The two elements needed to promote more “makers” today are easy to use programming tools and low cost tools (software and the prototyping devices).

The really good ideas likely will come from such common place “makers”, rather than the elite programming world. Call it “real world Agile programming” or common people solving common problems they face day to day. Such “makers” need to be able to quickly build solutions, but easily and using affordable resources (both the hardware and the software tools).

IOT and the Windows World

Classic Visual Basic eventually became overly complex and also expensive (its PRO versions in later iterations). It also lost much of its roots of simplicity, when VB.NET later turned programming upside down and it lost much of its appeal to the common person, the real “makers” in the software world. Windows was left behind in the maker world too, being a costly operating system (if purchased separately) and the smaller a Windows device became, the more expensive it became. Windows programming languages (aka. .NET or managed languages) lost qualities such as ease of use as well as performance on minimal hardware. If you are a programmer, be honest here. When it comes to your favorite development PC, would you be satisfied with anything less than the latest ICore CPU with huge amounts of RAM and the fastest disk drive (i.e., SSD) you can get ? Likely not. So working with managed languages may be fine for you and productive, but what about the common man (or women) ? What about the real “makers” in the world ? Should they not be able to write code using something which is simple, easy to use and affordable, including the hardware it runs on ?

In the past, Windows was not the most “maker” friendly of operating systems and the hardware it ran on wasn’t either. But this is changing and quite rapidly. Let’s consider some of those changes and also some of the things going on in the “maker” or “hobby” side of the Windows world. Let’s first consider software. BASIC has not died. Just scan the web for different variants of BASIC and one will quickly see that no matter how many BASIC languages disappear, more replace them. In the hobby world of programming, BASIC still remains a favorite. Even some experienced professional programmers, like myself, still prefer BASIC. In my case, I write low level WIN32 code using BASIC, so it can still appeal to a professional, but there are many variants of BASIC for Windows with a higher level command set which even the common person, self taught, can use to build all sorts of software.

But the biggest changes now have to do with Windows (the operating system) and the devices it can run on. First, consider Windows. Despite all the layers put on top of Windows, such as .NET and WINRT, Windows still maintains its core, the WIN32. While I don’t expect the common person, the real “makers” to start coding in WIN32 style, there are experienced developers who are creating frameworks and programming languages which tap into that core WIN32 API, but in a much more friendly form, such as BASIC programming languages. One example, is a BASIC scripting language which has brought back the excitement for hobby programmers, which is called ThinBasic. ThinBasic, like many BASICs of the past appeals to hobby programmers, yet provides many higher level features. It was written in PowerBasic (WIN32 style), so the core scripting language has decent performance, even though it is a scripting language, yet it does not require a lot of hardware resources to run, so it is well fitted to tiny Windows devices with minimal hardware. If a hobby programmer finds they need more power, as they gain experience, they can easily move to a more powerful compiler like PowerBasic (which ThinBasic is patterned after, as well as written in). The core WIN32 API of Windows has not changed much over the years and Windows has a core engine, well suited to tiny devices and the Internet of Things.

The big change in Windows is the price. With Microsofts efforts to make Windows either free or very inexpensive for low cost devices or devices small in size, the hardware is now coming down in price and more and more tiny prototyping devices, even full blown computers such as tablets are becoming available. Intels efforts with the Edison and Galileo devices is good, but what is really needed is more efforts with devices which have full PC capabilities, like the Raspberry PI computer, but in a tiny form factor and affordable. One such effort is the MinnowBoard. This is the right direction, but I think more is needed. While the price is somewhat affordable at $99 now (original version was $199), it still needs to come down even more. The $50 range, or less, is a better target. But what is still missing is easier ways to code such devices, which the average person can learn. This is why making such devices capable of running a full version of Windows is so important, as well as them being provided the free version of Windows right in the package. Once the price point is met, with a full version of Windows (if you can buy a $99 Windows tablet now, surely these mini-computers can be manufactured for $50 and come with Windows) all sorts of possibilities arise. Things are going in the right direction currently, but we are not there yet.

But some more is needed to make Windows the operating system of choice for the Internet of Things and to spur on development. The size of these tiny PCs needs to get smaller and follow the path set by the Raspberry PI. The new Raspberry PI A+ is only about 2.2 x 2.5 inches in size. Now that is small. The price is only $20 too! Now when we get Windows devices that small, running real Windows, then we have something. But another key to Windows becoming the operating system of choice for the average “maker” (not just tech geniuses) is building software. .NET is not well suited to minimum hardware, so maybe a downsized version of .NET or WINRT would be helpful. But the real power in Windows is the core WIN32 API and while professional programmers can use the WIN32 API directly, easy to use programming languages, much like the BASIC flavor, which don’t require .NET, but tap into the raw WIN32 API, could make a big difference. Rather than C like languages, simpler languages, with features specific to the Internet of Things, more like BASIC would provide the tools for the real “makers” , the everyday person who simply wants to build a solution to a real world problem. The success of classic Visual Basic demonstrates that this is practical. How about a new Visual Basic, just for tiny Windows based Internet of Things devices. If Microsoft came out first with something like this, it would take all the other platforms years to catch up. With Windows being free (or low cost) for this effort, Intel’s efforts with miniaturizing the PC and easy to use languages, like BASIC adding IOT specific features, then you have something. Maybe something really practical could come out of this. Real people working on the job could become the next generation of “makers” of practical IOT devices.

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

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

 
QuestionI would not say that BASIC is for the inexperienced Pin
Chris Boss12-Nov-14 11:59
professionalChris Boss12-Nov-14 11:59 
QuestionBasic, Windows and the Microsoft Compendium of Bloat Pin
Member 1119493412-Nov-14 10:39
Member 1119493412-Nov-14 10:39 
AnswerRe: Basic, Windows and the Microsoft Compendium of Bloat Pin
Chris Boss12-Nov-14 12:09
professionalChris Boss12-Nov-14 12:09 
GeneralRe: Basic, Windows and the Microsoft Compendium of Bloat Pin
Member 1119493412-Nov-14 20:11
Member 1119493412-Nov-14 20:11 
GeneralRe: Basic, Windows and the Microsoft Compendium of Bloat Pin
Chris Boss13-Nov-14 2:07
professionalChris Boss13-Nov-14 2:07 
GeneralRe: Basic, Windows and the Microsoft Compendium of Bloat Pin
Chris Boss13-Nov-14 2:22
professionalChris Boss13-Nov-14 2:22 
Just to add something. I like your comment about "bloat" in software. This is one reason I chose to build my own GUI framework, so a programmer can benefit from the power of the WIN32, but not have to deal with its complexity.

My company built a GUI framework for use with PowerBasic, which has all the basic features of Forms, standard controls, most common controls, common dialogs and the like (the runtime calls the WIN32 API), but also added low level features like ownerdraw, customdraw, threads, subclassing and superclassing, direct DC drawing. It has a number of custom controls built in (which I wrote from scratch) such as Masked Edit, MCI control, Shape/Hotspot/splitterbar, Files Listbox and Properties Listbox controls.

I also wrote Canvas control with its own graphic engine, including a proprietary 2D sprite engine (does not use DirectX). I also wrote a 3D graphic control, which has a script language built in based on OpenGL. It also has a proprietary darg and drop engine, specifically designed for building Visual Designers, like in programming languages. As far as I know, there is nothing like it for building a visual designer. The runtimes (DLLs) only take up about 1 megabyte (can fit on a floppy), yet it contains almost 1000 commands in the GUI library.

1 megabyte !!!

Now that is not bloat and it can run on any version of Windows from Windows 95 to Windows 8.1 (and 10). It dynamically changes itself based on the version of Windows too.

All of this was written using PowerBasic. It has over 60,000 lines of code in it and all of it low level WIN32 code (not a single high level GUI command used from the compiler itself).

So Basic can be a professional language even today. But it has to be built from the ground up for that purpose, unlike Visual Basic which was not, but only later was "hacked" so to speak, by adding a C compiler backend to make it a professional tool, but even them it lacked the basic requirements of a compiler such as the ability to write true DLL's capable of being used by any other programming language. Addons to Visual Basic were usually written in C, not VB. But with PowerBasic, powerful addons to the language can be written in it as well. I can write DLLs which can be used by C or other languages also with it.

There are few quality commercial Basics today with the kind of history of PowerBasic (it dates back to Borlands TurboBasic), but there are a few worth mentioning such as PureBasic, FreeBasic, etc. Much of those though are not written from the ground up like PowerBasic, but often use open source libraries and tools (ie. linkers, assemblers, C compilers).

The problem is not with Basic, but with the lack of companies willing and capable of writing a quality Basic compiler from the ground up specifically for professional use, but also easy enough for hobby use. Sadly PowerBasics developer, Bob Zale died two years ago and even that company is facing big challenges. But there is no reason the Intels and Microsofts of today could not create such a tool.

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.