Thursday, May 30, 2019

3 weeks, 3 countries, 3 roles

I should be probably doing some work now, but the last three weeks were quite busy and a short blog post may help me to process all the information I gathered (or I'm just too tired to get any real work done as it looked like that half of Poland is going home for an extended weekend due to public holiday in Germany and I got home at 2AM instead of 11PM).

Engage

Last weeks were exciting. It all started with Engage, the best IBM/HCL collaboration community event in Europe, or maybe in the world, but as I haven't been to any event outside Europe recently, some else has to decide. Theo and Hilde organized a wonderful event, as always. I think we are all getting spoiled and it's really tough for them to keep every event such well organized and find those incredible locations, where I'd not think it's possible to host a conference. And it just works.

This time it was in Autoworld Brussels, which mad part of my family really jealous as they spend most of their free time with their oldtimers. It was also a good place to see how technology evolves over time, which is something a great context for an IT conference. It's not all just about the cool new shiny cars, but if we looked closely, there were electric cars from 1930s which had parameters - range/speed, that would be just fine for most of the current workers in urban areas. Quite often it's not about technology, but it's about marketing and demand that decides about the success of products and projects, which may be revitalized many decades later.

I don't want to compare Iris/Lotus/IBM/HCL/who's next Notes to cars from 1930s, but there are some similarities. We are also getting back to original ideas after eras of looking at other directions. Future for both is yet to be seen. 

We all hoped that we'll get more information about IBM/HCL deal at Engage, but it was still illegal to share any details due to the regulatory process with the American government. Next weeks should give us a more clear vision, what the ecosystem of all the products under wings of HCL will look like.

From a technical standpoint, there wasn't much new. Most of the news already leaked before the event, either from IBM Think, or the factory tours. I missed some of the energy HCL showed last year, when they started to work with Domino. I think it's partly caused by the fact that they are completely taking over the products, which bears greater responsibility. I just hope they will be able to keep to delivery what they are talking about, or rather increase the pace and scope of the deliveries. I can't say that I was a fan of HCL Places idea from last year, but it was a compelling idea, which is probably now replaced by enhancements of integration between Notes, Connection, Sametime, .... , which may just take us back to IBM Workplace era. Too complicated licensing, too complicated deployment, too many resources required for small companies.

Second set of sessions at Engage was related to general technology presentations, which no or minimal link to HCL products. These sessions were presented by well know people from ICS community, who moved on to other platform or technology stacks. I think the most important message of these sessions is - pick tooling that works for you, your project and your problem. There are many options out there and if you are not sure or scared, just close your eyes and go ahead. Technology will change in few years, so you can't really predict the future. The risk of choosing a wrong stack will be always present and you will have to repeat doing such decisions over and over. If technology won't change, they will end up in the same situation as Lotus Notes, close to their death. And of course, there is no silver bullet, no one size fit all answer, which quite often Notes apps were presented as, which lead to solutions that did more harm than good to the platform. Be brave, move fast. I know it's hard to do in the enterprise environment, but HCL and partners and customers have to do it. I think it's better to do something brave, fail, maybe even get fired for doing so, but learn something along the way because this will move you forward to hopefully better future.

Sutol

Sutol is my home ICS event. I was one of the founding members many many years ago and I'm happy that it's still able to attract people to the events. This time we had the Symposium, which was in the past done directly by IBM, but for past years, it was hosted by Sutol, but IBM and now HCL had a key role in the organization and also many speakers came from these companies. 

This year I offered my help and was given an opportunity to present DQL and the DQL Explorer. I haven't presented at Sutols for 3 years, so I was again a bit nervous about it. At least I managed to prepare my slides in Czech and also give the session in Czech. 

Overall, I think this event was amazing. We were worried that people may not be interested anymore, but I think they all were curious about HCL. Richard Jefts did a great keynote, which I liked more than the keynote from Engage (where he had to save some information to other sessions). It was dynamic, it was entertaining and provided great value to the customers, not like some of the previous keynotes from IBMers in the past, who were too disconnected from the real world.

We had 110 people registered, which is amazing for a local event in local language. We even managed to persuade all of them to wear a yellow T-shirt.

(credits for the idea, the T-shirts and the picture go to Jan Valdman)


I think it was a good foundation for the more technical autumn event, which should be more focused on technology new and V11 of Notes, which should be almost ready to be released when we host the conference in November.

European Collaboration Summit

This week I went to Wiesbaden, Germany for another event - ECS. At first, I thought it may be held in German, so it would be also a third language, but luckily it was in English and I could just say few words in German while talking to my colleagues from BCC. I was here as part of a big BCC crew, who sponsored the event (like we did for Engage, but there I was on my own). BCC headquarters is located in Frankfurt/Eschborn, so we stayed in our usual hotel near the office and drove there. It was my first trip to the office this year, so it was nice to see my friends in person.

ECS is mostly focused on Microsoft Office 365 technology stack, but there were also some sessions about AWS. There was a big overlap with ESPC conference I went to last year, but at least I learned more about those platforms since then, so I did understand more about what they are talking about. There are still many areas, where I'm completely lost, especially when they start to compare different versions of Sharepoint on-prem and online, but at least I get to understand the problems that they are dealing with. 

Overall the focus on low-code, citizen development is probably even higher than at ICS events, when Notes still span from no-code to pro-code solutions. Here the sessions were mostly about connecting the dots. How to integrate the solution into O365, how to manage it, what can be done with the SDKs, frameworks, services. Details of the solution are considered classic web, C#, F#, whatever you like, development and mostly out of the scope of the sessions. You just deploy them to Azure as function, app service, container, or old school VM and make sure that everything works nicely together with Microsoft Flow or Logic apps if you wish to. If you wanted to know more details, there was Microsoft Build a few days ago, with many session available on-demand.

The tough tough challenge with all those tools is using the right one and also giving access to the right tools to right people. Probably many people can tell stories when power users just completely messed up their Sharepoint when they gave them too many permissions. 

Most of the technical sessions I went to expresses the biggest pain point of cloud computing. Continuous change. All speakers hoped that their demo still works, even when they tried it a few hours ago and experience from real projects is that you have to be prepared to adapt to any kind of change from Microsoft side (and this also has to be well communicated to the customers and end users). This is the price we have to pay for ongoing progress the products and platforms are making every day, every hour. It's another variable in the equation for project planning and cost estimation.

What I like about most of the current Microsoft SDKs and tools is that they are open-source. This is also true for Microsoft backed tools like PnP, which I think is a good model that also HCL (and maybe together with OpenNTF)  can embrace. 

I haven't attended any session about PowerApps this time due to conflicts with other interesting sessions, but I guess will catch up at next events.

Again, as at ESPC last year, it was quite refreshing to focus on content, future roadmaps and technology, not on worries about the relevance of the platform, products or the company. I hope we'll soon get to this point in HCL collaboration space too. Soon seems to be the magic word that is used in roadmaps from Microsoft and I think there soon will be HCL Notes V11 beta. What soon means, depends quite often if it's a marketing soon, product management soon, or technical soon. 



What's next - in IBM/HCL space, there is DNUG next week (and I'm not going there as I should really get some work done) and of course Sutol at the end of this year. For Microsoft space, there will be Ignite and ESPC in Prague also at the end of the year, so it looks like another busy period for me.



