SlideShare a Scribd company logo
Welcome To
YOUR HOST
ColdFusion & Java, Redefined
May 1 - May 3 | Houston Tx
Modernize or Die!
SPONSORS
SPONSORS
schedule.intothebox.org
PWA
PWA
SPEAKERS
HAPPY BOX @ 6 PM
TWO RAFFLES
✴ Raffle #1
✴ 6pm Before Happy Box
✴ Raffle #2
✴ Friday after last session
✴ Must be Present to win!
PATRONS
patreon.com/ortussolutions
All funds => Open
Source Development
Brad Wood
Jon Clausen
Jorge Reyes Gavin PickinBill Garoutte
Esme Acevedo Eric Peterson Javier QuinteroCarlos Castillo
Saeed BawaneyEdgardo Cabezas
Luis Majano
Manuel Monedero Israel Urquiza
ORTUS CFML MODERNIZATION PLAN
Tooling Community Education
2016
MEMORY LANE
2006
“Study the past if you want to define
the future.” Confucious
2006 2007 2008
✴ Ortus Founded
✴ ColdBox Beta
✴ ColdBox Docs
Daniel Powter

Bad Day
2009
BIRTH - HOPE
✴ Ortus Site
✴ ColdBox Site
✴ ColdBox IRC!!
✴ Plugins
✴ Dashboard
✴ ColdBox Cache
Beyonce 

Irreplaceable
✴ ColdBox 2.6 Series
✴ Integration Testing
✴ REST
✴ 1st Training
✴ BD + Railo Support
✴ 1st Conference
✴ Railo Open Source
Flo Rida
Low
✴ Groovy or CFML
✴ ColdBox Book
✴ Trainings
Commitment
✴ ForgeBox v1
✴ ColdBox 3.x in dev
✴ LogBox, MockBox
✴ CodexWiki
✴ BeanFactory
(WireBox)
✴ Groovy Loaders
✴ cbORM
Black Eyed Peas
Boom Boom Pow
2010 2011 2012
✴ CacheBox Released
✴ Databoss begins
✴ CFBuilder
Integrations
✴ HMVC Modules
✴ ColdBox Support
Services
✴ Migrated to Github
Ke$ha

Tik Tok
2013
INFANCY
✴ Ortus Full Time
✴ WireBox
✴ ColdBox 3
✴ ColdBox Relax
✴ Module Dev
Explodes
✴ BlogBox is born
✴ Bill Garoutte
Adele

Rolling in the deep
✴ ContentBox v1
✴ ColdBox 3.5
✴ Brad Wood
✴ ColdBox Dev Week
✴ New Logos
✴ ColdBox DevBox
✴ Railo Extensions
✴ Online Courses
✴ TestBox Ideas
Gotye fea Kimbra
Somebody that I used
to Know
✴ DataBoss Released
✴ Jira
✴ Into The Box Ideas
✴ Couchbase ❤
✴ ProfileBox Released
✴ TestBox Released
✴ Jorge Reyes
✴ Project Gideon
Begins
Macklemore
Can’t Hold Us
2014 2015 2016
✴ ColdBox 4
Roadmap
✴ CommandBox Beta
✴ CFCouchbase SDK
✴ ContentBox 2.x
✴ TestBox BDD
Training
✴ First ITB
Pharell Williams
Happy
2017
CHILDHOOD
✴ Ortus => Houston
✴ Ortus Dev Week
✴ ColdBox 4
✴ CommandBox v1-2
✴ Gitbook Docs
✴ Gavin Pickin
✴ Lucee Extensions
✴ ForgeBox v2 Begins
Bruno Mars
Uptown Funk
✴ ContentBox v3
✴ CommandBox v3
✴ ColdBox 10 Years!
✴ DocBox
✴ Legacy Initiatives
✴ Jon, Esme, Eric
✴ Patreon Begins
✴ Containers/Cloud
✴ QB Released
Justin Bieber
Lover Yourself
✴ ITB @ Houston
✴ Docker Images
✴ CFConfig
✴ CFML Micro-
Services
✴ ContentBox Docker
✴ CommandBox v4
✴ Elastic Search
✴ Ortus University
Luis Fonsi
Despacito
2018 2019
✴ ContentBox v4
✴ Task Runners
✴ ColdBox v5
✴ cbStreams
✴ RuleBox
✴ Redis Extensions
✴ ForgeBox v3
✴ Quick ORM
Drake
God’s Plan
REBELTEEN
✴ Patreon Growing
✴ Modernize or Die!
✴ Ortus ES born
✴ ???
Ortus El Salvador

8 Developers
The End!
13YEARS GO BY FAST!
Focused Intensity through time
will lead to success!
Focus Areas
Support 

& 

Training
Consulting
&
Mentoring
Staff
Augmentation
Product
Development
New Motto:
MODERNIZE 

OR 

DIE!™
LEGACY PROBLEM
• Gives CFML a bad name
• Security Issues
• Performance Issues
• Employee Issues
• Development Issues
• Finding Developer Issues
• >50% No MVC
• >50% No DI
• >50% NoTesting
Refresh is not validTesting
CFML SHAMING
• No More Excuses
• We have the tools
• Show them off!
• Tell your story!
HOW DO WE….
No Hacks
No Shortcuts
Hard Work
Focused IntensityThroughTime
HARD REALITY
They won’t do it!
Take Ownership
Be Disciplined
Innovate From Within
Create cool tools, apps, solutions
Share!
New Initiatives…
Modernize Or Die!™
Podcasts
Let us be the little voices in your head
Why?
2 FORMATS
modernizeOrDie.io
™ ™
✴ Weekly podcast
✴ Longer format =>30-60 mins
✴ Interviews and discussions with the OrtusTeam & Community members
✴ Discuss Roadmaps and MajorVersion releases of Frameworks,Tools and Modules
✴ Discuss behind the scenes and inside the minds of creators, learn why and not just
what they’re building
✴ Discuss real world applications of CFML and the problems you’re facing and how
you’re solving those problems
✴ Discuss best practices and lessons learned
™
✴ Weekly Podcast ( Possibly live )
✴ Shorter Format => 10-15 mins
✴ Ortus and CFML Community News so you always know about conferences and
releases
✴ Spotlight and share tweets, blogs and video so you don’t miss the good stuff
✴ Share hints and tips - including latestVS Code themes and extensions
✴ Forgebox Module Reviews to make you more efficient.

™
HAPPY BOX - RECORDINGS
OPEN HACKATHONS
Ortus Sponsored 

Prizes, Food and Drinks
Starting with Houston
Targeting Universities
CFML Indoctrination

Fall 2019
SEÑOR SAMUEL
CIRCA 2015
OUR ACTUAL REPOSITORY
Into The Box 2019
(How Coldbox Made Coldfusion Great Again)
Samuel W. Knowlton
sam@inleague.io / @MordantWastrel / @SKnowlton (CFML Slack)
inLeague LLC
Austin, TX
SO ADVANCED
WE’RE HERETO LEARN
(ANDTO SUPPORT ORTUS)
✴ Every part of what we do relies on ColdBox, ColdBox Modules, or
CommandBox
✴ We don’t have a formal relationship with Ortus 

