Archive for the 'Software' Category

Apr 06 2017

Canonical ends the development of the Unity desktop

Published by under Thoughts,Ubuntu Linux

Mark Shuttleworth, founder of Canonical, Ubuntu Linux and its Unity desktop, announced today that Canonical will stop the further development of the Unity desktop and that the next LTS release of Ubuntu for the desktop will ship with GNOME instead.

There a lot of “we told you so” posts on the web about this already, and a lot of folks voice their believe that missing apps and games are the reason why Linux never gained much popularity as a desktop OS.

I now think that there never was much chance for the Linux desktop to succeed to begin with — and that the problem is not as simple as missing games and apps.

Just as my favorite example, after more than 25 years, the Linux community still has not even solved the “problem” of sound, meaning there are many, many sound servers and sound subsystems on Linux, but none of them work properly or are remotely user friendly. I have Xubuntu machines at home which are mostly used for watching videos and web surfing, and it’s mind blowing ridiculous that I have to change the playback device for each application individually – and that I can only do so when the application is running and playing back audio.

Big failures in crucial everyday sub-systems like this are the technical reasons why no Linux distribution ever stood a chance on the desktop – what regular user wants to put up with this crap when macOS and Windows work properly out of the box and come pre-installed on their computers?

Now look at the efforts that Valve has put into persuading/convincing game developers to port their games to Linux/SteamOS. The amount of games for Linux is constantly growing, yes – but the market share of Linux on Steam is not, it’s still negligible.

Things would only get brighter for Linux on the desktop if Microsoft and Adobe started porting their big desktop suites to “the Linux desktop” — which won’t happen before that desktop gains market share beyond a rounding error, because the cost for these ports are economically prohibitive. Microsoft have ported their Office suite to Android, iOS and macOS — which are all “hostile” platforms — so it’s safe to assume that they would also port Office to the Linux desktop if there were such a thing appearing on the market share radar. But it’s not. And what exactly would this “Linux desktop” even be?

Ubuntu is the only distribution that had enough success to even be noticed by the broader public. But since everybody in Linux land has to cook their own soup or follow some weird, business hostile “free software” ideology, too many people refused to join Canonical’s efforts and in some cases even decided to undermine or actively work against those efforts. Well, congratulations — now everybody can say to Canonical “we told you so” — and suffer the consequences nonetheless. Unless you find another guy willing to pump millions into such an unrealistic, big idea, Canonical’s withdrawal from Unity effectively signals the end of “the Linux desktop”, because now it’s really up to uncoordinated volunteers, hobbyists and students to develop a desktop for the masses. And I think we all know where this will lead: Nowhere, and nowhere fast.

Canonical might keep a desktop version of Ubuntu around for simple marketing reasons — but after this announcement, the company won’t put much effort into it anymore.

The desktop itself – regardless of the platform – has become irrelevant with the rise of the Internet. Linux was born on the Internet and quickly became one of the biggest engines powering the back-ends of the Internet.

Software development first moved to the web so that users and businesses could become independent from the desktop platform (or rather: become independent from the Microsoft platform), and then development moved on to focus on mobile platforms, and now the Internet of voice-controlled things is already knocking on the door.

This leads to a very simple realization: Every investment into a Linux desktop is wasted — it’s all about the Android or iOS gadgets, Alexa, Cortana and Siri and their respective server back-ends (aka “cloud”), which run on Linux or Windows servers.

Just look at Apple and their undeniable lack of interest in macOS and the Mac itself. The only reason why Apple keeps Macs and macOS around is Xcode — they need some development machines to write software for their mobile devices. The moment iOS becomes self-hosting (read: can run Xcode natively), they will drop the Mac product line and the rest of the industry will quickly follow their example. The desktop is dead, people now carry the Internet in their pockets or literally talk to it: “Alexa, … ”

Mark Shuttleworth understood all of this a long time ago — and this is why he launched the Unity project and wanted the dream of “convergence” to become a reality. Just watch an episode of the TV show “The Expanse” and look at how everybody in that show use their mobile gadgets: This is exactly where the journey is going.

Microsoft got that memo, too — as usual a bit later, but they definitely got it. They started the development of the Metro interface, because they, too, understood that down the road our interactions with the computer will significantly be different from what we’re doing today, and that mobile devices and desktops will eventually converge.

The only parties on the market who refuse to understand this are Apple – who are trapped in their corporate prison and won’t ever do anything that could hurt their iPhone sales – and the rest of the Linux community that always let their ideologies get in the way of progress and keep fighting a battle that was already lost and over more than 25 years ago, ignoring all the big changes that have happened in the meantime.

 

Comments Off on Canonical ends the development of the Unity desktop

Mar 09 2017

Android Programming: B4A eliminates the pain of Java

Published by under Android,B4A,Programming,Software

Throughout the last one and a half decades of my career, programming came too short for my liking. I’ve spent most of my work time in networking and building server landscapes and as much as I’ve enjoyed diving deeply into things like virtualization, operating systems, TCP/IP, routing, switching and global infrastructures, I’ve missed building my own software — and by that I mean software that goes beyond the size of the occasional script.