Friday, May 17, 2019

Using JAX-RS inside NSF follow-up - Swagger UI

Today I returned from another great Engage conference. Going to conferences gives you some fresh ideas, energy from the peers and motivation for next work, but it also takes some energy due to travel. This time I also returned with a few tasks and having currently Friday afternoon I decided to start with an easy one, just publish something I had in my drawer for a while.

More than a year ago I blogged about the possibility of creating JAX-RS based REST services directly in NSF. I remember that  Per Henrik Lausten liked it at that time. He also immediately mentioned that Swagger UI would be nice too, but I was too busy then to follow up on this. In following months I needed it myself but I never published it. So, as promised to Per at Engage, here it is.

Swagger UI can be really nice to have for testing, but what's more important, you get OpenAPI specification, which you then can use to generate clients for your REST API. And all with close to no effort.

Here is how it looks ...


Here is a list of needed adjustments:

Upgraded libs and Swagger

To make it work, I had to update the Jackson libs and few supporting libraries. I'm not 100% sure if all are needed, but I normally just put there all libs that I get as Maven dependencies to be sure. Libs in the current version are from last August and I haven't tested this on Domino 10, so if you want to use it, you may want to check the latest versions and their compatibility.

Added OpenApiResource

Just added the resource to the existing wink_application file in my application.

io.swagger.v3.jaxrs2.integration.resources.OpenApiResource

Added some annotations

Just to show it works, I've added some extra annotations.

Added Swagger-UI to the app

I only copied the html version to WEB-INF folder. I also slightly modified the index.html file, so it finds openapi.json file generated in same nsf. Of course you can host it somewhere else and just point it to the url.

Adjusted the SwaggerConfiguration

This is probably the most tricky part. You need to have correct endpoint URLs generated in the openapi.json in order to work with the Try buttons. I think this can be also overridden in the UI, but it's always better to have it in the file directly, so also other tools work with that. I still don't consider this as the best solution as it's in the plugin, so server wide, but it gets the job done for now.


With all this in place, you can just happily keep adding JAX-RS annotated resources to your nsf and you'll get openapi.json/yaml files automatically. You can almost feel like working with some modern platform.



Get it here: https://bitbucket.org/pradnik/pristo_rest/src/master/ (and yes, I've added additional todo to add some free license statement to the repo too, but for that, I also have to change the sample db to non-IBM one).

If you want to have similar features directly in the product, please vote for https://domino.ideas.aha.io/ideas/DDXP-I-409