(but we like submitting PRs)
✴ We didn’t sponsor anything
✴ Ortus isn’t paying us or even giving us free ITB tickets to talk to you about
all this
NOTTHAT WE DIDN’T ASK
INLEAGUE:THE DEVELOPMENTVEHICLE
✴ Usually 2-3 Employees, 2-3 contract as-needed
✴ Volunteer youth soccer league management for around 15 individual
leagues of the AmericanYouth Soccer Organization – around 10% of their
players
✴ Admissions and lottery for the Success Academy Charter Schools, a New
York City network of 45+ public schools that admit by lottery (2011-)
✴ 2018 Gross revenue over 7x 2008; Net is over 5x
OWNYOUR PRODUCT (DON’T HATE)
REST HMVC: FROM CF SUMMITTO OUR WALLET
Fall 2017 Today
/**
* scholar.index
* @hint Retrieves a single scholar record matching the scholarID path
parameter.
* @X-author Samuel W. Knowlton (inLeague LLC) <sam@inleague.io>
* @param-scholarID{36} { "name": "scholarID{36}", "type" : "string",
"format": "guid", "in": "path", "required": "true", "description": "Scholar
unique GUID (childID) to be retrieved." }
* @response-404 { "description" : "No scholar found matching specified
GUID.", "schema" : "/resources/api/response.json"}
* @response-200 { "description" : "Record Located", "schema" :
"/resources/api/scholars.schema.json" }
**/
function index( event, rc, prc ) {
var scholarResult = ScholarAPIService.getScholarByGUID( rc.scholarID );
if (! isNull( scholarResult ) ) {
prc.response.setError( true )
.setStatusCode( 404 )
.setStatusText( "NOT FOUND" )
.addMessage( "No scholar found with GUID " & rc.scholarID );
}
if ( !prc.response.getError() ) {
prc.response.setData( fractal.builder()
.item( scholarResult )
.withTransformer( "ScholarAPIJSONTransformer" )
.withSerializer( "SimpleSerializer@cffractal" )
.convert()
);
}
}
/**
* scholar.index
* @hint Retrieves a single scholar record matching the scholarID path
parameter.
* @X-author Samuel W. Knowlton (inLeague LLC) <sam@inleague.io>
* @param-scholarID{36} { "name": "scholarID{36}", "type" : "string",
"format": "guid", "in": "path", "required": "true", "description": "Scholar
unique GUID (childID) to be retrieved." }
* @response-404 { "description" : "No scholar found matching specified
GUID.", "schema" : "/resources/api/response.json"}
* @response-200 { "description" : "Record Located", "schema" :
"/resources/api/scholars.schema.json" }
**/
function index( event, rc, prc ) {
var scholarResult = ScholarAPIService.getScholarByGUID( rc.scholarID );
if (! isNull( scholarResult ) ) {
prc.response.setError( true )
.setStatusCode( 404 )
.setStatusText( "NOT FOUND" )
.addMessage( "No scholar found with GUID " & rc.scholarID );
}
if ( !prc.response.getError() ) {
prc.response.setData( fractal.builder()
.item( scholarResult )
.withTransformer( "ScholarAPIJSONTransformer" )
.withSerializer( "SimpleSerializer@cffractal" )
.convert()
);
}
}
cbSwagger:
Automated
API docs
REST-HMVC
baseHandler
and
Response.cfc
Cffractal:
Transformations
THE /MODULES FOLDER
ISTHE BEST FOLDER
✴ cbStreams: Big Collections
✴ cbSwagger: How DoesThis Work
✴ cbvalidation:Abort/Retry/Fail
✴ cffractal:Act LikeYou Did What the
Client Asked
✴ cfmigrations: Stop Emailing SQL
✴ hyper: DRY HTTPS
✴ mementifier: Input for cffractal and
cbvalidation
✴ cborm: Making CFORM Pretty Good Until
You Get Quick
✴ qb: Like learning a new Clef but you’ll never
go back
✴ s3sdk: Docker Containers Hate Storage and
Gotta Put the Cat Pics Somewhere
✴ Quick:The Special Sauce, aka No More
Bean Factories
✴ rollbar: Bugs grouped by stack trace with
Slack notifications and assign them to Andrew
THAT SOUNDS GREAT AND ALL, BUT…
13
STATE OFTHE BOX
✴ 13Years in June
✴ Mature
✴ Established
✴ De facto standard for HMVC
✴ 4.x Series Started in 2015
✴ 5.x Series Started in 2018
✴ 8 Minor Releases
✴ 2 Major Architectural Shifts
✴ Not done yet!
GROWING ECOSYSTEM
✴ 294+ Modules Ecosystem
✴ 60 past 12 months
✴ 384 Closed Pull Requests
✴ 372 box-team members
✴ 568 #box-products members
ForgeBox Modules
0
100
200
300
400
2011 2012 2013 2014 2015 2016 2017 2018 2019
emoji 🤯 & Alexa Modules
Best indicator of success
5 VISION RECAP
✓ Increase Modularity
✓ Containerization
✓ Renderings
✓ Routing + APIs
✓ Ecosystem
Engine Updates
Container Support
Automation
Modularity
API Focus
Handler JSON
New Routing DSL
Named Routes
Resourceful Routes
Named Regions
APITesting
Script Conversions
Auto JSON Payloads
Flash RAM
New HTML Helper
XSS Helper
Fail Fast
cgi.https
HTML Helper
autoMapModels
Router as Interceptor
Rendering
Improvements
Virtual Inheritance
WireBox Errors
ENV Environments
Routing FineTuning
5.0 5.1 5.2
Fail Fast Closures
Multi Domain SES
Concurrent Interceptors
ColdBox Init
Interception
Enhancements
WireBoxTransients Boost
5.3
12 MONTH JOURNEY
Box Injection Namespace
Runnable Named Routes - runRoute()
Elixir v3 Support
Module Interception Points by Core
High i/o logging for LogBox
Streaming Console Appender
CacheBox Re-Write & Modernization
New Interfaces
CacheBox Performance
New multi methods
ResetTimeoutOnAccess => Session Storages
ACF 2018 Compatibilities
Concurrent Lock Optimizations
5.4.0
12 MONTH JOURNEY
CONTAINERIZATION
✴ Environment Settings
✴ Coldbox.cfc (Application Wide)
✴ ModuleConfig.cfc (Modules)
✴ WireBox Binder
✴ IntegrationTests
✴ Environment EnvironmentVariable
✴ ENVIRONMENT=development
getSystemSetting( key defaultValue )
getSystemProperty( key, defaultValue )
getEnv( key, defaultValue )
RENDERINGS
function index( event, rc, prc ){
return complexData;
}
function index( event, rc, prc ) renderdata=xml{
return complexData;
}
function index( event, rc, prc ) renderdata=pdf{
return complexData;
}
Native JSON + Auto Marshalling
component renderdata="json"
Handler Defaults
AUTO JSON PAYLOADS
{
"name" : "Jon Clausen",
"type" : "awesomeness",
"data" : [ 1,2,3 ]
}
JSON Payload
RCVariables
✴ name = “Jon Clausen”
✴ type = “awesomeness”
✴ data = [ 1, 2, 3 ]
FLUENT ROUTING DSL
✴ Complete Rewrite
✴ Router.cfc
✴ Named Routes
✴ Multi-Domain
✴ Automatic BaseURLs
✴ Domain Routing
✴ Redirects
✴ HMVC - Modularization
App

Router
Module

Router
Module

Router
Module

Router
Module

Router
Module

Router
Module

Router
Module

Router
Module

Router
Module

Router
ROUTING RESPONSES
route( "/luis2/:lname" )
  .toResponse( ( event, rc, prc ) => {
        return "<h1>Hello from lambda land: #arguments.rc.lname#</h1>";
   } );
route( "/contacts", ( event, rc, prc ) => {
event.paramValue( "search", "" )
var contacts = getInstance( "ContactsService" ).list( rc.search );
return contacts;
} );
RESOURCEFUL ROUTES
Verb Route Event Purpose
GET /photos photos.index Display a list of photos
GET /photos/new photos.new Return an HTML form for creating a new photo
POST /photos photos.create Create a new photo
GET /photos/:id photos.show Display a specific photo
GET /photos/:id/edit photos.edit Return an HTML form for editing a photo
POST/PUT/PATCH /photos/:id photos.update Update a specific photo
DELETE /photos/:id photos.delete Delete a specific photo
✴ Automatic Resource Routing
✴ resources( “photos” )
API INTEGRATIONTESTING
✴ request( route, params, headers, method=“get” )
✴ GET( route, params, headers, method=get )
✴ POST( route, params, headers, method=get )
✴ PUT( route, params, headers, method=get )
✴ PATCH( route, params, headers, method=get )
✴ DELETE( route, params, headers, method=get )
BOX INJECTION DSL
✴ coldbox:setting:name -> box:setting:name
✴ coldbox:moduleConfig:module -> box:moduleConfig:module
✴ coldbox:moduleService -> box:moduleService
✴ etc….
?
FUNKYNESS IS FORMING
4YEAR ROADMAP
*2019
5.x
6.x Alpha
2020
6 RC
6 Final
5 LTS
2021
6.x
7.x Alpha
5 LTS
2022
6 LTS
7.x RC
7.x Final
6 VISION
✓ CFML Engine Support + Modernization
✓ Rendering Engines
✓ API Development
✓ Streams + Functional
✓ Concurrency
Mr Funky!
√ Streams
√ Optionals
Futures (Dev)
cbRx
ColdBox 6-7
✴ Streams will be core
✴ CacheBox
✴ WireBox
✴ LogBox
✴ Everywhere!!!
✴ Optionals will be core
>Functional Asynchronicity Reactivity
ColdBox 6-7
✴ View Rendering Engines
✴ ColdBoxViews
✴ CBT
✴ InertiaJS
✴ ServerSide JS
✴ Much More…
IRenderingEngine
CBT
ColdBoxViews
InertiaJS
ServerSide JS
Custom
ColdBox 6-7
✴ WireBox NEXT
✴ Script + Modernization
✴ Better debugging and error messages
✴ Streams Integration
✴ Metadata Storage Streamlining
✴ Metadata + Mapping Pre-Optimizations
✴ Classloading Core (javaloader)
✴ Concurrent Singleton Initializations
✴ Lazy Properties
✴ Optional Functions
ColdBox 6-7
✴ RenderdataTransformers
✴ New/OverrideTypes
✴ Custom JSON Serializer
✴ Vue components as Web Components
✴ Angular classes as Web Components
IRenderingType
xml
json
excel
pdf
vue
✴ CacheBox Functional DSL
✴ Optionals for results
✴ Streams Integration
✴ Parallel
✴ Retrievals/Sets/Lookups/Reaping
✴ Reactivity?
ColdBox 6-7
✴ cbFutures => CompletableFuture (Java)
✴ async function annotations for models
✴ runAsyncEvent(), runAsyncRoute()
✴ announceAsyncInterception()
✴ Reactive events?
ColdBox 6-7
ColdBox QL
✴ ColdBox REST Query Language
✴ ColdBox Routing
✴ Abstract the QL to a consistent 

