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

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

 

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

Practice what you preach – be fast and look sexy

As people who know me well may have heard once or twice, user experience is everything. When designing a custom web based application for a customer, there is always an unwritten requirement of “look sexy” and be fast.

This week my team and I at PSC successfully rolled out a new global application to a customer and here are some examples of the feedback we received within the first day or so:

  • I tried the new site only this morning and I have only one word: fantastic! It is very user friendly and fast.
  • …not to mention, based on the feedback from partners in the US and leaders across the world, it is the best system they have seen in the company.
  • …thanks for all your efforts! Looks “sexy” so (sponsor) is definitely pleased.

Not a single mention of how the functionality will meet their business needs. Not a thought for how well we have met their requirements. We have done that, but that would be irrelevant if we had delivered a poor looking, slow, but highly functional website.

To achieve the speed we were looking for the application is built primarily on Angular.js and Domino Data. Minimizing the amount of server processing for any given user interaction and minimizing the network traffic necessary to provide the expected response time, was a prime consideration in designing the architecture. Working with the talented design team at PSC and the customer we were able to create a visual user experience which adhered to the company’s strict style guides but looked “sexy”.

Be fast, look sexy, and make users want to tell their friends.

Hi Chicago – what changed?

Well it has been on the cards now for 6 months but we finally did it. My family and I moved from Virginia to Chicago and I have started working out of the PSC office in Schaumburg, IL.

I was asked nearly 18 months ago if I would consider moving, but for mostly family reasons it took a year or so to organize and agree this was the right thing to do for my career and just as importantly for the family. Working at home has been wonderful for the past two years. But it was also a little limiting from a growth perspective and this move is the right thing for me and PSC.

Initially on a day to day basis nothing really changes – the great team I work with are the same, the great technologies I get to play with stay the same. From a career perspective, this move brings me closer to the business. Over time I get to grow professionally in a new area.

From a personal perspective I still get to play with the technologies I love and have the freedom to explore new ones. I *really* enjoy my job which is a good thing because I know what it is like to really *not* enjoy my job. Those times are long past now.

 

On a practical note, I am able to get the bus to work – this is fantastic!! 5 minutes walk from the house and I get dropped off 10 minutes from the office. $50 a month rather than a $300 a month car payment.

I was in the “Beverage Depot” the other night and I commented to the kids that “this is a lot of beer” and someone overhead me and said “well that’s ‘cos we drink a lot of it around here….”

So far – I think this is going to work out juuust fine 🙂

My first PSC star award – Advise

The company I am very proud to work for, PSC Group, has an excellent internal consultant personal growth program called the “5 points of excellence“.

This program allows consultants to grow and learn in 25 different areas from sales, to estimation, to development and others. PSC runs classes to promote individual areas of personal growth such as a consultant bootcamp, rainmaking seminars, personal image classes and many others. I have never worked for a company with such a focused and well defined career development path as this one and I believe it is good for the company and good for me on a personal level.

Earlier this week at the company’s quarterly meeting I was awarded my first star for “Advise”. Advise falls into the “Clients” category along with “Experience, Sell, Oversee and Relate”.

I am very proud to receive my first star after having worked at the company for only 9 months and I look forward to getting more in the near future.

IMG_20130417_205509_586

This star recognizes “becoming a trusted advisor to, and transcending an existing project, for a client” .

🙂

Marky talks twice at IBM Connect – The World’s Largest XPage Project and jQuery

This year is my second “connect-o-sphere” event and it will be a wholly different experience than the last one. I am speaking in two session, both about XPages, both as part of the best practices track. I am very excited to have the opportunity to speak at the world’s foremost conference on IBM Notes (*still in shock*).

The first session is with my boss Andrew Barickman and we will be sharing some lessons learned from the world’s largest XPage project.
“The world’s largest?” – yeah the world’s largest! (well ok at least outside of IBM internally). The point of this session is to share some of the lessons we have learned so that you don’t have to when you have an 18 month long, 10 person effort to work on!! We will discuss:

  • in a team environment on the same database
  • highlight some significant XPiNC performance enhancements which we worked with IBM on and they have  implemented in the next release IBM Notes Domino 9
  • demonstrate how we went from a notes client only application to a web based XPages application, managing  aspects of the user interface to provde a better user experience which still seemed “familiar”

The XPages Blast session is going on at the same time – which is a COOL session, but this is the repeat of the XPages Blast session on Monday at 11am – so go to THAT XPages Blast first and then come and see us – you know you want to 🙂

My second session will be on my favorite subject – jQuery.
This is a beginners introduction to how you can include jQuery successfully in your XPage applications. It will include a brief introduction to how jQuery works, best practices for adding it to your XPage applications and demonstrations of how  jQuery plugins can significantly improve your XPages and how to most effectively use them. I will be demonstrating new plugins which I have not blogged about and highlighting a couple of old ones.

This session is not just for beginners though – even advanced XPage developers can benefit from understanding what is available in jQuery World and arguably there is a plugin which you could have used in an XPages project somewhere at some time.

Gurupalooza
I will also be onstage for Gurupalooza immediately following my jQuery talk on Thursday morning. Yes that’s right, I am speaking in the room right-next-door-to and right-before-the Gurupalooza session on Thursday.

So the way I look at it is this….it is Thursday morning, you’ve not had enough sleep all week and you want to go to Gurupalooza – so why go to a session in the Dolphin and then rush over to the Swan for Gurupalooza, when you can come and see my session and then crawl into the room next door – makes perfect sense to me 🙂

I look forward to meeting as many of you as humanly possible at Connect, don’t forget to come and say hi and ask questions after my sessions.

Marky

Here are my two sessions:

Lessons Learned from the World’s Largest XPage Project


Session ID : BP211
Track : Track 07: Best Practices

Presented by : Mark Roden, Andrew Barickman
Date : 01/29/2013
Time : 08:15 AM – 09:15 AM
Location : SW 1-2
Level : **

Description :
Working on the world’s largest XPages implementation has its challenges. Modernizing an IBM Notes client application used in over 105 countries by over 100,000 users teaches you a lot! In this session, we’ll share some of the challenges and our appropach to overcoming them. We’ll demonstrate a new XPinC performance feature in the upcoming Social Edition being added as a result of our work with IBM. We’ll also demonstrate best practices in user interaction, share lessons learned on team development using a single .nsf file — and much more. Come and find out more about how you can save time, money and avoid end-user frustration as we share our experiences – and open the covers of the largest XPages project in the world. Sample DB provided!

and 

jQuery: The World’s Most Popular JavaScript Library Comes to XPages


Session ID : BP103
Track : Track 07: Best Practices

Presented by : Mark Roden
Date : 01/31/2013
Time : 08:30 AM – 09:30 AM
Location : SW 3-4
Level : *

Description :
Whether you want to add some serious eye candy to your XPages Applications or just want to do more with less code, jQuery, the world’s most popular JavaScript framework can help you. Come to this session and find out how you can use some of the thousands of jQuery plugins, in harmony with Dojo, within your XPages applications to create a better experience not only for your users, but for you as a developer. In this session, we’ll look at how jQuery works, how to add it to your XPages, and how a complete JavaScript beginner can take advantage of its power. We’ll demonstrate many working examples — and a sample database will be provided.