Monday, November 13, 2017

When your Tool is a Hammer, Everything is a Nail, Transformation of Domino - Part 2

The recent announcement by IBM to continue the development and support for the IBM Domino platform indefinitely was great timing for part 2 of this series. This series is about the direction that we are taking Domino. This journey has taken more than five years with many different designs and experiments to get to where we are in our iPhora technology. You can find Part 1 of this series here

There are many tools and solutions out there from many vendors for "Modernizing" a Notes application. But what does that really mean?  In most cases, that means replacing the Notes application interface with a Web interface and making a better UI experience for the user.

But for us application modernization is not just about the front-end but also but how the data is collected, managed, stored and processed. How it integrates with outside third-party services. Most Domino application modernization leaves the data untouched in the same structure. XPages mimics the Notes application environment for a Web client versus a Notes client. This approach allows data to remain in place as it was defined.  But as we all know, it also leaves a lot of useless code, views and wasted resources. 

We wanted a defined framework, that allowed us to create applications more consistent with how the majority of modern Web applications are built but at the same time utilize the best parts of Domino. We are not just interested in "Modernizing a current Notes/Domino application" but building new enterprise applications that utilizes the key advantages that Domino uniquely has.  Before we go any further lets look at what a Web server environment normally consist of. It may include:
  • Web server
  • Identity/Authenication server
  • Load balancer
  • Cluster manager
  • Mail server ( for notifications )
  • API server
  • Integration server
  • Application server
  • Database server
One of the best things about IBM Domino is that all these different type of server components that you need is all bundled into one single server package. This is great for many, but it is also its Achilles heel. This tight integration also creates problems. Any changes to the design of one these server components require changes in the other server components. As a result, each of the server components may not be optimal. That means that IBM Domino is a jack of all trades but not the best of anything. For many that is more than enough. However, for scalability, extensibility and future competitiveness this is bad. If IBM Domino is to be competitive, you need to reevaluate the approach on how applications are built on Domino, but at the same time understand how to utilize the best features found in Domino but not in other platforms.  

Majority of Notes applications have a one to one database relationship with each having different views,  forms and etc. Over time they all have different design approaches. Some developers break out the application to multiple databases some not. The design varies from application to application. A typical Domino application has all the business logic and data wrapped into a single database regardless of whether you are using XPages, traditional Web application, Notes Application, and whether we are using REST API with JavaScript or generating the Web application using XPages. 

We wanted to separate out the different server components and depending on our need replace those components will newer components that may utilize different technologies not found currently in Domino. This would allow us to Dockerize Domino easier in the future. By breaking up the server components, we can now look into replacing these components with other technologies that have better performance. For example, Nginx as a Web server has much higher performance than what Domino could ever be, the API server could be replaced with a form of Node/

So in a typical iPhora installation there is a fix number of designated Domino databases each serving as an individual server component that makes up the iPhora server.  A base installation includes:
  • Web Server (Generates the UI interface) 
  • API server ( generates all the RESTFul APIs)
  • Database server (JSON-based data store)
  • File Database Manager (Manages all the files stored on the installation)
  • Application server (contains all the business logic)
  • Identity Server ( contains all the profiles and users info and works with the Domino Directory)
So regardless of the type of application or how many applications you have, you have the same number of databases, unless you exceed the limits of a Domino database which we have not encountered yet. So an application is no longer represented as a single database, but a collection of business logic, UI components, and APIs. It may seem to be a waste initially, but as you build more and more applications, you do not need to allocate more and more databases.  The individual databases collectively provides the framework for your application to draw from. Our typical application is now a series of MVC views, JavaScript/CSS files, additional APIs, if needed, and business logic files.  All applications must follow a strict design pattern for both front-end and back-end which also allow us to have different developers working on the front-end and the back-end.

Security is our top priority not shear speed like other platforms. Regardless of who you are, users only have read access to the Web server database and the API database when access any application. All the rest of the databases, users have no access include administrators. CRUD is a definite NO NO. Users regardless whether they are only readers or administrators should NEVER have direct access to the data. Strict access control of data is done through a gateway with low level administration only done using our Notes-based client application.

One of our biggest challenges was transforming the Notes document database into a JSON-based data store similarity found in MongoDB or CouchDB. We used CouchDB as our design model, but discovered that we needed our own approach. We will discuss this is part 3.

Friday, November 3, 2017

Domino X and Beyond, What Does this Mean?

On October 25, 2017, IBM announced their strategic partnership with HCL with Domino, Sametime, Traveler, Verse and other products. As many have blogged and tweeted, IBM is turning over the development of these products for the forseeable future to HCL. Also, Ed Brill announced that IBM will be releasing Domino X in 2018 and #Domino2025 Jam to help determine the future of the Domino technology. I am not going to dwell on the details. You can find it yourself.  I am going to discuss what this means for Phora Group and myself.

There are many naysayers who have stated that this announcement is too late. I would say it is NEVER too late.

So what does this announcement mean for Phora Group and myself. Am I super excited, NO.  Am I happy, YES. Was the moving of development to HCL surprising, NO. And, it will not surprise me if the relationship with HCL go beyond just development, think Lenovo. We have been partners with IBM/Lotus for a very long time, and know that things just does not move fast at IBM. With Domino development moving to HCL, hopefully will move faster. However, it is really not about the technology but about the marketing and the application of the technology and this is where IBM's competitor have excelled at. With movement to hosting and the cloud, all users see is the application that they are using. Users does not know anything about the technology nor they care. We are in the world where someone throws up a cool application in the cloud, everyone starts using it and assumed it is trust worthy with their information being safe without any second thoughts until a breach. Users see marketing. So it is all about marketing and the applications that are available on the platform that will drive the future of Domino. No longer can you stay in a Business to Business mode. Regardless of what you are doing you are in the Business to Consumer mode.

