[{"data":1,"prerenderedAt":161},["ShallowReactive",2],{"published-posts":3},[4,12,21,29,36,42,49,56,63,70,78,85,92,99,106,112,118,124,131,137,144,149,155],{"path":5,"title":6,"date":7,"tags":8,"description":11},"\u002Fposts\u002Fbasic-typescript","Basic Typescript","2026-09-02T16:13:57-04:00",[9,10],"javascript","typescript","I recently began taking a simple Typescript course, and I thought I'd share my notes here in blog form. Typescript, if you've been living under a rock, is a Javascript superset which implements strict typing and transpiles to normal Javascript. Utilizing strict typing gives developers much better tooling for catching typing errors sooner in the development cycle.",{"path":13,"title":14,"date":15,"tags":16,"description":20},"\u002Fposts\u002Fread-java-package-version","How to Get the Version of Any Java Package from CFML","2022-09-21T16:13:57-04:00",[17,18,19],"cfml","coldfusion","java","The Apache POI library is an awesome tool for messing with spreadsheets. You can read spreadsheet data, get header rows, total row count, all sorts of wacky stuff. Julian Halliwell's excellent spreadsheet-cfml library uses it to great effect.",{"path":22,"title":23,"date":24,"tags":25,"description":28},"\u002Fposts\u002Fredirecting-hibernate-logs","Redirecting Hibernate Logs to the CommandBox Console","2021-08-30T16:13:57-04:00",[17,18,26,27],"hibernate","log4j","In my last blog post, I covered how to adjust the Hibernate log level with Log4j.",{"path":30,"title":31,"date":32,"tags":33,"description":35},"\u002Fposts\u002Fhibernate-logger-concurrent-exception","Resolving Concurrent Exceptions in Hibernate Logger","2021-08-19T16:13:57-04:00",[17,18,26,34],"orm","Recently while working on a Hibernate ORM project, I ran into an interesting issue when an entity with relationships is saved inside a transaction.",{"path":37,"title":38,"date":39,"tags":40,"description":41},"\u002Fposts\u002Ftransaction-detection-hibernate","Cross-engine transaction detection in Hibernate v3+","2021-08-12T16:13:57-04:00",[17,18,26,34],"",{"path":43,"title":44,"date":45,"tags":46,"description":41},"\u002Fposts\u002Ffive-things-2020","Five Things I'd Like To Learn in 2020","2020-01-13T16:13:57-04:00",[47,17,18,48],"2020","contentbox",{"path":50,"title":51,"date":52,"tags":53,"description":55},"\u002Fposts\u002Fthree-coldbox-learnings","Three ColdBox Features I Learned While Building A URL Shortener","2019-12-18T16:13:57-04:00",[17,18,54],"coldbox","Last night I did another live-stream where I finished the first draft of a URL shortener I'm calling \"cfShorty\". During live-streams I typically end up searching the ColdBox docs for help, but this time Gavin Pickin watched and commented with some cool tips, most of which I'd never used before.",{"path":57,"title":58,"date":59,"tags":60,"description":41},"\u002Fposts\u002Fadobe-piece-of-work","Adobe, You Piece of Work, I'm Through","2019-09-23T16:13:57-04:00",[17,18,61,62],"lucee","webdev",{"path":64,"title":65,"date":66,"tags":67,"description":69},"\u002Fposts\u002Fquickstart-cfml","Getting Started In CFML: A Resource List for Newbies","2019-09-11T16:13:57-04:00",[17,18,68],"beginners","If you are going to learn CFML in 2019, you need the best resources available. In this post I'll share tutorials, video channels, and even podcasts you can use to help you begin learning CFML.",{"path":71,"title":72,"date":73,"tags":74,"description":77},"\u002Fposts\u002Flocalizing-dates-mssql","Localizing Dates In Sql Server","2019-08-20T16:13:57-04:00",[75,76],"sql","localization","Several months ago I added timezone handling to a CF app. This post is my best effort to document how to localize dates using MSSQL timezone functionality.",{"path":79,"title":80,"date":81,"tags":82,"description":84},"\u002Fposts\u002Fforms-3-sending-emails","Form Processing in CFScript Part Three: Sending Email Notifications","2019-08-14T16:13:57-04:00",[18,61,17,83],"cfscript","In this series so far, we've looked at how to validate a form entry and how to save that form entry to the database. Today we'll see how we can notify a person (usually a site admin or editor) that a new form entry has been submitted and processed by simply sending an email.",{"path":86,"title":87,"date":88,"tags":89,"description":91},"\u002Fposts\u002Fforms-2-persist-db","Form Processing in CFScript Part Two: Saving Form Entries to the Database","2019-08-01T16:13:57-04:00",[18,83,17,90],"mysql","If a tree falls in a woods with no one to hear, did it actually fall? Likewise, if a user submits a form but it is not persisted in some form, that form submission is worthless.",{"path":93,"title":94,"date":95,"tags":96,"description":98},"\u002Fposts\u002Fforms-1-validation","Form Processing in CFScript Part One: Form Validation","2019-07-23T16:13:57-04:00",[18,83,17,97],"validation","This series will teach you how to process form submissions using ColdFusion's CFScript syntax. In Part One I'll show you the basics of validating form submissions on the backend!",{"path":100,"title":101,"date":102,"tags":103,"description":105},"\u002Fposts\u002Faccess-lucee-extension","Creating an MS Access Lucee Extension","2019-07-15T16:13:57-04:00",[18,61,17,104],"jdbc","I turned a simple task (migrate data from an MS Access database) into a Lucee extension which wraps the UCanAccess JDBC driver.",{"path":107,"title":108,"date":109,"tags":110,"description":111},"\u002Fposts\u002Flucee-datetimeoffset","Storing and Using DateTimeOffsets in Lucee","2019-07-08T16:13:57-04:00",[18,61,17,75],"Recently at Impelos I began storing dates using SQL Server's DateTimeOffset field, which allows us to store a date and time with embedded UTC offset. Unfortunately, I ran into several issues with Lucee's support for the data type.",{"path":113,"title":114,"date":115,"tags":116,"description":117},"\u002Fposts\u002Fcfscript-gotchas","CFScript Gotchas and Syntax Guides","2019-06-28T16:13:57-04:00",[18,17,83],"Now, script syntax is usually straightforward, but as with any language, sometimes it's easy to get confused over certain things in script syntax. In this post I'll cover a quick list of common \"gotchas\" in CFScript, document the proper syntax for each, and finally link to a list of CFScript guides which may help you start writing CFScript today.",{"path":119,"title":120,"date":121,"tags":122,"description":123},"\u002Fposts\u002Fswitching-to-cfscript","Switching from Tag to Script","2019-06-26T16:13:57-04:00",[18,17,83],"Look, I write in CFScript. Most of the CF devs I look up to write in CFScript. But maybe you don't. Here's where I convince you CFScript is worth the jump and, for that matter, just how to \"jump\" to CFScript.",{"path":125,"title":126,"date":127,"tags":128,"description":130},"\u002Fposts\u002Fcf-legacy","CF: A Legacy of Legacy","2019-06-03T16:13:57-04:00",[18,17,129],"legacy","I've seen a lot of discussions revolving around ColdFusion and whether it is inherently a \"legacy\" language. There are dozens of blog posts proclaiming the death of the language, and every comment seems to share a story about just how \"legacy\" CF is. Today, I'd like to look closely at why so many dare to call us a legacy language, and what we can do about that.",{"path":132,"title":133,"date":134,"tags":135,"description":136},"\u002Fposts\u002Fcf-unpopular","Yes, ColdFusion is 'Unpopular'. No, I don't care.","2019-05-23T16:13:57-04:00",[18,17,129],"It’s popular to hate on CF. It’s popular to say ColdFusion is \"dying\". It’s popular to call CF a \"legacy\" language, and compare it to COBOL. But is ColdFusion really unpopular? And, more important… does it matter?",{"path":138,"title":139,"date":140,"tags":141,"description":143},"\u002Fposts\u002Farray-higher-order-funcs","Using ArraySome and ArrayEvery Higher-Order Functions in Lucee","2019-05-07T16:13:57-04:00",[18,17,61,142],"lambdas","In this post I'm going to take two Lucee only higher-order array functions, arraySome() and arrayEvery(), and explain their use and purpose. I'll also review the concept of a higher-order function, as well as the Super Cool (yet very little used) lambda expression available in Lucee 5.",{"path":145,"title":146,"date":140,"tags":147,"description":148},"\u002Fposts\u002Ffive-reasons-cf","Five Reasons to Learn CF in 2019",[18,17,68],"I am happy to present Five Reasons to Learn CF in 2019. I'm trying to be honest here, but you may find some bias because I love ColdFusion. There, I confessed. Read on!",{"path":150,"title":146,"date":151,"tags":152,"description":154},"\u002Fposts\u002Fhello-world-cf","2019-03-28T16:13:57-04:00",[18,17,68,153],"commandbox","Now that you've read my Why Coldfusion? post (you HAVE, right?), let's do a simple Hello World just to try some sample CF code.",{"path":156,"title":157,"date":158,"tags":159,"description":160},"\u002Fposts\u002Fwhy-cf","Why I Program in Coldfusion","2019-03-20T16:13:57-04:00",[18,17,68],"I get asked this a bunch. Why are you programming in Coldfusion, anyway? Isn't Coldfusion dead? Isn't it closed-source? Isn't it expensive?",1790225112014]