Recent Activity
Recent Heroes of the BenNadel.com Community
-
Posted 252 comments since October 23, 2012
-
Posted 26 comments since August 12, 2021
-
Posted 6 comments since November 15, 2024
-
Posted 89 comments since December 11, 2008
-
Posted 362 comments since December 11, 2008
-
Posted 44 comments since January 15, 2014
-
Posted 24 comments since December 11, 2008
-
Posted 5 comments since January 14, 2010
-
Posted 25 comments since December 11, 2008
-
Posted 58 comments since December 11, 2008
-
Posted 4 comments since September 14, 2009
-
Posted 22 comments since September 1, 2010
-
Posted 449 comments since October 5, 2014
-
Posted 10 comments since February 28, 2022
-
Posted 3 comments since May 9, 2022
Recent Comments
Scott Steinbeck replied to a post Code Kata: Box Breathing Exercise With SpeechSynthesis And Alpine.js
Comment posted December 20, 2024
Funny enough i have just started playing with both the Voice to text and the Speech synthesis features in the last couple weeks. My favorite voice is "Google UK English Male" which i think is only available in Chrome. Here is a nice Demo of all of the languages. https://mdn.github.io/dom-examples/we... read entire comment from Scott Steinbeck.
Ben Nadel replied to a post Using Row Constructor Comparisons In MySQL
Comment posted December 15, 2024
@Chris, Yeah, it's certainly interesting stuff. I don't think I'll be able to make it part of my ongoing mental model until I apply it in a real-world use-case. So, for now, this is here for reference. Hopefully, I'll be able to remember it's here when I need it 😜... read entire comment from Ben Nadel.
Ben Nadel replied to a post Associating Form Inputs With ColdFusion Validation Error Types
Comment posted December 15, 2024
I don't think I've heard of the CF Advance team. Looks like they have a good number of repositories / projects. It's a shame it didn't get more attention. Also, +1000 on making form inputs as flexible as possible.... read entire comment from Ben Nadel.
Chris G replied to a post Collocating Views And View-Specific Components In ColdFusion
Comment posted December 14, 2024
@Ben Nadel, Good to know! The new "my-test"() syntax though 😬. I never even would have thought to try that! The createObject() notation isn't as cringe.... read entire comment from Chris G.
Ben Nadel replied to a post Collocating Views And View-Specific Components In ColdFusion
Comment posted December 14, 2024
Ok, so it looks like you can use the - in the CFC file name as long as you are instantiating it with a quoted path. Meaning, given a CFC with the filename my-test.cfc, you can either use: createObject( "component", "my-test" ); or, by quoting the new operator target: new "my-test"(); Given that info... read entire comment from Ben Nadel.
Ben Nadel replied to a post Collocating Views And View-Specific Components In ColdFusion
Comment posted December 13, 2024
@Chris, The dot-notation was more about having different but similar files sort nicely in the file system. But, it causes a problem with the CFC since ColdFusion gets confused between the dots and the directory paths. To be honest, I'm not even sure if you can use a - in a CFC filename either? I'll ... read entire comment from Ben Nadel.
Chris G replied to a post Collocating Views And View-Specific Components In ColdFusion
Comment posted December 13, 2024
I 100% agree and try to co-locate my code whenever possible. In fact, if I have js/css that is applicable to a specific view, I just embed it in that view so that I don't even have to go to a second file. That's just my current preference, but I do a fair amount of equivocating on this. Is the dot n... read entire comment from Chris G.
Ben Nadel replied to a post Collocating My ColdFusion, CSS, And JavaScript Files
Comment posted December 13, 2024
As a follow-up to this post, I've taken this concept and I've now extended it to view-specific ColdFusion components—that is, CFCs that perform data access and aggregation tasks for a specific View and aren't really tied to the core model. https://www.bennadel.com/blog/4742-collocating-views-and-vie... read entire comment from Ben Nadel.
Ben Nadel replied to a post My ColdFusion "Controller" Layer Is Just A Bunch Of Switch Statements And CFIncludes
Comment posted December 13, 2024
Just a quick follow-up here, I've switched from using cfinclude to using cfmodule in order to pull in views to the request routing: include "./subsystem/feature.cfm"; versus: cfmodule( template = "./subsystem/feature.cfm" ); You can read more about it here: https://www.bennadel.com/blog/4624-using-c... read entire comment from Ben Nadel.
Chris G replied to a post Associating Form Inputs With ColdFusion Validation Error Types
Comment posted December 12, 2024
@Ben Nadel, I've been down the path of reporting all validation errors at once. Its my preferred UX model, but the DX does get tricky and complex quickly. I believe in giving the user all the information they need in order to be successful for the next submit. Otherwise they can be in a frustrating ... read entire comment from Chris G.
Chris G replied to a post Using Row Constructor Comparisons In MySQL
Comment posted December 12, 2024
@Ben Nadel, Interesting. I didn't really understand how this could be helpful in pagination, so I consulted the Oracle (ChatGPT) and learned that it would be useful when paginating a filtered or sorted list. No that's interesting! Here's some use cases it came back with... Row constructor comparison... read entire comment from Chris G.
Ben Nadel replied to a post Associating Form Inputs With ColdFusion Validation Error Types
Comment posted December 12, 2024
@Jim, Validating one field at a time is a greatly simplified workflow (at least to me). You don't have to have any additional concept of a collection of errors. And, the server side code gets to handle the "happy path" proceduraly and then rely on error throwing to handle the "sad path." If we asser... read entire comment from Ben Nadel.
Ben Nadel replied to a post Using Row Constructor Comparisons In MySQL
Comment posted December 12, 2024
@Chris, I'm in the same boat—interesting, but not sure how I would actually use something like this. In the video course, he did talk about it in the context of paginating through a table using multiple columns as the "cursor". Basically, doing a >= comparison on several columns and then combining t... read entire comment from Ben Nadel.
Chris G replied to a post Using Row Constructor Comparisons In MySQL
Comment posted December 11, 2024
This is pretty cool shorthand, but I have absolutely no clue what a practical use for it might be. Zero. Zilch. Nada clue! Have you thought of any use cases for this or did he mention any in the course?... read entire comment from Chris G.
Jim Priest replied to a post Associating Form Inputs With ColdFusion Validation Error Types
Comment posted December 10, 2024
I always liked ValidateThis ... I like where you are headed. I'm curious about the pros/cons of showing each error individually (and having to fix each one) vs highlighting all the fields at once?... read entire comment from Jim Priest.
Ben Nadel replied to a post High Performance SQLite Video Course By Aaron Francis
Comment posted December 10, 2024
In the SQLite course, Aaron mentions something called "row values syntax" for comparing multiple column values simultaneously. I had never seen this before and just assumed it was a SQLite feature. But then, he mentioned it once again in his Mastering Postgres course. It turns out, this is a more co... read entire comment from Ben Nadel.
Ben Nadel replied to a post Using Row Constructor Comparisons In MySQL
Comment posted December 10, 2024
One more fast-follow comment, apparently you can use this in row subqueries as well. That is, you can have a subquery that returns multiple columns and then you can compare those multiple columns to another row constructor: FROM test WHERE ( a, b, c ) = ( SELECT 2, -- a 2, -- b 2 -- c... read entire comment from Ben Nadel.
Ben Nadel replied to a post Using Row Constructor Comparisons In MySQL
Comment posted December 10, 2024
As a fast-follow here, given the fact that this syntax is called the "row constructor", I started to wonder if it has any relation to the ROW() function I used in the derived table. As an experiment, I tried rewriting my WHERE clause as such: WHERE ROW( a, b, c ) >= ROW( 2, 2, 2 ) AND ROW( a, b, c... read entire comment from Ben Nadel.
Chris G replied to a post Mastering Postgres Video Course By Aaron Francis
Comment posted December 9, 2024
@Ben Nadel, That's epic! I hadn't seen that one. In fact, it's been a while since I've seen those comics. Thanks for reminding me of them. I'm going to try very hard not to fall down that rabbit hole and stay focused on what I actually had planned for today...but I enjoyed the laugh!... read entire comment from Chris G.
Ben Nadel replied to a post Mastering Postgres Video Course By Aaron Francis
Comment posted December 9, 2024
@Chris, Reminds me of the "web scale" comic, which will always be one of my favorite videos: https://www.youtube.com/watch?v=b2F-DItXtZs&t=142s... read entire comment from Ben Nadel.
Chris G replied to a post Mastering Postgres Video Course By Aaron Francis
Comment posted December 9, 2024
@Ben Nadel, Simple problems only need simple solutions 🙃... read entire comment from Chris G.
Ben Nadel replied to a post Mastering Postgres Video Course By Aaron Francis
Comment posted December 9, 2024
@Chris, I remember him talking about the DISTINCT FROM stuff in the course; I think it was in the context of comparing non-null values to null values. But, I tend to agree with you about MySQL. It hasn't really got in my way. And, it feels a lot more concise than the stuff I was seeing in the video.... read entire comment from Ben Nadel.
Chris G replied to a post Mastering Postgres Video Course By Aaron Francis
Comment posted December 9, 2024
We moved from Oracle to Postgres at my previous job and I found it to be (mostly) painless. There were a couple things I found super frustrating though. Off the top of my mind... You couldn't reliably use simple comparison operators (==, !=) when comparing one string to the other. In some cases, we ... read entire comment from Chris G.
Ben Nadel replied to a post High Performance SQLite Video Course By Aaron Francis
Comment posted December 9, 2024
On a related note, I just took Aaron's Francis' "Mastering Postgres" video course and wrote my review: https://www.bennadel.com/blog/4740-mastering-postgres-video-course-by-aaron-francis.htm At the time of the writing, the course isn't 100% complete, most notably the "popular extensions" module isn'... read entire comment from Ben Nadel.
Ben Nadel replied to a post Ask Ben: Sorting Quasi-Numeric Values Like 4K And 3M In ColdFusion
Comment posted December 8, 2024
@James, You gotta love the flexibility of the Query object in ColdFusion 💪 This reminds me, over on LinkedIn someone brought up the idea of doing the sort pre-insert into the database and then having a sort column in the database itself. This way, when the data is read, the sorting has already been... read entire comment from Ben Nadel.
Ben Nadel replied to a post Using CFLoop To Iterate Over A File Line-By-Line In ColdFusion
Comment posted December 8, 2024
@James, This isn't something that I've thought about in a while. I feel like I remember having issues with that in earlier versions of ColdFusion; but, it's not something that I currently think to do in more modern CF releases. That said, I do definitely get some strange IO issues showing up in the ... read entire comment from Ben Nadel.
James Moberg replied to a post Using CFLoop To Iterate Over A File Line-By-Line In ColdFusion
Comment posted December 7, 2024
When processing the file has been completed (after the fileClose operation), how long do you have the process wait before moving or deleting the file? If a file move or delete is performed immediately afterwards (on Windows), I usually encounter an error indicating that the file is "still in use".... read entire comment from James Moberg.
James Moberg replied to a post Ask Ben: Sorting Quasi-Numeric Values Like 4K And 3M In ColdFusion
Comment posted December 6, 2024
I do something similar, but often my data is in a query. I'll pass it to a function that: accepts a query object adds a new numeric column (if it doesn't already exist) iterate over the rows to update the value to be sorted based on the intrinsic needs of the website return a query object that is so... read entire comment from James Moberg.
Ben Nadel replied to a post Ask Ben: Sorting Quasi-Numeric Values Like 4K And 3M In ColdFusion
Comment posted December 6, 2024
@Charles, I couldn't agree more! ColdFusion is a delightful language 🙌... read entire comment from Ben Nadel.
Charles Robertson replied to a post Ask Ben: Sorting Quasi-Numeric Values Like 4K And 3M In ColdFusion
Comment posted December 6, 2024
I love Coldfusion more everyday! The simplicity and power is demonstrated perfectly by this little demo. Thanks for this, Ben. 🙏... read entire comment from Charles Robertson.
Chris G replied to a post Associating Form Inputs With ColdFusion Validation Error Types
Comment posted December 5, 2024
@Ben Nadel, Totally! It's whatever ergonomic makes the most sense to you. But I find that the less indirection there is, the kinder I've been to future me. With error messages, if I've forgotten where that's set...I'll do a search for the specific error message. Hopefully it'll contain something sea... read entire comment from Chris G.
Ben Nadel replied to a post Associating Form Inputs With ColdFusion Validation Error Types
Comment posted December 5, 2024
The other thing that I do a lot of hand wringing about is how much of the information processing I want do on the server-side and how much I want to do on the client-side. For example, in my Incident Commander app, I do the "top of form" error message display in ColdFusion on the server-side. But, t... read entire comment from Ben Nadel.
Chris G replied to a post Associating Form Inputs With ColdFusion Validation Error Types
Comment posted December 5, 2024
@Ben Nadel, Yeah, I get it and agree there will always be some coupling that needs to happen. My thoughts are around minimizing it in a natural way. You already need to name the input. That name closely and naturally aligns with the errorResponse.type which means there's probably an opportunity to e... read entire comment from Chris G.
Ben Nadel replied to a post Associating Form Inputs With ColdFusion Validation Error Types
Comment posted December 5, 2024
@Chris, I totally get the dislike of the tight coupling between the server and the client. Trust me, I don't like it either 😆 But, honestly, I have no idea how else you get there. No matter what, I think you're gonna end up with tight coupling in whichever approach you use because, ultimately, the ... read entire comment from Ben Nadel.
Chris G replied to a post Associating Form Inputs With ColdFusion Validation Error Types
Comment posted December 5, 2024
I (mostly) like it. I don't love that the server error type has to exactly match the data-error-types because that tightly couples the two and requires some back/forth to ensure they're married up properly. But, it's straight forward and simple and most importantly doesn't blow up if you map it inco... read entire comment from Chris G.
Ben Nadel replied to a post Associating Form Inputs With ColdFusion Validation Error Types
Comment posted December 4, 2024
In my exploration, I'm adding an is-error CSS class to the input field in question. But, I was just reading this article over on Smashing Mag about accessible form field validation by Sandrina Pereira, and she discusses putting the aria-invalid="true" attribute on the input. This way, the screen rea... read entire comment from Ben Nadel.
Ben Nadel replied to a post Feature Flags Book: I Eat, I Sleep, I Feature Flag
Comment posted December 2, 2024
@Tim, That's so fantastic! Thank you very much for the kind kinds words. And I am super thrilled that you're excited about feature flags. They will change your life, I promise!... read entire comment from Ben Nadel.
Tim Garver replied to a post Feature Flags Book: I Eat, I Sleep, I Feature Flag
Comment posted December 1, 2024
Loved the book Ben.. It really will open your eyes to all the possibilities. 💥... read entire comment from Tim Garver.
Ben Nadel replied to a post Using CSS Gap To Control Margins In Website Copy
Comment posted November 29, 2024
I posted the above thought as a question on the Open Props discussion forum: https://github.com/argyleink/open-props/discussions/525... read entire comment from Ben Nadel.
Ben Nadel replied to a post Using CSS Gap To Control Margins In Website Copy
Comment posted November 29, 2024
I've been continuing to go over this in my mind and the place where I keep getting stuck are the native elements that have special display properties. Specifically the li element (though this would also apply to other elements like th and td). It's one thing if you take an element that has a native ... read entire comment from Ben Nadel.
Ben Nadel replied to a post Optional Password Protection Added To Incident Commander
Comment posted November 27, 2024
So, I'm just watching some of the Mastering Postgres video course by Aaron Francis, and in the section on primary keys, he mentions the UUID v7. Apparently it can be stored as 16-bytes and the first part of the UUID is a timestamp, so it's still increasing (which is great for insertion ordering and ... read entire comment from Ben Nadel.
Cutter replied to a post Formatting Dates In The Local Timezone With Alpine.js
Comment posted November 27, 2024
@Ben Nadel, Yeah, some of my examples there are bad, only because the Temporal.ZonedDateTime.toLocaleString() is a wrapper around Intl.DateTimeFormat() (something I discovered after that preso). But loving that this stuff is now becoming browser native. For base formatting today the Intl.DateTimeFor... read entire comment from Cutter.
Ben Nadel replied to a post Formatting Dates In The Local Timezone With Alpine.js
Comment posted November 27, 2024
@Cutter, That looks really cool actually. Thanks for putting that together. I hadn't even seen the resolvedOptions() method before. What I'm gathering here is that if you instantiate the Intl.DateTimeFormat() without any settings, it will use the user's baseline browser settings? And then you can us... read entire comment from Ben Nadel.
Ben Nadel replied to a post Optional Password Protection Added To Incident Commander
Comment posted November 27, 2024
@Danilo, I don't think there is a ColdFusion native way of doing it; but, there's got to be a JAR file somewhere that we could pull in. When it gets down into the weeds of storing a UUID in the database; I don't have the muscle memory for it. But, I'm pretty sure that a UUID can be stored in some da... read entire comment from Ben Nadel.
Ben Nadel replied to a post Considering Encrypting Passwords At Rest In ColdFusion
Comment posted November 27, 2024
@Gregory, I wish I could insert the "I have no idea what I'm doing dog" MEME 😆 a big part of why I blog is that I'm desperately trying to cram things into my head and hope that they stick. It also gives me something to refer to later when I inevitably forget the details. I wish you luck! I've spent... read entire comment from Ben Nadel.
Gregory Alexander replied to a post Considering Encrypting Passwords At Rest In ColdFusion
Comment posted November 27, 2024
@Ben Nadel, Thanks Ben! Yes, I have never worked harder for free! You're right about being overwhelming- I find myself coding like crazy, trying to remember where all the pieces fit in, and eventually, I am done, and it is bittersweet! I am amazed at how you can blog, write a book or podcast, and de... read entire comment from Gregory Alexander.
Danilo Celic replied to a post Optional Password Protection Added To Incident Commander
Comment posted November 26, 2024
@Ben, From what I understand, UUID V7 was created specifically to address the use case for unique non-incrementable values while also being indexable. Currently traveling and don't have a good link to share discussing more about it. Not sure if there is a ColdFusion implementation of it yet, but I'm... read entire comment from Danilo Celic.
Cutter replied to a post Formatting Dates In The Local Timezone With Alpine.js
Comment posted November 26, 2024
@Ben, You can build your own formatter function to use the users local 'locale', and it will automatically adjust accordingly. function buildFormatter() { const {locale} = new Intl.DateTimeFormat().resolvedOptions(); const formatter = new Intl.DateTimeFormat(locale, { year: 'numeric', mo... read entire comment from Cutter.
Chris G replied to a post Formatting Dates In The Local Timezone With Alpine.js
Comment posted November 26, 2024
@Ben, I took a quick look at the MDN Docs as well and based on the following example, I think it would actually be as simple as you hoped. If I'm reading this right, it would use the user's local settings to define the default time zone and then just do the right thing. No? const date = new Date(Dat... read entire comment from Chris G.
Ben Nadel replied to a post Formatting Dates In The Local Timezone With Alpine.js
Comment posted November 26, 2024
@Raymond, Ha ha, ok, maybe it's just not familiar. I'm sure that when I dig in, it will make more sense.... read entire comment from Ben Nadel.