Computers and IT

Microsoft Disrupts Cross-Platform Software Development

Ars talks about how Microsoft brings Android, iOS apps to Windows 10. Your iOS and Android apps you already wrote can run on Microsoft Windows 10. All those Windows apps based on 20+ year technology plus all the in-house, corporate style .NET Apps? You can put them in the app store too. Basically, Microsoft decided that is more important that you run Windows than any implied technical purity advocated in the past.

That brings us to the discussion in which Microsoft releases free Visual Studio Code and Visual Studio 2015 RC. Visual Studio will now run in native form on Linux and Mac OS X as well as Windows. This is a new version of the tool called Visual Studio Code. It is leaner than regular Visual Studio that has all kinds of automated things built into it. This Visual Studio Code is a tool to write code quickly, build and test it and manage it in GIT. Those are activities people do in a lean development scenario.

How might you write code in Visual Studio Code given how it is designed? I show an approach in Build a Cross Platform C++ Program with SFML – Part 07. Simply substitute gedit for Visual Studio Code and you get the idea. The tool itself builds on a collection of technologies from the open source arena. Microsoft is useful enough to make it a serious tool for productivity.

What does this all really mean? Since Windows is very popular with businesses and end-users, you can put your UNIX/Linux-based client software on Windows more easily than in the past. You can use the same software development process you practice on Mac and Linux and successfully deploy to Windows audiences with little to no work.

As Microsoft’s first major desktop application on Linux that I can recall, it may be the beginning of other things. Microsoft is definitely cross-platform now. This may prove to be first beach head in Microsoft’s larger migration to desktop and mobile environments based on UNIX/Linux.

Computers and IT

Why I Like Statically Compiled Software

Milan Stevanovic has written and excellent book by the title of Advanced C and C++ Compiling. As I am halfway through it, I find that he provides great, relatively up-to-date, detail about executable file formats and the process of creating them and loading them. One of the discussions in the book compares static and shared libraries. The shared library was a great advance in the growth of operating systems and makes cooperation among programs more feasible. The concept seems to have a few problems.

Computers and IT

The One Simple Rule that Simplifies C++ Coding

I realized this while doing further research into Google’s Go language. The design of Go is the definition of a language that surpasses Java and C++ in the area of productivity while maintaining many of the high performance attributes of the C language. I am not switching to Go because while it is a major language at Google that is responsible for powering their multi-billion dollar operation, there is still a few years left before it will be known if it is truly solid. I plan to experiment with it in the meantime. The Go language will probably hit critical mass when it “genuinely” makes it to its third generation.

Computers and IT

Things about Google Go that May Improve Software Engineering

A central tenet is to make code work first and have the means to optimize it up to a certain maximum that is beneficial to long-term maintenance and faster revision cycles that leads to high-speed code that is reliable. A few insights follow from a review of the Go language that originated from Google.

Source Document. Go at Google: Language Design in the Service of Software Engineering


  • Large scale code you can revise and compile in cycles that take only seconds to do can lead to getting code to a correct form earlier than perhaps the pure application of reuse.
  • A pragmatic approach that the design of Go encodes may be more operationally effective than a methodologically pure approach in managing large-scale critical code.
  • An intense focus on reuse to eliminate all duplication may be a premature optimization that impedes the production of correct code.
  • Stronger constraints in language specification reduces error in large-scale coding efforts and the resultant code.
  • A single pass over dependencies for inclusion speeds up compilation. An obvious point sometimes difficult to achieve in reality.
  • Productive ability to cull dependencies can lead to more efficient programs that sustain lower compile time.

Notable Features of Go

  • The language seems to have stronger constraints.
  • Dependency lists are kept precise by design.
  • The concepts of API and ABI are merged into one.
  • An object file has all dependency info eliminating the need for header files.
  • Syntax knowledge requirements are far less than the C language. It is fast to learn or refresh knowledge.
  • Taking the address of a stack variable is acceptable as scopes are local.
  • You can implicitly control automatic recovery of unused memory based on how you code.
  • The way interfaces are defined creates an opportunity for natural polymorphic function invocation.

Object-Oriented Design

Many of the features of object-oriented design exist but adapted to procedural programming. A few I have noticed are as follows:

Computers and IT

The elementary OS Visual Design should be Linux Standard

I was introduced to elementary OS. An article on TechRepublic explains it well. The visual design of this operating system is superb. It almost outclasses Apple’s design. I do not agree with their philosophy on terminal access and user configuration but I do agree they have the superior visual design. Whatever they are doing with their Pantheon Shell is the embodiment of Linux on the desktop and is ironically mobile friendly at the same time. They are definitely leading in the area of aesthetics and usability.

