Eclipse Che looks promising, the cheese’s moved around

A very quick look at Eclipse Che shows a promising concept. I thought let’s have a look. When I’m serious about a technology I take the time to read the documentation before diving in. In this case I wanted to follow the typical journey that most folks take, just dive in, never bother with documentation, upon the first hurdle start complaining like a bewitched mad dog with an exaggerated sense of entitlement – ok, minus the last bit of attitude.

I installed Eclipse Che, easy peasy. Then I fired it up. Oops! I can’t connect to it. The first time ever I couldn’t just use an Eclipse release after installing it. It was time to look under the bonnet. So I did. I saw it’s deployed on Docker… What!? Why!? Ahem, ok, move on. I stopped it, also stopped Docker Machine. Then I manually started Docker Machine, readied the environment, then started Che again. This time I tried http://localhost:8080 and I got in. Cool. Everything looks familiar, except it’s all now in one web browser window.

Time to look back and reflect on what I’ve learned here. The fact I couldn’t connect the first time might have to do with RTFM that I didn’t. Anyway, not a big deal, it took me a couple of minutes.

Nothing much to it, just an IDE inside a web browser. It’s the same old thing, in a new cloak. The most obvious/visible differences I spotted can be depicted in a simple diagram, BEFORE and AFTER.

before_reinvention_classic_eclipse_ide

With Eclipse Che,

after_reinvention_eclipse_che

I’m oversimplifying, but highlighting the most visible changes. It seems that when we get to modernising our software stack, adding Docker and JavaScript are passage-obligé. So, somehow people think that deploying a Java app on Docker is a better architectural choice than only targeting the JVM? In my case, since I’m using a Mac, which runs OSX, hence requires an extra VM (VirtualBox in my case) in order to run Docker containers, I actually end up with a more complicated stack for just an IDE. I don’t know where this is going. Now trying the IDE.

eclise_che_ide_in_action

 

I haven’t gone further than this. The concept of Developer WorkStation Server can be interesting for pair programming. The Server option is perhaps more appealing. I just wonder why this couldn’t be just a Java App and why Docker was actually necessary.

A brave, new post open source world, or Fly-by Software License pollution

I just read an interesting article with the title We’re in a brave, new post open source world. The article goes into the evolution of Open Source movement and the numerous licensing policies. On particularly notable phrase I saw read as follows:

…if you use someone else’s code revision from Stack Overflow, you would have to add a comment in your code that attributes the code to them.

What this means is that, if a developer uses a snippet of code taken from StackOverflow, and fail to add such an attribution, then technically the project might be in breach of StackOverflow license. I am curious how many organisations actually check this.

The whole article is a good read.

Original Article: We’re in a brave, new post open source world — Medium

Open source is a development methodology; free software is a social movement. by Richard Stallman

I just read a nice essay by Richard Stallman with the title Why Open Source Misses the Point of Free Software – GNU Project – Free Software Foundation. A chosen quote from this essay poses perfectly the problem

Open source is a development methodology; free software is a social movement.

Most people probably aren’t even aware of this difference. I never understood why and how the term open source came to be applied to hardware, government and many other areas when in fact even the English language doesn’t see any notion of source in such contexts.

The article I refer to is concerned about correct definitions, I want to look at some  of the misunderstandings.

There is an angle to this discussion, a lot of people and organisations look to Open Source Software (OSS) in search for cheap (but not cheerful) opportunities to solve their problems.  You can’t blame them for it, but this can raise several issues. I will ignore any moral aspects for now, and focus on a few practical implications.

  • Some individuals or organisations release their work as Open Source with the explicit intention to invite others to contribute to it. This is often an acknowledgement that one’s work can be bettered and perfected if others would gain access and be allowed to contribute.
  • By releasing a work as open source, there is no implicit or explicit guarantee of quality or defect. It just means use it at your own risks, your contribution would be appreciated if only in terms of signalling any defects found, or improvements that you might have been able to add to it.
  • FOSS doesn’t  opposed nor condone gainful use. Statistically however, there exist far fewer people and organisations able to contribute than those who actually use OSS. This is well understood and accepted by most. However, it is astonishing to see some people throwing a tantrum and launching on diatribes when they get frustrated by some open source software. This is just plain crazy behaviour, they not only miss the point and are showing preposterous entitlement that deserves to be frowned at.
  • Increasingly, many organisations are using OSS as a mean for attracting and retaining talent. This is an instance that stretches the notions of free and open in an interesting way, a subtle form of free promotion and marketing.

Article: Why Open Source Misses the Point of Free Software – GNU Project – Free Software Foundation

Django CMS is the simplest and most elegant Web CMS I’ve seen lately

Recently I have deep-dive compared a lot of web content management (CMS) products. I’ve found that Django CMS is the simplest and most elegant way of authoring semantic HTML content on the web.

Recently I have evaluated a lot of web content management solutions, all of them open source, almost exclusively on Unix like systems, I haven’t seen anything as simple and elegant as Django CMS. I took it for a spin, it’s polished, really designed to solve fast turn-around web publishing needs. It does that brilliantly, no question about that. I particularly like the way they make all the authoring tools and widgets disappear when not in use, so that you are always looking at your content exactly as it will appear when  published.

There is one thing, in a lot of cases, to truly appreciate any piece of work, one must have a practical understanding of the challenges involved in making it. This is also true for software. Content management, web content management isn’t a sexy topic. However, without such systems it would be tedious to maintain an online  presence, difficult to consume a lot of the content produced daily by legions of people.

