Over the last few months a lot of what I've had to do has come from combining frameworks. Usually one of those frameworks is Vaadin. But whenever you're combining frameworks of any kind, it usually means some content is pre-configured, which may conflict with settings in another framework. If you're not familiar with the framework and the technologies in use, it's a lot like looking at hieroglyphics without a Rosetta Stone! The result is a lot of learning on the job.
Earlier this week I had problems with high CPU utilisation and had to restart my PC. I took the opportunity to bite the bullet and install some Windows Updates. What I saw brought my mind back to UX and coding of applications. For at least five minutes, the progress displayed as "100% Complete". It prompted me to issue the following tweets:
Developers, progress bar should never show 100% complete. It should be 0% of next process or gone. Windows updates 100% complete for minutes
I've been involved in developing training materials, tutorials, videos, online documentation and even books. So I've gained a full appreciation of the effort involved in not only creating good documentation but maintaining it too. Rene Winkelmeyer wrote a good blog post today about developer experience and his points are very valid.
Over the last couple of years I've seen a number of approaches as I've dug into a variety of new technologies.
Since earlier this year when I started trying to get a better handle on the breadth of graph database options available for a developer, Titan has been an option I have kept in regular contact with. It's fair to say there has been a lot of uncertainty about the prospects for Titan. But there have been some interesting developments regarding Titan during the summer. IBM Graph has reached GA on Bluemix, albeit with only REST access, which may not appeal to Java developers, particularly those familiar with Titan and comfortable with natively handling vertices and edges. And more recently there has been a lot of work on integrating Titan with ScyllaDb, which provides a long-term option for using Thrift as a communication mechanism between Titan and the backend database.
The bulk of my experience with application development has been building workflow-related rich client and web applications on NoSQL databases, typically IBM Domino. The challenge in the Notes Client was to provide dashboard-style displays and a good way to display documents for action by the current individual. Private views can be used, but impact database performance. So, typically, the approach is to display views that present a scrollable table of data. Domino's document-level reader security is then used to ensure only the appropriate data is visible. If data is archived appropriately, performance of the database is good enough for many reasonably-sized applications. (Of course, archiving is often omitted from scope of the first phase for the rapidly-developed application, and becomes a case of "out of sight, out of mind".) But with the increasing prevalence of web applications replacing Notes Client applications, the ability to display "my documents" and use structured searches to display a targeted subset of documents was much easier.
Before I started working with IBM's XPages framework in 2009, I was starting to use AJAX calls in web applications and starting to dig into Dojo charting options for an application. So not unsurprisingly, when I started with XPages I blogged quite a bit about Dojo charts and understandably chose to write the Dojo-related chapter and a half of "XPages Extension Library". I also contributed a Dijit Tooltip custom control and an extension to the Dojo Legend component, to allow more sophisticated formatting of the legend.
IBM Websphere Liberty is a widely-used modern lightweight server (less than 70Mb, I have several running on my PC) that allows modern Java EE development with Java 8. The server is free for development and build server, with limited production use (up to 2Gb of JVM heap space across all instances for the organisation). Web applications are deployed as standard web archives, which means it's easy to download and install demos of various frameworks and easy to use Maven. This is something I've fought with when developing OSGi plugins, because Maven is designed to manage and install dependencies be compilation. On the other hand OSGi best practice is to pull them from other plugins, defined in the MANIFEST.MF. At the very least OSGi needs the plugins adding to the classpath in the MANIFEST.MF. Tycho is designed to bridge the gap between what Maven expects and what OSGi expects, but it's not great. So a standard web application, sucking any jar files in via Maven, makes life a lot easier.
The key to any relationship is periodically stepping back and appreciating the good points in contrast to the little annoyances that grate, so that you're not distracted by the first pretty young face (or muscular torso, depending on your predilection) that you encounter. When you thinking it might be time to leave the relationship, that is the most crucial (though most difficult) time to evaluate honestly and dispassionately what you have / had. Because if you don't, sooner or later you'll find different annoyances that grate; or you'll find something you took for granted and absolutely needed is missing from your new love; and before you know it that love too will turn sour and you'll be crying into your alcohol bemoaning wasted years and shattered dreams while looking at a bank account that's been wiped out by periodic divorce settlements.
For the last six years, I have blogged heavily (375 posts in 3 years and nine months, more than one post per week) on Intec's blog. So the question naturally arises why I should choose to start a personal blog, and why now.