I’m finally finishing off the scarf I started during the first lockdown. It encodes a small part of the genetic sequence of one of the Covid-19 strains! 🦠
-
-
Knitting and beer with friends… ❤️
-
As you may have gathered from some of my posts earlier in the month, this year I was invited by the folks at YOW! Conferences to come along on the tour as part of the team. I introduced the opening and closing keynotes in each city, hosted a track in Brisbane, and helped fill in with odd jobs where necessary. Along the way, I managed to see almost every single speaker on the agenda this year. I thought I’d share a photo and takeaway from every session I saw, to give you a flavour of the breadth and depth of content at YOW events. (These talks were all recorded and they’ll be up on YouTube in the new year.) We kicked off with Day One in Melbourne…
Nilesh Makwana is from Perth and keynoted at all three conferences. His focus is on digital inclusion – how can we ensure that, when we build the glorious digital future, we don’t leave people behind? I was especially interested to hear about his work with the WA government on their Digital Inclusion Blueprint.
I was super excited to hear from Suz Hinton, who I first met at a YOW event back in 2017. Suz always does something interesting, and this time she shared with us her project to use an ant farm to generate entropy for use with encryption. I knew about lava lamps, but ants are next level! One thing I learned is that ants don’t sleep like humans; they just take micro sleeps throughout the day. (As a result, Rodd and I now refer to “taking an ant nap” anytime one of us is tired and needs a rest.) I also learned a fair bit about encryption and how computers generate randomness from her talk.
Next was my very stylish friend Giacomo Cavalieri, making his first trip to Australia. Giacomo is one of the core developers of Gleam, a new functional programming language. While I’m not a professional (or even amateur) programmer these days, I really liked how Giacomo talked about the importance of having a friendly developer experience. He certainly convinced more than a few attendees to give Gleam a shot!
This was from my friend Andrea Magnorsky‘s session on “bytesize architecture sessions.” I met Andrea not long after she moved to NZ earlier this year and even got a preview of one of her talks, so I knew she’d have a lot to offer the YOW audience. She talked about the difficulties in sharing information across teams, and she pitched her architecture session idea as something that can really help. She gave everyone practical advice for running a session and talked about the importance of having psychological safety and a growth mindset.
This guy is Yan Chernikov, aka Cherno. He’s a YouTuber and a developer, and right now he’s working on a long-term project to build his own gaming engine called Hazel. He talked us through his goals for the project: to have a fun challenge; to have content to teach people on his videos; and to eventually make his own game. While there are legit reasons for using off-the-shelf software, it can be overly complex and expensive. Yan talked about how he’s able to leverage Open Source libraries and work within constraints to make Hazel faster and simpler than the alternatives.
Ben Sadeghipour also goes by NahamSec, and he’s a full-time hacker, pen tester, and content creator. For the last few years, he’s made over a million dollars from bug bounty programs. Ben introduced us to the White Rabbit Neo LLM and showed us how he uses it to help hack into insecure systems. LLMs can assist with asset discovery, sifting through thousands of subdomains to identify targets. It can also help him generate testing data for Insecure Direct Object Reference bugs, as well as code for exploiting security holes like Java’s “zip slip” hack. It was an entertaining but slightly scary talk, as everyone got a peek at some of the tools being used by both the white hats and the black hats.
Kicking off Day 2 in Melbourne was Allen Holub, a software consultant and prolific author. Allen presented with no slides, simply annotating on a shared Miro board as he spoke. He introduced everyone to Larman’s Law, which explains why software companies are inclined to stick to the status quo rather than try new ideas that might benefit them. Allen explained why we need to speak the language of business, which is all about money and risk. Using the example of mob/ensemble programming, he showed how you can build a successful business case for experimenting with it. Big bang adoptions, he warned us, rarely succeed, and it’s impossible to copy and paste process from one org to another.
Next for me was Pat Kua‘s session on technical leadership. Pat’s an Aussie living in Berlin, and his focus was on the importance of technical alignment. Tech leadership, he said, is all about aligning people in a technical context, and you can do it regardless of your job title. Important skills are empathy, coaching, and conflict resolution. The best way to get started is to look for misalignment and neglect, which gives you a chance to own the issue and demonstrate leadership.
Joakim Sundén is one of the creators of the Spotify model for scaling via agile, autonomous teams. Joakim told us the fascinating story of the development of Spotify’s “Discover Weekly” playlist. The challenge was that even with a search engine and millions of songs available to them, many people (“lean back users”) still needed guidance on discovering new music. They had already developed a custom playlist as part of the “Wrapped/Year in Review” feature, so a team set about experimenting with it. Joakim talked about the many different things they tried, like the frequency, length, and cover art. Rolling it out to the entire user base introduced difficult scaling challenges, but the team had enough data to show that the bet was likely to pay off (and it did).
Steve Smith gave a deep dive session on Rust, focusing on the borrow checker. Steve said that many folks get excited about Rust but get stuck when it comes to garbage collection. Rust, he says, forces you to do the things you always said you were doing (but weren’t). This one was way over my head as a Rust newbie, but it’s always great to see someone really get deep into the technical weeds on a particular topic.
Edith Harbaugh is the co-founder of LaunchDarkly, and her focus was on feature flags and how you can use them at every stage of the software development lifecycle. Feature flags can be used to gauge demand for a new feature, or to give early access for trusted beta users. They’re also useful for controlled release if you have a good feedback mechanism to spot when they are problems (like with the Crowdstrike outage), or to allow customers to opt in/out of bleeding edge deployments.
The closing keynote at YOW Melbourne was from Holly Cummins, who works at Red Hat on the Quarkus team. Holly’s talk was all about efficiency, and how it’s killing both the world (in terms of waste and climate change) as well as us (in the form of burnout). Holly shared simple solutions to reducing waste, such as “LightSwitchOps” – her name for “turning things off when you’re not using them.” This can save you a lot of money and tests your resilience as well. She also spoke about the importance of efficiency in our code, and she pointed out that AI – which promises big efficiency gains – has a bias towards verbosity that can lead to code bloat. I loved the part of her talk about the importance of slack for human beings, which means idle time to rest our brains and sleep. Idle brains solve problems!
And then we were off to Brisbane! After the keynote, I went to David Khourshid‘s session on diagrams. David talked about the importance of different diagrams in making complex software more understandable for human beings. He gave a ton of examples and recommended tools, and promised that he wouldn’t traumatise us all with UML. 😂 To make a good diagram, he said, you need to think about the intent (why?), the audience (who?), and the scope (what?). The biggest mistakes people make with diagrams are drawing pointless, unlabelled arrows everywhere, and giving too much or too little detail. If we took nothing else away, he urged us to “LABEL YOUR ARROWS!”
Next I went to the very popular session on skills for the AI age by Michelle “MishManners” Duke. During times of big technological upheaval, she said, people always worry about their jobs. It happened during the Industrial Revolution, and it’s happening now. She said that the skills that will be needed by workers in the future are persuasion and negotiation, decision-making and ethics, adaptability, empathy and EQ, collaboration, creativity, and the ability to learn. The best way to develop career resilience is to use the tools yourself and keep up-to-date with what’s happening in the field.
The second AI talk of Brisbane for me was Thomas Vitale‘s highly entertaining “concerto for Java and AI”. Thomas’s side hobby is musical composition, and he showed us an example of building an application to help soundtrack composers using Spring AI. Along the way, he covered topics like mitigating malicious prompt injection, semantic search, vector stores, and retrieval augmented generation. As his finale, he used his application to help generate music for an action movie set on Mars! Very fun.
My third AI talk of the day was Rod Johnson‘s on building an AI chatbot using Spring. Since he’s the creator of Spring, I was excited to see that he was mostly doing live coding for the whole session. Enterprise developers, he says, have an important role in making AI actually usable. One really useful tip he gave was to make use of Ollama, which allows you to run open source LLMs locally. He also talked about advisors and showed how they can be used to build a “toxicity guard” to keep your application away from topics you don’t want to address.
I needed something to counter all the pro-AI talks, so I was glad to attend Rasmus Lystrøm‘s session on “how to lead AI transformation.” Rasmus said leaders need to ask themselves hard questions, like what are we racing towards and why? There’s a lot of FOMO and FUD around. He walked us through the approaches organisations can take towards AI, from waiting it out (your employees will just go around you and leak your data anyway); building your own (a hopeless endeavour as you can’t possibly keep up with the pace of innovation in the industry); creating an AI center of excellence (which is really just creating a new silo in your org); or signing up for a paid service (possibly low ROI and productivity gains). You can’t just announce a new tool, Rasmus said, you have to re-organise your entire company if you want to adopt AI and move towards full-stack, empowered teams.
Theodora Bock was unable to travel, but she still delivered an entertaining (live!) presentation from her home in the US. She said that games are very good at education, and that learning is often an unintended consequence of play. She explained to us a project she worked on to create a gamified experience to teach astronauts how to use an ultrasound wand for the upcoming Artemis missions. It’s more interactive than reading a manual, and allows you to craft a progression curve as people learn. This was a fascinating topic, and she gave us several demos of the game she worked on. Very cool!
Lu Wilson had one of the most entertaining sessions on the whole agenda, starting with an explanation of how computer interaction models always seem to start with text and then move to a graphical canvas. But how will LLMs move to the canvas? Lu showed us many demos and experiments from their work at tldraw, like drawing a UI and then turning it into a working prototype with only the click of a button. Lu showed us all that we don’t really know yet what AI will look like beyond chat, but there’s a lot of fun stuff to get excited about.
Next were the talks that I track hosted. First up was Rúnar Bjarnason, who hails from Iceland but lives in Boston. Rúnar introduced us to Unison, a “friendly programming language from the future.” He talked about some of the challenges of Microservice architectures, like complexity of orchestration and deployment, added latency, and protocol versioning. Most of Microservice architecture work, he says, is not coding, but rather managing the “meta infrastructure” of builds and deployments. Unison, by contrast, describes complete computation and has dependency resolution baked in via implementation hash. He demoed how to deploy to Unison Cloud, and there was a lot of interest from the audience.
Next was Marty Pitt, the creator of Taxi and Orbital. Marty started by talking about integration, and that it always seems to involve a lot of glue code that ends up tightly coupling data producers and consumers. His new approach is to build systems that connect on demand to solve a problem with no glue code. Taxi does this by capturing semantic metadata, allowing you to know that “this thing is the same as that thing.” Taxi can be embedded into API specs, and once it’s published, you can build a graph to figure out how to solve a problem. TaxiQL allows you to use semantics to query data, and Orbital is the query execution engine. He gave us a demo of how this worked, and again it seemed like something that was useful to a lot of the attendees.
And now for the final city – Sydney! Oscar Nierstrasz is a retired professor in Switzerland who now works for feenk.com. Oscar told us that one of the problems with legacy modernisation is that systems are opaque, and even if you look at the source code or docs, they might not tell you the full story. Instead you need “moldable development,” which is using analysis tools to get the software to “talk to you.” He demoed some of the features of the Glamorous Toolkit, like using the object inspector to expose domain concepts. It’s all about asking questions and doing experiments.
Next was my friend (and fellow Kris) Kris Jenkins, host of the Developer Voices podcast. Kris’s talk was about types, and how they have a lot of information that can help you talk to your team and analyze your code from multiple perspectives. Kris talked specifically about algebraic data types and gave examples of how they help describe data, relationships, and context. Type signatures give clues to implementation, like revealing structure, flagging problems, and giving clarity of scope. And because they are machine readable, it makes the computer just a part of your team. I really loved Kris’s way of explaining things with lots of examples, and I learned a ton from this talk!
I first met Trisha Gee when she presented at YOW many years ago and brought along her new baby. The baby was back with her this year but is now a pre-teen! 😳 Trisha is an IntelliJ IDEA power user, and her talk showed all the tips and tricks she’s learned that help her be more productive and stay in a flow state. Her talk had an interesting overlap to Holly’s keynote, in that she also talked about efficiency and productivity. I was particularly interested to learn about the SPACE Framework, which helps you to get away from vanity metrics. I also appreciated her rant about AI coding companions and whether they actually help you or just increase cognitive load.
In a neat bit of synchronicity, the next talk was from my buddy Damian Brady from Github. Damian started by talking about the evolution of AI-powered coding tools, and how moving from a separate chatbot to having something embedded in the IDE was really the killer app. Damian’s talk touched on many of the same topics as Trisha’s, including the SPACE Framework. He also introduced us to the Good Day Project, which mapped developer sentiment to Github metrics and showed that deep focus time is the #1 thing developers need to feel productive. Damian then showed a lot of examples of how Github Copilot can help developers save time. My favourite example was explaining regular expressions – those always trip me up.
And then, guess what, I saw Holly Cummins present again! One of the speakers had to leave early, so Holly was drafted in to give another presentation. This one was all about optimisation, and getting us to consider the trade-offs in any planned optimisation project. She walked us through a lot of pitfalls and anti patterns, like leaning on intuition and making assumptions, and relying on leading indicators rather than lagging indicators (which are harder to change). She gave practical advice and tools for identifying places for optimisation, and reminded us that performance waste is actually harming the world. (Data centers use 1-2% of the world’s electricity.) So good performance actually makes us good too.)
Johan Janssen is a software architect from the Netherlands, and his talk was a speed run through dozens of Java’s “hidden gems” (aka tools and libraries to make your life easier). He demoed loads of tools to help with testing, implementation, security, and builds. I’m not a Java dev, but if you are, I guarantee there’s something useful for you in this talk.
Unmesh Joshi is a principal architect at Thoughtworks and author of the book Patterns of Distributed Systems. Unmesh explained how knowing patterns makes you an expert, and helps you acknowledge essential complexity while avoiding accidental complexity. He walked us through some common problems of distributed systems, like mapping keys to nodes or ordering requests across replicas. Patterns serve as a guide to achieving “platform sympathy,” which means aligning with a system’s design to gain optimal performance.
And last but not least is my friend Josh Long. Josh is a developer advocate for Spring, and he’s one of the most entertaining presenters I’ve ever seen. He started by introducing us to his dog Peanut, who he described as a “terror,” and then proceeded to build an entire demo around adopting dogs. He went 100mph and had everyone laughing and jotting notes as he raced from topic to topic, including event-sourcing and CQRS. He’s like a virtuoso of live coding, and if you ever get the chance to see him – regardless of whether you’re a programmer or not – I guarantee you’ll have a wonderful time and learn something from him.
Thank you again to Steffen and the YOW! team for inviting me to be a part of the event this year, and to all the speakers and volunteers who helped make the conferences possible. These events are a ton of work, but they’re such a great opportunity for Aussie developers to come together, learn from some of the smartest folks in the world, and build important connections across our industry.
-
Momentous day! Now that all the furniture is in place and we’ve managed to get rid of most of the moving detritus, we were able to send Reginald Roomba out in his first post-renovation mapping run.
-
He’s already completed one Advent of Code challenge this month from the beach. Today he did one going 110kmph down the motorway. (I did miss our exit, but at least he got a pretty good score!)
-
I did not expect my call with a US tax accountant to be so amusing, but what can you do but laugh? “Nobody knows how the next four years are going to play out.” “We just need someone to tweet Elon about it.” 😂🤷♀️
-
“[W]hy do boomer men refuse to slow down?” A really good piece from The Guardian about how difficult it can be for older men to accept that they can’t do everything they used to, or that they want to. Or as I put it to Rodd: “Oh look, someone wrote an entire article about our Dads.”
-
I finished the alpaca beanie for the Snook! This was purely to use up the extra bits I had left over from making his scarf. I casted on 132 stitches and then just made the pattern up as I went. His scalp is pretty sensitive and he doesn’t like hats that grip too tightly, so I only did a minimum amount of ribbing at the bottom. (The alpaca is nice and soft too.) I put in a band of the same slipstitch pattern I used on the scarf, and I did radial decreases at the crown. I just need to weave in the ends and give it a block!
-
I’m making good progress on the alpaca beanie I’m knitting for Rodd to match his scarf. No pattern; I’m just making it up as I go.