Many people talk about Domino being a legacy technology. If that was the case, why are so many companies trying to duplicate its architecture including MongoDB, Couchbase, and SharePoint.  Some say that Domino do not use "modern techniques.  Well that depends on the development approach and techniques. Yes, there are features that I would like to see built into Domino. However, the flexibility of Domino allows you to use modern techniques not just for the front-end but the back-end. If you push old techniques as the way to do things, you get applications that are not modern. In our iPhora products, we have a modern JavaScript MVC front-end with a modern secure JSON-based datastore and architecture. And in our opinion of course being biased, superior to other solutions out there. It is fast and scalable. It allows us to integrate with other best of breed enterprise solutions. I will talk about that in part 2 is my current blog series next week.

Here is my technology wish list for the future of Domino:

  • 2-factor authentication, a must have.
  • Create Node C++ add-on integration into the Domino core C API.
  • Strip the Notes client down to the C API core (Notes Core) and integrate Node C++ API to allow it to connect to Electron and others front end tools.
  • Make sure the Notes Core runs on Linux.
  • Make the existing Notes Mail client and Notes application client add-ons to the Notes Core, this allows existing Notes Mail and application to continue working
  • No matter what, keep replication as part of the Notes Core, this is one of the most powerful features of Notes and Domino
  • Create a Verse add-on to the Notes Core so that we have true offline capabilities with Verse
  • Get rid of Eclipse and do not make it an option.
  • Strip Domino to the core components and let developers determine what components they want to use (Domino Core).
  • Make Java an optional add-on to the Domino Core so when new versions of Java comes along it is not a major operation to upgrade it and if you do not want Java, you do not have to install it.
  • Keep LotusScript, it has better security and control along with scheduled agents.
  • Remove Websphere from Sametime and bring it back to a Domino/Node solution.
  • Create a Domino Designer as an add-on to other development tools like Microsoft Visual Studio
  • Get rid of sorted views (it slows things down and not needed)

I figure that I will be working with Domino even when I am in my 70s.  It is the most unappreciated technology that I know of.  It is not the cool kid on the block, but it is a technology that I know is secure, scalable, flexible and reliable and yes it is modern.  It just need more love.

With this announcement, we can say we have NO plans to migrate off the Domino technology.

Saturday, August 19, 2017

All Good Things Must Come to an End and the New Hope and Direction

MWLUG 2017 was our most successful MWLUG conference we have ever had. With over 232 registered and a small number of cancellations, MWLUG 2017 was the most attended and largest conference. We had over 60 sessions, workshops and round tables with speakers from all over the United States and Europe. Over a third of the sessions were non-IBM specific and included sessions covering new topics like MongoDB and GDPR.

In tuned with our theme this year, Moving Collaboration Forward, our goal was to expand our conference this year forward towards a new direction and not just cover the usual. The world of collaboration is changing. No longer does a solution stand by itself nor does a solution just involve components from a single vendor. Companies need to chose the best of breed and integrate solutions together. Sometimes it involves solutions from many vendors. This is a direction that IBM is moving towards with Cisco and Box. At the same time we see customers moving away from the IBM stack towards competitive solutions or augmenting their IBM solutions with competitive solutions. We can not live with our head in the sand.

One of the frustrating parts of this years conference was trying to cover the many directions that IBM is going. As a small conference it is difficult to have the resources to effectively cover all the areas. Regardless, a vase majority of this year's attendees and always have been from the Domino space which has gotten smaller and smaller caused by the lack of clear direction and support for this product. This leads to the question what should we cover in the future. Should it be even more general and we evolve MWLUG to become a conference about many types of collaboration? Collaboration is not email and social communities. Collaboration as we have shown this year involves machines, processes and people. 

At the same time we heard from IBM that our favorite collaboration platform Domino may be a renewed area of focus. As we all know, many of us have been extremely frustrated over the past 5 years regarding the future of Domino.There is New Hope. 

So should we be more focused? In either case, we have decided that being a LUG conference is not appropriate and also confusing.Therefore, MWLUG 2017 was the last MWLUG conference. It has had a great run of nine years, but time has come to end MWLUG and consider starting something new. 

However, I see the same high quality sessions in the future that we all have come to expect, with great and wonderful community support from IBM Business Partners, IBM Customers, and IBM and of course BEER !!! 

Therefore, we would like to announce that MWLUG is now CollabSphere.  

CollabSphere 2018 will be in Ann Arbor, Michigan in late July early August 2018 and our local host will be Ray Bylik. So expect good and new technologies, people, and beer for next year.

Wednesday, August 16, 2017

Highlights of MWLUG 2017

This year the MWLUG conference was held at the Hilton Mark Center in Alexandria, VA. The theme for MWLUG 2017 was "Moving Collaboration Forward."  There are numerous changes to the IBM Collaboration landscape and we wanted to cover these changes, but at the same time augment our normal ICS specific sessions with sessions focused on the greater landscape of collaboration. We had sessions on non-ICS specific topics like MongoDB, IoT, and Sharepoint.

