ColdFusion, AWS and other stuff…

Recent Updates

Starting from Part 1 of my “CF Summit 2017” series I will dive into some of my conversations with Adobe and more “Application Monitoring Suite” details.

The Adobe Team

Let me start out by saying that I know a number of people, myself included, enjoyed having the ColdFusion engineering team on-site at the conference. I want to thank them for the long trip from India which appears to be at least a 24 hour trip one-way. I could barely stand the 3 hour cattle flight from Omaha on Southwest. Those seats were great when I was a kid half my current size – but they never seemed to take into account that American adults actually sit in those seats too!

I spent a bit of time speaking with Anit Kumar, the Technical Support Manager, who was very welcoming of what I had to say. A number of people also wanted his attention, so I also spoke a bit to Vamseekkrishna Nanneboina, the Quality Engineering Manager. Continue reading →

My co-worker at CF Webtools, Wil Genovese, and myself were fortunate to attend the Adobe ColdFusion 2017 Summit this year.

The primary focus of the event was on “Aether”, the next version of ColdFusion, which will be known as “ColdFusion 2018”. The primary topic surrounding Aether was the API Manager, Containerization (Docker), security by default and a new “Application Performance Monitoring Suite”.

I’ve taken the courses, I have practical experience, I paid the exam fee and I past the test. That makes me an “Amazon Web Services (AWS) Certified Solutions Architect – Associate”. Wow what a mouthful, but what does that mean to you?

Per AWS, I have “experience designing distributed applications and systems on the AWS platform”.

Yes, but what does that mean?

AWS has somewhere around 104 different services. These range from simple email to virtualized servers to “serverless” computing to big data processing and everything in between.

As a Solutions Achitect I know how to navigate the roadmap that makes up “AWS town”. When we speak, I strive to understand your existing resources and how they are used or what your requirements may be for a new project. I take that information and convert those requirements into a plan that utilizes AWS services. This could be a “all-in” approach or a mixed on-premise / AWS approach depending upon your needs.

I then implement that plan. I have much experience moving resources to AWS or creating those resources from scratch. If I lack expertise in what you need, I will either utilize my resources to understand how to accomplish what is needed or find another resource that can make it happen. Continue reading →

“My friends have an iPhone, I’m going to send my nephew to get me one this weekend.”

Those are the sentences I heard from my 80ish year-old grandmother over the past year. She’s from South Korea and survived the Korean and Vietnam wars. She’s, to this day, very smart and can list off your birthday, phone number and her doctor’s address with little thought. Give her a math problem and she’s whip the answer right back at you.

My grandfather was, in general, an engineer. He had his HVAC and plumbing master licenses and might as well of had his electrical master license. He not only owned a HVAC and plumbing supply shop on the North side of Omaha but also a computer shop that specialized in AutoCAD. His home office is a library of floppy disks and DVDs of every software you’d never use. He helped fund and setup a high school’s technology program and computerized building HVAC systems he owned on using those green terminal screens and 1200-baud modems. This was all after he retired from the Navy and civil Engineering.

But as he also hit his 80’s, now being 90, his desktops and laptops started to see the dust slowly covering them. Software and hardware started to evolve quicker than he had interest in anymore. Now his day’s consist of watching black and white western TV series.

My grandmother, on the other hand, found that should could no longer ask her husband to search the Internet for information, send emails and print off legal documents. She never really learned how to operate a Windows machine because her husband liked doing that for her so much. It was his “thing”.

Then came the iPad. She found that she could send emails, fill out online forms and do research on the Internet using this ultra portable 10″ screen. It didn’t require a cord to use; no keyboard; no mouse. It was very basic. She could push email or Safari icons and they would just work. She could even wireless print. She no longer needed her “complicated” laptop to do much of anything except write legal documents and fill in financial spreadsheets. It was perfect for her.

She now has an iPhone and loves using it to make phone calls or even send a SMS here and there. Likely because of the “bling” and “peer” factors. So then I showed her maps, camera and photos. It was exactly what she wanted. So simple.

So what’s the point of this blog post? User experience.

She uses these devices because they are not overly complicated, even though you could make them as such if you wanted to.

But let’s take a step further.

The doctor’s office has online forms to fill out. She tried filling them out using her iPad but the doctor’s office told her they didn’t receive the information they needed. She was frustrated… and I can see why.

I came over and started filling out the forms on her iPad. Even though the site worked on the iPad, it was defiantly a desktop-centric site. The form labels were hard to read as they took up multiple lines and ran into each other. The form fields were small. It was almost impossible to exit the date picker widget after I selected the date. And there were form fields that I had no idea where to get that information, yet they were required.

In today’s world if you are creating a public website you should highly consider creating a mobile-first responsive site. Take this experience. My 80ish year-old grandmother and her peers use iPads and iPhones. Not laptops and desktops. Even on a podcast the other day, the speaker was saying the funny looks his son gives him when he tries to show him his desktop setup. He’s just always on a mobile device.