During my teenage years, I’ve created text adventures in Turbo Pascal and Turbo Basic with self-developed parsers that could understand rather long German sentences (in the context of the game world). In my professional career, I’ve written commercial desktop applications and server daemons and services.

Now I want to look at the world of mobile apps — and since I only own devices running versions of Google’s Android and Amazon’s FireOS (which is based upon Android), Android is the beast I will study.

This leads me straight to the biggest issue with Android: Google champions Java as the “official” programming language for Android.

Over the last twenty years, I have tried again and again to give Java a fair chance and to warm up to it. At the same time, Java has proven again and again that all the prejudices against it are true, and I never managed to understand why people – or should I rather say corporations – actually choose to use it. (I think that Paul Graham in his essay about Java raised a very valid point: It is because all the wrong people, normally corporate suits, like Java — it is not chosen by the engineers.)

Some people at Google chose Java as the official language for Android development, so, once again, I tried to warm up to it and spend some time reading some introductory material. There are some very well written books on the market, but it only takes a few dozen pages for the sad realization to kick it that Java is an absolute horrible, overly complex and complicated mess of a language. Even worse, the whole culture of Java is a bureaucratic nightmare, and it shows in every single line of code written in the language.

Just a simple example. You want to fire one of those little text notifications that appear for a brief moment on the screen of your Android device. They are called toast messages, and in the book Android Programming – The Big Nerd Ranch Guide, the sample code for firing a toast message looks like this:

Toast.makeText(QuizActivity.this,R.string.correct_toast,Toast.LENGTH_SHORT).show();

The string correct_toast needs to be defined in a file called strings.xml, and yes, that’s an XML file. Because, well, everything in Java wants to use XML – maybe because XML in its hideousness is such a great match for Java.

< resources>
< string name="correct_toast">Correct!< /string>
< string name="incorrect_toast">Incorrect!< /string>
< /resources>

When you look at the complexity of the Toast.maketext(…. line, it reveals almost everything that’s wrong with Java even on such a small scale. See all those dots? Java is absolutely anal about object-orientation and forces that concept down your throat wherever it can — whether it makes sense or not, whether it’s efficient or not. On the left side of the dot, you usually have an object and on the right side of the dot, you either have a method or a property. Now count the amount of dots and tell me that you think it’s obvious what this thing does. And then look at the Toast.makeText() call itself: There is another dot right after it: Toast.makeText().show(). Yes, makeText() obviously returns another object, and we call the show() method of that object.

Now tell me that this is friendly, simple and easy to understand – especially for people without five billion years of experience in the industry.

Java was designed for large teams of corporate programmers and their daily problems and their project sizes.

Well, I’m not a corporate programmer. I’m a one man shop who wants to get results. Naturally I’ve spent some time looking for alternatives that would make my life simpler.

When you look for real alternatives to Java for Android development, it won’t take long until you find a product called B4A, which before that was named Basic4Android. It also has siblings for Apple iOS – B4I – and for the desktop – B4J. You can find it on the Internet on www.b4x.com. The desktop version is free as in beer, the mobile versions need to be purchased but have time limited trial versions.

B4A is a Visual Basic-like programming language and the code that you write with it is eventually translated to Java and then compiled using the standard Android SDK tools. B4A comes with an own IDE and visual designer and a set of useful helper tools. (And unlike the IntelliJ-based Android Studio, the .NET based B4A IDE does not take five minutes from launch to reaching a state of responsiveness on my old notebook – which is just another thing that speaks volumes about Java.)

But what B4A really does for you is it takes away the pain that Java is.

This is how you fire a toast message in B4A:

ToastMessageShow( "Here comes a toast message with long visibility.", True )

Now isn’t that MUCH simpler and easier to read?

I’ve invested roughly the same amount of time — the equal of 1.5 work days —  with both Android Studio/Java and B4A, in each case starting from scratch with a book. In the case of Java, it was the book Android Programming – The Big Nerd Ranch Guide that I’ve mentioned before, for B4A I’ve used B4A: Rapid Android App Development Using Basic by Wyken Seagrave.

With the Java book, I got stuck after the first Hello World app and nothing compiled anymore — I’ve followed the tutorial and the compiler kept whining about some menu things it couldn’t resolve and being the Java noob that I am, I couldn’t fix it.

After spending the same amount of time with B4A, I was already playing with a second activity (read: a second program window), had buttons that used the built-in Text-To-Speech engine to actually SPEAK text messages, I had photos displayed in my app and there even is a little browser box in my test app that shows the Dilbert website just to see if I can make that work.

So I bought a license for the freshly released version 6.80 of B4A and once again failed to find any love for Java.

I have a real project for Android that I want to work on, and if things go well, you’ll find the result in the Google Play Store and in the Amazon App Store some time later this year. I will reveal the details at a later time, but you can trust me on this: It won’t be written in Java.

Comments Off on Android Programming: B4A eliminates the pain of Java

« Prev - Next »