James Ward - RIA Cowboy
assertTrue("Test DSLs" == "Legacy") | Mark As Read |
Over decades in programming I’ve had a few moments where I make big paradigm shifts, finding it very hard to go back.One of these moments was with Functional Programming and my latest is the move from Test Assertion DSLs to just using assertTrue with boolean-only tests. Let’s look at some examples of Test Assertion DSLs.Suppose we have ...
The Seven Artifacts of Developer Advocacy Projects | Mark As Read |
Over the past 16 years, mostly as a Developer Advocate, I’ve developed a framework to help developers learn and get excited about something new.I believe generating excitement is the primary goal of advocacy.Each developer advocacy project ideally produces seven artifacts: Code Samples A Blog Post A Presentation and/or Video A Hands-On Works...
The Modern Java Platform - 2021 Edition | Mark As Read |
Many developers were burned by the overly complex world of Java back in the early 2000s. The Gang of Four patterns and middleware / J2EE / Java EE led to ridiculous levels of alleged decoupling as is evident in this sequence diagram from an open source J2EE ecommerce system I worked on in 2002: Back in 2014 I wrote about how things had changed: J...
Running One-Off/Admin Jobs for Cloud Run Services | Mark As Read |
Disclaimer: This is not officially supported by Google Cloud. Cloud Run hosts services that handle HTTP requests but sometimes you need a way to run one-off / admin jobs with the same settings and container image. At this time the managed Cloud Run service doesn’t provide a way to run those kinds of processes and running them through HTTP ha...
Container-based Serverless Scheduled Jobs on Google Compute Engine | Mark As Read |
Most of my compute workloads today are on Cloud Run, a serverless for containers platform. But some workloads like scheduled jobs don’t fit the service-oriented model of Cloud Run. There are many places I can run those workloads but I’d like to keep the serverless “pay for what you use” model and still use containers as my...
GraalVM Native Image Tips & Tricks | Mark As Read |
Elastic infrastructure that scales up & down based on demand is not just a “serverless” fad but an operational model which reduces cost and waste. Yet there is a little devil lurking under the covers… When an application / microservice needs to spin up based on demand there can be some lag as the application needs to be dow...
When you hear Monad, think Chainable | Mark As Read |
There comes a point in every Functional Programmer’s life where they feel the curse of the Monad has lifted and they must now explain Monads to their friends who just don’t get it. What follows is probably wrong and confusing, cause there is no escaping the curse. But here goes… Suppose you have a system property that contains th...
Thank You for 12 Years in Developer Evangelism | Mark As Read |
Even though it was 12 years ago, I vividly remember sitting in a musty conference room with big-name analysts from Gartner. My palms were sweaty and I was almost too terrified to speak. Macromedia had brought me into this meeting to be the customer voice for their new programming platform, Flex. I was an early adopter building a customer portal usi...
Connecting to the Salesforce REST APIs with Spring Boot and Java | Mark As Read |
Broadly speaking there are two types of integrations with Salesforce, either a system-to-system integration or a user interface integration. One of the primary ways to do these integrations is by using the Salesforce REST API. When using the Salesforce REST API you need to obtain an access token that identifies who is making the requests. OAuth 2 p...
Quick & Easy ETL from Salesforce to MySQL with Workflow & Heroku | Mark As Read |
While sometimes unfortunate it is often necessary to have data silos that share data. The Extract, Transform, and Load (ETL) pattern has been around for a long time to address this need and there are tons of solutions out there. If you just need a quick and easy way to copy new & updated records in Salesforce to an external data source, a simpl...
Add NPM Packages to Salesforce with a Few Clicks | Mark As Read |
I’ve built a little web-based tool called ForceNPM that makes it super easy to add NPM packages to Salesforce. Check it out: Give ForceNPM a try! The code is on GitHub so if you’d like to deploy this on your own Heroku app or other infrastructure, you can do that. Let me know how it goes!
Scalable Continuous Delivery Pipelines | Mark As Read |
Back when I first started building web apps we’d just “do it in production” by vi’ing Perl & PHP files on the server. This was fine because the risks and expectations were low. No big deal if I broke the app for a few hours. Good thing I made an app.php-bak copy! As software became more critical to businesses, the risks ...
Reactive Web Request Batching with Scala and Play Framework | Mark As Read |
At first glance it seems silly to do batching in the reactive world. When I first started with reactive programming I thought I wouldn’t have to worry about things like resource starvation. After all, the reactive magic bullet was *magical*! But my magic bullet fizzled when it hit downstream resource constraints causing me to need batching. W...
Machine Learning on Heroku with PredictionIO | Mark As Read |
Last week at the TrailheaDX Salesforce Dev Conference we launched the DreamHouse sample application to showcase the Salesforce App Cloud and numerous possible integrations. I built an integration with the open source PredictionIO Machine Learning framework. The use case for ML in DreamHouse is a real estate recommendation engine that learns based o...
Combining Reactive Streams, Heroku Kafka, and Play Framework | Mark As Read |
Heroku recently announced early access to the new Heroku Kafka service and while I’ve heard great things about Apache Kafka I hadn’t played with it because I’m too lazy to set that kind of stuff up on my own. Now that I can setup a Kafka cluster just by provisioning a Heroku Addon I figured it was time to give it a try. If you are...
Building a Mock HVAC for Smart Thermostat Demos | Mark As Read |
Update: I’ve added instructions for a cooling system at the bottom of this post. Recently I needed to create a mock HVAC system so that I could have a portable smart thermostat for various demos. I searched around but couldn’t find any such thing. So with some sleuthing and the help of my friend Bruce Eckel I was able to build a simple ...
The 6 Minute Cloud/Local Dev Roundtrip with Spring Boot | Mark As Read |
Great developer experiences allow you go from nothing to something amazing in under ten minutes. So I’m always trying to see how much I can minimize getting started experiences. My latest attempt is to deploy a Spring Boot app on Heroku, download the source to a developer’s machine, setup & run the app locally, make & test chang...
Pulling Go Code Colorado Data into Salesforce | Mark As Read |
This weekend I’m at the Go Code Colorado Challenge Weekend event in Durango. The purpose of Go Code Colorado 2016 is for teams to build something useful for businesses using one or more of the Colorado Public Datasets. Some teams are using Salesforce for the back-office / business process side of the app they are building. So I decided to see...
Quick Force Java Getting Started with Salesforce REST in Java | Mark As Read |
Recently I blogged about a toolchain that quickly gets you going with the Salesforce REST APIs. I believe developers should be able to get started with new technologies without having to install tons of stuff and struggle for days. That blog used Quick Force Node for those who want to use JavaScript / Node.js. I’ve had a number of requests fo...
Salesforce REST APIs From Zero to Cloud to Local Dev in Minutes | Mark As Read |
When getting acquainted with new technologies I believe that users shouldn’t have to spend more than 15 minutes getting something simple up and running. I wanted to apply this idea to building an app on the Salesforce REST APIs so I built Quick Force (Node). In about 12 minutes you can deploy a Node.js app on Heroku that uses the Salesforce R...
Winter Tech Forum 2016 My Favorite Developer Conference! | Mark As Read |
I’ve been to a TON of developer conferences and by a landslide my favorite is the Winter Tech Forum (which used to be the Java Posse Roundup). Here is why… Learning for me is experiential. Typical eyes-forward conferences are like being a passenger on a sail boat. I can watch what is happening but I could definitely not become the capt...
Dreamforce 2015 Video: Tour of Heroku + Salesforce Integration Methods | Mark As Read |
This year at Dreamforce I presented a session that walked through a few of the ways to integrate Heroku apps with Salesforce. Here is the session description: Combining customer-facing apps on Heroku with employee-facing apps on Salesforce enables a whole new generation of connected and intelligent experiences. There are four primary ways to do th...
Smoothing the Cloud & Local Roundtrip Developer Experience | Mark As Read |
Getting started with new technologies is usually a huge pain. Often I stumble around for hours trying to get an app’s toolchain setup correctly. Instructions are usually like: Things get worse when I lead workshops for hundreds of enterprise developers where many are on Windows machines and not very comfortable with cmd.exe. Experiencing this...
Comparing Application Deployment: 2005 vs. 2015 | Mark As Read |
Over the past 10 years the ways we build and deliver applications has changed significantly. It seems like much of this change has happened overnight but dont worry, it is perfectly normal to look up and feel disoriented in the 2015 deployment landscape. This article compares the deployment in 2005 with “modern” deployment so that all t...
Redirecting and Chunking Around Herokus 30 Second Request Timeout | Mark As Read |
In most cases a web request shouldn’t take more than 30 seconds to return a response so it is for good reason that Heroku has a 30 second request timeout. But there are times when things just take a while. There are different methods for dealing with this. Where possible, the best solution is to offload the job from the web request queue and ...
Intro to Multi-Sensory Applications | Mark As Read |
Recently Christophe Coenraets and I put together some thoughts on what we are calling “Multi-Sensory Applications” - a new way to think about how we build more deeply connected and engaging software. These news types of applications go way beyond typical CRUD apps by composing together a fabric of inputs (senses) and weaving them togeth...
Refactoring to Microservices | Mark As Read |
Right now there is a ton of hype and pushback around Microservices. Most of the current debate revolves around when Microservices make sense with smart people arguing all across the spectrum. As with all architectural topics the right answer is “it depends” so you should never blindly chose Microservices without understanding your goals...
NPM Packages in Maven Central with NPM WebJars | Mark As Read |
A few months ago I launched Bower WebJars which provides a way for anyone to deploy Bower packages into Maven Central through WebJars. Since then 539 packages have been deployed! Today I’ve added NPM WebJars which is built on the same foundation as Bower WebJars but for NPM packages. Give it a try and let me know how it goes. If you are curio...
Auto-Deploy GitHub Repos to Heroku | Mark As Read |
My favorite new feature on Heroku is the GitHub Integration which enables auto-deployment of GitHub repos. Whenever a change is made on GitHub the app can be automatically redeployed on Heroku. You can even tell Heroku to wait until the CI tests pass before doing the deployment. I now use this on almost all of my Heroku apps because it allows me to...
Reactive Postgres with Play Framework & ScalikeJDBC | Mark As Read |
Lately I’ve built a few apps that have relational data. Instead of trying to shoehorn that data into a NoSQL model I decided to use the awesome Heroku Postgres service but I didn’t want to lose out on the Reactiveness that most of the NoSQL data stores support. I discovered ScalikeJDBC-Async which uses postgresql-async, a Reactive (non-...
Scaling the WebJars Project with On-Demand Bower Packages | Mark As Read |
WebJars has been my hobby project for almost 3 years and thanks to tons of help from the community the project now has almost 900 JavaScript libraries in Maven Central. In February 2015 there were over 500,000 downloads of WebJars! Up until now all of the WebJars have been manually created, deployed, and maintained. Today I’m happy to launch ...
Salesforce Canvas Quick Start for Java Developers | Mark As Read |
Salesforce provides a variety of different ways to integrate external apps into the Salesforce UI. Canvas is an iframe-based approach for loading externally hosted UIs into pages on Salesforce. The nice thing about Canvas versus a plain iframe is that Canvas has a JavaScript bridge which enables secure communication between the external iframe and ...
Introducing Force WebJars: Add JavaScript Libs to Salesforce With a Click | Mark As Read |
The typical method of adding JavaScript and CSS libraries (e.g. jQuery, Bootstrap, and AngularJS) to Salesforce environments is to locate a library’s download, download it, then upload it to Salesforce, then figure out the structure of the files so that you can use them from Visualforce. Using WebJars as a basis, I’ve created an easy wa...
Goodbye Java Posse Roundup Hello WTF 2015 | Mark As Read |
For the past 8 (maybe 9?) years the absolute best yearly conference I’ve attended has been The Java Posse Roundup in Crested Butte, Colorado. At most conferences my favorite parts are the conversations at the bar and writing code with other attendees. The Java Posse Roundup has always been a conference just of those best parts. Even though Th...
Introducing Gulp Launcher | Mark As Read |
Many developers already have the Node.js toolchain installed on their machines but when I lead workshops there are always a few who don’t. The process of installing Node build toolchains can take quite a bit of time for new users (especially on Windows). To simplify the process of getting the gulp toolchain setup, Bruce Eckel and I created gu...
Java Doesnt Suck Youre Just Using it Wrong | Mark As Read |
I’ve been building enterprise Java web apps since servlets were created. In that time the Java ecosystem has changed a lot but sadly many enterprise Java developers are stuck in some very painful and inefficient ways of doing things. In my travels I continue to see Java The Sucky Parts - but it doesn’t have to be that way. It is time fo...
Dreamforce 2014: Wearables, Engagement Apps, $1M Hackathon | Mark As Read |
Dreamforce 2014 is quickly approaching and this year is going to be amazing! I’ll be presenting a few sessions and helping at the $1 Million Hackathon. Here are my sessions: Integrating Clouds & Humans with the Salesforce Wear Developer Packs As smart watches and other human-integrated devices make their way into the mainstream, develo...
Jekyll on Heroku | Mark As Read |
Jekyll is simple static content compiler popularized by GitHub Pages. If you use Jekyll in a GitHub repo a static website will automatically be created for you by running Jekyll on your content sources (e.g. Markdown). That works well but there are cases where it is nice to deploy a Jekyll site on Heroku. After trying (and failing) to follow many o...
An Architects Guide to the Salesforce1 Platform | Mark As Read |
Salesforce.com was initially created as a Sales Force Automation (SFA) / Customer Relationship Management (CRM) application in the cloud but has evolved over the years into a modern platform for all types of enterprise applications. Now theSalesforcename is a legacy artifact of that past. This is like the nameFrigidairewhich is still the name for a...
Building & Deploying Reactive Service Pipelines Live in Salt Lake City | Mark As Read |
This Wednesday (Aug 6, 2014) I will be presenting Building & Deploying Reactive Service Pipelines at the Utah Scala Enthusiasts group in Salt Lake City. Here is the abstract: Composition of micro-service is a modern integration pattern that couples nicely with Reactive and Continuous Delivery. These paradigms enable small teams to move quickly...
Going Reactive at OSCON 2014 | Mark As Read |
This year at OSCON I will be leading a hands-on lab and presenting about Reactive, Play Framework, and Scala. Here are two sessions: Reactive All The Way Down (lab) - 9:00am Monday, July 21 In this tutorial you will build a Reactive application with Play Framework, Scala, WebSockets, and AngularJS. We will get started with a template app in Type...
Scala vs Java 8 at the Scala Summit | Mark As Read |
Bruce Eckel will be hosting the Scala Summit in Crested Butte again this summer. The Open Spaces conference will be September 15 - 19 which is a perfect time of year up in the Colorado Rockies. The theme of the Scala Summit this year is Scala vs. The New Features in Java 8. So there will definitely be some fascinating discussions. I’m also lo...
Salesforce Gradle Plugin | Mark As Read |
As part of the Salesforce Wear Developer Pack for Android Wear I created a Gradle plugin that fetches and deploys Salesforce code (Apex). Gradle is the default build tool for Android but it can also be used with many other languages. For instance, here is an example build.gradle file for a project that fetches all of the Apex classes and Visualforc...
Create Webhooks on Salesforce.com | Mark As Read |
Webhooks are the modern, web-oriented way for servers to receive notifications from other servers. For instance, when an event happens on a server, like Salesforce.com, your own custom application can receive the event via a web request. Salesforce already has a built-in way to handle events called Triggers which run on Salesforce via Apex code. Ho...
Cross-Origin Resource Sharing (CORS) for Salesforce.com | Mark As Read |
By default browsers limit access to cross-origin resources. For instance, if a JavaScript app is loaded from foo.com then it isn’t allowed to access content from bar.com because this would be a significant security hole. Cross-Origin Resource Sharing (CORS) is the way to workaround this limitation in modern browsers. Salesforce.com has a grea...
Integrating Clouds & Humans with Salesforce and Android Wear | Mark As Read |
Right out of the gate in my new job at Salesforce.com and I have been working on a pretty exciting new project to integrate clouds and humans using Salesforce.com and Android Wear. This week Salesforce launched six new open source developers packs for wearables. I created the Salesforce Wear Pack for Android Wear to help developers start building c...
Testing Webhooks Was a Pain So I Fixed the Glitch | Mark As Read |
Popularized by GitHub, Webhooks are the modern way for apps to receive notifications / events from other servers. But testing Webhooks has always been pretty painful, especially if you want to automate those tests. So I created a little app to make it easier. Before we get into that lets cover the basics… A Webhook is a way for you to define...
Building JavaScript Client Apps with gulp | Mark As Read |
Yesterday I started playing around with gulp which is a build tool for JavaScript applications. My goal was to have a build for a fully client-side application built with AngularJS and Bootstrap. In modern JavaScript apps we now need a build tool to compile various pieces, manage libraries, do production transformations (like minification), and to ...
Presenting Going Reactive with Java 8 Next Week in Boulder & Denver | Mark As Read |
Next week I will be presenting Going Reactive with Java 8 at the Boulder and Denver Java User Groups. Here is the session description: Java 8’s lambdas make building Reactive applications a whole lot easier and cleaner. Through copious code examples this session will show you how to build event-driven, scalable, resilient, and responsive app...
Optimizing Static Asset Loading with Play Framework | Mark As Read |
Modern web applications are a mix of a back-end services, dynamic web pages, custom static assets, and library-based static assets. To maintain a productive development process it is easiest to have all this stuff in one project. But in production there are a number of optimizations that can dramatically speed up the loading of the application. HTT...
- Welcome!
- cfNote aggregates blogs for the Coldfusion industry.
- Custom Feeds
- Add any RSS feed to the information you read daily.
- Blocked Feeds
- Block feeds to remove blogs you’re not interested in.
- Account Settings
- Customize the site by adding or removing feeds.
Don’t have an account yet?
- Customize your settings
- Edit how your blog displays
- Add or remove blogs you read. Sign Up.
About Us
cfNote is your source for all your Coldfusion news.
Know of a Coldfusion blog that we're missing? Let us know! |