Search Criteria API
✴ Leverage hibernate, quick, etc for querying
✴ Mementifier for state transformation
✴ ColdBox push the results
✴ Design & Research Phase
✴ 2020
HTTP/S
ColdBox QL
Search Criteria
Quick cbORM
Mementifier
JSON Results
/users?q=lastName:doe,age>25
/users?q=firstName:joe*,age<25,isActive!true
/users?q=slug:~box,isActive:true,name=*box
WE ARE STILL EXCITED
BOX EVANGELIST
STATE OF COMMAND
✴ 5Years in June
✴ Our first server product
✴ 157 JIRA tickets resolved
✴ 32 merged pull requests
✴ 19,400+ Downloads
✴ 4.x Series 2018
✴ 6 Minor Releases
Major rewrite of 

CLI engine loader

Lucee 5 and JSR-223
ImprovedTask Runners
Private packages
Revamped Server Logs
ColdBox 5 Support
Bullet train shell
New UI for progress
bars and interactive jobs

256 colors

Syntax highlighting in
REPL

Interactive Mode for
CI
Load ad-hoc modules
in tasks
Smaller binary size
Tab Completion
Better exit codes
S3 Endpoint
Updated ServerTray
4.0 4.1 4.2
Task RunnerTarget Deps
Gzip Compression
forEach Command
Prelim Java 9-11 Support
4.3
12 MONTH JOURNEY
Enhanced directory
watchers
coldbox reinit
JSON color
highlighting
Gist Endpoint
OpenJDK
Shell Environment
Vars
ForgeBox Enterprise
Bundled JRE to
OpenJDK
TestBox code
coverage
Env var expansions in
REPL
Tab complete for
private packages
Exit codes forTask
Runners
4.4 4.5 4.6
12 MONTH JOURNEY
CFMLTRANSFORMED
✴ Don’t need to spin up a server to run CFML
✴ Automate builds and processes with CFML from the command line
✴ Simpler local development
✴ Scripted, consistent deployments
✴ Easier CI/CD
✴ New CFML-based CLI utilities like:
✴ fixinator, codechecker, cfformat, and cfscriptme
=> APP/WEB SERVER
Undertow
Runwar
Custom
Modules
Core
Modules
Module Service
L

o

a

d

e

r
WireBox
✴ Full Production Web Server
✴ Full Production Java EE Servlet 4.0
✴ Non Blocking I/O
✴ High Performance
✴ Small Binary
✴ HTTP/2 Support
✴ HTTPS Support
✴ Web Socket Support
GROWINGTO BECOMETHE

#1 APP/WEB SERVER 

OF CHOICE
✴ 36,600+ Adobe engine downloads
✴ 36,500+ Lucee engine downloads
✴ Powering local development
✴ Powering Docker containers
✴ Powering productionVMs
Ortus wants to strengthen this area and support our users
✴ POSS CommandBox
✴ POSS Images
✴ Automatic JDK Management
✴ POSS Modules
✴ DotEnv, Host Updater,
CFConfig, Ngrok,
CodeChecker, BulletTrain
✴ Exclusive Modules
✴ STIG CFML Lockdown
✴ Audit Command
✴ Service Manager
✴ High Priority Fixes
✴ Support + Mentorship
Now!
Runs jQuery!
Developer
License
$29/month
Server
License
$39/Month
Unlimited JVM
Instances
Unlimited
Containers
JBoss,Resin, Glassfish,Weblogic,
Websphere

$600/month/avg
WHAT’S COMING!
4YEAR ROADMAP
*2019
4.x
5.x Alpha
2020
5 RC
5 Final
4 LTS
2021
5.x
6.x Alpha
4 LTS
2022
5 LTS
6.x RC
6.x Final
COMMANDBOX IMAGES
Source
Code
CFConfig Settings
Lucee Extensions
CFML Engine
server.json
D

o

c

k

e

r
environment
$ server start image=slug@version
FUTURE EPICS
✴ More JVM Languages
✴ Java, Kotlin, Groovy, Scala, JRuby, etc…
✴ Maven Endpoint
✴ Easy Websockets
✴ More Portability
✴ More Performance
✴ Better Security (ip restrictions, waf, etc)
✴ Undertow v3 (Netty vs XNIO)
✴ More ASCII art!
✴ Strategic Partnerships….
• More JVM Languages
• Java, Kotlin, Groovy, Scala, JRuby, etc…
• Maven Endpoint
• Easy Websockets
• More Portability
• More Performance
• Better Security (ip restrictions, waf, etc)
• Undertow v3 (Netty vs XNIO)
• More ASCII art!
• Strategic Partnerships….
FUTURE EPICS
SEÑOR SECURITY
BUILDING ON ORTUS TOOLS
Pete Freitagfoundeo
FOUNDEO 💚 ORTUS TOOLS
➤ CommandBox
➤ FORGEBOX
➤ TestBox
➤ ColdBox
➤ Ortus Docker Images
SOME GAPS IN CFML SECURITY TOOLING
➤ No one was keeping track of known vulnerable CFML libraries
➤ No tools could detect vulnerable CFML libraries
➤ Should be able to check for vulnerable dependencies
➤ Existing CFML code security tools, worked poorly, expensive,
and CI workflows impossible or difficult.
“NEARLY 60% OF BREACHES
DUE TO UN-PATCHED
VULNERABILITY
-According to a ServiceNow Survey
FIXINATOR
Stop. Demo Time.
FIXINATOR
➤ Client implemented on top of CommandBox as a command
➤ Scans for known vulnerable third party CFML, Java & JS libraries
➤ Scans your code for security issues as well
WHY COMMANDBOX? SIMPLE INSTALLATION
box install fixinator
WHY COMMANDBOX? PRODUCTIVITY
➤ If you know CFML you can write your own CLI tools
➤ The command API is easy to use
➤ Has everything you could possibly want
WHY COMMANDBOX? SIMPLIFIED PRODUCT STRATEGY
➤ Once I decided to implement as a command
➤ Got to market quickly
➤ Worked on the scanner on and off for over 10 years
➤ Didn’t need a GUI
➤ Simplified the CI integration story
➤ Each CI integration is just a few lines of code
FIXINATOR COMMUNITY EDITION
➤ Complimentary license keys made available to 

ALL open source CFML projects!
➤ Free scanning of box.json files for everyone!
COMING SOON
➤ Fixinator private package scanning in
➤ FORGEBOX Pro
➤ FORGEBOX Enterprise
MO BOX!!
✴ Feedback driven journey
✴ Lots of customer feedback
✴ Very Busy (12 Months)
✴ 14 ForgeBoxVersion Releases
✴ 99 New Users
✴ 143 New Packages
✴ 1,508 NewVersions
✴ 60,127 Package Installs
STATE OF FORGEBOX
STATE OF FORGEBOX
ForgeBox Users
0
150
300
450
600
2012 2013 2014 2015 2016 2017 2018 2019
STATE OF FORGEBOX
New Packages
0
175
350
525
700
2012 2013 2014 2015 2016 2017 2018 2019
STATE OF FORGEBOX
New PackageVersions
0
1250
2500
3750
5000
2012 2013 2014 2015 2016 2017 2018 2019
Lucee Extensions
Package Storage
Private Packages
Search
Enhancements
Badges
S3 SDK
UI Updates
Caching Updates
Collaborators
Slug Requirements
Emojis 🤩
New UI
Enterprise Support
S3 Multi Region
ColdBox 5
GDPR
ColdBox Elixir
Vue Integration
Drop API Compat
VersionsTab
Storage Rewrite
BetterValidation
Mementifier API
3.0 3.1 4.0
UI Updates
Collaborators Invite/
Reject Updates
4.1
12 MONTH JOURNEY
CLI Storage Fixes
Layout
Consolidations
Enterprise Logs
Enterprise Cache
Actions
Slug Search
Mementifier Updates
Version Outputs
4.2 4.3 4.4
Licensing Constraints
Responsiveness
Enterprise News Banners
Documentation
Search Improvements
Pagination UI
Digital Ocean Support
Clickjacking
Session Rotations
Enterprise Google
Analytics
Admin Dashboard Stats
4.5
12 MONTH JOURNEY
/@user
API data grooming
API Secure
Annotations
New User
Dashboards
VersionTab Updates
DependencyViewer
Badges
4.6 4.7
12 MONTH JOURNEY
NEW MODERN UI
PACKAGE STORAGE
✴ “location” = “forgeboxStorage”
✴ForgeBox stores your software
✴Versioning Included
✴Private and Secure Storage
✴US and EU Mirrors
✴FREE for all open source packages (10GB)
✴PRO Accounts (50GB)
PRIVATE PACKAGES
✴ PRO Accounts
✴ Unlimited Packages
✴ Storage Included
✴ Unlimited Collaborations
✴ Free for now
package init
package set private=true
package set slug=my-slug@forgeBoxUser
etc...
publish
install slug@forgeboxUser
install slug@forgeboxUser@be
install slug@forgeboxUser@1.0.0
LUCEE EXTENSION PROVIDER
https://www.forgebox.io
publish
CommandBox> package set type=lucee-extensions
CommandBox> publish
ENTERPRISE IS HERE
FEATURES
✴ Secure + Isolated private registry
✴ SSL + WAF
✴ Unlimited public/private packages
✴ 250GB Package Storage + CDN
✴ Custom CommandBox Namespace
✴ Unlimited Collaborators
✴ Custom Access Rules
✴ Custom Security, Roles and Permissions
✴ Fixinator & Package Auditing (*Coming)
EASYTO USE
forgebox endpoint register abc https://abc.forgebox.io/api/v1
forgebox login endpointName=abc
Register Endpoint
Login
forgebox install abc:coldbox
Use
BENEFITS
✴ Scalable Binary Storage
✴ Detect outdated packages
✴ Faster updates
✴ No more repository cloning or full downloads
✴ Fast Semver evaluations
✴ Faster Downloads (CDN)
✴ Security
✴ No more source code access
✴ Granular installation/publishing access
✴ Security Audits and Fixinator via Foundeo
LEARN MORE
Brad Wood
Javier Quintero
DAY 2 - BOX ROOM
WHAT’S COMING!
ROADMAP
Q2
Pro Subscriptions
Swagger Docs
Password Meters
Password Rules
Q3
Security Audits
Fixinator
Analytics
Two-Factor Auth
Q4
Teams
Collaboration
Managers
2020
PackageTransfers
Notifications
Web hooks
Code Quality
Code Metrics
Search Contexts
MOLDTHE CFML FUTURE
THANKS & ENJOY!

