Years ago, I started this blog on Wordpress, then moved to awestruct, then to JBake, then to Jekyll. I've not done that because I like to change things (though I must admit I've enjoyed doing it each time ;), but because I'm looking for something that best suits my needs. I need to be able to post source code. It would be nice to be able to change theming -- especially for source code -- globally and easily. A static site would be nice for both performance and security. And as icing on the cake, being able to extend the build tool would be amazing. By chance in the past week or so, I was introduced to a new a tool, Roq
, which is built in Java, and based on Quarkus. A whole lot of boxes were suddenly checked. Now, less than two weeks later, I've convertedthreesites
, including this one. In this post, I'll walk you through building your own static site that... Roqs. :P
Roq, of course, has its own documentation
, which helped me immensely. However, as all docs go, there were some use cases that weren't covered as thoroughly as I needed (or I'm slower than I like to think), so I thought I'd add my own voice, as they say, and maybe it will help you (and maybe help beef up the official docs. Andy, Roq's author, has been super helpful and eager for feedback).
Last night, I had the opportunity to present at my local jug, the Oklahoma City Java User Group
. My topic was building applications Kotlin/Compose Multiplatform. For the most part, it was awesome. More on that in a moment.
The presentation
was an introduction to the technologies that I've found helpful in building cross-platform applications. I tried to be clear that what I was presenting is my current architecture and that things might change, and that I was learning some of these things as I go. I find it helpful to present on things that I'm learning, as it helps solidify things in my own mind, and it might be useful for others to travel along with me, so to speak. I won't recap here everything in the presentation, so if you'd like details, you can flip through the slides
.
The demo app is one I've called (because I'm a sucker for puns), "Giftbook" -- like "Facebook", but for gifts. The inspiration for the app (which is in part intended to serve as an architectural reference app for my younger son as he builds a mobile app for a high school class, as well as for a project my wife and I are working on together) came from my wife. She typically handles the bulk of our gift shopping, and she uses an app to help keep track of that. The app is great and helpful, but it has shortcomings, and in the course of discussing those, we did what any good geek would .
I said the meeting was awesome "for the most part" earlier. I had hoped to have a video of the presentation to post the OKC JUG YouTube channel
, but... there were problems. Since I was presenting, I couldn't run the recording device, so I conscripted my beautiful and brilliant wife to do handle that, and she did great, but the forces against us were greater. :) A big part of the problem is OBS. I spent part of the morning yesterday making sure everything was set up and working, but when we got to the venue, OBS had forgotten input devices, microphone levels were messed up, etc., so we had to hastily try to reconfigure things moments before the session started. Neither of us know OBS well, and we mostly got it working, but the audio in the video we ended up actually getting was great, then silent, then really low. Not sure what was going on there.
The coup de grâce for the recording, though, happened when the laptop died. :P What we didn't notice was that the power strip was not turned on, so the laptop was running on battery until it wasn't. We did manage to record about two-thirds of the presentation before things completely fell over, but the audio is next to useless, making the video a bit of a waste.
I learned (or had reinforced) a few things, though: I need to learn OBS better (or find a simpler replacement), and I need to conscript more dedicated help. I had a million plates spinning last night, and I wouldn't have been able to pull of the meeting if it hadn't been for my amazing wife (I've said this directly to her, but I'll say it again here: A HUGE thanks for the help. You're awesome. :)
Given all of that, there's a chance I'll make a recording of the presentation from my office so I can have something to upload. I need to tweak the presentation a bit (including replacing that super dumb and boring title, something my wife and older son have been helping me brainstorm), so if I can find some time, I'll make those changes and try to put a recording.
Despite the technical woes, I had a great time seeing old friends at the JUG, and even got to meet a few new people, which is always great. Having part of my family there was big bonus, as well.
I've been working on a side project that includes both a backend -based, of course) and a mobile app (I'm using Kotlin Multiplatform
, but that's a topic for another time). In this project, I need to display an image (think profile picture), but the link is secured, meaning I need to authenticate with the server to get it. I couldn't find anything in the Coil
docs explaining directly how to do that, but I was finally able to piece it together, and I'd like to share that here in case it helps someone else.
This year was a very light year in blogging for me -- even by my recent standards -- for a lot of reasons that probably aren't of much interest to others. That said, I want to close the year out as I have for years with a Christmas post. I realize that many of you may not celebrate Christmas, and for others it's just another holiday plus lights and gifts and family. I would be remiss, though, if I didn't close the year sharing the real, historical meaning of Christmas: the birth of a baby sent to atone for the sins of the world. There's a lot of theology there that I won't unpack here, but, if you'd like to hear more -- or try to convince me that I'm wrong :) -- I'm here for you.
Here's a beautiful setting from Evan Wickham of some of that theology. I hope it blesses you as it did me.
Merry Christmas!
Breaking heaven’s silence we heard a human cry
Light into our darkness the Savior has arrived
Healing all the broken and teaching us to love
The Son of heaven’s glory now clothed in flesh and blood
Begotten not created from the Father before time
Virgin born Messiah both human and divine
Crucified and risen forever You will reign
We join with all the church from every age
Singing worthy is Lamb that was slain
I recently found myself in need of having two different Testcontainers communicate with each other. To someone more familiar with Docker, the solution might have been more obvious, but, alas, I am not that man. Testcontainer Slack
, I got a pointer, so I thought I'd share it here in case it might help someone else.
My name is Jason Lee. I am a software developer living in the middle of Oklahoma. I’ve been a professional developer since 1997,
using a variety of languages, including Java, Javascript, PHP, Python, Delphi, and even a bit of C#. I currently work for Red Hat
on the WildFly/EAP team, where, among other things, I maintain integrations for some MicroProfile specs, OpenTelemetry, Micrometer,
Jakarta Faces, and Bean Validation. (Full resume here.
LinkedIn profile)
I am the president of the Oklahoma City JUG, and an occasional speaker at the JUG and a variety of technical conferences.
On the personal side, I’m active in my church, and enjoy bass guitar, running, fishing, and a variety of martial arts. I’m also
married to a beautiful woman, and have two boys, who, thankfully, look like their mother.