Over the past few months I’ve started working pretty extensively with TypeScript. For those of you who don’t know what TypeScript is: TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. It provides strong types to JavaScript. It allows for the creation of classes and enforces those classes in your code. If you define a Redpill.Widget class, you can then use that class in your code and the editor enforces the rules you define within that class. For example, if you define a findFoo method that accepts a string. If you attempt to pass a number to findFoo your editor will complain about it. To me, TypeScript feels

close

Over the past few months I’ve started working pretty extensively with TypeScript. For those of you who don’t know what TypeScript is: TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. It provides strong types to JavaScript. It allows for the creation of classes and enforces those classes in your code. If you define a Redpill.Widget class, you can then use that class in your code and the editor enforces the rules you define within that class. For example, if you define a findFoo method that accepts a string. If you attempt to pass a number to findFoo your editor will complain about it. To me, TypeScript feels

Read more

If you followed Peter’s series on replacing Lotus he outlined some of the pitfalls, processes and decision points to undertake for success. I wanted to point out the technical side to a lot of those decisions. The short answer is that you need a tool to surface your domino data en-masse until such a time when decisions are made on each application. I have been working on that solution for quite some time now and I have to say, it’s complex. First you need to make a fundamental decision. Are you going to do this yourself or hire someone? Next question…Are you going to provide fidelity to the original Notes apps

close

If you followed Peter’s series on replacing Lotus he outlined some of the pitfalls, processes and decision points to undertake for success. I wanted to point out the technical side to a lot of those decisions. The short answer is that you need a tool to surface your domino data en-masse until such a time when decisions are made on each application. I have been working on that solution for quite some time now and I have to say, it’s complex. First you need to make a fundamental decision. Are you going to do this yourself or hire someone? Next question…Are you going to provide fidelity to the original Notes apps

Read more

This week I attended MWLUG in Alexandria, VA. This was an awesome event, so many good speakers, good content and excellent camaraderie. I can’t say it enough, but Richard Moy and his team put on such a good event. So, I spoke to a couple of developers who are writing client JavaScript in Domino Designer. While Domino Designer is capable of allowing you to write JavaScript, all I can say is STOP! Stop torturing yourself, Stop making it harder on yourself to write good JavaScript. There are way too many good to excellent editor choices for writing JavaScript, and I would have to say even the worst editor is better than

close

This week I attended MWLUG in Alexandria, VA. This was an awesome event, so many good speakers, good content and excellent camaraderie. I can’t say it enough, but Richard Moy and his team put on such a good event. So, I spoke to a couple of developers who are writing client JavaScript in Domino Designer. While Domino Designer is capable of allowing you to write JavaScript, all I can say is STOP! Stop torturing yourself, Stop making it harder on yourself to write good JavaScript. There are way too many good to excellent editor choices for writing JavaScript, and I would have to say even the worst editor is better than

Read more

I had a need to enable drag-n-drop for a particular part of our portal. In the past I’ve always used jQuery-UI as it’s quite easy to enable drag-n-drop. Doing some research I came across a StackOverflow question about enabling drag-n-drop with Polymer. One of the answers mentioned sortablejs. This is a very minimalist library to enable drag-n-drop. Best part about this library is that it has a port for Polymer. BONUS! But there are several ports available: Angular, Knockout, Meteor, etc. So implementation is super easy: bower install –save polymer-sortablejs Then where you want to use it: <sortable-js draggable=”div” group=”divs”> <template is=”dom-repeat” items=”{{repeatableItems}}”> <div>{{item}}</div> </template> </sortable-js> This will enable all the

close

I had a need to enable drag-n-drop for a particular part of our portal. In the past I’ve always used jQuery-UI as it’s quite easy to enable drag-n-drop. Doing some research I came across a StackOverflow question about enabling drag-n-drop with Polymer. One of the answers mentioned sortablejs. This is a very minimalist library to enable drag-n-drop. Best part about this library is that it has a port for Polymer. BONUS! But there are several ports available: Angular, Knockout, Meteor, etc. So implementation is super easy: bower install –save polymer-sortablejs Then where you want to use it: <sortable-js draggable=”div” group=”divs”> <template is=”dom-repeat” items=”{{repeatableItems}}”> <div>{{item}}</div> </template> </sortable-js> This will enable all the

Read more

Posted in JavaScript, Polymer

For about the last 6 to 8 months I’ve been doing a lot of development using Polymer Web Components. I started with the 0.5 developer release version. My experience so far has been a little bitter sweet.  Using version 0.5 I had to jump quite a few hoops to get things working, but once I figured out the patterns all was well with the world. In the Beginning I had chosen to use Backbone Marionette for the MVC architecture for my apps. I already knew Marionette so I felt the logical choice was to stay productive and just use what I already knew and use the web components in my templates. If I