More Related Content

Similar to ITB2019 Keynotes Day 1 - Ortus Team

Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
Ortus Solutions, Corp
 
JavaScript For People Who Don't Code
JavaScript For People Who Don't CodeJavaScript For People Who Don't Code
JavaScript For People Who Don't Code
Christopher Schmitt
 
700 Tons of Code Later
700 Tons of Code Later700 Tons of Code Later
700 Tons of Code Later
Alexander Shopov
 
JCConf 2016 - Google Dataflow 小試
JCConf 2016 - Google Dataflow 小試JCConf 2016 - Google Dataflow 小試
JCConf 2016 - Google Dataflow 小試
Simon Su
 
ITB2017 - Keynote
ITB2017 - KeynoteITB2017 - Keynote
ITB2017 - Keynote
Ortus Solutions, Corp
 
The Expanding Nature of SEO (MarTech 2016)
The Expanding Nature of SEO (MarTech 2016)The Expanding Nature of SEO (MarTech 2016)
The Expanding Nature of SEO (MarTech 2016)
Micah Fisher-Kirshner
 
Building Semantic HTML tables
Building Semantic HTML tablesBuilding Semantic HTML tables
Building Semantic HTML tables
Ray Villalobos
 
Being Buck Woody - PASS Summit 2014 Edition
Being Buck Woody - PASS Summit 2014 EditionBeing Buck Woody - PASS Summit 2014 Edition
Being Buck Woody - PASS Summit 2014 Edition
Mark Broadbent
 
05092019 The Battle of the IDEs by Ko Turk at the AlmereJUG / Conspect
05092019 The Battle of the IDEs by Ko Turk at the AlmereJUG / Conspect05092019 The Battle of the IDEs by Ko Turk at the AlmereJUG / Conspect
05092019 The Battle of the IDEs by Ko Turk at the AlmereJUG / Conspect
Ko Turk
 
Serverless Finland Meetup 16.11.2016: Messenger Bot Workshop
Serverless Finland Meetup 16.11.2016: Messenger Bot WorkshopServerless Finland Meetup 16.11.2016: Messenger Bot Workshop
Serverless Finland Meetup 16.11.2016: Messenger Bot Workshop
Mikael Puittinen
 
Elastic Data Analytics Platform @Datadog
Elastic Data Analytics Platform @DatadogElastic Data Analytics Platform @Datadog
Elastic Data Analytics Platform @Datadog
C4Media
 
Coding for beginners - Future Assembly 2016
Coding for beginners - Future Assembly 2016Coding for beginners - Future Assembly 2016
Coding for beginners - Future Assembly 2016
Milly Schmidt
 
Economies of Scaling Software
Economies of Scaling SoftwareEconomies of Scaling Software
Economies of Scaling Software
Joshua Long
 
Library 2.0: A Roadmap
Library 2.0: A RoadmapLibrary 2.0: A Roadmap
Library 2.0: A Roadmap
St. Petersburg College
 
Continuous integration by Rémy Virin
Continuous integration by Rémy VirinContinuous integration by Rémy Virin
Continuous integration by Rémy Virin
CocoaHeads France
 
From Hacker to Programmer (w/ Webpack, Babel and React)
From Hacker to Programmer (w/ Webpack, Babel and React)From Hacker to Programmer (w/ Webpack, Babel and React)
From Hacker to Programmer (w/ Webpack, Babel and React)
Joseph Chiang
 
Failing @ Scaling: Don’t panic, and carry a towel!
Failing @ Scaling: Don’t panic, and carry a towel!Failing @ Scaling: Don’t panic, and carry a towel!
Failing @ Scaling: Don’t panic, and carry a towel!
Em Campbell-Pretty
 
Put a little Backbone in your WordPress vs. 3
Put a little Backbone in your WordPress vs. 3Put a little Backbone in your WordPress vs. 3
Put a little Backbone in your WordPress vs. 3
adamsilverstein
 
Getting Things Done at Scale
Getting Things Done at ScaleGetting Things Done at Scale
Getting Things Done at Scale
Amber Case
 
Wordpress Meetup 2 23 10
Wordpress Meetup 2 23 10Wordpress Meetup 2 23 10
Wordpress Meetup 2 23 10
boonebgorges
 

Similar to ITB2019 Keynotes Day 1 - Ortus Team (20)

Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
JavaScript For People Who Don't Code
JavaScript For People Who Don't CodeJavaScript For People Who Don't Code
JavaScript For People Who Don't Code
 
700 Tons of Code Later
700 Tons of Code Later700 Tons of Code Later
700 Tons of Code Later
 
JCConf 2016 - Google Dataflow 小試
JCConf 2016 - Google Dataflow 小試JCConf 2016 - Google Dataflow 小試
JCConf 2016 - Google Dataflow 小試
 
ITB2017 - Keynote
ITB2017 - KeynoteITB2017 - Keynote
ITB2017 - Keynote
 
The Expanding Nature of SEO (MarTech 2016)
The Expanding Nature of SEO (MarTech 2016)The Expanding Nature of SEO (MarTech 2016)
The Expanding Nature of SEO (MarTech 2016)
 
Building Semantic HTML tables
Building Semantic HTML tablesBuilding Semantic HTML tables
Building Semantic HTML tables
 
Being Buck Woody - PASS Summit 2014 Edition
Being Buck Woody - PASS Summit 2014 EditionBeing Buck Woody - PASS Summit 2014 Edition
Being Buck Woody - PASS Summit 2014 Edition
 
05092019 The Battle of the IDEs by Ko Turk at the AlmereJUG / Conspect
05092019 The Battle of the IDEs by Ko Turk at the AlmereJUG / Conspect05092019 The Battle of the IDEs by Ko Turk at the AlmereJUG / Conspect
05092019 The Battle of the IDEs by Ko Turk at the AlmereJUG / Conspect
 
Serverless Finland Meetup 16.11.2016: Messenger Bot Workshop
Serverless Finland Meetup 16.11.2016: Messenger Bot WorkshopServerless Finland Meetup 16.11.2016: Messenger Bot Workshop
Serverless Finland Meetup 16.11.2016: Messenger Bot Workshop
 
Elastic Data Analytics Platform @Datadog
Elastic Data Analytics Platform @DatadogElastic Data Analytics Platform @Datadog
Elastic Data Analytics Platform @Datadog
 
Coding for beginners - Future Assembly 2016
Coding for beginners - Future Assembly 2016Coding for beginners - Future Assembly 2016
Coding for beginners - Future Assembly 2016
 
Economies of Scaling Software
Economies of Scaling SoftwareEconomies of Scaling Software
Economies of Scaling Software
 
Library 2.0: A Roadmap
Library 2.0: A RoadmapLibrary 2.0: A Roadmap
Library 2.0: A Roadmap
 
Continuous integration by Rémy Virin
Continuous integration by Rémy VirinContinuous integration by Rémy Virin
Continuous integration by Rémy Virin
 
