4 September 2015 Friday

BlackBerry to Acquire Good Technology

Hi there,

some sources claim that BlackBerry is to acquire Good Technology, a competitor in the MDM space:

http://seekingalpha.com/pr/14590236-blackberry-to-acquire-good-technology

If this is true, I think this is a great for BBRY to make its way into a leading security software company.
Smart move, what do you think ?

And for all of you out their that keep saying it, no, BBRY is not dead yet !

cheers,

Heiko.
Heiko Voigt   |   4 September 2015 15:24:14   |    BlackBerry  MDM    |   Comments [0]

2 September 2015 Wednesday

New IMPRISIS Tools coming this fall

Hello,

so after some quiet time due to personal reasons, we will ramp up our next phase of integration tools between red and blue so to speak, meaning Adobe Sites and the IBM software stack.

In September, we will launch two new products, one is called IMPRISIS WCA - it connects IBM WebSphere Commerce and Adobe Sites, integrating into the Adobe Commerce Framework but also adding a lot more of the unique features of IBM WebSphere Commerce on the API level. The official announcement will be coming in shortly.
As well in September, IMPRISIS DA, the integration of Adobe Sites and IBM Domino will roll out in version one, which includes mainly Mail and Calendar integration scenarios. Stay tuned for more infos on this as well. Here's a Screenshot of the current Calendar implementation using the DHTMLX-Scheduler.

Image:New IMPRISIS Tools coming this fall

On top of that, we are working on more integration components like IMPRISIS XA which is supposed to be the sibling of IMPRISIS DA in the Microsoft space for Mail and Calendar purposes. We are also working on an integration of IBM Connections with Liferay Portal that utilizes the API functionality and the SSO components already built for IMPRISIS CA and IMPRISIS STS.

Last but not least, you can see and touch the products in a couple of events in the fall. We will be presenting at:
We are looking forward to see you on at least one of these events !

regards,

Heiko.
Heiko Voigt   |   2 September 2015 11:14:31   |    SIT  xpages  adobe  sites  connections  commerce    |   Comments [0]

Hi,

once again, we have the honor to present at the AEM Hub Conference 2015 in London in September. We will be talking about building a social intranet using Adobe AEM and 3rd party products:

aemhub_2015_v7.png style=

Session Title: How to build a Social Intranet using Adobe AEM and existing 3rd party products.

Session Option: Breakout session

Session Description

In this session, we will demonstrate how it is possible to build a unique experience for a social intranet that utilizes existing third party components like MS Exchange / IBM Domino and IBM Connections for social functionality and personal information to become an integral part of a community driven intranet.

Our social intranet features personal  activity streams, email and calendaring, file sharing with peers and partners, discussions, blogs and wikis, individual team and topic communities as well as basic social functionality like tagging, liking, @mentions and recommendations combined with social analytics. All components are served up through Adobe AEM and can be customized to a corporate identity and in features and functions. We will demonstrate the features live on stage and talk about sample projects and the code to build a social intranet.

We are really looking forward to this excellent event, thanks to the Cognifide Crew to make this happen ! See you there !

Check out https://www.harbour-light.com !

Heiko.

Heiko Voigt   |   3 July 2015 11:12:21   |    AEM  IMPRISIS    |    [0]

... One from Microsoft, one from Adobe and one from IBM. Same talk, all of them. The cloud is a delivery model that implies having a business case that needs it, not vice versa.
Image:Met three of those guys last week...
Heiko Voigt   |   28 May 2015 12:00:00   |    cloud  dilbert  consultants    |    [0]

19 May 2015 Tuesday

XPages: Create Code39 Barcodes

Hi Folks,

a couple of weeks back a customers asked me how to do Barcodes in XPages as they needed them in their application to be printed to a document scanning system. After looking into the application, I realized that they had been using a Code39 barcode font in Notes previously to create barcodes in the Notes Client. So I went looking for an alternative for XPages and eventually came across Code39.js, a small JavaScript library that was able to do the trick. The JS library can be found here: http://www.lutanho.net/

For a quick sample, I just created a new CSJS library in an empty database and pasted the code from above into it. Then, additionally, I had to add the two gifs to the images resources:

Image:XPages: Create Code39 Barcodes

Both files are part of the zip package, you can download from the link above.

My sample XPage has an Input Control to enter text and a Script Block to show the code39 of the text the user enters:

Image:XPages: Create Code39 Barcodes

Here's the sample Code of the XPage:


