Building a Web App with BoxLang / / No Comments I’ve been building web apps for thirty years now, which frankly is kind of scary to see explicitly spelled out. For a large chunk of that time I built web apps using an application server, ColdFusion, where my templates would dynamically output HTML (or other formats like JSON) to return to the browser. For my non-ColdFusion readers out there, you can just replace ColdFusion with PHP or ASP and you get the basic idea. Most recently, I’ve spent a lot less time on the server and more on the front-end, but I kept coming back from time to time. Earlier this year I looked at building a simple blog in the Python-based Flask framework. I thought it would be a good exercise to try something... more → Posted in: JavaScript Tagged with: BoxLang, building
Using Intl.DurationFormat for Localized Durations / / No Comments Last year I had the opportunity to give a talk on the web platform’s Intl specification. This made me incredibly happy because in preparing for the presentation, I discovered so many cool features and capabilities of the spec that I had no idea existed. Almost a year ago, I wrote up a blog post on Intl.RelativeTimeFormat, talking about how the API was easy to use, but perhaps a bit difficult when dealing when determining the best values to use when formatting dynamic dates. Today, I’m going to turn my attention to a related spec, Intl.DurationFormat The Basics The DurationFormat API works like so: Given a locale (defaulting to the browser’s locale) Given a set of values representing... more → Posted in: JavaScript Tagged with: Durations, Intl.DurationFormat, Localized, using
Building Serverless Lambda Functions with BoxLang / / No Comments I’ve been a fan of serverless for quite some time. My introduction to it was OpenWhisk, way back in 2016. It’s been appealing to me for a long time as an easy way to deploy lightweight services quickly. As much as I’ve been a fan of the technology, I’ve yet to really embrace Amazon’s Lambda product. I’ve played with it a bit off and on in the past, but it always felt incredibly overwhelming. Netlify Functions, Pipedream, and Cloudflare Workers have been my main tools for serverless just because of how simple they are. That being said, the last few days I’ve been playing with BoxLang on AWS and thought I’d share my experience. The Basics So let’s... more → Posted in: JavaScript Tagged with: BoxLang, building, Functions, Lambda, Serverless
Introducing BoxLang – Scripting for the JVM / / No Comments The last week or so I’ve been playing with a new language, which honestly is one of the most fun things I get to do. BoxLang is a dynamic scripting language that runs on the JVM although you don’t really need to know a thing about Java to make use of it. It’s currently in beta and moving towards an official 1.0 release, but you can absolutely kick the tires on it now (as I have!) and I thought I’d share a bit about what I’m doing with it. BoxLang is open source and free, with the company behind it, Ortus Solutions, offering professional services on top. If you come from the ColdFusion world, you know Ortus has been around a while and has created a huge amount of... more → Posted in: JavaScript Tagged with: BoxLang, Introducing, Scripting
Building a Resume Review and Revise System with Generative AI and Flask / / No Comments The last two sessions of my live stream, Code Break, have been really interesting, at least to me anyway. I’ve been discussing generative AI with Google Gemini and building a relatively simple example while doing so – a resume review and revisement system. This started off pretty simply with a Python script and then iterated into a proper Flask app. I thought it would be fun to document the code here a bit and share it with those who couldn’t make the streams. If you would rather just watch the recordings, I’ve got them embedded at the bottom. Feel free to skip to that. Step One – The Script For my first iteration, I built a simple Python script that: Uploaded the... more → Posted in: JavaScript Tagged with: building, Flask, Generative, Resume, review, Revise, system
Links For You (2/8/25) / / No Comments In my last Links For You post, there was snow outside from a completely unusual snow storm down here in Louisiana. Two weeks later, my AC is running and I’m near back to wearing shorts again. Sigh. I’ve said it before and will say it again, I cannot wait to get out of the south. With those complaints out of the way, let’s get to the links! Python Tips As I’ve made it a mission this year to get Somewhat Good at Python, I’ve been keeping my eyes open for good Python tips and tutorials. I’ve subscribed to, and recommend, the Python Weekly newsletter, where I found this great video embedded below. ArjanCodes covers ten good tips for new Python developers, and I’m... more → Posted in: JavaScript Tagged with: 2/8/25, links
Doing Evil Things with Generative AI and Recipes / / No Comments Let me preface this blog post with a very clear and direct message. Do not do what I did. This is a bad use of generative AI. This is pure silliness with no real practical value whatsoever. This is a really, really, bad idea. But it was fun as hell, so here goes. Last year I did two investigations into recipe parsing on the web. As we all know, most recipe sites go out of their way to make the actual recipe, you know, the thing you want to read, obfuscated and buried beneath a lot of stuff that is… well not the actual recipe. I first investigated JSON-LD and using that to parse web recipes into data: Scraping Recipes Using Node.js, Pipedream, and JSON-LD. This worked really well. I then... more → Posted in: JavaScript Tagged with: Doing, Evil, Generative, Recipes, things
Automating Image Improvement with Cloudinary / / No Comments Earlier this year, no, wait, last year (time is kinda crazy), I wrote up the process of automating background removal using Adobe’s Firefly Services. This post described a Pipedream workflow that monitored a Dropbox folder and… On a new file detected, generated a readable link Passed it the Lightroom API to improve it Downloaded it to another Dropbox folder Today, I’m going to look at a similar workflow using Cloudinary. Unfortunately, Adobe’s Firefly Services still have no kind of free trial so it’s difficult for developers to test it out. Everything I’m showing today however can be done with a free Cloudinary account (and Pipedream as well). Let’s... more → Posted in: JavaScript Tagged with: Automating, Cloudinary, Image, Improvement