Best ConnectED ever !!!

All one of it, and it was the best!!

Well OK seriously, it was also the best Connect-o-sphere I have been to in all my 4 years.

  1. Above all else I had an excellent time hanging out with and speaking with the most excellent Mark Leusink. It is kinda hard to coordinate a presentation when you only have 48 hours to prepare together, Mark made it very easy. When people like Mark Myers (who I have an inordinate amount of respect for) say things like this about you, it is very hard not to blush.
  2. I stopped hearing “Java is the way to go, if you are not using Java then you are doing it wrong”. What I started to hear was “you need to use the right tool for the right job and Java is not always the right tool”. The transformation is stunning, the eyes are open, the possibilities are boundless. I also think I shocked a few people by accepting and encouraging that their is a very good place for Java as well ! Collaboration, whodda thunk it.
  3. I cannot wait for Bluemix to enable me never use the Domino HTTP engine again. Well OK not quite…..but the possibility of writing an application on a node.js server to use Domino as my NoSQL data source makes me all gushy inside. Many questions remain and I will get into that in future posts, but ooooh the possibilities.
  4. Almost every vendor I spoke to had their best year in ages – primarily due to the large number of technical people in attendance I guess, but there was a sense of optimism which was severely lacking after last year.
  5. I have a new respect for Rene Winklemeyer and Theo Heselmans. Two excellent guys I really didn’t know so well before – they were entertaining, educational and exceptionally engaging speakers.
  6. There are a number of people who have intentionally (or not) made my community participation possible and Susan Bulloch is one of them – I will *always* be grateful for the opportunity to speak in Orlando and she gave that to me. (yeah I cried too 😦 )
  7. Multiple attendees stopped me in the corridor and said *thank you* for the Angular presentation. The main reason was because it makes more sense to them than going XPages. Serves to remind me that when this is all over I want to be a teacher…..
  8. I went to more sessions this year than any other – I also missed more sessions due to conflicts than any other – this is a GOOD THING because more choice means a better conference and more attendees.

Thank you to everyone who sang Happy Birthday in the middle of the Dolphin bar – I am humbled 🙂 Thank you to @woowar who invited me to the Penumbra social so that I could have a glass of Champagne on my birthday – very classy. Thanks to Darren Duke for paying for it 😉 Thank you everyone who attended the session(s). That’s well over 150 people, and only one guy walked out before they were finished – very flattering. Thank you to Andrew Barickman and PSC who gave me the opportunity to attend. Thank you to everyone who stopped me and said hi – love meeting people and sharing stories. Thank you to the bouncer for my presentation with Mark Leusink who encouraged people to come back for the second session – we had a full room the second time and it would not have happened without him. Thank you to Mac Guidera who let me speedgeek, gotta tell you by the end of it I was sick of the sound of my own voice !

Thank you to everyone I met – I have no idea when we will meet again, but I know we will talk soon 🙂

Marky

Speedgeeking at ConnectED – Monday at 6:16pm – XPages and Bluemix

Warning – Blatant Self promotion time (“which is different from normal how Marky” – yeah yeah whatever)

Next week I will be at ConnectED in Orlando and for those of you who are going I am doing the aforementioned talk with Mark Leusink and also Speedgeeking.

6:15pm in the TechOasis (free beer) – 5 minutes on XPages and Bluemix – I am going to do a live demo which will either totally rock or fall flat on its face. I know I risk the “help” of “friends” but I think this might be very cool.

For more information go HERE

http://beyondtheeveryday.com/#/sessionsAll

and search for speedgeeking

Come over and say Hi Monday evening – you do not have to speedgeek every table (shhh) just come and say hi

Make sure you have a QR Code reader on your phone as well 😉

#excited

 

Scrolling to the errors – Making XPages Error Handling more user friendly

In this article I will demonstrate how to easily improve the server side form validation process from a user’s perspective.

Introduction

I have to admit that I am not a fan of server side validation. While it suits the developer, it is often not a good user experience. If you complete a large form, hit submit and you have errors returned, it is had to ascertain where the error has occurred. This causes the user to have to scroll up and down the page looking for the error. In an ideal world the form needs to be validated fornt end and back end to provide the optimal experience, while ensure data integrity within the application.

When building the PSC Contest site http://contest.psclistens.com I wanted to make the server side validation as painless as possible for users.

Basic Server side XPages validation

To validate a field on an XPage we use validators and a custom message. In the following example, when the user submits a blank field, an error message will be returned and the JSF validation will prevent the form from saving.

