|Latest 7 Posts
| Metawork, nobody is capable but all participate grudgingly|
Thu, May 12th 2016 15
| Mach Dich auf die Socken!|
Mon, May 9th 2016 8
| Annotations to supercharge your vert.x development|
Fri, Apr 1st 2016 8
| Now we are token - Authorization using JSON Web Token in Domino|
Wed, Feb 24th 2016 8
| The Cloud Awakening|
Tue, Feb 23rd 2016 6
| Designing a Web Frontend Development Workflow|
Fri, Feb 19th 2016 7
| Vert.x and Domino|
Thu, Feb 18th 2016 8
| Custom REST service in XPages using a service bean|
Wed, Oct 22nd 2014 16
| Metawork, nobody is capable but all participate grudgingly|
Thu, May 12th 2016 15
| Cloud with a chance of TAR balls (or: what is your exit strategy)|
Sun, Apr 12th 2015 14
| There's a plug-in for that! Getting started with Cloud Foundry plug-ins|
Mon, Aug 24th 2015 14
| Let there be a light - Angular, nodeRED and Websockets|
Sun, Aug 23rd 2015 13
| Custom experience for IBM Connections Cloud - Project Muse|
Wed, Nov 12th 2014 12
| Identiy in the age of cloud|
Sun, Aug 23rd 2015 12
| Value, Features and Workflows|
Mon, May 12th 2014 11
Sat, May 9th 2015 11
| Adding Notes data to Websphere content manager via RSS|
Mon, Jul 27th 2015 11
| Recent Blog Posts
Metawork, nobody is capable but all participate grudgingly|
Thu, May 12th 2016 9:41p Stephan H Wissel
This article is a translation/paraphrase of Professor Gunter Dueck's original post titled DD265: Metawork – keiner kann’s, aber alle machen ärgerlich mit (Mai 2016). Professor Dueck's philosophy resonates with me, so I'd like to make his thoughts available to a wider audience. Bear with my Gerlish. Remarks in brackets aren't part of the original text and are either my comment, extension or explanation. Here we go:
Metawork is your own effort to organize work (your's and other's),
Mach Dich auf die Socken!|
Mon, May 9th 2016 8:46p Stephan H Wissel
A common requirement in corporate systems is "let me know when something is going on". In Notes we use "On document creation or update" triggered agents to process such events. To let external systems know about such a change R8 introduced the web service client. This works well in distributed system, but requires quite some work on both ends. In a recent case I had to optimize the communication between Domino and a task running on the same machine. The existing solution was polling the Domi
Annotations to supercharge your vert.x development|
Fri, Apr 1st 2016 8:01p Stephan H Wissel
This post reflects some of the approaches
Now we are token - Authorization using JSON Web Token in Domino|
Wed, Feb 24th 2016 2:37p Stephan H Wissel
After having Vert.x and Domino co-exist, the door opens for a few interesting applications of the new found capabilites. One sticky point in each application landscape is authentication and authorization. This installment is about authorization.
The typical flow:
you access a web resource
provide some identity mechanism (in the simplest case: username and password)
in exchange get some prove of identity
that allows you to access protected resources.
In Basic authentication you have to provid
The Cloud Awakening|
Tue, Feb 23rd 2016 11:31a Stephan H Wissel
It is a decade since Amazon pioneered cloud as a computing model. Buying ready made applications (SaaS) enabled non-IT people to quickly accquire solutions IT, starved of budget, skills and business focus, couldn't or didn't want to deliver. Products like Salesforce or Dropbox became household brands.
But the IT departments got a slice of cloud cake too in form of IaaS. For most IT managers IaaS feels like the extension of their virtualization stragegy, just running in a different data center
Designing a Web Frontend Development Workflow|
Fri, Feb 19th 2016 1:50p Stephan H Wissel
In the the web 'you can do anything' extends to how you develop too. With every possible path open, most developers, me included, lack direction - at least initially. To bring order to the mess I will document considerations and approaches to design a development workflow that makes sense. It will be opinionated, with probably changing opinions along the way.
Firstly I will outline design goals, then tools at hand to finally propose a solution approach.
With the outcome in mind i
Vert.x and Domino|
Thu, Feb 18th 2016 6:07a Stephan H Wissel
A while ago I shared how to use vert.x with a Notes client which ultimately let me put an Angular face on my inbox and inspired the CrossWorlds project.
I revisited vert.x which is now 3.2.1 and no longer beta. On a Domino Linux server (I don't have Windows) and on a Mac Notes client the JVM is 64 Bit, which makes the configuration easier (no -w32 switch, no download of an additional JVM). The obligatory HelloWorld verticle ran quite nicely with my manually. However it wouldn't run when the D
Developer or Coder? -Part 1|
Fri, Feb 12th 2016 11:42p Stephan H Wissel
Based on recent article I was asked: "So how would you train a developer, to be a real developer, not just a coder?". Interesting question. Regardless of language or platform (maybe short of COBOL, where you visit retirement homes a lot), each training path has large commonalities.
Below I outline a training path for a web developer. I'm quite opinionated about tools and frameworks to use, but wide open about tools to know. The list doesn't represent a recommended sequence, that would be a
Disecting a mail UI|
Fri, Feb 12th 2016 1:24p Stephan H Wissel
At Connect 2016 Jeff announced that there will be an IBM Verse Client for Domino on premises. Domino customers are used to an high amount of flexibility, so the tempation will arise to customize the Verse experience.
However this ability is nothing that has been announced in any IBM roadmap. So any considerations are purely theoretical. What is the interface of Verse made of. WIthout reverse engineering, just by looking at it, one could come to the following conclusion:
This looks quite mana
The quick and dirty Domino Cloudant export|
Thu, Jan 21st 2016 2:45a Stephan H Wissel
Moving data out of Domino never has been hard with all the APIs available. The challenge always has been: move them where? Ignoring for a second all security considerations, the challenge is to find a target structure that matches the Domino model. Neither flat table storage nor RDBMS fit that very well.
A close contender is MongoDB which is used in one compelling Notes retirement offering. However the closest match in concept and structure is Apache CouchDB, not surprisingly due to its heritag
The 3C of leader - leader: Clarity, Competence, Control|
Sat, Jan 9th 2016 4:00a Stephan H Wissel
An organisation failing their objectives has a reflexive reaction: implement more controls. Rumor has it, some sales organisations perform daily cadence calls towards the end of a period to ensure deals close (as if time away from the customer helps).
L. David Marquet, in his book "Turn the Ship Around!" paints a different story. Like a plane needs 3 points to be defined, functional organisations need 3C to operate at peak performance: Clarity, Competence & Control.
I wrote a short rev
Mess with the Bluemix Colors|
Thu, Jan 7th 2016 11:57p Stephan H Wissel
The Bluemix designers consider their color scheme: robust, decent and unobstrusive. However not everybody likes the dark colors (some do). Stylish to the rescue. It comes in Firefox and Chrome flavours. It requires a custom style sheet and it might take you a while to figure things out. So use this for starters:
Mail archive with Apache CouchDB / IBM Cloudant - Part 1|
Wed, Dec 23rd 2015 11:42p Stephan H Wissel
Like it or not, your eMail turned into the archive of your (working) past. One of the challenges with this archive is the tendency to switch eMail systems from time to time. IBM Notes won't open your Outlook PSD file, nor would Outlook open your Notes NSF database.
So a vendor and format neutral solution is required. The obvious choice here is MIME, which is for one, the format any message crossing the internet is encoded in, secondly all eMail applications support MIME - to some extend. Just
Automated Tests in Bluemix Build and Deploy|
Wed, Nov 25th 2015 9:43p Stephan H Wissel
Bluemix is a beautiful environment for agile software development. It's build and deploy capability ensure continious delivery, so you can focus on code. A well run project requires automatic testing (starting with unit tests up to integration testing).
You can configure this in the Build and Deploy pipeline, so your project looks like this:
While you could argue: "I run my tests local", you might encounter the situation where you use the online editor and you then depend on the tests run
Fri, Nov 13th 2015 11:48a Stephan H Wissel
That's roughly the same fallacy as to say: It's easy to write a great novel, since it is just words and grammar.
The simple reason: It is hard.
I'll outline my very opinonate version of what skills you need for mastery of front-end programming. The list doesn't include the skills to figure out what to program, just how. So here it goes:
Jeffry Veen, who'm I had the pleasu
Multitenancy - a blast from the past?|
Tue, Nov 3rd 2015 12:36p Stephan H Wissel
Wikipedia defines multitenancy as: "Software Multitenancy refers to a software architecture in which a single instance of a software runs on a server and serves multiple tenants ... Multitenancy contrasts with multi-instance architectures, where separate software instances operate on behalf of different tenants "
Looking at contemporary architectures like Docker, OpenStack, Bluemix, AWS or Azure, I can't see any actual payloads being multi-tenant. Applications by large run single tenant. Th
The lowdown on Notes application web and mobile enablement|
Tue, Nov 3rd 2015 10:00a Stephan H Wissel
There are millions (if not billions) of lines of code written for the Notes client in small, large, simple, complex, epidermal and business critical applications. With the rise of browsers, tablets and mobile devices there is a need to web and mobile enable these applications, not at least since IBM won't let the C code of the Notes client run on iOS (which it could).
Whether we like it or not, that body of code can be considered technical debt.
The strategy I see is mostly the same: classi
Domino, Extlib, GRUNT, JSON and Yeoman|
Thu, Oct 29th 2015 10:08p Stephan H Wissel
Contemporary web development workflows separate front-end and back-end through a JSON API and HTTP. There are distinct tools for front-end development, that treat the webserver as source of static files and JSON data being shuffled back and forth. This article describes how my development setup makes all this work with Domino and Domino designer.
The front-end tools I use are:
Bower: a d
There's a plug-in for that! Getting started with Cloud Foundry plug-ins|
Mon, Aug 24th 2015 12:03p Stephan H Wissel
Since IBM Bluemix is build on top of Cloud Foundry, all the knowhow and tooling available for the later can be used in Bluemix too.
One of the tools I'm fond of is the Cloud Foundry command line cf. The tool is a thin veneer over the Cloud Foundry REST API and is written in GO. "Thin veneer" is a slight understatement, since the cf command line is powerful, convenient and - icing on the cake - extensible.
A list of current plug-ins can be found in the CF Plug-in directory. Now the installat
Let there be a light - Angular, nodeRED and Websockets|
Sun, Aug 23rd 2015 10:20p Stephan H Wissel
NodeRED has conquered a place in my permanent toolbox. I run an instance in Bluemix, on my local machine and on a Raspberry PI. I build a little demo where a light connected to a Particle lights up based on an event reaching a NodeRED instance. However I don't carry my IoT gear every time (got lots of funny looks at airport security for it), but I still want to demo the app. The NodeRED side is easy. I just added a websocket output node and the server side is ready to roll.
On the browser si
Identiy in the age of cloud|
Sun, Aug 23rd 2015 11:01a Stephan H Wissel
Who is using your application and what they can do has evolved over the years. With cloud computing and the distribution of identity sources, the next iteration of this evolution is pending. A little look into the history:
In the beginning was the user table (or flatfile) with a column for user name and (initially unencrypted) password. The world was good, of course only until you had enough applications and users complaint bitterly
In the next iteration access to the network or intranet was mo
Adding Notes data to Websphere content manager via RSS|
Mon, Jul 27th 2015 9:24a Stephan H Wissel
Websphere Content Manager (WCM) can aggregate information from various sources in many formats. A quick and dirty way to add Domino data is to use RSS. The simplest way is to add a page (not an XPage, a Page), define its content type as application/rss+xml and add a few lines to it:
Extraction of data from the Audience Governance database
[Embedded view here]
Thereafter create a view with passthrou HTML with all the values for an item element. Of course tha
Midget Imaginaire - Scheinzwerg|
Wed, Jul 15th 2015 1:35p Stephan H Wissel
The imaginary midget
This is an attempt to transpose a concept deeply rooted in the German cultural context into another language. Bear with me.
Over at Omnisophie Professor Dueck has a column titled "Scheinzwerge" (loosely translated: imaginative dwarfs|midgets|gnomes), dealing, besides others, with the Greek crisis.
It draws heavily on a very German childhood classic "Jim Button and Luke the Engine Driver". In this famous children book and string puppet play we meet Mr. Tur Tur who is a
Validating JSON object|
Sat, Jul 11th 2015 1:45p Stephan H Wissel
One of the nice tools for rapid application development in Bluemix is Node-RED which escapted from IBM research. One passes a msg JSON object between nodes that process (mostly) the msg.payload property. A feature I like a lot is the ability to use a http input node that can listen to a POST on an URL and automatically translates the posted form into a JSON object.
The conversion runs non-discriminatory, so any field that is added to the form will end up in the JSON object.
In a real world app
Random insights in Bluemix development (a.k.a Die Leiden des Jungen W)|
Mon, Jun 29th 2015 5:31a Stephan H Wissel
Each platform comes with it's own little challenges, things that work differently than you expect. Those little things can easily steal a few hours. This post collects some of my random insights:
I'm a big fan of offline development. My preferred way is to use a local git repository and push my code to Bluemix DevOps service to handle compilation and deployment. It comes with a few caveats
When you do anything beyond basic Java, you want to use Apache Maven. The dependency
Thu, Jun 18th 2015 5:18a Stephan H Wissel
When developing Java, locally or for Bluemix a best practise is to use JNDI to access resources and services you use. In Cloud Foundry all services are listed in the VCAP_SERVICES environment variable and could be parsed as JSON string. However this would make the application platform dependent, which is something you want to avoid.
Typically a JNDI service requires to edit the server.xml to point to the right service. However editing the server.xml in Bluemix is something you do want to avoid
Adventures with NodeRed|
Tue, Jun 2nd 2015 10:42a Stephan H Wissel
Node-RED is a project that succesfully escaped "ET" - not the alien but IBM's Emerging Technology group. Build on top of node.js, Node-RED runs in many places, including the Rasberry PI and IBM Bluemix.
In Node-RED the flow between nodes is graphically represented by lines you drag between them, requiring just a little scripting to get them going.
The interesting part are the nodes that are available (unless you fancy to write your own): A large array of ready made flows with nodes and samp