MWLUG 2017 this year comprised of 60 sessions, workshops, and round tables. We had 232 registered attendees with 211 showing up making this the largest conference we had ever had. The conference covered IBM Bluemix, IBM Cloud, IBM Connections, IBM Notes/Domino, IBM Verse, Watson Workspace, IBM/Cisco Collaboration and Connections Pink.

The IBM Domino Application development round tables were most enlightening and dynamic to put it.

Our two Platinum sponsors, panagenda and Red Pill Now both had free workshops for the attendees.  panagenda's workshop cover ApplicationInsights and Red Pill Now's workshop covered UI/UX Design.

Our social event was at the New District Brewing Company in Arlington, VA. If you left early, you would have misses one of the highlights of MWLUG 2017, the wager between Justin Hill of Prominic and Darren Duke of Simplified Technology Solutions. This wager helped raise almost $300.00 for our Community Outreach Program. The beneficiary this year was Hands on DC which help schools in the DC area. We raised a total of $1740.00 for this charity.

Thanks to our local organizer, Dave Navarre, we were fortunate to have Gale Garriott as our OSG Guest Speaker. Gale was Honor Guard at the Tomb of the Unknown Soldier, Arlington National Cemetery for 15 months. Gale was followed by Ed Brill and Warp Speed Sponsoring something that we borrowed from Theo and Engage.

This year attendees drank a staggering 59 gallons of coffee, 2 kegs of craft beer from two local breweries, over 300 pints of beer at the New District Brewing company, dried out the tap (of good beer)  at the bar at the Hilton Mark Center twice.

It was great a conference and seeing everyone in person again. As our community seems to be changing and this might been the last time we would see some of them in person.

Thank you to all our wonderful volunteers and sponsors for making MWLUG 2017 possible. It is a community event and it is our community that keeps this going.

MWLUG 2017 sponsors

Unfortunately, this is the last of MWLUG conference. Next year there will be a new name that better reflects on how we see the industry going. The format will be different but the people will hopefully be the same and more.  So for this new and tenth collaboration user group conference we are heading back to the Midwest region of the United States in Ann Arbor, Michigan.  So hopefully we will see you next year in Ann Arbor !!!

Wednesday, August 9, 2017

Phora Group Announces iPhora® integration with DocuSign

Posted August 9, 2017 By Louise Burton - Communication

Phora Group, a DocuSign Partner is pleased to announce that its iPhora application platform now integrates directly with DocuSign, the leading cloud-based provider of electronic signature services with over 200 million users in 188 countries. With the integration of DocuSign, complex document workflows and business processes requiring electronic signatures can be instantly signed, anywhere in the world, using a process that is secure and legally binding. The new integration with DocuSign utilizes iPhora Async, a secure, asynchronous, event-driven, add-on to iPhora Foundation.  iPhora Foundation's ability to manage and strictly control access to documents - or parts of documents - enables businesses to confidently sign critical and time-sensitive forms.

Phora Group will be demonstrating this new DocuSign integration capability with iPhora Foundation at the MWLUG 2017 conference, booth #8 at Alexandria, VA , August 8-10, 2017.

About DocuSign
DocuSign® is changing how business gets done by empowering more than 300,000 companies and 200 million users in 188 countries to sign, send and manage documents anytime, anywhere, on any device, with confidence.

DocuSign replaces printing, faxing, scanning and overnighting documents with the easiest, fastest, most trusted way to make every approval and decision digital.

Organizations of all sizes and industries are accelerating contracts, approvals and workflows with DocuSign’s Digital Transaction Management (DTM) platform and eSignature solution. DocuSign keeps life and business moving forward.

About Phora Group
Phora Group is a provider of secure business solutions for small to enterprise organizations.

Your company data and processes are critical to the operation of your business. Whether your organization is looking to share sensitive and proprietary information among your staff and partners or seeking to automate complex business processes, Phora Group's solutions are designed to provide your organization with a highly secure, flexible, and scalable business platform.

Our iPhora family of products and services incorporates easy to use interfaces, along with administrator administrator-friendly installation and management. iPhora solutions are designed to harmonize with your existing business operations and can be delivered as either a hosted/cloud, on-premises, or hybrid solution.

With iPhora's scalable BPM technology, extensive API, and integration tools, your solution can securely interact with third-party services and have them become an integral part of your business processes.

Sunday, August 6, 2017

Phora Group Announces iPhora® Async

Posted August 4, 2017 - By Louise Burton - Communication

Phora Group is pleased to announce iPhora Async, a secure, asynchronous, event-driven add-on to iPhora Foundation, Phora Group's primary application platform for collaboration and business process management (BPM). iPhora Async allows organizations to integrate external cloud-based services into their core business processes in a secure and controlled environment. iPhora Async extends Phora Group's commitment to providing highly secure solutions combined with efficient and innovative user interface design.

About Phora Group
Phora Group is a provider of secure business solutions for small to enterprise organizations.

Your company data and processes are critical to the operation of your business. Whether your organization is looking to share sensitive and proprietary information among your staff and partners or seeking to automate complex business processes, Phora Group's solutions are designed to provide your organization with a highly secure, flexible, and scalable business platform.

Our iPhora family of products and services incorporates easy to use interfaces, along with administrator administrator-friendly installation and management. iPhora solutions are designed to harmonize with your existing business operations and can be delivered as either a hosted/cloud, on-premises, or hybrid solution.

With iPhora's scalable BPM technology, extensive API, and integration tools, your solution can securely interact with third-party services and have them become an integral part of your business processes.

Learn More

MWLUG 2017 - Announcing MWLUG Community Outreach Program Beneficiary