<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">

     <xp:this.resources>
             <xp:script src="/code39.js" clientSide="true"></xp:script>
     </xp:this.resources>
     <xp:panel id="outerPanel">
             <xp:table>
                     <xp:tr>
                             <xp:td>
                                     <xp:label value="Have a say !" id="inputLabel"></xp:label>
                             </xp:td>
                             <xp:td>
                                     <xp:inputText id="inputToCode39" defaultValue="Something to say" value="#{sessionScope.MyInput}"></xp:inputText>
                             </xp:td>
                             <xp:td>
                                     <xp:button value="Refresh !" id="button1">
                                             <xp:eventHandler event="onclick" submit="true"
                                                     refreshMode="complete">
                                             </xp:eventHandler></xp:button></xp:td>
                     </xp:tr>
                     <xp:tr>
                             <xp:td>
                                     <xp:label value="Your say in Code39"
                                             id="labelCode39">
                                     </xp:label>
                             </xp:td>
                             <xp:td>
                                     
                                     <xp:panel id="outputPanel">
                                             <xp:scriptBlock id="scriptBlockCode39">
                                                     <xp:this.value><![CDATA[var text_entered = document.getElementById("#{id:inputToCode39}").value;
if(text_entered==null) {
     text_exntered = "Please enter some text !";
}

Code39("","",60,8,text_entered,2);
]]></xp:this.value>
                                             </xp:scriptBlock></xp:panel></xp:td>
                             <xp:td></xp:td>
                     </xp:tr>
             </xp:table>
     </xp:panel>
     </xp:view>


This is a very simple example to do the job. If you want to try out the live sample - here it is:  

https://sitlux02.sit.de/Samples/Code39.nsf/ShowCode39.xsp

regards, Heiko.
Heiko Voigt   |   19 May 2015 14:00:00   |    xpages  javascript  domino  barcode    |   Comments [4]

Hi again,

for the last couple of months my guys from SIT GmbH and Harbour Light have been working on an integration solution for Domino E-Mail into Adobe AEM. The Use Case is to enable E-Mail for intranet solutions of our customers, based on Adobe AEM. Our goal was to create an E-Mail Framework that would be extendible to other platforms (talking 'bout you, Exchange!) and that would be able to utilize a flexible UI to get adapted to the look and feel of our customers implementations easily.
And - we have done just that. The next screenshots show you a lightweight E-Mail Client that can be customized to any functional needs and esthetical requirements in a specific customer situation.

This Screenshot shows the inbox and the folder structure we have implemented.

Image:The voyage of IMPRISIS continues - IMPRISIS DA integrates Domino Mail with Adobe AEM

We also have fulltext search working:

Image:The voyage of IMPRISIS continues - IMPRISIS DA integrates Domino Mail with Adobe AEM

And finally, this is what an email can look like using IMPRISIS DA.

Image:The voyage of IMPRISIS continues - IMPRISIS DA integrates Domino Mail with Adobe AEM

In these Screen shots, we use a bootstrap theme as our basis for the UI but this can be changed to whatever framework is necessary. We deliver a JavaScript API that exposes the high-level functionality of the backend email services to the AEM components so any AEM component developer can alter the components or can create his/her own ones based on our APIs. The API also abstracts Single Sign On (SSO) headaches from the component developer as SSO can be configured centrally on an AEM instance using our IMPRISIS SSO Components and if needed our Secure Token Service IMPRISIS STS.

Right now, we are in beta with the E-Mail Services of IMPRISIS DA, next are Calendaring Services. Stay tuned !

Links & Resources:

[1] SIT GmbH
[2] Harbour Light Software Development Ltd.
Heiko Voigt   |   5 May 2015 14:15:00   |    Adobe  AEM  Domino  IMPRISIS    |   Comments [0]

Hi there,

it's been a while since my last coding post but over the past rainy weekend, I had a bit of time on my hands to build an XPages App that shows marker data coming from a Domino Database as Markers on an interactive map. I was looking for an open source solution, so after some research, I came across the beautiful JavaScript library leaflet.js (see resources [1]) and a very well done Tutorial on it (see Resources [2]). Leaflet is using OpenStreetMap data (Resources [3]), so you don't have to rely on Google or any other data provider and you can (and should) support this great project directly !

Attached, you will find a sample database that outputs something like this: https://sitlux02.sit.de/XPMapSample.nsf/Map.xsp

Image:XPages: Interactive Maps using OpentStreetMap and Leaflet.js

The Use Case:


In this sample, I want to show points of interest on a map, These are stored as Notes Documents in the database, containing a tilte, a type definition (Point of Interest or Accommodation) a description, longitude and latitude and a link to the specific url for the POI.

How it has been built:


A) The Bean:


