Tales from the jar side: Crashing the hotel wifi, My new job, LangChain4j turns one, and the usual silly tweets and toots
What kind of car does a baby sheep drive? A Lamborghini. Just kidding, sheep can't drive. They take a Ewe-ber. (rimshot)
Welcome, fellow jarheads, to Tales from the jar side, the Kousen IT newsletter, for the week of April 28 - May 5, 2024. This week I taught my Reactive Spring course on the O’Reilly Learning Platform and gave several talks at the NFJS event in Wakefield, MA.
Regular readers of, listeners to, and video viewers of this newsletter are affectionately known as jarheads, and are far more intelligent, sophisticated, and attractive than the average newsletter reader or listener or viewer. If you wish to become a jarhead, please subscribe using this button:
As a reminder, when this message is truncated in email, click on the title to open it in a browser tab formatted properly for both the web and mobile.
NFJS Boston, or The Perils of Hotel Wifi
On Friday I was scheduled to give my talks about accessing AI models from Java. The first talk was my standard lecture about it, which was fine. But in the afternoon I was scheduled to give a more hands-on version in two back-to-back sessions.
To prepare for that, I put together a series of small exercises, in Markdown format, and made them available in this GitHub repository. I added a file called labs.md to the root directory, so if you select it in the browser, it renders automatically. The exercises talk about installing Ollama and downloading a couple of models (specifically, llama3 and llava, the vision version of llama), mapping the Ollama REST API to classes, and accessing everything using sealed interfaces, records, and pattern matching for switch. I used the “generate” endpoint provided by Ollama to do everything.
What I hadn’t counted on was that everyone in the room (maybe 20 people) all trying to download and install Ollama brought the poor hotel wifi network to its knees. Everything ground to a halt. All the NFJS sessions are recorded on Zoom as well, and the wifi collapsed so badly that connection stopped working, so there’s no recording for that session.
I wound up doing the exercises in front of everybody and answering questions as we went along, but in retrospect I think I had a better option. I chose Ollama for the labs because:
The “generate” endpoint is particularly simple.
The input record for the “vision” model is only slightly more complex than the “generate” model.
You don’t need a credit card or to register at all, and everything runs on your own local machine.
If we had used OpenAI instead, everyone who wanted to participate would have had to register for an account there, add a credit card, prepay some small amount, and generate a key for all the requests. I didn’t want to ask everyone to do that, even though the cost per request would have been, at most, pennies. When the wifi went down, however, that could have been my fallback position. Sure the models would have been more complex and I would have had to work out the details on the fly, but we could at least have done the exercises.
Oh well. I’ll use those same labs (once I’ve reviewed them — I didn’t really get a chance to do that, so if you try them out, there may still be some minor issues) the next time I do the corresponding NFJS Virtual Workshop. That’s currently scheduled for June 12, so if you decide to join, now you know what to expect, at least in part.
I still reviewed lots of code, both in that repository and in this one which is filled with examples that use Spring and Spring Boot for the infrastructure. Eventually I’m going to have to merge those when my newest book (working title: Adding AI to Java, to appear on the Pragmatic Bookshelf later this year) comes out in beta. But I’ve said too much. No more spoilers, at least not this week.
Everything else went well, btw. I even met a few jarheads, which was seriously cool. I’d mention their names here, but I forgot to write them down and I didn’t ask permission. If they contact me through the newsletter and say it’s okay, I’ll add them next week. :)
I Got A New Job
The ongoing layoffs in the tech industry over the past year or so have been devastating, especially because they seem to be happening for no good reason. It used to be that when companies announced layoffs, their stock would drop, because investors interpreted that as a sign of financial trouble. Now layoffs are interpreted as cost-cutting, and therefore a good thing, and can make the stock go up. According to the data I’ve seen, nearly 200,000 tech workers lost their jobs last year, and we’re already up to 50,000 more so far in 2024.
What’s also been difficult for me is that, unlike in the layoffs of the Great Recession in 2008 or the burst of the e-commerce bubble in 2002, I know too many people who have lost their jobs this time around. That tells me that the quality of the individuals involved is not a factor. I know several people whom I consider to be excellent developers get cut, but when your entire department is eliminated, what can you do?
I’ve been a one-person company since March 2005. That means I can’t get laid off, which is good since I’m definitely a high-maintenance employee, but I can go out of business. I own all the stock, too, so no VC is going to come in and announce cost cutting. (I’ve always said, however, that if some tech giant (Google? Facebook? It might help if I called them Alphabet or Meta like they want, but I can’t seem to do that) was to offer me $1 billion for my company, I’d say yes and find something else to do. Heck, I would probably be willing sell out for only half that.)
All that means is that I haven’t been an actual employee, with benefits and everything, for almost 20 years.
That changes this summer. I’ve mentioned in this newsletter that since last September I’ve been teaching one course a semester at Trinity College in Hartford, CT. They were recently kind enough to offer me a full-time position as a Professor in the Computer Science department. This week the paperwork finally came through, and I agreed.
Formally my title(s) will be
Visiting Professor of the Practice in Computer Science
Associate Director for STEM Initiatives in the Entrepreneurship Center
starting July 1. My comments are:
What’s with the word “the” in the first title? The Practice was a TV show about lawyers, but I don’t think that’s relevant here. Besides, I never watched it.
The word “Visiting” is there because technically this is a two-year appointment, though it is full-time. For a permanent position, they’d have to do a nationwide search, which they probably still will do next year. After two years I can apply for it if I want to, but we’ll see.
The Entrepreneurship Center (wow, I’m going to have to learn how to reliably spell “entrepreneurship,” aren’t I?) has its own web page, but I’m still not sure exactly what it does. I guess I’ll find out. Mostly I think my job will involve helping students with their projects, keeping an eye toward commercialization. I’ll try to keep my cynicism about VCs and business at bay while doing so.
So far I really like the kids at Trinity. Maybe I just wound up with a good group, but they are energetic, enthusiastic, and fun to be around. At that age I was totally messed up, so it’s refreshing to see how much better they seem to be handling the starts of their careers, to say nothing of the world in general. I do feel funny on occasion that they’re all ten years or more younger than my son (whose birthday is today! Hi Xander!), but they all seem pretty grown up to me.
From a very young age, my original goal was to be a professor. I read biographies of Galileo, Newton, Einstein, and so on, and I wanted to be them. When I found out that I wasn’t going to revolutionize physics (which I discovered conclusively my freshman year at MIT, though I suspected it much earlier), I still thought being an academic looked like a cool job.
When I got to Princeton for graduate school, I saw what the job of a professor was really like, and it wasn’t nearly as romantic as I thought. My advisor didn’t get tenure, mostly I think because he wasn’t great at raising funds and that’s what the administration really cared about, so I got to see that, too. I therefore went to an industrial research lab, United Technologies Research Center in East Hartford, CT, to build a resume and make contacts. I kind of got stuck there for about twelve years and found out that (1) I liked learning but I didn’t like research, and (2) I hated begging for funding.
Eventually I switched to what was called an AI group (of all things, but at the time it involved neural networks and genetic algorithms) and went back to school at night (on UTRC’s dime) and got my MS in Computer Science from RPI in Hartford. Then I left UTRC for a tiny twelve-person training company called the Golden Consulting Group, where I could satisfy my desire to teach without having to grade any papers or work on hard research problems (that’s redundant — all the easy research problems are already solved). I did spend a few years as an Adjunct Professor at RPI in Hartford, teaching one course every other semester for a few years, but that ended when I started traveling too much for my job.
Now that my work has settled down post-pandemic (yeah, I know, the pandemic is still going on, but you know what I mean), at long last the opportunity to join a faculty of a small liberal arts college appeared, and I grabbed it. I’ve only been preparing for it the last 35 years or so. :)
What does this mean for you, the dedicated jarhead?
I originally joked that I was going to pull a Venkat (Subramaniam) and continue to do everything, but realistically something is going to have to give. It’s not going to be this newsletter. Rest assured, I plan to keep cranking these out every Sunday for as long as I physically can.
I’m also still going to teach training courses, but only on certain days for certain clients. I expect to continue to do my half-day classes on the O’Reilly Learning Platform a few times a month. I hope to do NFJS Virtual Workshops as well, though less frequently.
What’s going to have to go is my conference schedule. Last month was unusually busy for me, traveling to Atlanta for DevNexus, St. Louis and Boston for NFJS, and Bangalore for GIDS. That’s going to get scaled back to a minimum. I can still travel to conferences between the end of the Spring semester (this week, actually) and the beginning of the Fall (around Labor Day), but not so much during the term. That’s okay, though. I’ve done a lot of that, and it’s time for the younger generation to take over anyway.
I mentioned I’m working on a book (Adding AI to Java), and the Trinity people see that as a Good Thing. I want to complete this one before the Fall semester starts, so you’ll see lots of effort on that, which is well underway.
What I’m also not sure about is the Tales from the jar side YouTube channel. The channel started out as a video version of this newsletter, but grew into technical videos I could make as I settled into semi-retirement. I hope to continue it, but we’ll see how much time I have. Maybe I’ll find some film student on campus who would like an editing job (for actual $$), and if so, that will make it easier. We’ll see.
In the end, while I’ve been looking for a way to scale back on my work, and was even considering retirement in general, but instead I started a new job. If you know me, you’re probably not terribly surprised. My wife suspects I won’t be good at being retired anyway, so hopefully this will be a good move.
There is one side benefit. Ever since I became an independent trainer I’ve had a hard time explaining to people what I do for a living. (I teach software development training courses, primarily related to Java and other topics, to clients in business industry, sometimes directly and sometimes as a client to training companies.) Now I can just say I’m a Professor of Computer Science at Trinity. No, the one in Hartford, not in Dublin. Ireland, not Ohio. I don’t have a research program and don’t publish any papers, but I’m also helping out with an entrepreneurship center, and … yeah, maybe I should leave it at the short definition.
More on all this as it happens.
Tweet and Toots
LangChain4j turns one
Here’s the picture that came with that tweet:
The parrot is the logo for the original LangChain framework from Python, and of course it’s holding a cup of Java.
I really like LangChain4j. I did a talk about it at the NFJS even this weekend, and the AI Services and the Tool support went over really well. I also did a RAG example to show the process. In fact, the only problem I have with LangChain4j is that the “j” at the end should be a capital letter, right? I keep meaning to ask about that in the Discord server, but I haven’t built up the courage yet.
Another picture from GIDS
That’s me in the speaker room with Venkat and Mary Grygleski, who took the picture and posted it.
One other note from GIDS: We were, of course, in India. One night many of us had dinner together. I waited until the server brought over the bread, and then said, “You know, the restaurant here is very secretive about their bread recipe. In order to get this you have to sign a Naan-Disclosure Agreement.”
If you’re keeping score at home, that twice I’ve gotten to use that gag in the last couple months, so that definitely goes in the win column. The resulting groans from around the table were just icing on the — wait, garlic or butter on the naan? Yeah, let’s go with that.
Chess
I started off my keynote at GIDS by showing some pictures from the recent Candidates Tournament to select the next challenger for the World Championship. I began with an image of Vidit, then showed Praggnanandhaa and his sister Vaishali (who did pretty well in the women’s tournament, starting with four losses but then winning five in a row), and finished with Gukesh, the precocious 17-year-old who actually won the tournament.
I said to the room, “I told my wife I was going to show you these pictures, and she said, “isn’t that a cheap way to get applause?” I replied that she didn’t know the GIDS audience. They are far too intelligent, sophisticated, and, let’s be frank, attractive to fall for such obvious pandering, right?”
Yeah, I couldn’t resist. Fortunately, the talk went well, or that could have gotten awkward.
Epic Rap Beef
My son informed me yesterday that social media has been consumed by an epic battle between Drake and Kendrick Lamar. Here’s a whole page of Google links about it. Each side has been releasing diss tracks incredibly quickly, and they’re all vicious.
I’m pretty good at keeping up with pop culture, but that’s way outside my range. I would have missed the entire thing if my son hadn’t told me about it. He was thoroughly enjoying it, of course.
I did see this post, however, which is a strong candidate to win the whole thing:
The combination of “male gossip” and “focused on the Bag” is pretty impressive, I must say.
Bear vs Man
Another pop culture meme that hit this week was when a woman was asked on TikTok whether it would be better to be alone in the woods and encounter a guy or a bear, and she chose the bear. The responses by many guys proved her point for her, as always happens.
All I know is somebody posted this:
Yup, nicely done.
Lessons from Barbie
I would ask Wednesday Addams about that.
May the Fourth, etc
That’s easy. The Stormtrooper will miss, and the red-shirt will die anyway.
Driving home from the Boston area on Friday, I kept seeing their famous signs from MassDOT that marked the occasion. Here are a couple samples:
Sure, they’re clever, but honestly, ever since Jar-Jar they’ve lost a lot of appeal. That doesn’t even include the disasters that were the J.J. (obv short for Jar Jar) Abrams-directed sequels. But okay, have fun.
Piano Snark
Great, but where is the Any key? (rimshot)
Ants
“Which one is Karen?” “The thin one.”
(Too soon?)
Prime Numbers
That’s exactly the sort of information that social media was invented to distribute. Here’s the link to that Wikipedia page. The prime is 31 digits long and has thirteen zeros on either side of the 666. The best part is that apparently it has its own symbol:
There’s no way I can draw that, but if I could, it probably belongs inside an inverted pentagram.
And finally,
Speaking of portals to the underworld
There’s definitely a related gag in there about AI tools being daemons spawned from hell, but I can’t quite find it. Let me know if a good one occurs to you.
Have a great week, everybody!
The video version of this newsletter will be on the Tales from the jar side YouTube channel tomorrow.
Last week:
Reactive Spring, on the O’Reilly Learning Platform
NFJS Boston, in Wakefield, MA, this Friday and Saturday.
This week:
Final exam in my Trinity course, which actually means student team presentations. We’re doing that instead of the final. See how easy it is to become a popular professor?
Congrats on the teaching!
Thanks! 🎓