close

For about the last 6 to 8 months I’ve been doing a lot of development using Polymer Web Components. I started with the 0.5 developer release version. My experience so far has been a little bitter sweet.  Using version 0.5 I had to jump quite a few hoops to get things working, but once I figured out the patterns all was well with the world. In the Beginning I had chosen to use Backbone Marionette for the MVC architecture for my apps. I already knew Marionette so I felt the logical choice was to stay productive and just use what I already knew and use the web components in my templates. If I

Read more

Welcome to keithstric.me. The new home of my blog. Due to my inaction I ended up loosing keithstric.com. I was able to move the past 10 years worth of blog posts here, but I’m still missing the first 4 years of posts. Oh well, guess that’s what happens when you ignore a problem. But let’s get to my rant. I’m building an application using just Polymer. It’s a RESTful application so all server communication is via AJAX requests. When dealing with AJAX requests it’s fairly easy to catch an error. Error codes are communicated via a request’s “Status Code”. A successful status code is 2xx. While an error status code is 4xx

close

Welcome to keithstric.me. The new home of my blog. Due to my inaction I ended up loosing keithstric.com. I was able to move the past 10 years worth of blog posts here, but I’m still missing the first 4 years of posts. Oh well, guess that’s what happens when you ignore a problem. But let’s get to my rant. I’m building an application using just Polymer. It’s a RESTful application so all server communication is via AJAX requests. When dealing with AJAX requests it’s fairly easy to catch an error. Error codes are communicated via a request’s “Status Code”. A successful status code is 2xx. While an error status code is 4xx

Read more

Posted in Domino, JavaScript

So today while looking for a solution to handling an HTML5 event of onSearch I came across this technique, which, probably isn't the best approach but does work. So, if you look at the client side events of an inputText field, you'll notice there isn't an event for onSearch. So, how do you add one? Well, you could of course go pass-thru html and just code the field as you would a Plain Jane HTML field. While this would work, to me it's just not taking advantage of the platform and wouldn't allow you to compute any of the other attributes. So to address this issue we add an attribute to

close

So today while looking for a solution to handling an HTML5 event of onSearch I came across this technique, which, probably isn't the best approach but does work. So, if you look at the client side events of an inputText field, you'll notice there isn't an event for onSearch. So, how do you add one? Well, you could of course go pass-thru html and just code the field as you would a Plain Jane HTML field. While this would work, to me it's just not taking advantage of the platform and wouldn't allow you to compute any of the other attributes. So to address this issue we add an attribute to

Read more

Posted in JavaScript, XPages

I've recently started playing with a very powerful Javascript library called D3.js. D3 is for visualizing data either in charts, force layout graphs, data plots or whatever you can imagine. I'm not really sure what the point of this post is as I really can't show you yet what we're using it for. But I can show some of the things that it's capable of.   Let's first look at a Force Directed Layout. These are usually used to show hierarchical data and the way D3 handles them is very cool looking. You can also include labels, pop ups, etc for the nodes on the plot. If you're really interested in this

close

I've recently started playing with a very powerful Javascript library called D3.js. D3 is for visualizing data either in charts, force layout graphs, data plots or whatever you can imagine. I'm not really sure what the point of this post is as I really can't show you yet what we're using it for. But I can show some of the things that it's capable of.   Let's first look at a Force Directed Layout. These are usually used to show hierarchical data and the way D3 handles them is very cool looking. You can also include labels, pop ups, etc for the nodes on the plot. If you're really interested in this

Read more

Posted in D3.js, JavaScript, XPages

So, I’ve been cleaning up a lot of my “first starting” mess here in XBlog. The Posts, Comments and Pages are now “componentized” as opposed to being just generated HTML. Don’t get me wrong there is still a lot of “generated” HTML here, but it’s at least getting to be more manageable. But during this clean up I decided to implement a client side API of sorts and the best way to do that is to create a JavaScript Singleton to hold all the CSJS functions and properties as that would provide the most robust solution to provide other people the ability to expand XBlog. What is a singleton? Well here’s

close

So, I’ve been cleaning up a lot of my “first starting” mess here in XBlog. The Posts, Comments and Pages are now “componentized” as opposed to being just generated HTML. Don’t get me wrong there is still a lot of “generated” HTML here, but it’s at least getting to be more manageable. But during this clean up I decided to implement a client side API of sorts and the best way to do that is to create a JavaScript Singleton to hold all the CSJS functions and properties as that would provide the most robust solution to provide other people the ability to expand XBlog. What is a singleton? Well here’s

Read more

Posted in JavaScript, XPages