In reality, I use my mobile phone for looking up quick stuff like what a medication does or the address for a auto-repair shop. I don’t own a tablet, outside of a dedicated one for my dart board. I use my work desktop and home laptop for all the “real work”.

So in conclusion, when building or maintaining a public facing website, it’s very important to be mobile friendly and responsive to serve your experience to the many generations and different devices. If you don’t they’ll just go somewhere else, or worse, call you because you’re their only option and can’t use the site you’ve invested so much money in.

Most of us find it impossible to install and run Adobe ColdFusion (ACF) 9 on Windows 10. There are a select few that suspiciously find it easy to install and run on Windows 10.

One of the more popular methods is to create a Windows 7 Virtual Machine (VM) and install Windows 7 there. I’ve even done that. But what you find, particularly on Hyper-V, is that it lacks portability. I can’t reasonably send another developer my VM. #1 due to licensing issues #2 it can be huge depending upon the size you reserved for the virtual drive.

But thanks to the Ortus team, and with a little open mindness, CommandBox takes care of this issue. From the Ortus website: “CommandBox is a standalone, native tool for Windows, Mac, and Linux that will provide you with a Command Line Interface (CLI) for developer productivity, tool interaction, package management, embedded CFML server, application scaffolding, and some sweet ASCII art. It seamlessly integrates to work with any of our *Box products but it is also open for extensibility for any ColdFusion (CFML) project as it is also written in ColdFusion (CFML) using our concepts of CommandBox Commands. It tightly integrates with our contribution community; ForgeBox, so developers can share modules world-wide.”

So basically what’s going on here, in this blog entry’s context, is CommandBox will run ACF 9+, Railo 4.2 and Lucee 4.5+. This is done by running a WAR in Java against CommandBox’s own web server which still supports ACF9 integration. Technically you’re supposed install Java 1.7 for official support of ColdFusion 9. However, from what I’ve seen, it runs just fine on Java 1.8.

Here are the easy steps in Windows to get you running in less than 10 minutes:

Extract the contents to something like C:\CommandBox. For all other OS’s see Installation.

Open a Command Prompt

Go to your new directory, such as “CD C:\CommandBox”

Type “box” and enter

This will then initiate Box for the first time and then take you to the Box CLI.

Change the directory to your first website that needs ColdFusion 9, in this example. ex: “cd \websites\cf9test”

Here we will set the ColdFusion engine, version, hostname (optional) and name (optional). Run:
server set app.cfengine=adobe@9 (this will run the latest version of ACF 9)
server set web.host=cf9test.local (be sure to set in DNS or your hosts file to 127.0.0.1 or you will get a “Cannot assign requested address: JVM_Bind” error)
server set name=cf9*

Step #8 will be saved in server.json and never needs to be done again as long as that file is intact. For more configuration arguments, see Server.json.

Type “start” and enter**

This will download the ColdFusion 9 WAR and extract it and then initialize it. This may take a number of minutes.

Once CF9 is “installed” a browser window will open up to “http://cf9test.local” or whatever you set the web.host to. If you didn’t define web.host it will open up to “http://127.0.0.1”. Either way it will use a random port number. This port number can be defined in the server.json configuration file.

Append “/CFIDE/Administrator” to the URL it is using. If you accidentally closed the browser tab, look for the blue CF task icon in your task bar. Click it once and click “open browser”.

There is so much you can do with CommandBox, including https, URL rewrite and even generating CFM frameworks. See the CommandBox Manual for more.

*When setting the server name, this will allow you to keep configurations stored such a DSN in the admin. You can use a general name such as “cf9” and use it among different instances or you can use a more specific name just for that instance or a group of instances such as “mysite”. Without it, you have a chance of loosing or overwriting configurations in the CF Admin.

There is a way to script out you ColdFusion config, such as DSN’s, using CFConfig CLI. However as of this post writing, it doesn’t allow you to use ColdFusion 9. But feel free to experiment using this with other versions or later down the road.

Buses were the original “ride share” concept. The difference is the city always owned the vehicle, it fits many more people and is regulated.

What if the city bus concept adapted to the popular ride sharing services such as Uber and Lyft?

Instead of buses following a predefined route every day, let the computers dynamically route the buses. People with smartphones could request a pickup and set a destination. They would then be routed to the nearest bus compatible and pickup efficient location that isn’t necessarily a predefined “bus stop”. In that app they would also define their drop-off point, which could change the bus that’s picking them up with a more efficient route. People without a smartphone would go to a normal bus stop and press a vandal resistant button. Once on the bus, they would select the destination using a built-in display.

Of course a lot more thinking and planning would need to be done so as each passenger is limited to a ride that is reasonable in time and fairly predictable.

But I think this could go a long way to getting more people to use public transportation, pay via a mobile app and stop routing buses to empty bus stops.