I am currently away for a little over a week, taking a vacation in Curaçao. This next week I am planning some relaxing scuba diving, but for now we are just exploring the beautiful capital Willemstad.
So don’t expect any technical writing for a little bit. See you in December.
Here is another little code snippet I want to share. I use it all the time in my Lotusscript-based Domino web agents, and I figured that other could benefit from it as well. It is just an easy way to check for and read the name-value pairs (arguments) passed from the browser to the web server by HTTP GET or POST calls.
Put the code below in a script library, I call it Class.URL:
%REM Library Class.URL Created Oct 9, 2014 by Karl-Henry Martinsson Description: Lotusscript class to handle incoming URL (GET/POST). %END REM Option Public Option Declare %REM Class URLData Description: Class to handle URL data passed to web agent %END REM Class URLData p_urldata List As String %REM Sub New() Description: Create new instance of URL object from NotesDocument %END REM Public Sub New() Dim session As New NotesSession Dim webform As NotesDocument Dim tmp As String Dim tmparr As Variant Dim tmparg As Variant Dim i As Integer '*** Get document context (in-memory NotesDocument) Set webform = session.DocumentContext '*** Get HTTP GET argument(s) after ?OpenAgent tmp = FullTrim(StrRight(webform.GetItemValue("Query_String")(0),"&")) If tmp = "" Then '*** Get HTTP POST argument(s) after ?OpenAgent tmp = FullTrim(StrRight(webform.GetItemValue("Request_Content")(0),"&")) End If '*** Separate name-value pairs from each other into array tmparr = Split(tmp,"&") '*** Loop through array, split each name-value/argument For i = LBound(tmparr) To UBound(tmparr) tmparg = Split(tmparr(i),"=") p_urldata(LCase(tmparg(0))) = Decode(tmparg(1)) Next End Sub %REM Function GetValue Description: Get value for specified argument. Returns a string containing the value. %END REM Public Function GetValue(argname As String) As String If IsElement(p_urldata(LCase(argname))) Then GetValue = p_urldata(LCase(argname)) Else GetValue = "" End If End Function %REM Function IsValue Description: Check if specified argument was passed in URL or not. Returns boolean value (True or False). %END REM Public Function IsValue(argname As String) As Boolean If IsElement(p_urldata(LCase(argname))) Then IsValue = True Else IsValue = False End If End Function '*** Private function for this class '*** There is no good/complete URL decode function in Lotusscript Private Function Decode(txt As String) As String Dim tmp As Variant Dim tmptxt As String tmptxt = Replace(txt,"+"," ") tmp = Evaluate(|@URLDecode("Domino";"| & tmptxt & |")|) Decode = tmp(0) End Function End Class
It is now very easy to use the class to check what values are passed to the agent. Below is a sample agent:
Option Public Option Declare Use "Class.URL" Sub Initialize Dim url As URLData '*** Create new URLData object Set url = New URLData() '*** MIME Header to tell browser what kind of data we will return Print "content-type: text/html" '*** Check reqired values for this agent If url.IsValue("name")=False Then Print "Missing argument 'name'." Exit Sub End If '*** Process name argument If url.GetValue("name")="" Then Print "'Name' is empty." Else Print "Hello, " + url.GetValue("name") + "!" End If End Sub
It is that easy.
If my proposal for a session at ConnectED is accepted, you will about how to use jQuery and Bootstrap to retrieve data in .NSF databases through Lotusscript agents, and I will be using this class in my demos. So see this as a preview.
If the session doesn’t get selected by IBM, I plan to record it and post it somewhere online later.
The premise of the session is that you have data in a Domino database, but for some reason you can’t use XPages. Your company may be on an older version of Notes/Domino with no plans/budget to upgrade, the web developer don’t know XPage and have no time to learn it, or the data will be retreived from some other Web based system, perhaps WordPress.
As you may have read lately, Verizon have implemented a system that adds an HTTP header item in all web communication that originates from mobile phones on their network. Each phone/user get their own unique ID, which is transmitted to every website being visited (except if SSL is used), no matter if you have privacy/anonymous surfing turned on in the browser. The id stays with the phone, no matter if you connect in a different city or if you get a different IP address.
This series of about 50 characters is called Unique Identifying Header (UIDH) and is a key part of Verizon’s internet advertising program. And even if you as a user would opt-out of the targeted ad on Verizon’s website, any web server or ad network out there can build their own database of users based on the UIDH.
What has not been as widely mentioned is that AT&T is doing exactly the same. They add a header item called X-ACR (which is 350 characters long) to all outgoing communication. And this one you can not opt-out of, as AT&T have not even confirmed that they perform the tracking. According to this article, T-Mobile is also testing something similar.
You can test it yourself at http://lessonslearned.org/sniff. Make sure you are not connected using wifi, then simply open that link from your smart phone and you will see what headers you are transmitting. I tested it myself, using my AT&T phone, and verified that the X-ACR header is there.
Microsoft is taking a page out of IBM’s playbook and is killing off the Nokia brand. Future models of the smart phones in the Lumia series will be named Microsoft Lumia. Last month the Nokia Lumia 735 and 830 were launched, and they will probably be the last phones branded as Nokia.
The mobile division of Nokia will also be renamed to Microsoft Mobile.
More at The Verge.
This Wednesday it is again time for the monthly ICS community webcast. This month’s guest speaker will be Luis Guirigay, IBM SME for Social, Mobile and Cloud.
Below is the description of the webcast agenda.
Never before has there been more opportunity for IBM Notes Domino Enterprises! Join Luis Guirigay to learn about the latest tools that will help your company get the most of the Domino platform and increase your ROI. Step through all of the latest user experience options in IBM Notes, Domino, and iNotes, and Traveler that will take your company to the next level of social email. Step through the benefits and options to access mail and apps in the cloud and get the lowdown on the IBM Connections Cloud (formerly IBM SmartCloud) offering. Get the latest information on IBM Mail Next and how the Design Advisory Program is going.
Microsoft unveiled the next version of Windows at a press event in San Francisco today. Surprisingly the successor to Windows 8 and 8.1 will not be called Windows 9 as everyone expected. Instead Microsoft jumps straight to Windows 10.
One reason for this, according to Microsoft, is that the new operating system is such a big leap from Windows 8 that they want to mark that by increasing the version two steps. Among the changes Microsoft listed were a removal of the tiled Metro user interface, which have been receiving heavy critisism.
Windows 10 will combine the familiarity and functionality of Windows 7 with some elements of Windows 8. Microsoft admitted that they did not get Windows 8 right, but they think that they will get it right with Windows 10. The key is that the new version of Windows can identofy the device and chnage the interface mode. This mean sthat the software will know if a user is on a Surface tablet or a laptop and adjust accordingly to the hardware present.
Oh, and the start menu is back.
Microsoft did not elaborate on Windows Phone 10, more than it will not have a desktop. There is also no release date announced for Windows 10, but it is expected to be in the end of 2015.
Earlier this year I was asked to research some alternatives for a web-based password reset function at my work. One of the larger support burdens are users who forget the passwords, especially in the first few days after changing it. We have a 90 day password lifespan, then a new password need to be picked. Some users wait until the last minute, which usually is Friday afternoon right before they go home, making it very likely that they will forget the new password over the weekend. Another big group is auditors, who may come in every 6 months or so, and by then their passwords have of course already expired.
I first looked at some COTS solutions from HADSL (FirM) and BCC (AdminSuite). They were both very competent, and in addition have several other functions that I really would like to have in my environment (like synchronization between Domino Directory and Active Directory). However, as my company is in a cost saving phase, I was asked if I could build something myself, so I played around a little, and came up with a small and simple application.
The application contains two web pages. The first page (Setup) is where the user will setup the security questions used for password recovery as well as entering an external email address that they have access to even if locked out from the Domino account at work. This page is protected by regular Notes security, so the users need to set this up before they lose access to their account.
The second page (Request)is where the user can request the password to be reset. After entering their Notes name, the user is presented with one of the security questions. If the question as answered correctly, the user can now enter a new password. If the question is wrong, another of the questions is presented to the user. I am also using regexp to make sure that the password match the requirement our organisation have for password strength.
When the user fill out and submit the setup page, a document is created in a Notes database. When the user need to reset the password, the security questions and answers are retrieved from that document. To prevent unauthorised access to the Notes documents, they use Readers fields to prevent them from being visible to anyone but the signer of the agents running on the server.
This application can of course be updated with more functionality. Instead of allowing the user to pick a password, one could be generated by the server and sent through email to the address entered during setup. There are probably other things that can be done to adapt this application to the needs of your organization. And you probably want to change the logo on the pages to fit your organisation.
Read the “About” page for instructions on installation and setup, as well as full license and attribution. Enjoy!
Paul Mooney and Bill Buchan returns with a brand new Worst Practices at IBM Connect 2013.
This session alone is almost worth the cost to attend Lotusphere/Connect/ConnectED.
There is a slight skip towards the end, when I had to switch batteries. Otherwise you have the whole session, including the warm-up performance.
This morning Kristin Keene, Events Manager for ConnectED, talked more about the upcoming IBM ConnectED 2015 in January at the monthly ICS Community webcast. IBM realized that the last few years they been swinging over too much to the business side, and is now going back to a much more technical conference. As I mentioned the other day, some tracks are new, some are renamed and some are gone. As an example, ChalkTalks replaces the old Birds of a Feather, but will take place throughout the day, not just morning and evening.
The keywords mentioned was “smaller and more intimate”. The conference will be at Swan only, to condense it and make it all in one place to make it easier to connect with IBMers and other attendees. Opening General Session will be Monday morning as normal, but in the Swan Ballroom.
As opposed to previous years, the number of IBM attendees will be greatly reduced, to around 300. Most of them will be subject matter experts, speakers or staffing the labs. All IBMers will be invite only, not coming as regular attendees as in the past. The lab decisions are still a little bit up in the air, according to Kristin, but the Meet the Developer lab will be there as usual. The special event (previously an evening at one of the local them parks) will this year be more of a special party, as she put it.
Registration for connect is already open, the call for abstracts just opened this week and close on October 10 (probably extended to October 15). The full agenda will be finalized on November 15, and the presentations are due on January 1 from the speakers who were chosen.
Kristin also said that IBM does not consider this the last Lotusphere/Connect/ConnectED, but she does not know exactly what will happen after the contract with Dolphin and Swan expires after the 2015 conference.
You can read more details here.
Hope to see you in Orlando in January!
PSC is doing a community survey about the direction of IBM Notes and Domino. John Head, Director of Enterprise Collaboration at the Chicago-based consulting company PSC Group explains that it’s not about gathering data, the (optional) email address collected will only be used to notify about the result.PSC promises to share the full results publically.
I am personally looking forward to see the result of the survey. You can take the survey at http://bit.ly/PSCXPagesSurvey.