Recent Activity
Recent Heroes of the BenNadel.com Community
-
Posted 168 comments since October 23, 2012
-
Posted 24 comments since December 11, 2008
-
Posted 43 comments since December 11, 2008
-
Posted 26 comments since December 21, 2009
-
Posted 3 comments since February 24, 2012
-
Posted 18 comments since July 3, 2012
-
Posted 15 comments since May 27, 2015
-
Posted 9 comments since June 14, 2019
-
Posted 4 comments since October 25, 2022
-
Posted 1 comment since January 5, 2023
-
Posted 1 comment since January 16, 2023
-
Posted 1 comment since January 19, 2023
-
Posted 1 comment since January 23, 2023
-
Posted 1 comment since January 30, 2023
Recent Comments
Ben Nadel replied to a post Dynamic Tab-Size Demo Using CSS Custom Properties In JavaScript
Comment posted January 30, 2023
@Dejaswarooba, Awesome, thank you for the kind words!... read entire comment from Ben Nadel.
Dejaswarooba replied to a post Dynamic Tab-Size Demo Using CSS Custom Properties In JavaScript
Comment posted January 30, 2023
Hey! This is really interesting to learn and a well written blog I would say. Your design is absolutely awesome and It has inspired me to look at a different perspective. Kudos to your work!... read entire comment from Dejaswarooba.
Ben Nadel replied to a post CUID2 For ColdFusion / CFML
Comment posted January 26, 2023
Ok, I've removed the warning and updated the Cuid2.cfc to default to sha3-256. This works fine on Java 9+; but, if you are still on Java 8, then it can be explicitly set to sha-256 as a constructor argument. I've updated the blog post to include the optional argument description.... read entire comment from Ben Nadel.
Ben Nadel replied to a post Hotwire Turbo Drive Doesn't Work With .cfm Page Extensions
Comment posted January 25, 2023
@Chris, URL rewriting would be the only workaround that I know of at this time. That said, in the GitHub issue, they talk about coming up with a way to do this more programmatically in the client-side code (ie, determine which files are Turbo'able). But, that's still in the discussion phase as I und... read entire comment from Ben Nadel.
Chris replied to a post Hotwire Turbo Drive Doesn't Work With .cfm Page Extensions
Comment posted January 24, 2023
I've been using hotwire a lot with Rails and it is awesome. I do love coldfusion though and thought I would search around and see if anyone has hooked hotwire up to it and found this! Great info. Any other work arounds other than command box to get around the cfm file extension? I have a CF 2018 pro... read entire comment from Chris.
Ben Nadel replied to a post Using "continue" To Short-Circuit .each() Iteration In ColdFusion
Comment posted January 24, 2023
@All, I thought maybe the .each() worked with continue because of some loop that was being implemented behind the scenes. As such, I wanted to run a quick test to see if continue would work with a callback even when no loop was in play: <cfscript> visitValues( [ "a", "b", "c" ], ( value ) => {... read entire comment from Ben Nadel.
Ben Nadel replied to a post CUID2 For ColdFusion / CFML
Comment posted January 24, 2023
I've updated the post with a Warning at the top to indicate that this is an incomplete version of the implementation. Only algorithms using the SHA3 family of hashing can be considered implementations of CUID2. And, since SHA3 wasn't added until Java 9, implementing this for Java 8 would mean loadin... read entire comment from Ben Nadel.
Ben Nadel replied to a post Using "continue" To Short-Circuit .each() Iteration In ColdFusion
Comment posted January 23, 2023
@Dirk, I actually prefer for-in when I can use it. In this case, I was switching from for-in over to .each() so that I could use ColdFusion's ability to perform iteration in parallel threads. Doing so lead to a large increase in throughput; so, while for-in might be faster in general, using .each() ... read entire comment from Ben Nadel.
Dirk L replied to a post Using "continue" To Short-Circuit .each() Iteration In ColdFusion
Comment posted January 23, 2023
Why do you prefer each() over for in? Two points: It's much slower. https://trycf.com/gist/60de4fc7a8a14052b56f9cc443e10aba/acf2021 That's why I often go the opposite way. Cannot break it. break work's like continue, wtf. return false is not implemented. What I miss is for ( key as value in collecti... read entire comment from Dirk L.
Ben Nadel replied to a post Comparing Java's MessageDigest To ColdFusion's hash() Function In Lucee CFML
Comment posted January 21, 2023
@All, As a follow-up exploration, I wanted to see if the order of the .update() calls on MessageDigest mattered: https://www.bennadel.com/blog/4394-does-the-order-of-hash-inputs-matter-in-terms-of-uniqueness-and-distribution.htm Since I don't know much about maths or security, I'm not looking at thi... read entire comment from Ben Nadel.
Ben Nadel replied to a post CUID2 For ColdFusion / CFML
Comment posted January 21, 2023
@Gary, Honestly, I can't really speak to the pros/cons of UUIDs or CUIDs - I just like trying to build it. I still use Auto-incrementing values in my applications. Over in the CUID2 for JavaScript repository Elliott has some comparisons of CUID2 to other UUID algorithms.... read entire comment from Ben Nadel.
Gary F replied to a post CUID2 For ColdFusion / CFML
Comment posted January 20, 2023
Out of curiosity, what's wrong with CreateUUID, apart from it being 11 chars longer? It's also compatible with SQL's uniqueidentifier datatype (if you insert an extra hyphen). I used it in an application that's been running for 17 years 24x7 and it's never clashed. It was interesting to hear how CUI... read entire comment from Gary F.
Ben Nadel replied to a post Comparing Java's MessageDigest To ColdFusion's hash() Function In Lucee CFML
Comment posted January 19, 2023
@Brad, I love having the Lucee CFML code on GitHub - make it so easy to look things up. Plus, I know that if I use the "Go To File" feature in GitHub, each Function has it's .java file. When talking about "stringifying", I mean in the code that I have in my CUID library. The algorithm calls for hash... read entire comment from Ben Nadel.
Brad Wood replied to a post Comparing Java's MessageDigest To ColdFusion's hash() Function In Lucee CFML
Comment posted January 19, 2023
I assume you know this, but Lucee's hash() BIF just uses the MessageDigest class under the hood. https://github.com/lucee/Lucee/blob/5.3/core/src/main/java/lucee/runtime/functions/string/Hash.java#L90 Furthermore, there is no "stringification" of byte array inputs. All hashing accepts a byte array a... read entire comment from Brad Wood.
Ben Nadel replied to a post Nesting JSON Functions Inside JSON_ARRAYAGG() And JSON_OBJECTAGG() In MySQL 5.7.38
Comment posted January 19, 2023
@Nithin, So, are you running an aggregate and then storing it into another table with something like an INSERT INTO ... SELECT statement? I've only used JSON_ARRAYAGG() to pull data out of a table; I haven't used it to store data into a table. That said, it really shouldn't be adding quotes to anyth... read entire comment from Ben Nadel.
Nithin replied to a post Nesting JSON Functions Inside JSON_ARRAYAGG() And JSON_OBJECTAGG() In MySQL 5.7.38
Comment posted January 19, 2023
While trying to store data into table using JSON_ARRAYAGG, it wraps each value of array with double quotes. How to overcome this?... read entire comment from Nithin.
Ben Nadel replied to a post Using "continue" To Short-Circuit .each() Iteration In ColdFusion
Comment posted January 18, 2023
@Chris, It's common in a for-in loop, like: for ( value in values ) { if ( value == "boop" ) { continue; } // .... rest of loop } But, in my case, with a .each() iterator, the continue is really just acting like a return in the iterator Callback. I wonder if it has to do with how the .each() i... read entire comment from Ben Nadel.
Chris G replied to a post Using "continue" To Short-Circuit .each() Iteration In ColdFusion
Comment posted January 18, 2023
Why do you think it's a quirk/bug? Isn't it fairly common behavior within loops for most languages?... read entire comment from Chris G.
Ben Nadel replied to a post Overriding Form Submission Properties Using Button Attributes In Native HTML
Comment posted January 17, 2023
@David, It's funny you mention that. I came across this stuff because I'm looking into Hotwire, and in Hotwire you can change the methods on links to be DELETE ... but even the documentation is like, You probably shouldn't be doing this!!!! 🤣... read entire comment from Ben Nadel.
David Levin replied to a post Overriding Form Submission Properties Using Button Attributes In Native HTML
Comment posted January 17, 2023
Add me to the list of developers who had no idea this level of flexibility existed in vanilla HTML. My first thought was that I might be able to use formmethod to tell a form to use fancier HTTP methods like PUT, PATCH, DELETE, etc... but unfortunately, the MSDN specs say we are still limited to POS... read entire comment from David Levin.
Ben Nadel replied to a post Paging Through Data Using LIMIT And OFFSET In MySQL And ColdFusion
Comment posted January 17, 2023
@All, I just wanted to provide some real-world performance characteristics of this approach. I'm currently working on a workflow that queues-up and the processes a bunch of data. And, I've been using this LIMIT / OFFSET approach to page-through the queue data. My queue is currently at about 1.4M rec... read entire comment from Ben Nadel.
Ben Nadel replied to a post CUID2 For ColdFusion / CFML
Comment posted January 17, 2023
So, my current implementation takes about 60-seconds to generate 1M CUID tokens. Which is not terribly fast. I've been playing around with how to get the performance improved by: Scoping all variable access (ie, adding the arguments. and variables. prefixes wherever they make sense. Using BIF (built... read entire comment from Ben Nadel.
Ben Nadel replied to a post Dynamically Instrumenting ColdFusion Component Methods With GetTickCount() To Locate Performance Bottlenecks
Comment posted January 16, 2023
@Paolo, It looks like Lucee CFML gives the template times and the variable access counts, but not the execution times. I'll see if I can get Adobe ColdFusion's debugging enabled.... read entire comment from Ben Nadel.
Ben Nadel replied to a post Dynamically Instrumenting ColdFusion Component Methods With GetTickCount() To Locate Performance Bottlenecks
Comment posted January 16, 2023
@Paolo, Because I literally 100% forgot that ColdFusion had any debugging capabilities 🤣 🤣 🤣 Let me see if I can get that turned on.... read entire comment from Ben Nadel.
Paolo replied to a post Dynamically Instrumenting ColdFusion Component Methods With GetTickCount() To Locate Performance Bottlenecks
Comment posted January 16, 2023
Hi Ben, thank you for your nice work! Sorry, but why not use the native ColdFusion debug inspector activated via "Report Execution Times" ?... read entire comment from Paolo.
Ben Nadel replied to a post Why I've Been Merging Microservices Back Into The Monolith At InVision
Comment posted January 16, 2023
@Pravin, It's such a strange time. I see a lot of people walking back the idea of microservices. Even most of the big advocates are pushing that you should stick with a "modular monolith" until you really really need microservices. But, at the same time, there's a cohort of people who, I feel, are d... read entire comment from Ben Nadel.
Pravin Yadav replied to a post Why I've Been Merging Microservices Back Into The Monolith At InVision
Comment posted January 16, 2023
Spot on. I am quite late here but this blog summarizes a lot of resources I read on the internet today on this topic. Explained all the stuff in great detail. The GIF of Thanos is quite impressive and relevant. Thanks, Ben Nadel... read entire comment from Pravin Yadav.
Ben Nadel replied to a post CUID2 For ColdFusion / CFML
Comment posted January 16, 2023
I've been trying to look at the low-level performance of the Cuid2.cfc - using some reflection, I'm dynamically instrumenting the methods to see how long they execute during the generation of 1M CUID tokens: https://www.bennadel.com/blog/4390-dynamically-instrumenting-coldfusion-component-methods-wi... read entire comment from Ben Nadel.
Ben Nadel replied to a post Overriding Form Submission Properties Using Button Attributes In Native HTML
Comment posted January 16, 2023
@Chris, Dude, I often feel the same way! This is especially true for methods on the DOM nodes - I feel like there's so many I never heard about. Every now and then, I'll scroll through You Might Not Need jQuery, which is a sobering reminder that there are methods I never user and never remember exis... read entire comment from Ben Nadel.
Chris G replied to a post Overriding Form Submission Properties Using Button Attributes In Native HTML
Comment posted January 15, 2023
Mind Blown! I've been writing HTML for 30+ years and (thought) I understood the submit button. Why would I ever have to look up those specs?! Haha...makes me wonder how much I'm missing because I never question my assumptions. I assumed I understood the submit button...nope! Thanks Ben! Feeling humb... read entire comment from Chris G.
Ben Nadel replied to a post CUID2 For ColdFusion / CFML
Comment posted January 14, 2023
Here's an article that Eric Elliott wrote about his new Cuid2 approach (and why his previous approach was insufficient from a security standpoint): Identity Crisis: How Modern Applications Generate Unique Ids. It goes into a lot of depth (though much of what is there is also on the Cuid2 GitHub page... read entire comment from Ben Nadel.
Ben Nadel replied to a post Working Code Podcast - Episode 109: Best Of 2022
Comment posted January 14, 2023
@Serhii, Thank you, my friend! Glad you are enjoying it 🙌... read entire comment from Ben Nadel.
Serhii replied to a post Working Code Podcast - Episode 109: Best Of 2022
Comment posted January 14, 2023
Thanks, guys, awesome podcast... read entire comment from Serhii.
Ben Nadel replied to a post Testing Performance Overhead Of Creating Java Classes In Lucee CFML
Comment posted January 13, 2023
After I posted this, several people over on Twitter (Brad Wood, Michael Born, James Moberg) pointed out that if you are loading Java classes from a 3rd-party JAR file, then calling createObject() can have a more significant impact. Classloading from OSGI bundles is 27,000 times slower - reported by ... read entire comment from Ben Nadel.
Ben Nadel replied to a post Code Kata: Flattening An Array In Lucee CFML
Comment posted January 13, 2023
@Adam, This might sound silly, but I've been using member methods for so long now, I literally forgot that the built-in function, arrayReduce(), even existed 😂 Speaking to your point about doing array-reduction instead of struct-reduction. To that point, I also forgot that ColdFusion introduced the... read entire comment from Ben Nadel.
Adam Cameron replied to a post Code Kata: Flattening An Array In Lucee CFML
Comment posted January 13, 2023
Interesting assessment. You could improve your reduce version by getting rid of a bunch of boilerplate which one wouldn't usually introduce in these simple situations. Here's a running tested example: https://trycf.com/gist/2d6349d9a9cccc1c0312d0b59e488908/acf2021?setupCodeGistId=816ce84fd991c2682df... read entire comment from Adam Cameron.
Ben Nadel replied to a post Code Kata: Flattening An Array In Lucee CFML
Comment posted January 8, 2023
As another fast-follow, I wanted to look at recursively flattening a deeply nested array: https://www.bennadel.com/blog/4384-code-kata-recursively-flattening-a-deep-array-in-lucee-cfml.htm In the recursive version, I'm passing in a values argument instead of using a variadic, which is why I end up u... read entire comment from Ben Nadel.
Ben Nadel replied to a post Iterating Over Function Arguments Using CFLoop In Lucee CFML
Comment posted January 7, 2023
@Will, I go back and forth on this idea of differentiating function signatures. I think there are definitely times when it would be great. But, then, I'll go and look through the Lucee CFML code (written in Java) and there's like 8 different versions of the call() method all with different types of ... read entire comment from Ben Nadel.
Will Belden replied to a post Iterating Over Function Arguments Using CFLoop In Lucee CFML
Comment posted January 7, 2023
What I truly wish would get added to CFML? Function overloading. That would be awesome. Right now, you can at least use the "default" attribute on an argument, and use cfparam, as well. But true detection of argument types and having CFML call the appropriately flavored function would be great. But ... read entire comment from Will Belden.
Ben Nadel replied to a post Code Kata: Flattening An Array In Lucee CFML
Comment posted January 7, 2023
As a quick follow-up post, I wanted to take a look at iterating over the arguments scope as either an Array or a Struct via CFLoop: https://www.bennadel.com/blog/4383-iterating-over-function-arguments-using-cfloop-in-lucee-cfml.htm The CFLoop tag and the arguments scope are both very dynamic, and wo... read entire comment from Ben Nadel.
Ben Nadel replied to a post RequestTimeout Setting Affects CFThread Execution In Lucee CFML 5.3.6.61
Comment posted January 7, 2023
I finally went back and fixed the code / writing in this post (removed the createTimeSpan() call in the CFSetting tag that was incorrect).... read entire comment from Ben Nadel.
Chris G replied to a post People Don't Mind Being Used As Long As They Aren't Forgotten
Comment posted January 5, 2023
@Ben @Lucy 🤣🤣🤣... read entire comment from Chris G.
Ben Nadel replied to a post People Don't Mind Being Used As Long As They Aren't Forgotten
Comment posted January 5, 2023
@Lu-Lu, Thanks, sweet child, you're the best! 🥰... read entire comment from Ben Nadel.
Lucy McCormick-Nadel replied to a post People Don't Mind Being Used As Long As They Aren't Forgotten
Comment posted January 5, 2023
Dear daddy, I love that you are an introvert. It means I don't have to share you with many other people, and you are always around to give tummy rubs and kisses. As long as you keep treating me as well as you treat your customers I will be happy! Love, your sweet pup, Lucy ❤️... read entire comment from Lucy McCormick-Nadel.
Ben Nadel replied to a post In Life, Things Suffer More From Disuse Than From Overuse
Comment posted January 3, 2023
@Chris, Thanks! I hope some cool stuff comes of it. I've just been feeling to "stale" lately. Especially with all the podcasts that I listen to doing "year in review" kind of shows and they are all talking about lots of stuff that I don't have any experience with. Not that I'm going to suddenly star... read entire comment from Ben Nadel.
Chris G replied to a post In Life, Things Suffer More From Disuse Than From Overuse
Comment posted January 3, 2023
I bet you find you have even more to write about, not less! But either way...I hope your personal 2023 journey is beyond fulfilling and enriches both your mind and soul! Happy New Year 🎉... read entire comment from Chris G.
Ben Nadel replied to a post In Life, Things Suffer More From Disuse Than From Overuse
Comment posted January 3, 2023
@JC, He was a bit of a crazy person 🤣 But touched a lot of lives. Let's make 2023 a good one!... read entire comment from Ben Nadel.
JC replied to a post In Life, Things Suffer More From Disuse Than From Overuse
Comment posted January 3, 2023
Your father sounds like a fantastic man, and looks like a fantastical one. Happy New Year. Here's to learning along with you.... read entire comment from JC.
Ben Nadel replied to a post Using LATERAL Derived Tables To Gather Row-Specific Aggregations In MySQL 8.0.14
Comment posted December 31, 2022
@All, So, in the past, when I've performed a LATERAL join, I've always done it as an INNER JOIN, as in: INNER JOIN LATERAL According to the MySQL docs, the LATERAL join should support LEFT OUTER as well; but, when I went to use it, it would throw an error telling me that there was a syntax error in ... read entire comment from Ben Nadel.
Ben Nadel replied to a post Showing An Error Message In The OnError() Method In Application.cfc In CFML
Comment posted December 30, 2022
This is kind of beyond the scope of this article, but it might be worth mentioning that an error that occurs in the CFThread tag does not get caught by the onError() handler in the Application.cfc. According to Zac Spitzer, thread errors get logged to the thread.log file; but, that's not something t... read entire comment from Ben Nadel.