I was just going to use one of the web CMS products I’ve known for a long time, to power one of my web sites. In the process, I realised that I have not done any proper re-evaluation of the products available for a while. I wanted to try that first before settling on something. I thought perhaps I should go open minded about it, include a broad selection of products. As time is precious, I decided to focus on Unix/Linux based solutions for now, because that is also my target deployment platform.

For my purpose I went back to implementing a few other web CMS products, namely: Zotonic (Erlang based), Liferay Portal (JCR), Magnolia (JCR), dotCMS (JCR), several static publishing systems such as Pelican (Python), Jekyll and Octopress (Ruby), and of course WordPress (PHP, which powers this blog). Django CMS best all these in terms of simplicity and its focus on making semantic HTML content authoring a bliss. To be fair, it’s hard to compare these products I just mentioned since each actually aim to cover a breadth of needs that might be going well beyond web CMS (portal for example). But I had narrowed my scope down to the authoring and publishing processes only, web CMS functionality alone, that makes it possible to come up with a fairly reasonable comparison.

I am not yet done evaluating web content management systems, I still have on my to-do list Prismic.io (an innovative Content Repository As A Service) and a couple of .NET based web CMS.

More to come on this topic sometime later. I probably have enough material to publish a small document on this subject. We’ll see if/when I get to that. But for now, I definitely maintain that Django CMS is the most polished solution for folks looking for a simple and attractive web CMS software.

LMAX Disruptor: Mechanical sympathy, a quality of great C/C++ programmers, rediscovered in Java world?

We learn this all the time, testing is a fundamental part of crafting great software – yet it seems to often be relegated for all sorts of reasons. This oldish article by Martin Fowler on LMAX Disruptor shines a light on the value of performance testing, and mechanical sympathy as a crucial skill for crafting great software solutions.

Two interesting take aways from Martin Fowler’s article on LMAX are: the importance of performance testing, and mechanical sympathy.

Testing is actually one of the most efficient ways of learning modern software systems, so if nothing else it’s going to bring that edge to people. Mechanical sympathy, on the other hand, is one of the enduring qualities of great C/C++ programmers, I’d say that in that case the expression covers a combined affinity with the C++ language standard, the vendor compiler idiosyncrasies, and the particular OS being targeted.  I could infer this back in the 1990s as I read books by folks like Herb Sutter, Stan Lippmann, or Scott Meyers. At the time I had a good understanding of the x86 architecture and could see how mechanical sympathy played out – though, I didn’t know the expression until I read Martin Fowler’s blog.

I’ve been focusing on actor based programming models last year or so, I think the LMAX Disruptor is definitely a very interesting and exciting concept.

Google Go is good to go now. Where are all the libraries to go with it?

It seems that Google Go would suit scaling issues that are mainly due to application execution (CPU) bottlenecks, so not disk or network performance bottlenecks which are actually more common. Targeting those who’d have to otherwise program in C means that Google expects a niche market for this language. Companies like Facebook and Twitter may have good use cases, but those don’t look to be the best of friends with Google nowadays. Would traditional enterprise development groups rush to adopt Google Go? I doubt it.

I read an article on ReadWriteWeb, commenting on Google’s announcement that their Go language reached 1.0. I took a quick look, as I did when it was first publicly announced. As then and now, it looks interesting but I personally can’t see it fit in any of the initiatives I am involved in at the moment.

One thing that is constant, and actually infuriating with these new programming language announcements is the way they are presented. Many would showcase a Hello World, Fibonacci, writing a Blog Web site, or writing a To Do List application. I don’t know about you but I’ve rarely come across a real-world problem involving any of these examples. I think it as a form of escapism.

Another problem with any new programming language is that people have to go through a stage of “brainwashing” before they become really productive. That may be luxury for a lot of people at the moment. And lastly, even if a language is great you would be swimming upstream unless you could count on a large amount of libraries to tap into. In that department, the recent wave of JVM based languages are doing well. Even Microsoft, who normally have a massive install base, understood this and is working very hard to bridge its languages with the open source communities out there. I am not yet seeing how Go will help developers get the most out of existing libraries. This also makes me think that it is not targeted at the larger developer community.

It seems that Google Go would suit scaling issues that are mainly due to application execution (CPU) bottlenecks, so not disk or network performance bottlenecks which are actually more common. Targeting those who’d have to otherwise program in C means that Google expects a niche market for this language. Companies like Facebook and Twitter may have good use cases, but those don’t look to be the best of friends with Google nowadays. Would traditional enterprise development groups rush to adopt Google Go? I doubt it.

I am curious how the reactions would be like over next few months.

Twitter Bootstrap UI framework is proving to be a hit, well done to them

Twitter (open source) Bootstrap UI toolkit is proving to be a hit, GitHub statistics isn’t the only indicator of that.

When it was initially made public, I thought Twitter Bootstrap could prove quite useful and I blogged in that direction. Many months later, I can now see that a lot of people adopted it. They’re recently released a version 2.0, which may well be a response to Zurb foundation. A glance at Github suggests that Twitter Bootstrap is one of the most popular project there.

I don’t have any affiliation with either organisations, but I do like to see something so useful in widespread use. This can only help users and developers, companies that build on such toolkits may be able to optimise their web application interface design costs too.