As members of the IT community, we are also an important part of our local community. Through the MWLUG 2017 Community Outreach Program, we are raising money for organizations that help the local community. Each year we identify an organization in which our contribution would have the greatest impact on the local community of the host city.

Thanks to the generosity of the Hilton Mark Center, we will be raffling off a weekend stay at the Hilton Mark Center as the grand prize. Please take the opportunity to help the local community. Each raffle ticket is $10 and you can buy them at the registration desk starting Tuesday afternoon. We will announce the winners during lunch on Thursday.

Over the years we have raised over $12,000 for a number of local food banks, the Salvation Army, and Swan Song. We are pleased to announce the MWLUG 2017 Community Outreach Beneficiary is Hands on DC, a non-profit organization that organizes projects to improve the physical condition of Washington, DC public schools.

Hands on DC is an all-volunteer, nonprofit organization that organizes projects to improve the physical condition of Washington, DC public schools. We also raise funds to support local college scholarship programs and encourage greater community involvement in the public schools. Hands on DC is volunteer-founded and volunteer-led; we have no paid staff. Instead, two main bodies undertake the group's work:

The Executive Committee focuses on planning, developing, and executing the year-round events and the annual work-a-thon. To accomplish that task, the group works in committees responsible for volunteer recruitment, community outreach, public relations, fundraising and sponsorship development, information technology, special events, and coordination of school projects. Please click here for a list of Executive Committee members.

Hands on DC's governing body, the Board of Directors, provides long-term stability and policy guidance by focusing on strategic issues and organizational relationships. The Board is composed of previous event directors and other selected individuals with a long history of participation in Hands on DC. The Hands on DC Co-Directors and the Treasurer are also ex officio Board members and form the link between the Board and the Executive Committee.

MWLUG 2017 Transportation from Airport and Parking

If you are traveling to the Reagan International Airport  to the Hilton Mark Center remember there is a free shuttle.  Here is the shuttle schedule:
National Airport/Pentagon City Mall & Metro
The Hilton Alexandria Mark Center offers a complimentary shuttle service 7 days a week from 6:00 am. to 10:30 pm. The vans depart from the front of the Hotel on the hour and half hour, arrive at Pentagon City Mall/Metro (blue and yellow line) at approximately 10 minutes and 40 minutes after the hourand continue on to Ronald Reagan Washington National Airport. Our last pick up at Pentagon City at approximately 10:40 pm. The van arrives at the airport at approximately 20 minutes and 50 minutes after the hour. We pick up at Terminal A, Terminal B door 5 and Terminal C door 9. Our last pick up at Ronald Reagan Washington National Airport is at approximately 10:50 pm.

King Street King Street Metro Station
The Hilton Alexandria Mark Center offers complimentary shuttle service to King Street in Old Town Alexandria 5 days a week from 3:15 pm. until 9:15 pm. The van departs from the front of the Hotel at 15 minutes past the hour. We pick up at the shelter at the King Street Metro Taxi Stand. Our last pick up is at approximately 9:30 pm.Arrival times are approximate and are affected by traffic levels.
Daily Parking at the Hilton Mark Center for MWLUG Attendees
Parking for MWLUG attendees is $14/day. If you are staying at the hotel and driving in, the discount will be applied to your hotel bill. If you are not staying at the hotel, you will be given a discount voucher and can get them at the registration desk.

Sunday, July 30, 2017

When your Tool is a Hammer, Everything is a Nail, App Modernization - Part 1

I wrote this blog post about 9 months ago and never got around to finishing it. I felt this would be a good time to post this since MWLUG 2017 is coming up and with the Domino Application Development Roundtables at MWLUG 2017 both customers and partners have the opportunity to voice their desires on how they want IBM to move forward with IBM Domino.

As an long time IBM Business Partner and ISV focused on the IBM Domino platform, we have been quite disappointed with the progress and improvements made to IBM Domino over the past 7 years.  As other platforms improved and grew there was not much progress with our favorite platform. However, we were committed in staying with the IBM Domino platform for NOW because it provided a number of unique features that was important to us. So we ventured out to see if we could modernize IBM Domino to match what we were seeing in other platforms and create a modern application development platform but at the same time maintain and exceed the secure environment we have come to know in IBM Domino. Data security is the up-most of importance for us. 

Please Note: The blog entry is not about taking a Notes application and making it into a Web application.

Created on: 10/24/2016

Recently, Sean Cull wrote a blog entitled "ICONUK and the State of Domino Web Development" discussing his concerns and his future with Domino as a platform. I agree with many of the things that he said. He also mentioned what new features that he wants to see in Domino for him to continue supporting Domino as platform for his business.  

According to the latest information, IBM will be announcing a new application modernization strategy in the near future. I have no idea what that is and when this will happen. Only time to tell on whether IBM addresses Sean's requests.

This blog entry is not about what IBM is doing or not doing. I hope IBM finally starts adding the support and features that they promised and will seriously improve and support Domino. It is not just the platform at stake, but for many ICS community members their livelihood. 

Rather than laboring on this point, I wanted to address the mindset of developing a Domino application and how that needs to change regardless of whether you are planning to continue working with Domino or move on to a different platform.

Many will disagree with what I am going to say, but please hear me out. One of the things that Sean mention was moving the NSF to a Cloudant/CouchDB style database.
A Cloudant / CouchDB style database in the XPages Core product ( on premises ) that leverages the existing Java APIs ( @dblookup etc ) and has new ones so that we could develop performance applications with larger data sets, faceted filtering and dynamic charts ( instead of cached ones ).

