Software Development, Web Design, Training


Need a presenter for your user group or conference? Drop me a line and let's schedule something! --Nolan

Real World ColdBox App Architecture

Hi, I'm Nolan. My team is building a brand new ColdBox 6 app from scratch. We're using Docker, AWS, CommandBox, GitHub Actions, several modules from ForgeBox, Bash scripts, and Alpine.js. And ya know what? This tech tech may very well become the new base line on which I start all future projects.

Web Components in Your CFML Application

Web Components provide a modular way to build a consistent design system and user experience across your entire application. Instead of copy/pasting the same chunks of coded into various places, you can have a JavaScript/HTML expert focus on getting the UX correct, without them needing to worry about what's happening in the CFML layer at all.

Everything You Wanted to Know About Custom Tags But Were Afraid To Ask

CFML Custom Tags have been in the language for decades, and can be a great building block for many facets of application development. They look like CFIncludes but are much safer and behave more closely to traditional constructs such as functions. Custom Tags can be combined, nested, collected into reusable libraries that can be shared across projects ensuring a consistent and modular user interface. They can even be built with CFCs, giving you object oriented power as well!

CFML Design Patterns and Uses

Design Patterns are some of the biggest benefits that come from using CFComponents. They're reusable techniques that can solve problems in a variety of projects - and the same patterns can be reused across other OOP languages as well. Just like a for() loop or an array, learning how to apply Design Patterns to your projects is a skill that will be helpful regardless of the type or size of your projects!  You may already be using a Design Pattern or 2 and not even realize it!

Runnin' In The Streets! CommandBox Task Runners For The Real World

Recently CommandBox added a new feature called Task Runners to let you “run ColdFusion code”. That doesn’t sound exciting but it’s really quite useful.  Now we can use CommandBox and CFML to replace our Ant scripts, Gulp tasks, CRON jobs, shell scripts, and so on! With Task Runners, not only can your entire application be CFML but the build scripts, nightly batch processes, shell scripts and tons more can also be written and managed in CFML. Goodbye, super cryptic Perl file that we’ve blindly been running for 20 years! Let’s replace it all with CFML!

I'm Still Scared of Aspect Oriented Programming!

So you’ve figured out what Model View Controllers do, and even wrapped your head around using Dependency Injection for bean management. Excellent! But that pesky Aspect Oriented Programming (AOP) layer is still a complete mystery! It’s not that bad, I promise. And in this talk we’ll go over the basics of what AOP does, plus show you some ways to implement it in your applications. There are several AOP libraries available in CFML -- you can use any of them in your existing applications, without needing to do a complete rewrite of your code. Let’s learn how!

Testing My Non-ColdBox Site With TestBox

Ever had this thought? “Sure, TestBox looks great, but I built a bunch of web apps that aren’t based on ColdBox. How do I test those?”

Answer: The same way! TestBox is an entirely stand-alone product! It in no way requires that your apps be ColdBox based — TestBox really is a tool available for all CFML developers!

We all know testing is important. We all know we need to do it. Do we all know how to use TestBox on our non-ColdBox web apps? Let’s learn how!

CommandBox vs Node.js

JavaScript is everywhere, and with that so is Node.js. Developers feel they have to have Node installed for a modern development workflow. Did you know that all the core features of Node now exist in a pure CFML workflow? Everything you’ve heard about from the JavaScript / Node world can be done with CommandBox! Package management, installing dependencies, command line tooling, flipping between run-time environments, automated build and testing processes are often mentioned as tasks made easier with Node. Modern CFML developers can have all of these same benefits without ever installing Node! It all can be done from CommandBox and this preso will show you how!

Building Your First Package on ForgeBox

ForgeBox is the CFML equivalent to Node’s npm package registry. ForgeBox is a growing collection of reusable open source CFML code available for anyone in the community to use.

I know what you’re thinking: “Hey I’ve got this open source idea I want to share but it’s not a full blown ColdBox app, it’s just a library, or handful of useful functions. Or some other thing I wrote ages ago.”

The truth is you only need to add a tiny bit of machinery around most non-ColdBox code to make it shareable via ForgeBox! We can take collections of functions, or legacy CFincludes or custom tags and other non-ColdBox things and make them usable via ForgeBox without much hassle. Let’s learn how!

Crash Course in CSS Grid + Flexbox

CSS Grid and Flexbox are two great CSS tools that solve a lot of layout problems for us. All the grid layout work we’ve done via Bootstrap can now be done with just a handful of CSS properties that are already baked into modern web browsers. If you’ve ever used Bootstrap just to get an easy responsive layout working (and we have all done this!) you know that Bootstrap works, but this can add a lot of bloat to the application, especially if you’re not using Bootstrap for other features as well. Instead, let’s learn CSS Grid and Flexbox, get the same layout benefits but without needing to install yet another CSS framework.

What's New in Bootstrap 4?