From Hacker to Programmer (w/ Webpack, Babel and React)
From Hacker to Programmer (w/ Webpack, Babel and React)From Hacker to Programmer (w/ Webpack, Babel and React)
From Hacker to Programmer (w/ Webpack, Babel and React)
 
Failing @ Scaling: Don’t panic, and carry a towel!
Failing @ Scaling: Don’t panic, and carry a towel!Failing @ Scaling: Don’t panic, and carry a towel!
Failing @ Scaling: Don’t panic, and carry a towel!
 
Put a little Backbone in your WordPress vs. 3
Put a little Backbone in your WordPress vs. 3Put a little Backbone in your WordPress vs. 3
Put a little Backbone in your WordPress vs. 3
 
Getting Things Done at Scale
Getting Things Done at ScaleGetting Things Done at Scale
Getting Things Done at Scale
 
Wordpress Meetup 2 23 10
Wordpress Meetup 2 23 10Wordpress Meetup 2 23 10
Wordpress Meetup 2 23 10
 

More from Ortus Solutions, Corp

BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
ITB2024 - Keynote Day 1 - Ortus Solutions.pdf
ITB2024 - Keynote Day 1 - Ortus Solutions.pdfITB2024 - Keynote Day 1 - Ortus Solutions.pdf
ITB2024 - Keynote Day 1 - Ortus Solutions.pdf
Ortus Solutions, Corp
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
Ortus Solutions, Corp
 
Ortus Government.pdf
Ortus Government.pdfOrtus Government.pdf
Ortus Government.pdf
Ortus Solutions, Corp
 
Luis Majano The Battlefield ORM
Luis Majano The Battlefield ORMLuis Majano The Battlefield ORM
Luis Majano The Battlefield ORM
Ortus Solutions, Corp
 
Brad Wood - CommandBox CLI
Brad Wood - CommandBox CLI Brad Wood - CommandBox CLI
Brad Wood - CommandBox CLI
Ortus Solutions, Corp
 
Secure your Secrets and Settings in ColdFusion
Secure your Secrets and Settings in ColdFusionSecure your Secrets and Settings in ColdFusion
Secure your Secrets and Settings in ColdFusion
Ortus Solutions, Corp
 
Daniel Garcia ContentBox: CFSummit 2023
Daniel Garcia ContentBox: CFSummit 2023Daniel Garcia ContentBox: CFSummit 2023
Daniel Garcia ContentBox: CFSummit 2023
Ortus Solutions, Corp
 
ITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdf
ITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdfITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdf
ITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdf
Ortus Solutions, Corp
 
ITB_2023_CommandBox_Multi-Server_-_Brad_Wood.pdf
ITB_2023_CommandBox_Multi-Server_-_Brad_Wood.pdfITB_2023_CommandBox_Multi-Server_-_Brad_Wood.pdf
ITB_2023_CommandBox_Multi-Server_-_Brad_Wood.pdf
Ortus Solutions, Corp
 
ITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdf
ITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdfITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdf
ITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdf
Ortus Solutions, Corp
 
ITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdf
ITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdfITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdf
ITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdf
Ortus Solutions, Corp
 
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdfITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
Ortus Solutions, Corp
 
ITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdf
ITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdfITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdf
ITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdf
Ortus Solutions, Corp
 
ITB_2023_CBWire_v3_Grant_Copley.pdf
ITB_2023_CBWire_v3_Grant_Copley.pdfITB_2023_CBWire_v3_Grant_Copley.pdf
ITB_2023_CBWire_v3_Grant_Copley.pdf
Ortus Solutions, Corp
 
ITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdf
ITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdfITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdf
ITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdf
Ortus Solutions, Corp
 
ITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdf
ITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdfITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdf
ITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdf
Ortus Solutions, Corp
 
ITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdf
ITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdfITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdf
ITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdf
Ortus Solutions, Corp
 
ITB_2023_Chatgpt_Box_Scott_Steinbeck.pdf
ITB_2023_Chatgpt_Box_Scott_Steinbeck.pdfITB_2023_Chatgpt_Box_Scott_Steinbeck.pdf
ITB_2023_Chatgpt_Box_Scott_Steinbeck.pdf
Ortus Solutions, Corp
 
ITB_2023_CommandBox_Task_Runners_Brad_Wood.pdf
ITB_2023_CommandBox_Task_Runners_Brad_Wood.pdfITB_2023_CommandBox_Task_Runners_Brad_Wood.pdf
ITB_2023_CommandBox_Task_Runners_Brad_Wood.pdf
Ortus Solutions, Corp
 

More from Ortus Solutions, Corp (20)

BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
ITB2024 - Keynote Day 1 - Ortus Solutions.pdf
ITB2024 - Keynote Day 1 - Ortus Solutions.pdfITB2024 - Keynote Day 1 - Ortus Solutions.pdf
ITB2024 - Keynote Day 1 - Ortus Solutions.pdf
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Ortus Government.pdf
Ortus Government.pdfOrtus Government.pdf
Ortus Government.pdf
 
Luis Majano The Battlefield ORM
Luis Majano The Battlefield ORMLuis Majano The Battlefield ORM
Luis Majano The Battlefield ORM
 
Brad Wood - CommandBox CLI
Brad Wood - CommandBox CLI Brad Wood - CommandBox CLI
Brad Wood - CommandBox CLI
 
Secure your Secrets and Settings in ColdFusion
Secure your Secrets and Settings in ColdFusionSecure your Secrets and Settings in ColdFusion
Secure your Secrets and Settings in ColdFusion
 
Daniel Garcia ContentBox: CFSummit 2023
Daniel Garcia ContentBox: CFSummit 2023Daniel Garcia ContentBox: CFSummit 2023
Daniel Garcia ContentBox: CFSummit 2023
 
ITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdf
ITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdfITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdf
ITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdf
 
ITB_2023_CommandBox_Multi-Server_-_Brad_Wood.pdf
ITB_2023_CommandBox_Multi-Server_-_Brad_Wood.pdfITB_2023_CommandBox_Multi-Server_-_Brad_Wood.pdf
ITB_2023_CommandBox_Multi-Server_-_Brad_Wood.pdf
 
ITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdf
ITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdfITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdf
ITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdf
 
ITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdf
ITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdfITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdf
ITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdf
 
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdfITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
 
ITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdf
ITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdfITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdf
ITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdf
 
ITB_2023_CBWire_v3_Grant_Copley.pdf
ITB_2023_CBWire_v3_Grant_Copley.pdfITB_2023_CBWire_v3_Grant_Copley.pdf
ITB_2023_CBWire_v3_Grant_Copley.pdf
 
ITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdf
ITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdfITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdf
ITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdf
 
ITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdf
ITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdfITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdf
ITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdf
 
ITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdf
ITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdfITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdf
ITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdf
 
ITB_2023_Chatgpt_Box_Scott_Steinbeck.pdf
ITB_2023_Chatgpt_Box_Scott_Steinbeck.pdfITB_2023_Chatgpt_Box_Scott_Steinbeck.pdf
ITB_2023_Chatgpt_Box_Scott_Steinbeck.pdf
 
ITB_2023_CommandBox_Task_Runners_Brad_Wood.pdf
ITB_2023_CommandBox_Task_Runners_Brad_Wood.pdfITB_2023_CommandBox_Task_Runners_Brad_Wood.pdf
ITB_2023_CommandBox_Task_Runners_Brad_Wood.pdf
 

Recently uploaded

“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
Project Management Semester Long Project - Acuity
Project Management Semester Long Project - AcuityProject Management Semester Long Project - Acuity
Project Management Semester Long Project - Acuity
jpupo2018
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
fredae14
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 

Recently uploaded (20)

“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
Project Management Semester Long Project - Acuity
Project Management Semester Long Project - AcuityProject Management Semester Long Project - Acuity
Project Management Semester Long Project - Acuity
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 