The Web Site

Pictures are worth a thousand words. Their website is very polished. You will see some very beautiful screen shots.

Computers and IT

Intel and Microsoft are Decidedly in the Server and Infrastructure Business

Kurt Marko shows that WinTel is most profitable in business technology. Specifically servers, data centers, cloud and IoT technology. Personal computer clients in the form of laptops and desktops will remain important. Technologies based on the UNIX design may come to address that space as it is already encompasses much of mobile in the form of Android and iOS.

The great surge in mobile benefits WinTel as Kurt Marko reveals. He shows that you need 1 server for per 400 mobile devices. That translates into higher cloud subscriptions and continuous data center expansion. The growth potential is huge.

Data center and enterprise related businesses will remain strong. Meanwhile consumer mobile app business will see high volatility, sharp highs and lows, except in the case of significant solutions similar to Office 356 with ties to enterprise operations.

When it comes to growth in technology, disruption seems to occur in the consumer space. Time passes and certain hot consumer technologies transitions into the enterprise. At that point, that consumer tech becomes a long-term ingredient in the business space and business audiences becomes a greater focus of that technology.

This helps explain why how Windows and Office performs in the consumer space is not critical. The prior status quo of technology in the consumer space may even have less relevance in subsequent years. The business upgrade cycle seems to eventually drive successful consumer technologies. People who work from home will undoubtedly seek to match what works well in the office.

Computers and IT

Long, Complex Passwords Don’t Work Anymore

The weak link is people’s predictable nature in picking passwords. Even long, complex ones. Researchers have apparently proven this to be the case. They even won first place in a major security conference. What it means is the more complex things are, the more likely people are to take shortcuts. A natural instinct is to streamline things. It seems that undermines security efforts in choosing a password.

Web sites with sign-up and password change forms are actually increasing the odds of a security breach based on the findings in the article. On the other hand, you might slow membership growth if getting into a website proved too onerous. What a website advises as the minimum standard for a password should be taken as a suggestion.

The real advice in creating a password is to be as random as possible. A long or short password matters less than the uniqueness of that password. The choice is yours. When it is possible to do so, go beyond the standard to improve the strength of your password.

Computers and IT

Solid Views of Software Development from Quora 4/22/2015

JavaScript Advice

Alex Jansen seems to say keep to the main language and avoid JQuery.

Practices of Top Programmers

Know, Focus, and Practice seems is how I characterize Jeff Darcy’s thoughts. Next, Jens Rantil’s advice can be understood as Rigorous Simplification and Automation.

Programming Languages to Learn

Joshua Levy lays out a path that includes starting with C, knowing JavaScript, and being proficient with mainstream enterprise languages used in business like C# or Java.

Computers and IT

A More Complete Custom Native Cross Platform Code Base

Shown below is a program that can potentially run on multiple operating systems. The great thing about that is the code can last a long time. Long-term code of this kind means when you change operating systems, these program can come with you. Native is good because it is fast and the way this program was put together means you take it in more directions.


On the screen below are two text fields. Some programming technologies let you setup text fields in 4 seconds. These text fields took 4 months of code. Now, the ability exists to create text fields in 4 seconds with greater control over their design. Creating productivity takes time but once it arrives comes possibilities. Long-term possibilities.

What is behind the scenes? That is covered in the first of a series of articles. A discussion of the code begins with reading: Native, Cross-Platform Interactive Program Code. All code exists on GitHub @ michaelgautier/capture-and-draw.

Apart from the details, I have gained a better into this process. You can create things that seem out of reach. The status quo is not the only way. When you take that journey to make ideas a reality you grow an understanding beyond what books and thoughts alone can reveal.


Computers and IT

C++ IsNumeric Function

Data that is text that represents a number can be converted to data that is interpreted as a number. The C++ Standard Library has a set of functions that will do the conversion. What about when you are unsure if the text data is in a form that can be converted? You will get an error that you can avoid by inspecting the data before converting it. The code in the next section shows a pair of functions, is_numeric and is_digit, that provide a way to inspect a full string.

One of the many traditional ways to inspect a value involves you writing code that inspects each character in a string, one-by-one. You kept track of how many characters were numbers. A string was a number when the total digits matched total characters.

You can get distracted writing code like that. A simpler way is possible in C++ using Alexander Stepanov’s generic programming approach. This example came about when reading offline documentation for the STL in which I found no function for inspecting numbers in text like you have in .NET and Java. The functionality may exist and I will scour the Web for details. Meanwhile, I wondered if a generic C++ algorithm could be enlisted to solve the problem in a pinch.