To serve the data to leaflet, I use JSON as the data format of choice. The JSON data gets created by a request scope bean within the database. I don't use the built in rest services because I want to have full control of the JSON data that gets created. The bean exposes a method called getMarkerData() that will go into a view in the database, reads the entries and spits out JSON. To test the output, there's also an XAgent in the database (getMarkerData.xsp) that will return the marker data. Of course I have to bring the definitions into faces-config.xml.

<?xml version="1.0" encoding="UTF-8"?>
<faces-config>
<managed-bean id="Markerdata">
<managed-bean-name>MarkerData</managed-bean-name>
<managed-bean-class>com.harbourlight.beans.MarkerData</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<!--AUTOGEN-START-BUILDER: Automatically generated by IBM Domino Designer. Do not modify.-->
<!--AUTOGEN-END-BUILDER: End of automatically generated section-->
</faces-config>

As I use the ExtLib, I also have to check it in the xsp.properties.The source code of the bean can be found in the Code/Java section using Domino Designer.

B) The UI:


The UI is rendered in the Xpage called "Map.xsp". It loads the leaflet.js library via...

<xp:headTag tagName="script">
    <xp:this.attributes>
            <xp:parameter name="type" value="text/javascript" />
            <xp:parameter name="src" value="leaflet.js" />
    </xp:this.attributes>
</xp:headTag>

...to be loaded before Dojo kicks in and creates a mess. Thanks for that great tipp to Sven Hasselbach (see Resources [4]). The leaflet.js is stored as a file resource in the database.
Then, I also have to load the leaflet.css and my own client side javascript library to glue everything together:


<xp:styleSheet href="/leaflet.css"></xp:styleSheet>
<xp:script src="/leafletembedd.js" clientSide="true"></xp:script>


The rendering of the map is done using one DIV -Tag in the Xpage:


<div id="map" style="width: 99%; height: 600px"></div>


To talk to our Bean, I also injected a JSON-Rest-Service-Object:


<xe:jsonRpcService id="jsonRpcService1"
            serviceName="fetchMarkerData">
            <xe:this.methods>
                    <xe:remoteMethod name="getMarkerData">
                            <xe:this.script><![CDATA[var liste = MarkerData.getMarkerData();
return liste;]]></xe:this.script>
                    </xe:remoteMethod>
            </xe:this.methods>
    </xe:jsonRpcService>


This basically exposes the getMarkerData()-Method of the bean to client side javascript.

I want to show different markers for different types of POIs  on the map. If it's a real POI it should show a red marker, if it's a motel or other accommodation type, it will show a blue marker. To do that, I can define Icon classes for leaflet, and I do so in the leafletembed.js CSJS-Library.

var
blueIcon = L.icon({
iconUrl: 'marker-icon.png',
shadowUrl: 'marker-shadow.png',

iconSize:     [19, 48], // size of the icon
shadowSize:   [25, 32], // size of the shadow
iconAnchor:   [11, 47], // point of the icon which will correspond to marker's location
shadowAnchor: [4, 32],  // the same for the shadow
popupAnchor:  [-3, -76] // point from which the popup should open relative to the iconAnchor
});

var
redIcon = L.icon({
iconUrl: 'marker-icon-red.png',
shadowUrl: 'marker-shadow.png',

iconSize:     [19, 48], // size of the icon
shadowSize:   [25, 32], // size of the shadow
iconAnchor:   [11, 47], // point of the icon which will correspond to marker's location
shadowAnchor: [4, 32],  // the same for the shadow
popupAnchor:  [-3, -76] // point from which the popup should open relative to the iconAnchor
});

As you can see, the Icons are PNG files (see image resources in the sample database). If you have more than two, you would create a base class for the icons and extend from that to keep the code more sustainable of course.

The library has a function called initMap that will get called in the onClientLoad event of Maps.xsp. InitMap also defines the starting point for the map and the zoom level:


// start the map in Shelburne, Nova Scotia
map.setView(new L.LatLng(43.7612695, -65.3226),10);


Then, I grab our marker data from Domino using the function "askForPlots". In the function askForPlots, I call the JSON Rest Services using a callback:


