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.


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. Continue reading

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. Continue reading

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: Continue reading

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.

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.

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.