The solution below uses the all_of function. The function returns true if all of the values satisfy a condition. That condition is determined by a function you supply. I wanted to supply the isdigit function in a fashion where the all_of function will supply each character from the string to this function. At the iteration’s end, the string is numeric if every character was identified as a digit. Back to the traditional way of doing things, the all_of function essentially does the same thing, but in a very compact and easy to remember way.

The Code

Code is on GitHub @ MichaelGautier/CodeExpo/IsNumeric

EDIT: March 2, 2020

A new version of this function is available designed for C++17 and above. The article is C++ IsNumeric Function (C++ 17).

Computers and IT

C++ Powers $1 Trillion+ in Global Revenue

The Impact of the Programming Language Known as C++

Some people know that C++ is used in major software platforms, but the extent to which this language fuels the creation of solutions that collectively contribute to a pool of revenue approaching a trillion dollars is probably right in front of us. My awareness of this grew from a question I answered on Quora about the best programmer of all time. I cited the pair that created C++ and the C++ STL as having the biggest impact on client software. Bjarne Stroustrup, who helped define C++, keeps a list of software written in the language.

When you consider the bottom-line impact of these programs, you realize that C++ is a major tool in high revenue software. Major solutions of C++ include the Google Search Engine;’s eCommerce Engine; and the collection of business enterprise software produced by Microsoft. A person who applies C++ may not intend to go the commercial journey. The market impact is a measure that shows that the language has proven itself for critical mass.

Computers and IT

What We Lost in the Switch to Digital Books

The ability to consolidate dozens of books on a tablet or electronic reader is a very convenient and productive way to engage with reading material. The swift way you can acquire a book and then read it instantly is truly a more efficient process compared to housing dozens of hardcover or paperback books on a wooden or metal bookshelf. Toting a single electronic device with the ability to call up your book of choice frees you from having to decide what book to bring along with you in advance.

The Allure of Efficiency

With all that digital books provide serious deficiencies exist. I took the journey to transition to digital books and 4 years into the process, as of this writing, I have learned much about how they improve things but also what is missing from the experience. I like the ability to access a small library of books from a single, flat, rectangular device. That is a very efficient situation.

That efficiency, it turns out, can be short-lived.

Computers and IT

AI and Human Destiny

The establishment of useful AI is a chance to for a future generation to achieve maximize the connections between people. Today, we are in the midst of a long-stretch that is a transition of undefined parameters into a future that will be considerably different. I present a set of thoughts on the outcome in an article, Better People Because of Machines. The accomplishment of truly useful AI means a pervasive precision in the background that serves to open up space for greater nuance in the foreground. The realization of freedom not bounded in physical experience but in the cognitive sphere will be a real phenomenon. The impact on education, creativity, discourse, understanding, and expression will be immense.

Computers and IT

Free Online Tools, Communities, and Hosting Can Expire

The first dot-com bubble saw a huge number of free Linux hosting providers. Not the case today. The number of free Linux hosts seem almost zero. At least that is the case if you are searching the web. Between 1998 and 2001, I had about 10 or more separate websites hosted on various free web hosts. I did not even check in on them. Assumed they would run forever. Years later, I found out that some of the web hosts were bought out or folded altogether. That was before I had a good backup strategy. Those websites and associated code and graphics are gone for good.

Computers and IT

3 Ways Computer Security Problems Could Be Solved in the 21st Century

The White House was hacked twice in the last 12 months. Apparently, there was a hack reported on 4/7/2015. As we all know, security problems happen. Three things are going to happen at a technology level that will eliminate security issues in the future. None of it has to do with encryption. I now view encryption as a means to slow down disclosure of information, but not eliminate it. The three things that will address security will be Whitelisting; Reductionism; and Machine Learning.

Computers and IT

Adam D’Angelo on Why Quora Chose C++

Yesterday, I absorbed a fair amount of information from that I put together in a post about programming. Earlier today, there was another good post on Quora from Carter Page in which I shared his insight about learning the skills behind the skills. I wondered about the idea of high performance server technology and I saw a post on Quora answered by Adam D’Angelo, one of the founders of this high traffic website, on why they chose C++ for many of the operations on Quora.

I must say his rationale echoes why I chose C++ for my series on cross-platform programs using SFML. You use a minimal subset of C++ and combined with the performance capabilities of the various compilers, you gain efficiency (with good design) in the code’s execution profile. You gain greater control over optimization by avoiding it by default. You can it avoid in some cases because the technology itself leans towards greater optimization in the specification and implementation of the language and compilers.