// request the marker info
markerList = fetchMarkerData.getMarkerData();
markerList.addCallback(function(back){


and add the markers where I distinguish between the icon color, based of a value in the JSON data coming from the service. I also attach a pop up to each of the markers showing the title and the url in this sample.

...
var
typ = plotlist[i].Type;
console.log(typ);
var
plotmark;
if
(typ==("POI")) {
    console.log("--> POI !");
    plotmark = new L.Marker(plotll,{icon:redIcon});
} else {
    console.log("--> Acommodation !")
    plotmark = new L.Marker(plotll,{icon:blueIcon});
}                                }
...

C) Summary:


As always - here's my default disclaimer:

Yes, there are a ton of ways to do this more efficiently. My code may be bloated or inefficient for some of you out there. My goal is to get the idea across - go ahead and improve the sample and send it back to me at hvoigt AT sit.de, I'm happy to learn.

Now the real summary.


It took me three hours from scratch to get this sample up and running. I'm impressed by leaflet.js that IMHO is a great tool to work with as well as by the flexibility of the XPages runtime to really let you do new stuff in a fast and easy way. Everytime I am able to do something like this, I simply don't get, why IBM does not recognize this gem in its portfolio and instead let's us create crippled widgets for a crippled app platform like Connections.

This sample is a first start on how to work with maps but it can easily be extended on all ends. The backing bean gives you for example the opportunity to have only the design of the app in a publicly accessible database and grab the data from another secured database using sessionAsSigner functionality.
Leaflet offers a ton of features, APIs and Plugins to create interactive maps for various use cases. What I personally like is that it does not bring any other dependency to the table e.g. you don't have to fire up jQuery to make use of it. The CSJS Lib gives you some hints on how to attach to events on the map - with that, you can pass values to the service bean and get the marker data for the specific region in the map only. You can extend the marker icons and the content in the pop up and the look and feel by altering the CSS.... . So, lot's of potential.

That's it for today folks, have fun !

Resources and Links:


[1]http://leafletjs.com
[2]https://switch2osm.org/using-tiles/getting-started-with-leaflet
[3]http://www.openstreetmap.org
[4]http://hasselba.ch/blog/?p=1181
Heiko Voigt   |   4 May 2015 11:37:00   |    xpages  javascript  OpenStreetMap  Leaflet    |   Comments [2]

22 April 2015 Wednesday

The new me after Social Connections 8

Hi there,

first of all a big "Thank you !" to the team around Social Connections 8 last week in Boston. It was a great event, great talks and a great crowd in Boston ! We had a good audience for our speech about using IBM Connections as a social business middleware and I will always remember the lively discussions with Phil Riand at the party on thursday night.

As a speakers gift, we have been given caricatures of ourselves and I have to say I like mine, so meet the new me below:

Image:The new me after Social Connections 8
I haven't seen Patrick's yet - but it simply cant be that good looking, eh ?!

Thanks again to the team of Social Connections for a great conference !

Heiko.
Heiko Voigt   |   22 April 2015 15:30:46   |    Adobe  Connections  AEM  CQ5    |    [0]

Logo Social Connections

So folks,

after a very successful IBM ConnectED in Orlando in January, I'm happy to say that we will be presenting at Social Connections VIII in Boston in April. In conjunction with Harbour Light Ltd. we will be demonstrating our experience in using IBM Connections as a social business middleware. By that, we are talking about using REST APIs of Connections to create components in a Web CMS that are able to leverage IBM Connections functionality in a fully customizable UI without the pain of modifying the Connections UI itself.
"Hit it like you mean it !" became the refrain for us when it comes to the Connections REST APIs - we show you why and how we worked our way through the features and shortcomings of the API. In our presentation "Playing LEGO with IBM Connections" we also demonstrate the beautiful UI options that we came up with - and yes, we will show code as well !

Please check out the Agenda and our session here !

We are glad to be part of the group of presenters at Social Connections VIII which really features a great lineup this year ! See you all in Boston and stay tuned for more integration components withIBM Software and Adobe AEM !

Heiko.
Heiko Voigt   |   26 February 2015 12:49:46   |     |   Comments [0]

Hi,

our friends over at Harbour Light have posted a new video on their integration product IMPRISIS CA that integrates IBM Connections and Adobe AEM.
It shows how to extend a customized social intranet based on Adobe AEM using social components from IBM Connections.



regards,

Heiko.
Heiko Voigt   |   7 January 2015 10:16:30   |    Adobe AEM  IBM Connections  IMPRISIS  Harbour Light    |   Comments [1]