“It is wrong Isaac! The title of your book is wrong!”
“What are you talking about Halley? This book will rock the world!”
“That’s just it Isaac. We’re living in an incredible age. And we must respect its shape. We must help those who come after us, build, to craft wonderful things in this age we are given!”
“Oh rubbish! Principia Mathematica? It’s glorious! The great foundations of Mathematical Principles! This will shape our world for hundreds of years.”
“What would Leonardo say Newton? Where is the Art? Where is the dancing?
“It’s in the book! The planets dance gloriously! And this book shows how to make the mathemtics join the dance of the planets! To make the maths do the bend and sway of light!”
“The title doesn’t say that Isaac. The title says only one side of Leonardo’s Age.”
“Who ever heard of a person judging a book by its cover?”
“It will be your legacy Newton! They will say you took Leonardo’s world and bent it to one side! They will blame you for taking the dancing and art out of our age!”
“Anyone who truly reads it will understand! They will see the Maths join the dance of the planets! They will see the Maths do the bend and sway of light like a butterfly.”
(A painting of Newton in 1805 around 1805).
A statue of Isaac Newton outside the British Library. Notice the cross-marks in his shoulders and head matching Leonardo’s Vetruvian Man.
[This is written for my daughter Trinity, and my mother Katrina]
“They don’t like it! They don’t like the dancing!”
“Calm down Galileo. Focus on what is important.”
“I can’t be silent Giovanni. They won’t make me!”
“Galileo, come back to earth. Now tell me. Are your bills paid?”
“Mostly. I have a teaching job from the University where I teach the sons of the Councillors and merchants how to calculate how far a projectile will fly from a catapult. Good for leading military jobs.”
“And your family Galileo?”
“Oh, not so great. I can’t afford the dowry for my daughter. She will not marry well. ”
“Have you got a plan for that Galileo?”
“Oh I don’t know. I suppose I’ll have to put her into a convent.”
“You can do better than that Galileo.”
“I know, but it’s the gravity of the situation Giovanni. Gravity, you see.”
“I’m afraid I’ve missed you.”
“When we shoot a projectile from a catapult, and it flies back to earth, it is the same thing that makes the moon appear in the night sky. Gravity!”
“What has that got to do with anything Galileo?”
“The dance of the moons Giovanni.”
“The moons? There is only one moon!”
“Oh rubbish! Even the Ancient Romans could see that Mars had two moons. And I can see the moons of Jupiter as well!”
“What have moons of Jupiter got to do with anything?
“It is the dance Giovanni! It is an orbital dance. The main dancer is the sun. Then Mars and Jupiter and our Earth dance around the sun, then the moons dance around the planets. A glorious orbital dance!”
“Shhh! Quiet Galileo. You can’t say such things! You’ll get into more trouble!”
“Oh pooh! Whoever heard of a church disapproving of dancing!”
“It’s a new age Giovanni! Just like Leonardo’s Vetruvian man. Of art and science going hand in hand!”
“I beg you Galileo. Play the game. Pay the bills. Teach the students. Get your daughter married off.”
“They want us not to freely reason Giovanni. They want to control what we say!”
“They don’t care what you think and say Galileo, as long as you don’t undermine them.”
“We can measure it Giovanni. We can see it in the telescopes. But they want us to say the sun and planets dance around the Earth!”
It is surreal being in a city where cars have been minimised. The streets are empty of traffic but for buses, and pedestrians don’t own the roads, but walk with leisure. Where there is traffic, there is a kind of even bargaining-power between pedestrians and cars for road access.
Walking out my door and see the top of the London Eye I am reminded I’m in a place that is not quite home. The chill dry 10° air adds to the sense of wonder.
Across from my accommodation is a children’s play equipment that feels a level up from anything the Canada Bay Council ever provided.
Across from my accommodation is a park which I walk into without a care in the world. There is a tent with smoke coming out of it that appears to sell food. I asked them what’s on offer and they say jerk chicken. I recall last time in London when I had to get them to explain what jerk chicken was.
As I wait for my order, I look around the daffodils in the park and listen to the radio on in the background. On the radio the journalist is interviewing a local politician about vacant land tax policy. The journalist appears to grill the politician for inconsistencies in a way that I’m not used to in Australia.
Picking up my order there is a wonderful smell of barbecue sauce. I realise there’s enough here for both breakfast and lunch. I ponder sitting with the tulips and the daffodils but decide to keep going.
Walking through the tunnels to get to the underground at Waterloo station at 8.30 brings in a strong sense of the familiar and different. There is a very strong sense of being at Wynyard commuter hour.
Leicester Square station feels likeSt James station, but expanded out times 10.
Coming out of Leicester Square station I hit the theatre District and I wonder of white brick 5-story buildings.
I pause for a moment and have breakfast chicken with William Shakespeare. His messages “there is no darkness but ignorance“. Whilst I appreciate the self-congratulatory nature of the message, I note that the statue was put up in 1874, the full height of British Empire. As I said, William argues with me, and says that he is ambivalent to the nature of empire and wants to celebrate the the playful flexibility of language and its tooling for many contexts. Then Shakespeare tells me that the meaning is the opposite. As Feste (the fool) in Twelfth Night mocks the pompousness of Malvolio (and perhaps the Empire Minded) for their shaded knowledge.
I walked past a vast TWG tea shop. A symbolic reminder of when ships sailed the world carrying tea as a primary source of international trade.
When I walk through Piccadilly Circus, I am entranced by the white buildings. Here I have a video call with family evening with background picturesque.
A tea shop offer desserts that seem a level up from what I’m used to.
I walked past a book shop offering gift subscriptions again a service I’ve never heard of but seems wonderful.
I pause outside another tea shop waiting for it to open, and snack on some gloriously smoky barbecue chicken.
The coming of the hour is marked by an exuberant chiming clock, It’s mechanics celebrating its Victorian design. Appreciating the attention, the clock goes on to play another four bars of a different tune.
More accent delights, clipped tongue, glottal stops, consonant clusters, and many more.
Walking back to the station I find two delights one a Japanese desert place offering a strawberry cream cake.
Second I find what appears to be a coffee shop actually offering Turkish Salep (warm drink).
At Kings Cross St Pancras station I see a sign on the escalators that says “please stand to the right.” Mystery partially solved but missing the reasoning.
Another underground to Kings Cross Station.
I pause at Euston Road to say hello to the Isaac Newton statue outside the British Library. I have some thoughts about this Newton Statue that I’ll put in another post. (The artistic message of this statue is a punch in the face.)
The train to Crewkerne leaves Waterloo station and pauses at Clapham Junction. That feels familiar.
The train signs strongly indicate a preference for quietness, but are ambivalent about eating and subtle on litter.
Dad greets us with his dog Trixie. Later we go for a walk around the village, and squirrels dash up trees.
William Gibson (coming from the USA) described London as a kind of mirror world, where things were almost the same as home, but somehow a little bit different. Others have described London as a city, built on a city, built on a city.
Looking at buildings and structures, London shares the same links to the 1800s as Sydney, but the echos of the 1800s are stronger here. There are fainter echos of the 1700s and further back, and also strong echos of post WWII reconstruction London.
The plane from Dubai has had a sprinkling of accents to what I guess are London and Birmingham. The airport is filled with lilts and bleats and grunts. In the back of my mind I see accents moving and changing over time, and ponder a linguists ability to break them down into rhotic vectors.
Gatwick airport has little on its own to distinguish it as being uniquely English, I kind of universal international franchise of airport. Many of the brands and shops look the same as Sydney, WH Smith, Duty Free, (although Starbucks survives.) I notice that even a chip packet dispensing machine is disappointingly full of Doritos. The one thing that stood out was the service desk telephones gave off a high-pitched purr that sounds like a 1980s UK cop show.
Coming from Gatwick airport I change at Clapham junction. The gap between the level of the platform and the next train elevation is phenomenal. I feel like my massive suitcase will drag me into a massive black chasm. I will be seen disappearing to the sound of a Wilhelm scream.
The Southern Railway is aiming to Intercity travel in the same way that Sydney trains are, with fewer compromises. Still single level, some seats with tables. Some seats with USB or even 240 charging for laptops. The train information display screens feel a level above as well – with information about reasons for delay like trespassers on the track, and which station the train we’re waiting for is at.
There is a heightened sense of social obligation here, in a way that Australians are generous/ambivalent about. When celebrating a free seat next to us with a 20 year old cricketer on the plane, he suddenly looked horrified and said “Oh sorry, I didn’t mean to imply…”. When on the train station and the schedule changed for the third time, a gusty sigh escaped my mouth, and the eyes of several people around were on me briefly.
Waterloo station has echos of Central station, with more platforms and levels in a smaller space. The station has its own logo (perhaps a simplified coat of arms). Tapping a card with UK pounds makes ticking a breeze.
People on the escalator stand to the right instead of the left for a reason I haven’t figured out.
I post for a moment at a pedestrian crossing waiting for my turn and then realised I missed it because there was no alert sound.
I crossed to a park and wonder what the flowers are and realise I’m looking at daffodils in the evening light.
My AirBnB room in shared accomodation has a cylindrical lock on the back (unlike the square Lockwood style locks of home).
The shared shower has a little plastic box (like Japan) with dials and a button to push to start the water.
[This is written for my daughter Trinity, and my mother Katrina. I’m painting a background picture of my journey.]
“A new age is coming Francesco, ” he said as he washed his paint brush.
“How so Leonardo?” Francesco looked nonplussed.
“Do you remember growing up, and the greatest buildings in the town were the Roman ruins? We were surrounded by an age that was past.”
“So what?”
“Now the merchants are travelling further, are having more fortune, and are building great buildings, buildings greater than the Romans.”
“Hmm, ok.”
“Oooh, ow my wrist!” the third burst out.
“Do be quiet Gian!” Leonardo exclaimed. “This new era is coming Francesco. A new age of measuring and making wonderful things“ Leonardo continued. “Did you see the Giotto painting from Florence?”
“Well yes. But I don’t get what you see in it.”
“Normally when we paint, we paint with gusto and passion, and slam it out on the page. It seems ok, but looking at this new painting it shows we can do better.”
“I don’t get it.” “Giotto measured, and then painted. The perspective of the road and buildings receded out into the distance in a way that matches what you see.”
“Well that’s just a new painting technique.”
“Oooh, owww my wrists!” Gian lamented.
Leonardo continued, ignoring the outburst.
“This new age, this age of building things, it will be shaped by measurement on one hand and craftsmanship on the other. On one hand human reason, and the other human art.”
“Hmmm,” reflected Francesco.
“I wanted to communicate it to the world Francesco.”
“Well planning dams and civic works for the princes ain’t gonna do it.“
“Oh, that’s just the day job Franceco. Something to pay the bills.”
“Look, think about the Cardinals, Leonardo. They don’t take too kindly to shouting a message of human reason. I’m not talking about God of course, he’s fine with us using our heads. You need something more subtle.”
“I know what you mean Francesco. I have this idea of a work to capture this message, to send it to the world.”
“It’s a big ask Leonardo, to get a work of art to send that message.”
“My idea is a couple, ready to dance, walking down to the ballroom. One is creativity, the other is human reason. Together they will make a wonderful place.”
“Nope! Doesn’t work. Too complicated. You need something much simpler.”
“Oh bother! Gian, how are those accounts going?”
“Mr Leonardo sir, my wrists hurt from all this copying of the canal drawings.”
“Well work with your other hand Gian.”
“Well it’s difficult sir. I find that I can draw with my left hand, but when I do the accounts, that only works with my right hand.”
“Say that again Gian.”
“Sir, I can draw with my left hand, but I have to do the books with my right hand.”
A glint came into Leonardo’s eye.
“Gian, I have a new stretch for you, something that will benefit all.”
“What is it?
“Stand up, with your feet wide apart. Now stretch out your arms horizontally.”
Leonardo touched the thumb to the forefinger of the other hand, and repeated it with his remaining thumb and forefinger to make a rectangle, and looked through it.
“Do you see that Francesco?”
Francesco made a rectangle with his fingers, framing the image, and looked for a moment.
“Hmmm. Yes, yes I do Leonardo.”
“But you must be careful Leonardo. Sometime soon, someone is gong to take this message of human agency and reason, and then get in a lot of trouble with the church. ”
There is a kind of magic in hopping on a plane in what feels like the middle of the night, to go to a place where you’re not required to do anything but be.
As we fly across the globe, the sunrise chases us, but never quite catches us – caught the land of the night for as long as we can fly.
The darkness of the cabin, the hum of air rushing past, people sleeping or watching screens. There is the occasional click of a seat strap, people softly walking to the bathroom. On one screen is Forrest Gump, another shows a Disney animated film.
There is a strangeness in escaping to the dream behind the screen, when one is already in a waking dream, travelling to a world that is a dream.
Nilesh Makwana – Bridging the Digital Divide: A Path to Inclusive Innovation and Prosperity
Nilesh threw down the gauntlet, daring the room to confront their assumptions about inclusivity. He challenged them to reimagine their teams, their client targets, and their customer bases in a way that pushed against the very grain of the room’s prevailing mindset. Drawing on his own deep commitment to inclusivity, he shared powerful examples from his work with First Nations Communities, Local Councils, and people with disabilities, showcasing how he’d woven these principles into the very fabric of his teams.
This talk explored the challenges of legacy code modernisation and the potential of generative AI (Gen AI) to revolutionise the process. Legacy systems are complex, poorly documented, and resistant to change. Gen AI offers a new approach that can understand unstructured data, reverse engineer code, and generate documentation. This can empower developers to explore and modify legacy systems much faster and with fewer errors. The potential benefits include faster bug fixing, increased developer productivity, and a deeper understanding of complex codebases.
Thomas Vitale – Concerto for Java and AI – Building Production-Ready LLM Applications
This talk dived into building real-world applications with generative AI. It flipped the script on traditional development, starting with user experience. Imagine a composer’s assistant that understands emotions and suggests music based on movie scenes, director notes, and even free-form transcripts. This talk used real code examples to show how to build AI pipelines that spark creativity, not replace it. The audience learnt about vector search, semantic understanding, and how to leverage AI as a tool to empower human artistry. Added to that was Thomas’ live music performance that is weaved into the final output.
Marty Pitt – Adaptive Architectures – Building API Layers that Build Themselves
Tired of brittle, point-to-point integrations that break with every producer update? Taxi and Orbital offer a revolutionary approach, moving beyond traditional glue code and endless mapping. By focusing on semantics—the meaning of data—rather than just structure, Taxi provides a powerful language to define relationships between disparate systems. Combined with Orbital, an open-source UI, this dynamic duo empowers developers to connect data sources on demand, adapt seamlessly to change, and query information by its meaning, not just field names. Imagine a world where integration logic is generated automatically, where schema changes are handled gracefully, and where you can ask for exactly the data you need, regardless of its underlying structure. This is the promise of Taxi and Orbital: a world where integration is no longer a bottleneck, but a powerful enabler of innovation.
Joakim Sundén – How Autonomy Saved One of Spotify’s Most Loved Features From Being Killed
Joakim Sunden’s story reveals how Spotify’s autonomous squads saved its beloved Discovery Weekly feature from the chopping block. Faced with the challenge of helping users discover new music beyond simple search, Spotify experimented with various approaches, from human curation to complex algorithms. A small team, empowered by Spotify’s unique structure, resurrected a discarded “Play it Forward” hackathon project, transforming it into the personalised mixtape we know today. This wasn’t a top-down mandate, but a bottom-up revolution fuelled by trust, rapid experimentation, and a culture that embraced failure as a learning opportunity. Despite initial skepticism from leadership and scaling hurdles, Discover Weekly exploded in popularity, proving that true innovation thrives in environments where teams are given the freedom to explore, experiment, and ultimately, surprise the world.
Steve Smith – Understanding Rust; or how I learned to stop worrying and love the borrow-checker
Steve Smith’s talk dives into the world of Rust, a systems programming language that tackles memory safety and concurrency head-on. He demystifies Rust’s infamous “borrow checker,” explaining how it prevents race conditions by enforcing strict ownership and borrowing rules. From managing resources with Drop and exploring stack vs. heap allocation with Box, to navigating the complexities of lifetimes, Rc, Arc, and the Send/Sync traits for thread safety, Smith illuminates Rust’s powerful features. He even touches on the current state of asynchronous programming in Rust, advising caution for production use. This talk was an engaging tour through Rust’s unique approach to building robust and performant software.
Allen Holub – Getting Buy-In: Overcoming Larman’s Law
In an illustration of organisational transformation, a group of engineers defied the odds and overcame the stifling status quo. Recognising the limitations of traditional methods, they championed experimentation and a culture of “ask for forgiveness, not permission.” By focusing on clear business cases and demonstrably reducing risk through techniques like mobbing (multiple programmers working together) and queue management, they chipped away at ingrained resistance. This bottom-up approach, driven by a passion for efficiency and a willingness to learn from mistakes, ultimately led to a more productive and collaborative work environment.
Day 2 – Fri, Dec 13th 2024
Holly Cummins – The Efficiency Paradox and How to Save Yourself and the World
Looking at the technical history of the steam engines of the 1700s to modern software, the pursuit of minimising waste has been a central theme. Holly’s talk explored how everything from pre-cloud provisioning nightmares to e-waste and slow code contributed to a global inefficiency crisis. Solutions emerged, from LightSwitchOps for server management to optimising code and embracing build-time initialisation. Looking at the Vroom Model, Holly declared that faster code saves the world, linking execution time directly to energy consumption. But the narrative took a turn, questioning the very definition of efficiency. Jevons Paradox and queuing theory revealed that sometimes, slack—in systems and in human lives—is not waste, but a crucial component for resilience, productivity, and even happiness. The talk concluded with a powerful message: by examining our assumptions, working less, and embracing idleness, we can paradoxically achieve more.
Holly Cummins – Tradeoffs, Bad Science, and Polar Bears – The World of Java Optimisation
In a fascinating talk about performance optimisation, we explored the past pitfalls and paradoxes that have plagued this field. We learned that blindly chasing speed can backfire, as Akamai discovered with a 100ms delay leading to a 7% drop in conversation rates. Even high-frequency trading firms lose millions due to platform delays. The key takeaway? We must optimise for the right thing, at the right time. Throughput, response time, latency, and resource utilisation are all crucial aspects to consider. Interestingly, Google once used station wagons to deliver data tapes for maximum throughput, highlighting the trade-offs involved. Furthermore, requirements change. An API optimised for desktop use might crumble under the load of mobile users. The talk also emphasised the importance of measurement over intuition. We saw how the McNamara Fallacy can mislead us to focus on lagging indicators that are easy to measure but hard to improve, instead of leading indicators that might be harder to grasp but offer more control. The concept of “micro-optimisation theatre” was another fascinating point. Spending hours tweaking code that has minimal impact is a waste of time. Finally, the talk addressed the allure of the “shiny stuff” like virtual threads, which may not be helpful for all situations. The core message? Optimise with data-driven insights, not fads.
Lu Wilson – Beyond Chat: Bringing Models to The Canvas
In a rapid-pace tour of the past and future of human-computer interaction, Lu talked about how their team has explored how LLM and generative AI interfaces might move beyond text. Lu started by revisiting the limitations of early computer interactions and the paradigm shift brought about by the Macintosh’s graphical interface. Next, they highlighted the text-based limitations of current AI tools like ChatGPT and proposed a “canvas” approach where users and AI collaborate on a visual workspace. This canvas could be used for many purposes, from generating websites with drawings to creating flowcharts and data visualisations. Lu’s team of researchers even experimented with using a programming language under the hood to instruct the AI and achieved some impressive results. They believe this canvas approach holds immense potential for the future, allowing us to interact with AI in richer and more intuitive ways.
Rod Johnson – Practical Gen AI: Building a Chatbot using Spring AI
In this talk Rod explored how Spring, a mature framework, is being adapted for the emerging world of AI. Spring is well adapted to this new challenge due to its structure and principles. A strong community and core team who’ve kept the framework relevant for over 20 years. Spring’s core principles of dependency injection, portable service abstractions, and aspect-oriented programming (AOP) are proving valuable for building AI applications. Rod showed how Spring integrates with tools like OpenAI and Ollama, allowing developers to leverage powerful AI models. While large language models (LLMs) like GPT-4 offer impressive capabilities, their black box nature creates challenges. The solution in this talk, was that Spring’s framework helps break down interactions into smaller, more manageable pieces. Rod also explored how to integrate factual information retrieval using vector databases like Neo4J to ground chatbots in reality. Finally, the talk showcased how Spring’s features like topic guards and advisor chains can be used to create robust and informative chat experiences. This approach demonstrates the continued relevance of Spring in the ever-evolving world of AI.
Rasmus Lystrøm – How to Lead your Organisation’s AI-transformation: Strategies, Skills, and Culture
Rasmus deconstructed the hype surrounding enterprise AI adoption, arguing that many organisations fall into predictable traps. He then debunked common strategies like building internal “ChatGPT” replicas or creating isolated AI Centers of Excellence, highlighting their inefficiency and tendency to create more problems than they solve. The core message emphasised that simply buying AI tools doesn’t equal transformation; true value comes from organisational change. Rasmus advocated for empowering full-stack teams, granting them ownership and autonomy, and focusing on business outcomes rather than chasing the latest tech. He then criticised the tendency to optimise prematurely and the dilution of solutions by traditional IT processes. Ultimately, Rasmus urged a shift towards building small, functional AI solutions, getting them into production quickly, and iteratively expanding them—a path that prioritises practical application over grand, often failing, centralised projects. Rasmus concluded by questioning the current direction of AI development, suggesting it should focus more on automating menial tasks rather than focusing on creative outputs, which are more interesting to AI developers.
Ben, a white-hat researcher, driven by insatiable curiosity, has amassed a $1M bounty haul since 2022, discovering vulnerabilities for giants like Airbnb, Zoom, and Apple. Leveraging the power of AI, he effortlessly navigated the digital landscape, bypassing traditional research methods like Stack Overflow to use LLMs like Claude and ChatGPT to generate malicious payloads and categorise vast troves of data, such as NASA’s 20,000 subdomains. From uncovering exposed GitLab repositories and exploiting insecure IIS Direct Object References to employing techniques like Zip Slip and SSRF attacks (even accessing AWS metadata and exploring PDF renderers at major companies), Ben demonstrated the immense potential of AI in both offense and defense, effectively using it as a “second brain” to uncover and exploit weaknesses that would have been impossible to find alone.
Dave answers the question “What are the durable ideas – that if we use in our work – are going to give us a chance of success?”
Dave has wonderful illustrations, the Space Station, engineering rockets, the development of cars, and it is clear he loves planes. We see his technocratic passion for the industrial revolution and how this impacts our lives as software engineers.
Timothy McNamara – When to Choose Rust
@TimClicks @TimClicks@mastodon.nz
Tim loves rust and compares common errors in C, Go, Java, Javascript and shows how these errors would be covered off the Rust compiler. His live-coding is entertaining and shouting “Yahoo” in a NZ accent at the output was priceless. His advice on how to win people of its value in your workplace was invaluable.
Lily Mara – A Kafkaesque series of events
Lily digs into the detail of solving concurrency problems whilst working around Kafka’s partition limit. Good diagnosis of a production issue and how they diagnosed and fixed it.
Matt Ranney – Migrations – The hardest actual problem in computer science
Matt gives a very grounded view of doing migrations in large Silicon valley company. His insights included “If you use the phrase ‘source of truth’ then I know you’re not committed to an ‘always on’ migration.”
Michelle Gleeson – Sensible Defaults for Tech Management
You need sensible defaults for management to defend against decisions of inexperienced managers and to provide equitable decision making.
Fred George – Sabotaging a Transformation
So much wonderful wisdom and experience from Fred. You can tell he has been around the block many times trying to change organisations.
“To be a change agent – you have to be willing to create a stink. Escalate and escalate. Don’t be afraid to get a consultant to do this, when they say a crazy thing, you look reasonable.”
Aino Vonge Corry – What We (Should Have) Learned from the Lord of the Rings
“Gandalf was a manager who gave a high degree of autonomy. He will leave you to figure it out, and then turn up the last minute to deal with the dragon.”
Astrid Atkinson – Building The Self-Driving Grid
“Climate change is not something we have already failed at, or a single tipping point. every single action to help with decarbonisation matters – the opportunity to have an impact is full of meaning and opportunity. “
“we are applying the methods used to solve large-scale computing problems, like load balancing, to the challenges of the electricity grid”
“solar generation lowers apparent demand – creating a ‘duck curve’ (an emu curve in Australia because there is bigger use of solar)”
“When you can light things on fire – you have a different pressure on your software engineering. Fundamentally this is about trust. “
“I want a toaster where it could burn the weather into my toast…”
“We need to have a street or town operate as a micro-grid. The goal is not to have it completely isolated, but to be able to ride out small disturbances in connectivity – same as what we do in computing. “
Sara Achour – Programming Systems for Analog Hardware
Sara Achour at #YOW22 leaves the room with their mouths open as she describes a compiler that can take an equation describing a dynamical system and output a hardware description for *non-digital logic* but still get your answer.
Simon Brown – C4 Models as Code
Simon Brown demonstrates a system for individual teams maintaining a generated diagram of their system, and then loading that into an organisation view of all the integrated systems.
James Lewis – Software Architecture, Team Topologies and Complexity Science
Whenever you see hierarchies – you expect sublinear scaling (y less than x) – whether physical or informational – this is due to the shape of the network itself.
Alison Rosewarne & Stewart Gleadow – Fighting Software Entropy
Insightful look at applying principles from physics in reversing entropy in product IT systems.
Lars Klint – Turning Dreaming into Doing – A Lifemanual for Nerds
@larsklint Are you truly happy? What are your goals? Be intentional. Do it. (and don’t watch Netflix).
The Unicorn Project and the Five Ideals – Gene Kim
Gene brings lots of energy to his talk, and I’m a huge Gene Kim fan, so I had my books ready for him to sign. Gene paints a great vision from data showing the correlation between high performing companies and adoption of devops practices.
Evolving Chaos Engineering – Casey Rosenthal
Can you imagine what it would take to convince your boss to let you deliberately make things break in your production environment? Casey is the kind of guy who could make that argument. Casey is rapid-paced, will lots of gentle subtle humour, and some fun historical stories.
3 Insights From 4 Years At Spotify – Jason Yip
Everyone has had someone in their company want to ‘do’ the Spotify Model. What does it really look like? Jason gives a down-to-earth, human approach to solving organisation problems without the hype.
Multi-cloud, A Large Enterprise Perspective – Scott Shaw
Scott links together classic patterns we’ve seen in the software industry, that we’ve seen over and again over the last 30 years, and shows how they’re happening again with cloud vendors.
Interaction Protocols: It’s All About Good Manners – Martin Thompson
How is the Court of Versailles, Francis Bacon and the ITEF related? Come to this talk and find out. Martin rants wonderfully about the problems with the BSD sockets API and links it to a different way of thinking about problems.
Growing Your Personal Design Heuristics – Rebecca Wirfs-Brock
Can you distill the way other people think in concepts? Can you capture and repeat your own abstraction process? Rebecca brings decades of experience to the meta-problem of your own problem solving process.
The Reactive Revolution – Josh Long
It’s the end of the day and Josh’s energy hits you like a bolt of lightning. Every developer has seen Java. Josh does a demo that will knock your socks off. This was so much fun.
Scale, Micro-services and Flow – James Lewis
There is this inspiring theme that builds up through this day, starting with Gene Kim, about organisations living and dying as organisms. James kicks off with a great t-shirt reference, and links quickly to fractal networks. James is great fun.
Day 2
The Morning Talk Walkthrough
Aino and Michele – succeed in making the talks appealing, but also bringing in a dry-humour of their own. Make sure you ask Aino about the OODP talk she did in the past. (Hint – it’s not about Design Patterns). Michele is great to chat to during the day, and has put lots of thought into making the conference a great experience.
Rise of the Breaches – Troy Hunt
Troy Hunt wrote haveibeenpwned.com and has testified before the US Congress on Security matters. Security is both deeply serious, and knee-slappingly hilarious and Troy piles it on.
Quantum Computing and You – Matthew Keesan
Imagine the Computing World in the 1930s – before Von Neuman…
What are all the element of a good YOW talk? Energy. Jokes. A vision of a better future. Real world applications and shooting down myths. Feeling empowered and inspired to do it yourself. This talk ticks all the boxes. Probably the best non-keynote talk.
Food
In the 90s I imagined that IT people ate burgers and drank soft-drink. 20 years later we have a different kind of metabolism, and the conference caters to that. The Sydney food was artisanal and filling.
Automating Operations with Machine Learning – Matt Callanan
Pure, real-world, on the ground, battle-hardened solutions. Matt is neck-deep in this stuff and you can throw him any question.
Ready for Rust – Erik Dörnenburg
If you haven’t yet wrapped your head around the key concepts of Rust and its benefits – Erik packages it up neatly in 50 minutes, with some great demos. Erik brings the passion of one who enjoys programming, talks about industry applications, and drops some sick burns.
93 Easy Steps to DevOpsing Your Monolith – Cat Swetel
The room packed out for Cat with good reason. Cat delivers irony and sarcasm like few you’ve ever seen. Be ready for your sacred cows to be roasted, because Cat is going to tell you how it really is.
Designing Distributed Systems with TLA+ – Hillel Wayne
What does the complete state space of the interactions with your software system look like? Can you represent that as a 3D wireframe? What language would you use to describe that? People love computer languages, but this is not what you think.
How I learned to stop worrying and love Misery – Gil Tene
Gil Tene wrote the best JVM. What happened when he went to measure it with customers? Here are the principles he extracted from his experiences. A year ago I wouldn’t have needed this talk. This past 12 months I’ve been using this all year.
These are a set of arguments suggesting that Object Oriented
Programming has 12 attributes, the benefits and deficiencies of each, and that
Functional Programming addresses each of those.
Where does this come from?
This is from a page on the internet for a site that has now been
taken offline, but is preserved on The Wayback Machine
It is provocative and argumentative, seeking to make a point
by exhaustive evidence and reasoning. The original title was “Object Oriented
Programming is an Expensive Disaster that Must End”.
Why post this?
I studied Eiffel at University in the mid 90s,
and read Bertrand Meyer’s books on Object Oriented Programming and was fascinated
by the promise of Object Oriented Programming and what it offered.
In 2009 I became fascinated by the promise of functional
programming, and how it offered an alternative to OOP which was the dominant
paradigm at the time.
Most arguments in favour of Functional
Programming start with “the future is multi-core, and functional programming
has a better answer than OOP”. This author starts with: “Here are the 12
attributes of functional programming, why they’re good, why they’re bad, and
why functional programming has a better answer.”
I don’t necessarily endorse the arguments of the
author in their entirety, but am fascinated by the reasoning, and wanted to
capture it and share it for further discussion.
I wanted to summarise the arguments in a table,
because lots of people don’t appreciate reading large slabs of text.
I felt that the strength of the arguments was lost
in the provocative style of the writer and felt the same arguments could be more
convincingly presented.
Even Bertrand Meyer, one of the chief academic
proponents of Object Oriented Programming, finds himself arguing against the excesses
of OOP, making the arguments that match the benefits of functional programming
Is it pragmatic?
This is not answering the question “How do I make my
program/lifestyle better?” It answers the question “What are the reasons you
would consider Functional Programming, looking at the world from an Object Oriented
Programming lens?”
Object Oriented Programming Characteristic
OOP Benefit
OOP Limitation
Analogue from Functional Programming (or alternative to OOP)
1. Encapsulation
Protection from unexpected changes to state.
Solving the state management problem by hiding it.
Use closures.
Design your program not to mutate state.
Design your program around transforming the state.
2. Polymorphism
We want flexibility in the way we dispatch execution.
Flexible dispatch based on the signature of a method, and the signature is almost always evaluated in terms of the data-type of the parameters being handed into the method
Multi-methods. [In Clojure. Typeclasses in Haskell are somewhat comparable.]
3. Inheritance
Treating similar but slightly different things the same way externally.
Hierarchies of data types.
Inheritance mixes together several things, ‘typeness’ [sic], interface and implementation.
“Favour composition over inheritance” (Josh Bloch)
Define data-type hierarchy independently of functions and independently of any state.
4. Abstraction
Use abstraction to decompose complex systems into smaller components.
Denotes the essential characteristics of an object that distinguish it from all other kinds of object and thus provide crisply defined conceptual boundaries. Dependency injection is an example of depending on abstractions.
Contract enforcement.
Data hiding.
Abstraction is not necessarily a subject within OOP.
Bertrand Myer admits that OOP abstractions lead to factories and builders, the complexity of which lead to Inversion of Control Containers, which lead to greater use of composition.
The need for design patterns implies a deficiency of abstraction in the language itself.
Solve your problem in terms of DSLs. Macro-systems can be a tool for abstraction.
5. Code Re-use
Objects created for Object Oriented Programs can be reused in other programs.
Many types, one interface promotes code re-use.
Inheritance undermines code-reuse. Code reuse killed off by the amount of ceremony required to get anything done. (Factory patterns, dependency injection, getters and setters, annotations, verbose exception handling, etc).
All the specificity of interfaces/classes kills your code re-use.
To achieve code re-use, you need to write a large number of small classes.
The rigidity of the Open-Closed principle tends to limit code re-use.
Protocols. [In Clojure. Traits in Scala or Typeclasses in Haskell are somewhat comparable.]
Meta programming.
Closures.
Libraries.
Flexible functions that can work on many data-types.
6. Design Benefits
OOP forces planning which leads to better designs with fewer flaws.
For large programs, OOP programs are easier to program than non-OOP ones.
‘Forced Planning’ is an appeal to Waterfall development method. Risky because you gain benefits at the end of a long process. Only at the end of the software delivery can your users give feedback about whether your software helps them.
Organisations choose adaptive not predictive development methods like Agile.
7. Software Maintenance
Whilst more work went into designing an OOP program, less work is required to maintain it over time compared to a non-OOP program.
Maintainability depends on understandability, and OOP is a graph of mutating state that becomes less understandable as it grows.
OOP tends to be bloated, containing lots of boilerplate code.
Code written in a different style would be smaller and easier to think about.
8. Single responsibility principle
A class should have only one reason to change [structure of class].
Objects can be clearly reasoned about because they have focus.
The reasons a class can change are driven by Conways Law (ie your program is shaped by the information flows in your organisation.)
Single responsibility principle, gives you more objects, and gives you the responsibility for setting up all the dependent objects for your object, implying the need for IOC containers.
You should have functions that operate on a data structure.
9. Open/closed principle
Enables low coupling, high cohesion.
Tends towards having too many small classes.
Conflates three issues that should be separate: 1) establishing a data-type hierarchy 2) enforcing a contract 3) mutating state
Rigidity of this principle limits code re-use.
Use protocols. [In Clojure. Traits in Scala or Typeclasses in Haskell are somewhat comparable.]
10. Interface segregation principle
Many client-specific interfaces are better than one general-purpose interface.
No client should be forced to depend on methods it does not use.
Keeps a system decoupled, and so easier to refactor, change and deploy.
Useful ‘contract’ to describe the intent of the software.
Data structures are spread out across multiple classes making the intent of the software harder to understand.
Have a well-defined data-structure that many functions can operate on.
11. Dependency inversion principle
Helps to assemble components from different projects into a cohesive application. Provides a common pattern for wiring components together in a decoupled way.
Solves the problem of instantiating the objects that an object depends upon.
Solves a problem that only exists in Object Oriented Programming. IOC is a workaround for OOP.
Not required because the problem doesn’t exist outside OOP.
12. Static type checking
Enable the efficient and automatic proof of assertions about programs.
Enable partial specification of your programs.
OOP languages lose the benefits of the most advanced type-system features available in functional languages.
Use a functional language to get the benefits of the most advanced type-system features.
There are exciting things happening with the Scala cats libraries and scalaz, inspired from Haskell that this author doesn’t address.