You can gain additional performance with several mechanisms C++ provides but you do not have to prematurely optimize if you hold to an efficient, minimal subset. The STL can make a huge difference in reducing the amount of written code. When you need to optimize, you may encounter far less areas to revise. Long-term, it can be a very smart way to code since you can bridge to C when required or go very high level as the C++ spec evolves.

Taken together, you have a solid output. Tools like Apache Thrift (reminds me of Microsoft WCF), used by Quora. for example, seem to provide a good way to apply C++ in a service oriented way. An approach that appears to be at the core of how operates based on the information available.

Computers and IT

Programming Investment Wisdom from Carter Page, Engineering Manager at Google

A question posed to Quora asked, worded a different way, about which programming language to learn for long-term success. The post showed up in my email and I decided to see the detailed response. When you read it, remember that money should not drive your efforts. Your vision and the value you can create should be at the core.

As I read the answer, I sensed I had read it before. Maybe from a article citing Quora. A quick web search revealed nothing as of this writing. What I realized this time around was who wrote it. Carter Page of Google, who appears to be working on the BigTable data storage system. Anyway, his answer received nearly 2,000 votes. The wisdom he shares is to learn the skills behind the skills.

Computers and IT

Taking the Google Go Tour with Exercise Solutions

I had intended to read up on Google’s Go language when I decided to Take the Tour. It is a nice walk through and along the way I encountered a few coding exercises. Not really intending to spend too much time with the tour I decided to give some of them a quick try. Three example solutions shown below are what I came up with going through the material.

Computers and IT

What I Learned About Programming Languages on

StackOverflow came out with a 2015 summary today that showed many things. One of those things is which technologies people have the most questions about. What is interesting about these rankings is they may hint at those technologies most in use to build software. I picked up a few insights from the list.

I also found my way over to Quora with some questions of my own that others have asked about software development. Curious questions about the main software development technologies used by leading companies in information technology. I gather a few insights from this brief look at the surveys.

Computers and IT

The Best Educational Technology Environment

I limit my use of the word best. Most things do not apply. Educational technology is a field steeped in things called the best but may under perform. A tool that seems to live up to the standards of quality educational resources is called Zotero. Their software is simply superb. It manages collections of research in a way that is broadly useful for learning. A source says It was developed by the Center for History and New Media at George Mason University. Far more interesting than that is this system called UberStudent.

Computers and IT

Ways to Improve .NET on Linux

I actually never thought .NET would appear on Linux. Years passed and the Mono Project brought an implementation of .NET to Linux. When I was building a personal website in 2009, I decided to launch it on top of the Mono implementation of .NET. That website went away as I focused on other things and Mono improved. Months ago, Microsoft decided to official support .NET on Linux.

I recently built a substantive example website from scratch in 4 days using .NET for Linux. The process grew my understanding of how .NET could be improved in a Linux environment. This article provides a short list of things that would be useful with the technology.

Universal Case for C# and .NET

The technology is immensely productive. I have done some work with C++ in my spare time during the last few years. Even with a time gap of 2 years since I last used C# and .NET, I noticed I can write complete solutions (reliable and feature complete) in less time than the equivalent solution in C++. Even when the conditions are equal such as using the command-line, using a text editor, and no debugger at all. That is not a critique of C++ but reflects the streamlined nature of C# and .NET. You can accomplish a wide variety of software from scratch with .NET sooner in pursuit of your goals. C# is a well structured programming language that has a range of complexity from the minimal to the most intricate. The modules you can design with C# and .NET meet many quality criteria in software development.

Computers and IT

ASP.NET HttpHandler to Produce Object-Oriented HTML

Yesterday, I wrapped up an intense sprint to build an example of ASP.NET on Ubuntu Linux to use object-oriented structures in ASP.NET to produce HTML while connecting to a PostgreSQL database. The code is written in C# and the articles walk through various aspects of refining a solution from the use of the single word, Test all the way to pulling in JSON formatted data from I also use the AesManaged example from the MSDN website to quickly build a makeshift encryption/decryption tool.

Part 1 | Introduction

Part 2 | Technology

Part 3 | Accept File Upload

Part 4 | Convert JSON Text to C# Objects

Part 5 | Define PostgreSQL Database Structures

Part 6 | Encrypt Web Account Password

Part 7 | Using PostgreSQL to Improve Data Processing

Part 8 | Intructional References I Used

Code is on GitHub @ michaelgautier/codeexpo/oohtml_in_aspnet_csharp_dotnet_201504