In my opinion, even if IBM does switch the XPages core to use a NoSQL database like Cloudant or CouchDB, there will still be issues.  It is not the NSF that is the issue. The heart of one of my biggest issues with Domino is the tightly integration between form and data in processing and storing data. This integration was a huge advantage when Notes started.  It allowed developers and power users to quickly create applications. However, the integration of form and data creates a real problem with a significant number of drawbacks. 

This fundamental design approach is wrong for modern applications forcing fit into the format, you need to take a pragmatic view and take a look on how other platforms are delivering Web applications.

For example, sortable view columns. This drastically increases view indices and slows down searches and the operation of Domino. It totally unnecessary for Web applications, but yet in XPages it is there. If you followed how IBM wanted you to use XPages, you will have the same issues and you are limiting yourself. Therefore, you have a hammer and you are force fitting it as a catch all tool.

This leads to the title of this blog.  I am a big fan of bucking the trend and thinking out of the box.

More than 5 years ago we stepped back and looked at how things were progressing in XPages, and we decided that it was not for us. It bounded the form with the data and then embedded Dojo in a way that made it difficult to update and utilize the newer tools that Dojo had to offer. Thus in eyes of Domino developers, Dojo was crappy and unmanageable. Rather than a simple replacement of Dojo with a newer version, the update process is extremely difficult. This tightly coupled approach does not allow easy updates or improvements. We had already experimented with separating the data with the form when we were developing Notes applications using our Integrated Business Framework.

Regardless if you are dedicated to a full-stack approach or a RESTful API/Javascript MVC approach you need to remove yourself away from the form/data paradigm. It is important to totally separate the data and form to make the components of your application as flexible as possible.  We decided upon a RESTful JSON API framework with a client-based MVC framework. This allowed the back-end code to be client independent. The client could be a Web, mobile, or even headless. This front-end and back-end separation allows each developer to focus on their specialty and skills with front-end issues not affecting the back-end code and vice versus.

Using Domino with a JavaScript MVC framework is nothing new. Many are currently creating applications using JavaScript frameworks like Angular and React with Domino. However, the data structure of a Domino document though extremely powerful and secure was designed for the Notes client not for a web client.

Most newer NoSQL databases utilize JSON as the data structure for storage.  By storing your data as JSON, the data can be delivered to the JavaScript MVC framework that it easily understand. We decide that a JSON-based data store was the way to go.

We could have abandoned Domino and go with newer JSON document NoSQL databases like CouchDB or MongoDB, but then we would lose many features and functionalities that are not found in other technologies.

So how can we transform the NSF database from a form/data document container to become a JSON-based document container similar to CouchDB / MongoDB while taking advantage of NSF features including replication, clustering, record and field security, and many other things.

First, we had to review the advantages and disadvantages of Domino/NSF and determine how we would utilize the advantages while mitigating the disadvantages. Yes, there are limitations to the NSF format like the 32K field, but that can easily be resolved. Tim Tripcony addressed this many years ago, NSF field size limits no longer matter.  Yes, the indexing is not the fastest. and yes there are a host of other issues, but we were able to get around the issues by taking a stepping back and identifying the strengths and weakness of Domino and determine the best approach in utilizing NSF as a JSON document NoSQL data store.

So we started with the following design criteria for our new database structure:

General Requirements

  • JSON key/value document data storage
  • Master-Master Replication
  • Clustering
  • High performance JSON parse.
  • ACL and permission management all the way from document records to sub-field level control
  • Total separation between form and data, datastore (NSF Database) only stores data
  • Like CouchDB and other modern NoSQL database there should only be one standard data container type that holds the record of any document regardless of its functionality or purpose.
  • All data stored for any record needs to be stored as JSON objects and portable to other platforms like CouchDB and MongoDB
  • Absolutely no user regardless of their role have any direct access to any data record
  • All data request is controlled by a gatekeeper that determines dynamically your access rights and what information you have access to

Domino Specific Requirements

  • Automatic management of reader/author fields to control data access to individual records and individual key/value
  • From the developers POV, a NSF database must be a blackbox.
  • A datastore contains a fixed number of views used to access data, developers can not add additional views without a significant reason to do so
  • Absolutely, no sorted views are allowed. (Sorted view kills performance by significantly increase view indexes and serves no purpose)

So based on these requirements, we decided to transform Domino into a JSON-based document database which forms the basis of our iPhora platform.  

Next time, Part 2.

Thursday, July 20, 2017

MWLUG 2017 - Domino Application Development Roundtable

IBM Domino is nearing its 30th anniversary and yet it is still one of the most innovative software products on the market with features still not found in other solutions. Want to discuss with IBM your thoughts on how we can continue to make Domino one of the most relevant product for the next 30 years? We are please to announce that MWLUG 2017 will be hosting two Domino Application Development Roundtables on Wednesday August 9, 2017. 

Each roundtable session will be 45 minutes. There is one for IBM customers and one for IBM Business Partners.

Share your thoughts regarding the future directions of IBM Domino with Gary Kearney and Barry Rosen and their IBM Domino team at these interactive sessions.

Registration for MWLUG 2017 is open. With all the new innovations that IBM and IBM Business Partners are creating with our favorite technologies, our theme for MWLUG 2017 is "Moving Collaboration Forward."

Meet Ytria, our Gold Sponsor for MWLUG 2017. Stop by their booth #19 when you are at MWLUG 2017


We are committed to providing software tools that facilitate the job of IBM Notes and Domino administrators and developers to create and support a productive and collaborative environment. 