<xp:inputText styleClass="form-control"  disableTheme="true"  value="#{competition.First}"
	id="first1">
	<xp:this.attrs>
		<xp:attr name="placeholder"
			value="Contact First Name">
		</xp:attr>
	</xp:this.attrs>
	<xp:this.validators>
		<xp:validateRequired loaded="true" message="This value is required">
		</xp:validateRequired>
	</xp:this.validators>
</xp:inputText>
<xp:message id="message6" for="first1"
	styleClass="error">
</xp:message>

Here is an example of the failing field. I have assigned a class = “error” to the message and that styles it red and bold.
c1

Scrolling to the error message

Within the onComplete event of the form’s submit button we can add some code to determine if there are any errors. If there are errors we can use some jQuery to “scrollTo()” the message on the screen and it is revealed to the user.

  • The code var temp = $(‘.error:visible’) selects all the error message which are visible to the user.
  • If the length of the selector is greater than 0 there must be an error on the page
  • So determine where it is on the page temp.eq(0).offset().top-250 and then
  • Animate a scroll to the element.
  • http://api.jquery.com/scrolltop/ tells us that we are able to ascertain the scroll bar height of the element and  “Setting the scrollTop positions the vertical scroll of each matched element.”
<xp:button value="Submit" styleClass="btn btn-primary theSubmit" id="button1">
	<xp:eventHandler event="onclick"
		submit="true" refreshMode="partial" immediate="false"
		save="true" refreshId="container">
		<xp:this.onComplete>
			<![CDATA[
				//Check to see if there are any errors
				var temp = $('.error:visible')
				if (temp.length >0){
					$('html, body').animate({scrollTop: temp.eq(0).offset().top-250}, 1000, function(){
					});
				} else {
					alert('Thank you for your submission. PSC will be in touch.')
					location.href="http://www.psclistens.com"
				}
			]]>
		</xp:this.onComplete>
		<xp:this.script><![CDATA[
			//check to see if project sponsor is checked
			if ($('.projectSponsor').is(':checked')){
				console.log('sponsor check')
				app.checkSponsor()
			}
		]]></xp:this.script>
	</xp:eventHandler>
</xp:button>

If there are no errors the user is thanked and redirected to the PSC homepage.

Don’t do a complete submit….

The only way we are able to run an “onComplete” on the button event handler is if we do not submit the entire form. If we do this then all the code will be lost and the page will revert to the top of the page.

Wrap the body of the form in a panel or div which can be refreshed.  Set the button click to partial refresh that section. This way the scroll position on the page will not be lost when the button is clicked.

 

c2

The contest site

Check out the contest site http://contest.psclistens.com before 13 Feb 2015 when PSC will announce the winner

 

BTE102: The Demonstration application – beyondtheeveryday.com

In the previous post  I described how Mark Leusink and I are going to be speaking about Angular.js in our presentation at ConnectED later this month.

We are very proud to announce the demonstration application upon which the presentation will be based

http://beyondtheeveryday.com

This application was created by Mark Leusink and is an amazing example of how simple an Angular application can be integrated with Domino data. The application is fully responsive and is particularly nice to use on a mobile device. All credit goes to Mark for this, I am very flattered to be talking with such an astute and talented developer. You can find out more about the application from Mark’s blog – http://linqed.eu/2015/01/14/marky-marks-mobile-first-connected-sessions-demo-app/

The application is running on a Domino server.

b1

IMG_0339

During the presentation we will demonstrate how we got the application to work on a node server hosted in Bluemix and also demonstrate the application running on SharePoint, IBM Connections and as a native Mobile application.

If you are still not sure, listen to Pete Janzen talk about his recommendations for the conference 😉

Write once – run anywhere………………. !

Win a week of consulting from an IBM Champion

IBMChampion
 

PSC is proud to have five people selected as IBM ICS Champions for 2015. This is the second year in a row that PSC has the most ICS Champions of any organization worldwide. In celebration of this achievement, PSC is offering the opportunity to win a free week of consulting (40 hours), including travel costs, from one of our IBM Champions.

To be considered please visit the following site and complete the submission form:

https://contest.psclistens.com

PSC_PrimaryLogo

Debugging iPad / iPhone web based apps using Firebug lite bookmarklet

While the XPages Extension Library contains a control to use the firebug lite control, you might want to use it to debug a production app and or an Angular application which is not residing within XPages. You can do this on Firefox by installing the plugin, but it gets harder when you are testing cross multiple browsers and especially on an iPad where the development tools are limited.

You can install firebug lite as a bookmarklet within your iPad bookmarks by following the instructions on this site:

http://iosbookmarklets.com/tutorials/firebug-lite-bookmarklet-ipad/

Using the link you can then debug (with some difficulty but way better than nothing) your applications by looking at the in and out-going traffic from the page.

firefoxLiteoniPad