A Sneak Peek at BoxLang’s Module Feature

Last week I attended and spoke at Into the Box, a conference hosted by the Ortus folks, the company behind BoxLang. While there, I attended a talk from Brad Wood on how BoxLang’s module system works. I’ve been using modules with BoxLang since I first started playing with it. It’s how database support is added, mail, PDF, and more. You can see a list of currently released modules here. I had been curious as to how this works so I was excited for Brad’s presentation. While hearing him go over the details, I got even more excited, and literally built a ‘hello world’ module in a minute or so while he talked. I’m calling this blog post a "sneak peek"... more →
Posted in: JavaScript

Using AI to Analyze Chart Images

I’ve done a few posts where I’ve asked GenAI services to analyze and summarize data. Most recently, I blogged about Chrome’s built-in AI APIs and summarizing raw data into simple English. In each case where I’ve done work like this, I’ve had access to the raw data of what I want the API to analyze. But what if you don’t? What if all you have is a simple chart image? I did some testing with this and here’s what I found. My Source Data For my source data, I created a set of charts using Highcharts. This isn’t my preferred front-end charting library, but I noticed their demos had (usually) a quick CSV export. That made it easy to get both a sample... more →
Posted in: JavaScript

Links For You (5/3/25)

Happy Saturday, Happy Pre-May the 4th, and happy "I don’t have to beg for a job anymore". Yep, I’ve got a job. I’m going to be announcing where and what later this month when I start, but, finally, I can stop the hunt. Oh, and the crippling fear and despair being gone is an added bonus. So, happy day! Let’s get to the links. Tubes, tubes, tubes Last week I started off with a post from Todd Sharp so why not do it again? Todd wrote up his experience using Momento Topics API and Nixie Tubes. Nixie Tubs are beautiful steam punk looking tubes that can be connected to hardware and then changed programmatically. I did a bit of hardware hacking last year but the project... more →
Posted in: JavaScript

Code Break Back for May

Hey folks, after a break last month (for reasons), I’m happy to announce that Code Break is back on schedule. I’m ditching any further exploration of React for now, but instead turning my attention to something I think is really fun – building desktop apps. This first session will focus on a JavaScript-based framework while my next one will cover using Python. My next session will not be on a Tuesday, but Monday, May 5th, at 12PM CST. You can RSVP/sign up/etc here: https://cfe.dev/talkshows/codebreak-05052025/ I hope to see you there! Raymond Camden… more →
Posted in: JavaScript

Creating a PDF Book from Markdown with BoxLang

Recently I’ve done some blog posts on BoxLang involving Markdown and PDFs, and I was curious if I could put together something that really demonstrated a complete tool of some sort. With that in mind, I built a "book" system where you can author pages in Markdown and use a BoxLang CLI script to generate a resulting PDF. It’s more a POC than a real app, but it was pretty fun to build. Here’s what I did. Functionality At a high level, the book is created from a source of Markdown files. Each Markdown file can use front matter (data on top) to define variables that are evaluated at the time the book is created. You can also use a "global" data file to define... more →
Posted in: JavaScript

Using Cloudflare’s Browser Rendering APIs for Screenshots

I’ve been a Cloudflare fan for a while now, but have mainly focused on their Workers Serverless platform. I was aware, of course, that they did a lot more, but I just haven’t had the time to really look around and explore. Recently I was doing some investigation into "url to screenshot" services and discovered that Cloudflare had this, and not only that, it’s part of a suite of browser APIs that are really freaking awesome. Cloudflare’s Browser Rendering APIs do things like: Get the HTML of a page, but after JavaScript has executed, allowing it to get dynamic HTML Render a PDF to PDF Scrape HTML via selectors Parse out content via JSON schema (I’m absolutely... more →
Posted in: JavaScript

Adding CORS to Your BoxLang APIs

CORS, or Cross-Origin Resource Sharing, has been the bane of my existence at times. Don’t get me wrong, I get the idea behind it. I get why it’s necessary. That being said, I tend to forget about it until I write some client-side JavaScript code that gets hit by it. With that in mind, I thought I’d quickly demonstrate how to build CORS-enabled APIs with BoxLang. It’s incredibly simple, which is good, but you’ll want to keep it in mind when building out your own APIs. What and Why? I’m not going to repeat the full description of CORS available from MDN, but it basically boils down to a security feature in browsers. When executing code on your domain that makes... more →
Posted in: JavaScript

Parsing Markdown in BoxLang – Take 2

A long, long time ago, ok, it was last Thursday, I posted about adding Markdown processing to BoxLang via the Flexmark Java library. After posting it, a few folks were curious why I didn’t use the native import process instead of createObject('java', '...') and the answer was simple – I just didn’t think about it! To give you an idea of the difference, let’s first consider the initial version: function markdownToHTML(str) { // .init() is important! ds = createObject("java", "com.vladsch.flexmark.util.data.MutableDataSet","flexmark-all-0.64.8-lib.jar").init(); ps = createObject("java", "com.vladsch.flexmark.parser.Parser","flexmark-all-0.64.8-lib.jar").builder(ds).build();... more →
Posted in: JavaScript
1 2 3 4 96