Improve how you manage everything from servers to documents, ACLs, agents, application design elements, etc. Our suite of powerful tools offers you global views, mass modification, analytics and reporting functions, and numerous other built-in features to give you complete control over all the elements of your domain.

Whether you are an individual consultant or a team member in a global organization, contact us today to learn how you can accomplish your tasks faster and better. Founded in 1999, Ytria is an IBM Advanced Business Partner and has a client base in over 70 countries worldwide. 

Thursday, July 13, 2017

MWLUG 2017 Agenda and the Future

The agenda for MWLUG 2017 is now available online, 

MWLUG 2017 includes 59 technical and business sessions, workshops, and roundtable discussions presented by some of the best speakers in the ICS community including more than 20 IBM Champions. This is the most comprehensive conference we have ever had. MWLUG 2017 covers a variety of important topics including:

  • Big Data and Graphic Databases
  • Connections Pink
  • Data Management and Security
  • IBM Collaboration with Cisco
  • IBM Cloud
  • IBM Domino and IBM Connections Administration
  • IBM Verse
  • Innovation and Integration with IBM Domino and IBM Connections
  • Java
  • MongoDB
  • Node
  • UX and UI Design
  • Watson Workspace
  • Web Security
  • Web Accessibility
  • ... and much more
So don't miss this unique one time opportunity to learn, network and extend your commitment and interest in the ICS community. There is still time to register for MWLUG 2017.

Meet panagenda, our Platinum Sponsor for MWLUG 2017 and long time supporter of MWLUG. Stop by booth #3 when you are at MWLUG 2017

Thursday, June 29, 2017

MWLUG 2017 Sessions and More

MWLUG 2017 sessions are now available on the MWLUG 2017 web site,

This year we have a great line up of both new and previous speakers with sessions covering the gambit of IBM solutions including IBM Domino, IBM Notes, IBM Verse/VOP, IBM Connections, IBM Cloud, and Watson Workspace along with IBM Pink. In tuned with our theme, "Moving Collaboration Forward" we have many sessions covering some of the latest technologies and how to use those technologies with the IBM portfolio of products including:
  • Angular
  • Docker
  • MongoDB
  • Node
  • Vue.js
  • Web Security and Hacking
There are more sessions coming.  There is still time to register for this unique user group event. So get registered as soon as you can since this event is limited to a specific number of attendees.

Learn how our Gold Sponsor Cisco is working with IBM to create a first class collaboration experience. Stop by their booth when you are at MWLUG 2017

Thursday, June 8, 2017

IBM Domino Application Transformation Jumpstart Workshop at MWLUG 2017 on Tuesday, August 8, 2017

Announcing one of two workshops at MWLUG 2017. Our Platinum Sponsor, panagenda is having a workshop on Tuesday morning on August 8, 2017 from 9:30 AM to 1:30 PM, "IBM Domino Application Transformation Jumpstart". This free workshop covers a number of important topics including ApplicationInsights which is now shipped with Domino. To register for this workshop go to:

Dave Navarre Welcomes you to MWLUG 2017 and Washington DC

We are starting process of reviewing all the abstract submissions for MWLUG 2017.  We received close to 80 submissions. Thank you to all the submitters for taking the time to submit their abstracts.

I would like to introduce Dave Navarre, our local representative from the Washington DC area.  He would like to welcome you to his town.

Friday, May 26, 2017

New Presentation Track for MWLUG 2017, Watson Work

For MWLUG 2017 we have a new presentation track, Watson Work.  This track will include presentations on Watson Workspace and Work Services.  So stay tuned for more information on many new things coming to MWLUG 2017

MWLUG 2017 Abstract Submission deadline extended to June 2, 2017, 6:00 pm CST

Due to the holidays and request from a number of potential speakers, abstract submission for MWLUG 2017 has been extended to June 2, 2017, 6:00 PM CST.  So if you are planning to submit an abstract for MWLUG 2017, you have another extra week.  But don't wait to the last minute !!!

To submit go to:

Monday, May 22, 2017

Abstract Submission for MWLUG 2017 closes this Friday, May 26, 2017

Abstract Submission for MWLUG 2017 closes this Friday, May 26, 2017 at 5:00 PM CDT. So get your abstracts in as soon as you can.

Are you new to speaking? Well here is your chance to speak at a conference on a topic that you know well. Every year we reserve a number of speaking slots for new speakers. So take this unique opportunity to speak at a MWLUG conference and submit an abstract.

To submit your abstract go to:

We look forward to getting everyone's abstract.

Sunday, May 14, 2017

Engage 2017 and Presentation - Unleash the Power of REST APIs with Dojo

At the beginning of this week, I was fortunate enough to attend Engage 2017. This was the first time that I had not only presented at Engage, but also attended Engage.  Theo does an amazing job in creating this premier event.  The turnout for my session, "Unleash the Power of REST APIs with Dojo"  was more than I expected.

It has been awhile since I was in Europe.  So I took a couple days off before Engage to visit Amsterdam which I have never been to and a couple days after Engage to visit Belgium.  Amsterdam, though it has a lot of history, I found it too much of a tourist trap.  After the first day, I wandered off to the outskirt of the city where there were less tourist and had great time.  I got the Amsterdam Card and got into most of the museums and places at no additional cost.  I was able to ride the metro and trams with this card at no extra charge.  However, it does not work for some buses.  The lockers in Amsterdam station are great for tourist to leave their luggage while you tour the city.  Just make sure your credit card works with the lockers, before you close it.  Also bring coins with you because water closets ( rest rooms ) are not free in the train station.