ITB2019 Keynotes Day 1 - Ortus Team

  • 1.
  • 2.
  • 5. ColdFusion & Java, Redefined May 1 - May 3 | Houston Tx Modernize or Die! SPONSORS SPONSORS
  • 8.
  • 9. HAPPY BOX @ 6 PM
  • 10. TWO RAFFLES ✴ Raffle #1 ✴ 6pm Before Happy Box ✴ Raffle #2 ✴ Friday after last session ✴ Must be Present to win!
  • 12.
  • 13. Brad Wood Jon Clausen Jorge Reyes Gavin PickinBill Garoutte Esme Acevedo Eric Peterson Javier QuinteroCarlos Castillo Saeed BawaneyEdgardo Cabezas Luis Majano Manuel Monedero Israel Urquiza
  • 14. ORTUS CFML MODERNIZATION PLAN Tooling Community Education 2016
  • 15. MEMORY LANE 2006 “Study the past if you want to define the future.” Confucious
  • 16. 2006 2007 2008 ✴ Ortus Founded ✴ ColdBox Beta ✴ ColdBox Docs Daniel Powter
 Bad Day 2009 BIRTH - HOPE ✴ Ortus Site ✴ ColdBox Site ✴ ColdBox IRC!! ✴ Plugins ✴ Dashboard ✴ ColdBox Cache Beyonce 
 Irreplaceable ✴ ColdBox 2.6 Series ✴ Integration Testing ✴ REST ✴ 1st Training ✴ BD + Railo Support ✴ 1st Conference ✴ Railo Open Source Flo Rida Low ✴ Groovy or CFML ✴ ColdBox Book ✴ Trainings Commitment ✴ ForgeBox v1 ✴ ColdBox 3.x in dev ✴ LogBox, MockBox ✴ CodexWiki ✴ BeanFactory (WireBox) ✴ Groovy Loaders ✴ cbORM Black Eyed Peas Boom Boom Pow
  • 17. 2010 2011 2012 ✴ CacheBox Released ✴ Databoss begins ✴ CFBuilder Integrations ✴ HMVC Modules ✴ ColdBox Support Services ✴ Migrated to Github Ke$ha
 Tik Tok 2013 INFANCY ✴ Ortus Full Time ✴ WireBox ✴ ColdBox 3 ✴ ColdBox Relax ✴ Module Dev Explodes ✴ BlogBox is born ✴ Bill Garoutte Adele
 Rolling in the deep ✴ ContentBox v1 ✴ ColdBox 3.5 ✴ Brad Wood ✴ ColdBox Dev Week ✴ New Logos ✴ ColdBox DevBox ✴ Railo Extensions ✴ Online Courses ✴ TestBox Ideas Gotye fea Kimbra Somebody that I used to Know ✴ DataBoss Released ✴ Jira ✴ Into The Box Ideas ✴ Couchbase ❤ ✴ ProfileBox Released ✴ TestBox Released ✴ Jorge Reyes ✴ Project Gideon Begins Macklemore Can’t Hold Us
  • 18. 2014 2015 2016 ✴ ColdBox 4 Roadmap ✴ CommandBox Beta ✴ CFCouchbase SDK ✴ ContentBox 2.x ✴ TestBox BDD Training ✴ First ITB Pharell Williams Happy 2017 CHILDHOOD ✴ Ortus => Houston ✴ Ortus Dev Week ✴ ColdBox 4 ✴ CommandBox v1-2 ✴ Gitbook Docs ✴ Gavin Pickin ✴ Lucee Extensions ✴ ForgeBox v2 Begins Bruno Mars Uptown Funk ✴ ContentBox v3 ✴ CommandBox v3 ✴ ColdBox 10 Years! ✴ DocBox ✴ Legacy Initiatives ✴ Jon, Esme, Eric ✴ Patreon Begins ✴ Containers/Cloud ✴ QB Released Justin Bieber Lover Yourself ✴ ITB @ Houston ✴ Docker Images ✴ CFConfig ✴ CFML Micro- Services ✴ ContentBox Docker ✴ CommandBox v4 ✴ Elastic Search ✴ Ortus University Luis Fonsi Despacito
  • 19. 2018 2019 ✴ ContentBox v4 ✴ Task Runners ✴ ColdBox v5 ✴ cbStreams ✴ RuleBox ✴ Redis Extensions ✴ ForgeBox v3 ✴ Quick ORM Drake God’s Plan REBELTEEN ✴ Patreon Growing ✴ Modernize or Die! ✴ Ortus ES born ✴ ??? Ortus El Salvador
 8 Developers
  • 20. The End! 13YEARS GO BY FAST! Focused Intensity through time will lead to success!
  • 21. Focus Areas Support 
 & 
 Training Consulting & Mentoring Staff Augmentation Product Development
  • 23. LEGACY PROBLEM • Gives CFML a bad name • Security Issues • Performance Issues • Employee Issues • Development Issues • Finding Developer Issues • >50% No MVC • >50% No DI • >50% NoTesting Refresh is not validTesting
  • 24. CFML SHAMING • No More Excuses • We have the tools • Show them off! • Tell your story!
  • 26. No Hacks No Shortcuts Hard Work Focused IntensityThroughTime
  • 27.
  • 28. HARD REALITY They won’t do it! Take Ownership Be Disciplined Innovate From Within Create cool tools, apps, solutions Share!
  • 29. New Initiatives… Modernize Or Die!™ Podcasts Let us be the little voices in your head
  • 30. Why?
  • 32. ✴ Weekly podcast ✴ Longer format =>30-60 mins ✴ Interviews and discussions with the OrtusTeam & Community members ✴ Discuss Roadmaps and MajorVersion releases of Frameworks,Tools and Modules ✴ Discuss behind the scenes and inside the minds of creators, learn why and not just what they’re building ✴ Discuss real world applications of CFML and the problems you’re facing and how you’re solving those problems ✴ Discuss best practices and lessons learned ™
  • 33. ✴ Weekly Podcast ( Possibly live ) ✴ Shorter Format => 10-15 mins ✴ Ortus and CFML Community News so you always know about conferences and releases ✴ Spotlight and share tweets, blogs and video so you don’t miss the good stuff ✴ Share hints and tips - including latestVS Code themes and extensions ✴ Forgebox Module Reviews to make you more efficient.
 ™
  • 34. HAPPY BOX - RECORDINGS
  • 35. OPEN HACKATHONS Ortus Sponsored 
 Prizes, Food and Drinks Starting with Houston Targeting Universities CFML Indoctrination
 Fall 2019
  • 39. Into The Box 2019 (How Coldbox Made Coldfusion Great Again) Samuel W. Knowlton sam@inleague.io / @MordantWastrel / @SKnowlton (CFML Slack) inLeague LLC Austin, TX
  • 41. WE’RE HERETO LEARN (ANDTO SUPPORT ORTUS) ✴ Every part of what we do relies on ColdBox, ColdBox Modules, or CommandBox ✴ We don’t have a formal relationship with Ortus 
 (but we like submitting PRs) ✴ We didn’t sponsor anything ✴ Ortus isn’t paying us or even giving us free ITB tickets to talk to you about all this
  • 43. INLEAGUE:THE DEVELOPMENTVEHICLE ✴ Usually 2-3 Employees, 2-3 contract as-needed ✴ Volunteer youth soccer league management for around 15 individual leagues of the AmericanYouth Soccer Organization – around 10% of their players ✴ Admissions and lottery for the Success Academy Charter Schools, a New York City network of 45+ public schools that admit by lottery (2011-) ✴ 2018 Gross revenue over 7x 2008; Net is over 5x
  • 45. REST HMVC: FROM CF SUMMITTO OUR WALLET Fall 2017 Today
  • 46. /** * scholar.index * @hint Retrieves a single scholar record matching the scholarID path parameter. * @X-author Samuel W. Knowlton (inLeague LLC) <sam@inleague.io> * @param-scholarID{36} { "name": "scholarID{36}", "type" : "string", "format": "guid", "in": "path", "required": "true", "description": "Scholar unique GUID (childID) to be retrieved." } * @response-404 { "description" : "No scholar found matching specified GUID.", "schema" : "/resources/api/response.json"} * @response-200 { "description" : "Record Located", "schema" : "/resources/api/scholars.schema.json" } **/ function index( event, rc, prc ) { var scholarResult = ScholarAPIService.getScholarByGUID( rc.scholarID ); if (! isNull( scholarResult ) ) { prc.response.setError( true ) .setStatusCode( 404 ) .setStatusText( "NOT FOUND" ) .addMessage( "No scholar found with GUID " & rc.scholarID ); } if ( !prc.response.getError() ) { prc.response.setData( fractal.builder() .item( scholarResult ) .withTransformer( "ScholarAPIJSONTransformer" ) .withSerializer( "SimpleSerializer@cffractal" ) .convert() ); } }
  • 47. /** * scholar.index * @hint Retrieves a single scholar record matching the scholarID path parameter. * @X-author Samuel W. Knowlton (inLeague LLC) <sam@inleague.io> * @param-scholarID{36} { "name": "scholarID{36}", "type" : "string", "format": "guid", "in": "path", "required": "true", "description": "Scholar unique GUID (childID) to be retrieved." } * @response-404 { "description" : "No scholar found matching specified GUID.", "schema" : "/resources/api/response.json"} * @response-200 { "description" : "Record Located", "schema" : "/resources/api/scholars.schema.json" } **/ function index( event, rc, prc ) { var scholarResult = ScholarAPIService.getScholarByGUID( rc.scholarID ); if (! isNull( scholarResult ) ) { prc.response.setError( true ) .setStatusCode( 404 ) .setStatusText( "NOT FOUND" ) .addMessage( "No scholar found with GUID " & rc.scholarID ); } if ( !prc.response.getError() ) { prc.response.setData( fractal.builder() .item( scholarResult ) .withTransformer( "ScholarAPIJSONTransformer" ) .withSerializer( "SimpleSerializer@cffractal" ) .convert() ); } } cbSwagger: Automated API docs REST-HMVC baseHandler and Response.cfc Cffractal: Transformations
  • 48. THE /MODULES FOLDER ISTHE BEST FOLDER ✴ cbStreams: Big Collections ✴ cbSwagger: How DoesThis Work ✴ cbvalidation:Abort/Retry/Fail ✴ cffractal:Act LikeYou Did What the Client Asked ✴ cfmigrations: Stop Emailing SQL ✴ hyper: DRY HTTPS ✴ mementifier: Input for cffractal and cbvalidation ✴ cborm: Making CFORM Pretty Good Until You Get Quick ✴ qb: Like learning a new Clef but you’ll never go back ✴ s3sdk: Docker Containers Hate Storage and Gotta Put the Cat Pics Somewhere ✴ Quick:The Special Sauce, aka No More Bean Factories ✴ rollbar: Bugs grouped by stack trace with Slack notifications and assign them to Andrew
  • 49. THAT SOUNDS GREAT AND ALL, BUT…
  • 50.
  • 51. 13
  • 52. STATE OFTHE BOX ✴ 13Years in June ✴ Mature ✴ Established ✴ De facto standard for HMVC ✴ 4.x Series Started in 2015 ✴ 5.x Series Started in 2018 ✴ 8 Minor Releases ✴ 2 Major Architectural Shifts ✴ Not done yet!
  • 53. GROWING ECOSYSTEM ✴ 294+ Modules Ecosystem ✴ 60 past 12 months ✴ 384 Closed Pull Requests ✴ 372 box-team members ✴ 568 #box-products members ForgeBox Modules 0 100 200 300 400 2011 2012 2013 2014 2015 2016 2017 2018 2019 emoji 🤯 & Alexa Modules Best indicator of success
  • 54. 5 VISION RECAP ✓ Increase Modularity ✓ Containerization ✓ Renderings ✓ Routing + APIs ✓ Ecosystem
  • 55. Engine Updates Container Support Automation Modularity API Focus Handler JSON New Routing DSL Named Routes Resourceful Routes Named Regions APITesting Script Conversions Auto JSON Payloads Flash RAM New HTML Helper XSS Helper Fail Fast cgi.https HTML Helper autoMapModels Router as Interceptor Rendering Improvements Virtual Inheritance WireBox Errors ENV Environments Routing FineTuning 5.0 5.1 5.2 Fail Fast Closures Multi Domain SES Concurrent Interceptors ColdBox Init Interception Enhancements WireBoxTransients Boost 5.3 12 MONTH JOURNEY
  • 56. Box Injection Namespace Runnable Named Routes - runRoute() Elixir v3 Support Module Interception Points by Core High i/o logging for LogBox Streaming Console Appender CacheBox Re-Write & Modernization New Interfaces CacheBox Performance New multi methods ResetTimeoutOnAccess => Session Storages ACF 2018 Compatibilities Concurrent Lock Optimizations 5.4.0 12 MONTH JOURNEY
  • 57. CONTAINERIZATION ✴ Environment Settings ✴ Coldbox.cfc (Application Wide) ✴ ModuleConfig.cfc (Modules) ✴ WireBox Binder ✴ IntegrationTests ✴ Environment EnvironmentVariable ✴ ENVIRONMENT=development getSystemSetting( key defaultValue ) getSystemProperty( key, defaultValue ) getEnv( key, defaultValue )
  • 58. RENDERINGS function index( event, rc, prc ){ return complexData; } function index( event, rc, prc ) renderdata=xml{ return complexData; } function index( event, rc, prc ) renderdata=pdf{ return complexData; } Native JSON + Auto Marshalling component renderdata="json" Handler Defaults
  • 59. AUTO JSON PAYLOADS { "name" : "Jon Clausen", "type" : "awesomeness", "data" : [ 1,2,3 ] } JSON Payload RCVariables ✴ name = “Jon Clausen” ✴ type = “awesomeness” ✴ data = [ 1, 2, 3 ]
  • 60. FLUENT ROUTING DSL ✴ Complete Rewrite ✴ Router.cfc ✴ Named Routes ✴ Multi-Domain ✴ Automatic BaseURLs ✴ Domain Routing ✴ Redirects ✴ HMVC - Modularization App
 Router Module
 Router Module
 Router Module
 Router Module
 Router Module
 Router Module
 Router Module
 Router Module
 Router Module
 Router
  • 61. ROUTING RESPONSES route( "/luis2/:lname" )   .toResponse( ( event, rc, prc ) => {         return "<h1>Hello from lambda land: #arguments.rc.lname#</h1>";    } ); route( "/contacts", ( event, rc, prc ) => { event.paramValue( "search", "" ) var contacts = getInstance( "ContactsService" ).list( rc.search ); return contacts; } );
  • 62. RESOURCEFUL ROUTES Verb Route Event Purpose GET /photos photos.index Display a list of photos GET /photos/new photos.new Return an HTML form for creating a new photo POST /photos photos.create Create a new photo GET /photos/:id photos.show Display a specific photo GET /photos/:id/edit photos.edit Return an HTML form for editing a photo POST/PUT/PATCH /photos/:id photos.update Update a specific photo DELETE /photos/:id photos.delete Delete a specific photo ✴ Automatic Resource Routing ✴ resources( “photos” )
  • 63. API INTEGRATIONTESTING ✴ request( route, params, headers, method=“get” ) ✴ GET( route, params, headers, method=get ) ✴ POST( route, params, headers, method=get ) ✴ PUT( route, params, headers, method=get ) ✴ PATCH( route, params, headers, method=get ) ✴ DELETE( route, params, headers, method=get )
  • 64. BOX INJECTION DSL ✴ coldbox:setting:name -> box:setting:name ✴ coldbox:moduleConfig:module -> box:moduleConfig:module ✴ coldbox:moduleService -> box:moduleService ✴ etc…. ?
  • 66. 4YEAR ROADMAP *2019 5.x 6.x Alpha 2020 6 RC 6 Final 5 LTS 2021 6.x 7.x Alpha 5 LTS 2022 6 LTS 7.x RC 7.x Final
  • 67. 6 VISION ✓ CFML Engine Support + Modernization ✓ Rendering Engines ✓ API Development ✓ Streams + Functional ✓ Concurrency
  • 68. Mr Funky! √ Streams √ Optionals Futures (Dev) cbRx
  • 69. ColdBox 6-7 ✴ Streams will be core ✴ CacheBox ✴ WireBox ✴ LogBox ✴ Everywhere!!! ✴ Optionals will be core >Functional Asynchronicity Reactivity
  • 70. ColdBox 6-7 ✴ View Rendering Engines ✴ ColdBoxViews ✴ CBT ✴ InertiaJS ✴ ServerSide JS ✴ Much More… IRenderingEngine CBT ColdBoxViews InertiaJS ServerSide JS Custom
  • 71. ColdBox 6-7 ✴ WireBox NEXT ✴ Script + Modernization ✴ Better debugging and error messages ✴ Streams Integration ✴ Metadata Storage Streamlining ✴ Metadata + Mapping Pre-Optimizations ✴ Classloading Core (javaloader) ✴ Concurrent Singleton Initializations ✴ Lazy Properties ✴ Optional Functions
  • 72. ColdBox 6-7 ✴ RenderdataTransformers ✴ New/OverrideTypes ✴ Custom JSON Serializer ✴ Vue components as Web Components ✴ Angular classes as Web Components IRenderingType xml json excel pdf vue
  • 73. ✴ CacheBox Functional DSL ✴ Optionals for results ✴ Streams Integration ✴ Parallel ✴ Retrievals/Sets/Lookups/Reaping ✴ Reactivity? ColdBox 6-7
  • 74. ✴ cbFutures => CompletableFuture (Java) ✴ async function annotations for models ✴ runAsyncEvent(), runAsyncRoute() ✴ announceAsyncInterception() ✴ Reactive events? ColdBox 6-7
  • 75. ColdBox QL ✴ ColdBox REST Query Language ✴ ColdBox Routing ✴ Abstract the QL to a consistent 
 Search Criteria API ✴ Leverage hibernate, quick, etc for querying ✴ Mementifier for state transformation ✴ ColdBox push the results ✴ Design & Research Phase ✴ 2020 HTTP/S ColdBox QL Search Criteria Quick cbORM Mementifier JSON Results /users?q=lastName:doe,age>25 /users?q=firstName:joe*,age<25,isActive!true /users?q=slug:~box,isActive:true,name=*box
  • 76. WE ARE STILL EXCITED
  • 78.
  • 79. STATE OF COMMAND ✴ 5Years in June ✴ Our first server product ✴ 157 JIRA tickets resolved ✴ 32 merged pull requests ✴ 19,400+ Downloads ✴ 4.x Series 2018 ✴ 6 Minor Releases
  • 80. Major rewrite of 
 CLI engine loader
 Lucee 5 and JSR-223 ImprovedTask Runners Private packages Revamped Server Logs ColdBox 5 Support Bullet train shell New UI for progress bars and interactive jobs
 256 colors
 Syntax highlighting in REPL
 Interactive Mode for CI Load ad-hoc modules in tasks Smaller binary size Tab Completion Better exit codes S3 Endpoint Updated ServerTray 4.0 4.1 4.2 Task RunnerTarget Deps Gzip Compression forEach Command Prelim Java 9-11 Support 4.3 12 MONTH JOURNEY
  • 81. Enhanced directory watchers coldbox reinit JSON color highlighting Gist Endpoint OpenJDK Shell Environment Vars ForgeBox Enterprise Bundled JRE to OpenJDK TestBox code coverage Env var expansions in REPL Tab complete for private packages Exit codes forTask Runners 4.4 4.5 4.6 12 MONTH JOURNEY
  • 82. CFMLTRANSFORMED ✴ Don’t need to spin up a server to run CFML ✴ Automate builds and processes with CFML from the command line ✴ Simpler local development ✴ Scripted, consistent deployments ✴ Easier CI/CD ✴ New CFML-based CLI utilities like: ✴ fixinator, codechecker, cfformat, and cfscriptme
  • 83. => APP/WEB SERVER Undertow Runwar Custom Modules Core Modules Module Service L
 o
 a
 d
 e
 r WireBox ✴ Full Production Web Server ✴ Full Production Java EE Servlet 4.0 ✴ Non Blocking I/O ✴ High Performance ✴ Small Binary ✴ HTTP/2 Support ✴ HTTPS Support ✴ Web Socket Support
  • 84. GROWINGTO BECOMETHE
 #1 APP/WEB SERVER 
 OF CHOICE ✴ 36,600+ Adobe engine downloads ✴ 36,500+ Lucee engine downloads ✴ Powering local development ✴ Powering Docker containers ✴ Powering productionVMs Ortus wants to strengthen this area and support our users
  • 85. ✴ POSS CommandBox ✴ POSS Images ✴ Automatic JDK Management ✴ POSS Modules ✴ DotEnv, Host Updater, CFConfig, Ngrok, CodeChecker, BulletTrain ✴ Exclusive Modules ✴ STIG CFML Lockdown ✴ Audit Command ✴ Service Manager ✴ High Priority Fixes ✴ Support + Mentorship Now! Runs jQuery!
  • 88. 4YEAR ROADMAP *2019 4.x 5.x Alpha 2020 5 RC 5 Final 4 LTS 2021 5.x 6.x Alpha 4 LTS 2022 5 LTS 6.x RC 6.x Final
  • 89. COMMANDBOX IMAGES Source Code CFConfig Settings Lucee Extensions CFML Engine server.json D
 o
 c
 k
 e
 r environment $ server start image=slug@version
  • 90. FUTURE EPICS ✴ More JVM Languages ✴ Java, Kotlin, Groovy, Scala, JRuby, etc… ✴ Maven Endpoint ✴ Easy Websockets ✴ More Portability ✴ More Performance ✴ Better Security (ip restrictions, waf, etc) ✴ Undertow v3 (Netty vs XNIO) ✴ More ASCII art! ✴ Strategic Partnerships….
  • 91. • More JVM Languages • Java, Kotlin, Groovy, Scala, JRuby, etc… • Maven Endpoint • Easy Websockets • More Portability • More Performance • Better Security (ip restrictions, waf, etc) • Undertow v3 (Netty vs XNIO) • More ASCII art! • Strategic Partnerships…. FUTURE EPICS
  • 93. BUILDING ON ORTUS TOOLS Pete Freitagfoundeo
  • 94. FOUNDEO 💚 ORTUS TOOLS ➤ CommandBox ➤ FORGEBOX ➤ TestBox ➤ ColdBox ➤ Ortus Docker Images
  • 95. SOME GAPS IN CFML SECURITY TOOLING ➤ No one was keeping track of known vulnerable CFML libraries ➤ No tools could detect vulnerable CFML libraries ➤ Should be able to check for vulnerable dependencies ➤ Existing CFML code security tools, worked poorly, expensive, and CI workflows impossible or difficult.
  • 96. “NEARLY 60% OF BREACHES DUE TO UN-PATCHED VULNERABILITY -According to a ServiceNow Survey
  • 98. FIXINATOR ➤ Client implemented on top of CommandBox as a command ➤ Scans for known vulnerable third party CFML, Java & JS libraries ➤ Scans your code for security issues as well
  • 99. WHY COMMANDBOX? SIMPLE INSTALLATION box install fixinator
  • 100. WHY COMMANDBOX? PRODUCTIVITY ➤ If you know CFML you can write your own CLI tools ➤ The command API is easy to use ➤ Has everything you could possibly want
  • 101. WHY COMMANDBOX? SIMPLIFIED PRODUCT STRATEGY ➤ Once I decided to implement as a command ➤ Got to market quickly ➤ Worked on the scanner on and off for over 10 years ➤ Didn’t need a GUI ➤ Simplified the CI integration story ➤ Each CI integration is just a few lines of code
  • 102. FIXINATOR COMMUNITY EDITION ➤ Complimentary license keys made available to 
 ALL open source CFML projects! ➤ Free scanning of box.json files for everyone!
  • 103. COMING SOON ➤ Fixinator private package scanning in ➤ FORGEBOX Pro ➤ FORGEBOX Enterprise
  • 105.
  • 106. ✴ Feedback driven journey ✴ Lots of customer feedback ✴ Very Busy (12 Months) ✴ 14 ForgeBoxVersion Releases ✴ 99 New Users ✴ 143 New Packages ✴ 1,508 NewVersions ✴ 60,127 Package Installs STATE OF FORGEBOX
  • 107. STATE OF FORGEBOX ForgeBox Users 0 150 300 450 600 2012 2013 2014 2015 2016 2017 2018 2019
  • 108. STATE OF FORGEBOX New Packages 0 175 350 525 700 2012 2013 2014 2015 2016 2017 2018 2019
  • 109. STATE OF FORGEBOX New PackageVersions 0 1250 2500 3750 5000 2012 2013 2014 2015 2016 2017 2018 2019
  • 110. Lucee Extensions Package Storage Private Packages Search Enhancements Badges S3 SDK UI Updates Caching Updates Collaborators Slug Requirements Emojis 🤩 New UI Enterprise Support S3 Multi Region ColdBox 5 GDPR ColdBox Elixir Vue Integration Drop API Compat VersionsTab Storage Rewrite BetterValidation Mementifier API 3.0 3.1 4.0 UI Updates Collaborators Invite/ Reject Updates 4.1 12 MONTH JOURNEY
  • 111. CLI Storage Fixes Layout Consolidations Enterprise Logs Enterprise Cache Actions Slug Search Mementifier Updates Version Outputs 4.2 4.3 4.4 Licensing Constraints Responsiveness Enterprise News Banners Documentation Search Improvements Pagination UI Digital Ocean Support Clickjacking Session Rotations Enterprise Google Analytics Admin Dashboard Stats 4.5 12 MONTH JOURNEY
  • 112. /@user API data grooming API Secure Annotations New User Dashboards VersionTab Updates DependencyViewer Badges 4.6 4.7 12 MONTH JOURNEY
  • 114. PACKAGE STORAGE ✴ “location” = “forgeboxStorage” ✴ForgeBox stores your software ✴Versioning Included ✴Private and Secure Storage ✴US and EU Mirrors ✴FREE for all open source packages (10GB) ✴PRO Accounts (50GB)
  • 115. PRIVATE PACKAGES ✴ PRO Accounts ✴ Unlimited Packages ✴ Storage Included ✴ Unlimited Collaborations ✴ Free for now package init package set private=true package set slug=my-slug@forgeBoxUser etc... publish install slug@forgeboxUser install slug@forgeboxUser@be install slug@forgeboxUser@1.0.0
  • 116. LUCEE EXTENSION PROVIDER https://www.forgebox.io publish CommandBox> package set type=lucee-extensions CommandBox> publish
  • 118. FEATURES ✴ Secure + Isolated private registry ✴ SSL + WAF ✴ Unlimited public/private packages ✴ 250GB Package Storage + CDN ✴ Custom CommandBox Namespace ✴ Unlimited Collaborators ✴ Custom Access Rules ✴ Custom Security, Roles and Permissions ✴ Fixinator & Package Auditing (*Coming)
  • 119. EASYTO USE forgebox endpoint register abc https://abc.forgebox.io/api/v1 forgebox login endpointName=abc Register Endpoint Login forgebox install abc:coldbox Use
  • 120. BENEFITS ✴ Scalable Binary Storage ✴ Detect outdated packages ✴ Faster updates ✴ No more repository cloning or full downloads ✴ Fast Semver evaluations ✴ Faster Downloads (CDN) ✴ Security ✴ No more source code access ✴ Granular installation/publishing access ✴ Security Audits and Fixinator via Foundeo
  • 121. LEARN MORE Brad Wood Javier Quintero DAY 2 - BOX ROOM
  • 123. ROADMAP Q2 Pro Subscriptions Swagger Docs Password Meters Password Rules Q3 Security Audits Fixinator Analytics Two-Factor Auth Q4 Teams Collaboration Managers 2020 PackageTransfers Notifications Web hooks Code Quality Code Metrics Search Contexts