Functional Programming in Java I had the good fortune tonight to present “Functional Programming in Java” to the membership of the Philadelphia Java User’s Group. Beginning with Java 8, the Java language architects made a concerted move to become “more functional.” To best understand what this means and how to take advantage of the new language features many programmers in the Java ecosystem will need a crash course in functional programming principles and benefits. This presentation covers all of that, areas where Functional Programming elements have shown up in Java previously, and what’s on the road map before moving on to how best to take advantage of all of this and apply functional programming in your Java projects! The slides for the presentation and the code samples are useful resources for those interested in the topic. Reach out to me on Twitter if you want to engage in the discussion! I was able to capture a video of the talk. The video is fast paced but you can always pause it or repeat segments to suit your desired pace.

Hung Jury I’ve had a lot of fun in recent years playing games like The Resistance, and Jackbox Games. The two biggest obstacles to my enjoyment for both have been the player limits and issues with portability. For both, there have been times where people have had to sit out and watch, or a group wanted to play but couldn’t because we hadn’t planned ahead properly. I wrote a game to address some of those obstacles called Hung Jury. It’s a Jackbox-style party game without the central server, so you can play it anywhere you want so long as each player has a mobile device and an internet connection. It supports up to 32 players for now, which is more than I can imagine anyone organizing for such a thing. If anyone ever completes a game with that many players, I’ll up the player limit :)

Northeast Scala Symposium 2019 I had a fun experience at NEScala 2019 last week. We realized about 3 minutes before a speaking slot that there was a flaw in our speaker confirmation process and that not only was the speaker not there, we hadn’t realized it until that moment. I had been planning to share some of my recent work at the “Unconference” and accellerate that to present the work on the “big stage.”

Musings on College This is another piece I saw in the archives as I was moving my old files to the cloud. Right around the time my oldest child started elementary school, I wrote out all of my thoughts on the way college works and what students should do to prepare themselves for it. I never really did anything with it beyond talk about it and show it to a few people.

WebSockets, http4s, and fs2 When I decided to experiment with functional streams and worked to build a WebSocket application using http4s. I chose that platform because TypeLevel has a lot of velocity right now, especially with fs2 (Functional Streams for Scala) in the cats ecosystem. I struggled at first, because the WebSocket examples were too simple for my use case. Fortunately, the contributors to http4s are very responsive on their Gitter Channel and quickly pointed me in the right direction. To thank them, and to help the next round of adopters, I wrote a detailed example application and shared the code on GitHub.

Site Updates When I first moved this site to Jekyll/GitHub Pages almost 3 years ago, I took the “quick and dirty” approach and used permalinks on every page to try to preserve as much of the structure as possible. I’ve learned a lot about Jekyll since then, and recently completed an effort to rebuild the site to take better advantage of Jekyll and kramdown functionality. This means that I broke a bunch of links, and for that I apoligize. I updated my 404 page to offset most of the damage.

Nostalgia I was moving my documents collection to “The Cloud” and I came across a Player’s Guide for Ultima V I had written back when I was in college and a NetHack Battle Report I wrote to introduce people to the game shortly after. Writing those by themselves were nostaligic events, as they were two of my favorites growing up.

Passing the Torch - Philly JUG When I first considered leading the Philly JUG, I strongly suspected that whether I took the job or not, I would come to regret it. It was a daunting responsibility to take on, but the JUG community was something that I had valued for quite some time and I didn’t want to risk losing it entirely. I’m happy to report that after 3 years of service, I regret nothing.

HaskellMUD Conversations about my experience with Elm led me to Haskell, and I’d always wanted to write an application that depended on data mutation in a purely functional language. Over the recent holiday, I decided to make a MUD, in part because the first large code base I worked on was a DikuMUD that ran in the early 90’s.

Snake in Elm Elm had been on my list to check out for quite some time. I finally got the chance to play with it and wrote a game to play with the kids.

Volvo S80 Car Fire A couple of weeks ago, just after I arrived at work, people were drawn outside by a car fire in the parking lot. I followed the crowd, and stood amongst all the people who were wondering who’s car it was.

Performance Enhancement A discussion with a friend about Provigil led me to write an article I titled “Performance Enhancement.”

Attention to Detail I published “Attention to Detail,” which ended up holding the #1 spot on Hacker News for 8 hours or so.