Antwerp, Belgium is a beautiful European city.  Rather than walking throughout the city, I rented a bike for the two days after Engage and biked about 140 km mostly in the countryside where I found it to be more interesting.  My adventure in Antwerpen was more of getting lost and trying to get back to the Cyclant Bike store where I rented the bike from before they close each day. Jona and Nicolas are great.  I would recommend them if you need a bike for the day.  They are located in the Antwerp Train Station.

I have enclosed a link to my presentation plus the source code for all the demos.

Tuesday, May 2, 2017

MWLUG 2017, "Moving Collaboration Forward", The New is Old and the Old is New

MWLUG 2017 mark the ninth annual ICS user group conference that we as a community are coming together to network and learn for each other.  It will be held at the beautiful Hilton Mark Center in Alexandria, VA near Washington DC from August 8 - 10, 2017. Like always we are planning many activities at MWLUG.

Unlike previous years, MWLUG 2017 will be held from Tuesday through Thursday rather than the previous years where the conference was held from Wednesday until Friday.  This was one of the feedback that we receive last year.

Our ICS community is in a state of transition as the market is changing and new technologies are introduced not just by IBM but from open source environment and other technology vendors.  No one vendor can silo themselves within their own technology.  Users are looking for the best breed.  IBM has answered this call with new solutions derived from open source technology like Docker, MongoDB, and Node.

However as the same time, these new technologies also remaking existing our ICS technologies like Domino to become innovative solutions for organizations and allow them to improve and grow.

In tune with the MWLUG 2017 theme "Moving Collaboration Forward", we are planning sessions this year to include new IBM technologies like:

  • IBM Pink Connections
  • Watson Workspace
in addition to existing IBM technologies:
  • IBM Cloud
  • IBM Connections
  • IBM Domino
  • IBM Sametime
  • IBM Traveler
  • IBM Verse
and open source technologies that are enhancing and are the key to the future success of  both existing and newer ICS solutions:
  • Angular
  • Docker
  • Graph
  • Node
  • Linux
  • Loopback
  • MongoDB
  • MVC
  • ReactJS
  • Web Security

So come join us and share your knowledge, registration is open. Take the time to submit your abstract. Don't be afraid. We are always open to new speakers. Abstract submission ends on Friday, May 26, 2017.


Submit your abstract:

Friday, April 28, 2017

Unleash the Power of REST APIs with Dojo, Engage 2017, May 8-9, 2017

For the first time, I will be attending Engage 2017 in Antwerp, Belgium.  It has been awhile since I have been in Europe and it will be nice to take a few days to visit Amsterdam and Belgium and then see many friends and colleagues at Engage.  Phora Group is a Bronze Sponsor and I will be speaking on my favorite subject, Dojo/MVC/REST.

My presentation is entitled "Unleash the Power of REST APIs with Dojo"  I have 22 demos that walks attendees through the process of creating a number of commonly used controllers, implementing data binding and react in Dojo. Then, we will combine all what we have learned with IBM Domino REST services and other open source projects to create a dynamic interface that we would not expect with Domino and Dojo.

Theo mentioned that there is still a few available attendee slots left.  So take the opportunity to come to Engage 2017, learn and network.  See everyone soon.

Monday, April 24, 2017

Data Binding and React with Dojo

If you have developed with XPages, this might have been your first experience with the Dojo framework.  However, for many the experience have been frustrating and negative. Unfortunately, IBM's implementation of Dojo into XPages was limited and really restricted the potential of Dojo. It never implemented the newer AMD design approach nor the many of the capabilities of Dojo.

Many developers who went towards the JavaScript Framework/REST approach with Domino implemented Angular, React, and even Vue for interfacing to the Domino server and bypassed frameworks like Dojo.  One of the big buzzwords for these newer frameworks is react and single/two-way data binding.

As a designer and developer who uses Dojo to create UIs  that work with RESTful APIs /Domino, it is frustrating to see all this attention to Angular and React when all the cool things they are known for has been in Dojo for years and in many ways before these frameworks.

Recently, I presented a session called "Unleash the Power of Dojo" where I showed that there are four different ways of doing data binding and reacts with Dojo including:

  • Observables
  • On/emit
  • Topic/subscribe
  • Watch
With four different ways, Dojo provides developer more options on how to implement data binding and reaction to better match their needs.

As part of the presentation, I walked attendees through the process of creating Dojo controllers in combination with Bootstrap, Fontawesome, ChartJS and other open source projects to create dynamic and reactive interfaces.  I have enclosed the presentation and demo source code here which includes the Bootstrap, Dojo, ChartJS, and Fontswesome distribution files which are owned by their respective owners and are licensed accordingly.  Included in the demos are a number of examples on how to use Dojo to perform one and two way data-binding which was the craze when developers were demonstrating Angular, plus react with Charts and also data-binding with data models.  

I will be presenting a more comprehensive session called "Unleash the Power of REST APIs with Dojo" at the Engage Conference in Belgium May 8-9, 2017, Hope to see you there.



Thursday, January 26, 2017

Creating Beauty with UglifyJS

For the past five years, we have been using a Notes-client base tool called iPhora Application Designer, that we created to build our iPhora applications written for our Dojo-based iPhora-MVC platform. This tool is written entirely in LotusScript and @Formula language.