Bootstrap has evolved tons! Version 4.2.1 is out now with new classes for grid layout options, accessibility, spinners, iOS style switches, font utilities and tons more. If you’re using Bootstrap for just 3-column layouts you’re missing out! Come learn about other features in the latest version and ways it can improve your app!

Crash Course in Angular

Angular used to be AngularJS. Then it became Angular 2. Then they skipped version 3.  Then 4, 5 and 6 came out in rapid fire succession. Where do you begin?! We’ll look at how to start building an Angular project from scratch.  Beginning with some basic Node commands, we’ll scaffold out an Angular project and look at how the project is organized.  Next, we’ll walk thru some basics of TypeScript and MVVM basics.  We’ll end with building your first Angular project, some tips on debugging and places to look up more information.

Real World Scenarios For Modern CFML

The recent versions of ColdFusion have added many new language features. We’ve now got closures, functional programming constructs, QueryExecute, the safe navigation operator, the elvis operator, and even more coming in future releases.  For people new to functional programming or object oriented programming, it can be hard to see where these features can be beneficial.  Let’s fix that!

Connecting Vue.js and CFML

Vue.js is quickly becoming one of the more popular JavaScript frameworks. It provides a lot of the same benefits of Angular and React, but with a less intense learning curve, and more flexibility. We’ll start at the very beginning, showing how to install and begin using Vue and some of the basic features it provides. Then comes the server part. How do we send data from the Vue.js app to a server in the cloud? That’s where our CFML code comes into play. In this session we’ll discuss how to get started with Vue.js and how to start building a simple JSON API using CFML. Then we’ll connect the 2 pieces together building a fully working application with Vue.js + CFML.

Connecting AngularJS and ColdFusion

(This presentation can be done as a 1-day hands-on workshop, as a regular 1-hour session, or as a more involved 2-hour deep dive. Given the major differences in Angular 1.x and the 2+ series, there are 2 variations of this talk for each type of Angular code available. Either version can be given, whichever the audience prefers.)

Angular is an extremely popular JavaScript framework for building client-side applications.  Angular contains lots of great features and can be used to build both web and mobile applications.  Then comes the server part. How do we send data from the Angular app to a server in the cloud? That’s were our ColdFusion code comes into play.  In this session we’ll discuss how to get started with Angular and how to start building a simple JSON API using ColdFusion.  Then we’ll connect the 2 pieces together building a fully working application with Angular + ColdFusion.

Crash Course in jQuery

A presentation for folks that are still using “plain JavaScript” and haven’t yet been able to check out jQuery. Perhaps you’ve been stuck maintaining an older legacy app? Or got scared off by a bad explanation of jQuery someone gave you? Whatever the reason is, attendees of this talk will come away with a better understanding of how to start using jQuery in the applications.

Even More HTML5

HTML5 has been finalized but the spec is so big, browser makers have been slow to implement all the features. Still, several new (and useful) things have been making their way into the latest builds of FireFox and Chrome (and those other guys too) that are worth noting. Maybe you can stop relying on so many third-part libraries now. Maybe things that required hacks in CSS before can now be done easily.  Let's find out!

Mura ORM + Feed API = Awesomeness

Two of the most powerful features in Mura 7 are the improvements made to Mura ORM and the Feed API. Mura ORM takes care of your CRUD-type operations, plus manages changes to the database tables as you’re developing. The Feed API can be used to write advanced filters, reports, and other queries. Between these 2 features you almost never have to write a SQL statement again!  We’ll start by looking at some basic examples of how to use ORM and Feed API, and we’ll also look at some real-world examples of using both of these in your custom Mura development.

Infinite Scrolling With Mura 7

Pagination is boring! Let’s add infinite scrolling to our site ala Facebook and Twitter! Mura 7 added several new features that can be combined to do just that. In this session we’ll look at some functions in the new m() scope in Mura 7, new functionality in Display Objects, and how to manipulate them on the client-side at run-time. Then we’ll combine all of this together to show you how to build Infinite Scrolling into your own Mura website.

MVC With and Without a Framework

So you've looked at CF Components, and kind of understand the basics of how they work. Everyone says "frameworks are the way to go", but there's still a big knowledge gap between those 2 points. As each framework has its own terminology, how do you know where verbiage for one begins and the other one ends? Is "Controller" a Model-Glue specific thing? What about a "Service Layer" or a "View"? There's very little documentation available about the "Model-View-Controller" pattern for ColdFusion, that's not specific to a CF framework...and that's often what causes the confusion for people newer to OO development. In this talk we will go over a basic application that's built using the Model-View-Controller design pattern, but does not use any specific framework to get there. We'll also show when using the MVC pattern by itself may be enough for your app, when going to a full fledged framework may be the better way go to, and how easy it is to do so. For maximum benefit, you should have an understanding of how the CFComponent tag works, and we'll take it from there.