With this tool we compile the  XML/JS view code into pure JavaScript onto a targeted application server all without opening Domino Designer.  Rarely do we venture into using Domino Designer. We only use Domino Designer to enhance our tool or fix a bug. Since this tool is Notes-client based, a key advantage of this tool is the ability to replicate every day our code to a backup server and when we are at home we can replicate to our computer at home.

Currently, our JavaScript MVC platform has over a 1,000,000 lines of Dojo/Javascript code and it grows every day as we add new widgets and modules. Majority of the code is automatically generated by our iPhora Application Designer. Can not imagine generating the code manually.

As part of the compilation process, we created a code HTML/JS minimifier in LotusScript to compress the code.  However, it never really worked the way that we wanted it to and it could not obfuscate the code. So we decide to look elsewhere for help.

There are many JS minimifier out there, but we wanted the ability to integrate it with our development process and also our iPhora Application Designer.  So we looked into integrating tools that we can run using the LotusScript Shell command to process the JavaScript.

After researching different alternatives, we decided to tried a node-based solution called UglifyJS which has a command line interface which we can invoke using the LotusScript Shell command.

First, you need to download and install the latest version of Node.  Make sure that you include the NPM manager during the installation process.

After installing node and npm, open a command line window and install uglifyJS from the NPM depository using the following command line.

npm install uglify-js -g

Now that you have installed UglifyJS, you need to confirm that it is working correctly. Create a simple JavaScript file called test.js and run UglifyJS using the following command.

uglifyjs test.js -c -m -o test.min.js

-c : compress the code
-m : mangle the code
-o : declare that there is output file with the following name

If the resulting test.min.js is a compressed mangled version of test.js then it is working.  

We could manually create files and then uglify them one at a time and then uploaded them to the server, but that is time consuming and laborious. Automation is key to reducing the time that you need to spend coding. So we needed to figure out a way to automate the process.

Our XML/JS code are stored in Notes Rich-text fields. When the code is compiled, the generated compiled code is pushed into the targeted Domino server using good old DXL. 

In order to minimify the code using UglifyJS we needed to change our process. Rather than compressing the code using the LotusScript and then pushing it up to the server, we needed a way to get it into the format that the Node-based uglifyJS can use, compress and mangle the code, read the code and push it into the server all in one single operation.  Show below is the process and code that we created to achieve our goal.

Read JavaScript Code from Rich Text

To get the code from the rich-text field using "GetUnformattedText()" Lotusscript rich text item method.

Set ritem = doc.GetFirstItem(fieldName)
If Not(ritem Is Nothing) Then
code = ritem.GetUnformattedText()
code = ""
end if
fileName = tempGetNotesDirectory() & |\| & |input.js|
Dim fn%
fn = FreeFile
Open fileName For Output As fn
Print #fn,code
Close fn

Create Batch File to Process the JavaScript

cmdLine = |uglifyjs input.js -c -m -o output.js|

Create a batch file that has the command to run UglifyJS, UglifyJS.bat

cmdLine = |uglifyjs input.js -c -m -o output.js|

fileName = tempGetNotesDirectory() & |\| & |UglifyJS.bat|

Dim fn%

fn = FreeFile
Open fileName For Output As fn
Print #fn,cmdLine
Close fn

Run the batch using the LotusScript Shell command to create the file "output.js"

batchInstance = Shell("UglifyJS.bat",0);

The problem that you have running a batch file using Shell is that there is no way to know if the process has been completed using LotusScript. However, an easy way to check if the process is done is determine if the file output.js has been created.  If not, wait and check again. The following code allows you to query the file system for completion. The uglifying process is very fast, but a large JavaScript file may take longer. The code waits for 1 second and checks the file system. It tried this 10 times and if it can't find it the entire process is killed off.

Function runBatch() as Boolean
Dim tempdir As String
Dim i As Integer
i = 0
On Error GoTo ProcessError
batchInstance = Shell(tempdir &"\node_batch.bat", 6)
Do While i < 10
If Dir$("output.js",0) <> "" Then
Exit Do
End If
i = i + 1
If i > 10 Then
runBatch = false ' process timeout
runBatch = true  ' process ran successful
End if

End Function

After the process completes we need to read the output.js file so that we can push it up to the Domino server.

Function readJSFile() As String
Dim tempdir As String
Dim fileName As String
Dim uglifiedCode As String
On Error GoTo ProcessError
tempdir = tempGetNotesDirectory()
fileName = tempdir & |\output.js|
Dim fn%
fn = FreeFile
Open fileName For Input As fn
uglifiedCode = Input(LOF(fn), fn)
Close fn
readJSFile = uglifiedCode
End Function

Using our DXL-based methods we stream the compressed and mangled file up to the Domino server.

There is one more step that is required. We need to delete all the files that we created in the temporary directory so that we can process another file. If not, the process can not be repeated since there will always be a output.js file.

Function removeTempFiles() as Boolean
tempdir = tempGetNotesDirectory()
kill tempdir & |\uglifyjs.bat|
kill tempdir & |\input.js|
kill tempdir & |\output.js|
End Function

tempGetNotesDirectory(), function to find the Notes temporary directory

The inclusion of UglifyJS to our iPhora Application Designer has been so successful that we have added other Node-based developer tools to it using the same method to connect our Notes-based tool to new and modern development tools. So far we have added CSSLint and Minifier to cleanup and compress our CSS file. We are looking for other Node modules that we can include to help us automatic the development and testing process. There are thousands of npm modules that run on Node. There are many to choose from.

If you are using the Domino Designer, you should look at this Node-based tools to add new capabilities in your developer's toolbox. How that can be done is beyond my skills.