Here you'll find a history of Trisha's major talks and workshops.
- Life After Java 8
- Fully Reactive: Spring, Kotlin, and JavaFX Playing Together
- TL;DR: Reading Code Is Harder Than Writing It
- Boost Your Productivity With IntelliJ IDEA
- Career Advice for Architects
- Code Review Best Practices
- Continuous Delivery With TeamCity
- Is boilerplate code really so bad?
- Real World Java 9
- Becoming a Fully Buzzword Compatible Developer
- Refactoring to Java 8
- Java 8 in Anger
- Career Advice for Programmers
- Level Up Your Automated Tests
- Staying Ahead of the Curve
- HTML5, AngularJS, Groovy, Java and MongoDB all together - what could possibly go wrong?
- BoF: Diversity and Inclusion - Are We There Yet?
- BoF: I'd like to speak at conferences, now what?
- BoF/Tutorial: Public Speaking Clinic
Life Beyond Java 8
Wasn’t Java 8 a fantastic update to the language? Lambdas and streams were a huge change and have helped to improve Java developers’ productivity and introduce some functional ideas to the language. Then came Java 9, and although the module system is really interesting for certain types of applications, the lack of exciting language features and uncertainty around some of the structural changes left many applications taking a wait-and-see approach. But now Java has a new version every six months, and by now Java 14 is here. We’re all still on Java 8, wondering whether we should move to a later version, which one to choose, and how painful it might be to upgrade. In this session we’ll look at: - Which version to upgrade to
- Why upgrade from Java 8, including language features from Java 9-14
- What sorts of issues might we run into if we do choose to upgrade
- Mix of slides and live demo
Fully Reactive: Spring, Kotlin, and JavaFX Playing Together
Spring Framework 5 brought full reactive support to developers everywhere. What better way to demo reactive programming than to actually build something live? Trisha will live code an end-to-end application using Spring Framework 5, Spring Boot 2.2, Reactor, RSocket, Kotlin, JavaFX, and maybe even some MongoDB, all built using IntelliJ IDEA. During this session, we’ll see how these different components can work together really easily using Spring. What could possibly go wrong?
- Live demo
- This was also broken into a series of short (5-10 minute) video tutorials with blog posts for the IntelliJ IDEA blog
- This can be run as a tutorial/workshop instead of a talk
- I would like to update this with an Angular / web front end instead of JavaFX
- I’m open to updating this as the technologies change
- 2019: SpringOne Platform
- 2018: Oracle Code One (with Josh Long)
TL;DR: Reading Code Is Harder Than Writing It
It's funny that computer languages are the only languages where one learns to write before learning to read. It's actually not uncommon for people to never really learn to read code. This seems a little unbalanced given that we actually read code much more frequently than we write it. Even those who promote software as a craft sometimes fall into the trap of often talking about writing clean code that people can read, yet not placing much emphasis on the skill of reading the code. The ability to read code must also be a skill, and as such it must be something that can be learnt and practiced. In this presentation, we're going to look at: - The different reasons we might have to read code, and how that should impact our reading
- The problems we face when reading code (even our own!)
- Tips to bear in mind when we're reading code
- Tools we can use to help our understanding
- How and where to practice these skills At the end of the talk we will at least have considered whether we need to level up our "Reading Code" skill.
Code Review Best Practices
We know that Code Reviews are a Good Thing. We probably have our own personal lists of things we look for in the code we review, while also fearing what others might say about our code. How to we ensure that code reviews are actually benefiting the team, and the application? How do we decide who does the reviews? What does “done” look like? In this talk, Trisha will identify some best practices to follow. She’ll talk about what’s really important in a code review, and set out some guidelines to follow in order to maximise the value of the code review and minimise the pain.
Boost Your Productivity With IntelliJ IDEA
Summary: “Starting to code in IntelliJ IDEA is easy, but are there features you could use that you don’t know about?”
IntelliJ IDEA is designed to help developers to be really productive. It aims to help you “stay in the flow”, to automatically do as much as possible while also staying out of your way. To learn how to make the most of this, sometimes we need to see how others use the tool to understand what is possible and how it helps. In this session, Trisha will demonstrate how key features of IntelliJ IDEA help you to develop code more effectively. We’ll look at some simple navigation tricks to help us to get around the IDE faster; we’ll use code generation and live templates to create code more easily; we’ll see how inspections and intentions, refactoring and code analysis can help to improve the code we’ve written; and we’ll step through some testing and debugging scenarios to understand how these tools help us to create quality code.
- Live demo
- 2018: Devoxx Belgium
Keynote: Becoming A Fully Buzzword Compliant Developer
You’re at this conference to hear all about “best practices”, the latest trends in technology, and presumably to level up your own career. But it’s a tall order, learning to be a fully buzzword compliant developer, architect or lead, especially when What’s Hot changes on practically a daily basis. During this talk, Trisha will give an irreverent overview of the current technical landscape and present a survival guide for those who want to stay ahead in this turbulent industry.
Keynote: Career Advice for Architects
Any idea how to climb the ladder but remain technical? Or how to avoid being promoted away from what you love? Did you realise when you started your career just how important non-technical skills would be? What other skills would make life easier but are undervalued? How do you stay ahead of the curve? Stay relevant? In this session Trisha is going to share some lessons she learnt the hard way while managing her career as a developer / lead / technical advocate. She’ll give you tools for working out what your next steps are. And plenty of examples of what not to do!
- 2019: O’Reilly Software Architecture Conference, New York (keynote)
- 2018: O’Reilly Software Architecture Conference, London (keynote)
Keynote: Career Advice for Programmers
Summary: I’m no expert, but I have worked hard to steer my career. I have been responsible for CV-screening and interviewing candidates for developer positions, and I’m involved with mentoring developers. Here, I like to share stories of things I learnt the hard way.
Anyone ever give you advice on how to remain a programmer? To avoid being “promoted” into positions away from technology and code? Anyone ever tell you at school or university that you needed social skills to be a good developer? Did you know, without having had half a dozen different jobs, that all development roles are not created equal? Is it true that moving jobs a lot is a Bad Thing? In this session, Trisha is going to share some lessons she learnt the hard way while managing her career as a Java developer. She’s going to tell you secrets that others don’t want to share. And she’ll give you tools for working out what your next steps are. If nothing else, you’ll get to laugh at the (many) mistakes Trisha made in her search for The Perfect Job.
Continuous Delivery With TeamCity
In this talk, Trisha will provide an overview of JetBrains’ TeamCity and how it can be used to help your team adopt continuous delivery. TeamCity not only makes it easy to set up the build process, but also brings together relevant information to help developers to see the status of their builds, and gives us tools to locate and fix problems. We’ll look at how to set up build pipelines, and how pipelines can speed up the build and improve feedback for developers.
- 2018: Bitnami Sevilla
Keynote: Staying Ahead of the Curve
We all want to stay ahead of the curve - after all, that’s what you go to a conference for. But have you ever considered how being ahead of the curve might be dangerous? Using a new language before you understand it, putting a new technology into production so you can learn it, abandoning “old practices” before you’ve got the benefit from it… These things are common practice, under the guise of Progress and Keeping Up To Date. But while we shouldn’t be running around like headless chickens chasing the next Shiny New Thing, we do need to see to our Continuous Learning and, of course, we should Embrace Change. How do we balance these two extremes? And how do we see to our own growth and learning as developers and architects while meeting the needs of our project or team or organisation?
BoF: I’d like to speak at conferences, now what?
At this conference you’ve been inspired by speakers and/or decided that you would like to be up there on stage. Maybe you’ve thought “I could do that!”, or maybe you’ve thought “I don’t know if I could do that but I’d like to”. What’s the next step? How do you bootstrap a speaking career? What could you speak about? How hard is it? What do you need to know? What’s not as important as you fear? This session is open to everyone who’s even slightly curious about how to speak at conferences, and open to experienced speakers who would like to share their journey and their top tips.
- 2018: Oracle Code One
BoF/Tutorial: Public Speaking Clinic
Have people told you that public speaking will help your career? Are you being encouraged to present brown bags / tech sessions for colleagues? Or maybe you need to present something to management or to the team? Or speak at a user group? This session is aimed at inexperienced speakers - people who have never done it before, or have limited experience with presenting, who want to take that first step. We will cover the basics - give you some simple guidelines to help prepare you for your first presentation. The most important thing you should get out of this session is: how to deal with a sea of faces staring expectantly at you. Come to this session if: - You'd like to present at a user group event, but you're not confident enough yet
- You're wondering if you could present at conferences
- You want practical help getting started with public speaking
- Your job might need you to present something, even to a small audience
- Or you're simply curious about what it's like This is very much an introductory session, although more confident speakers are welcome. We will focus on your skills as a presenter, not the mechanics of building a slide deck or talk, and we aim to guide the session according to your questions and needs.
- Ladies Who Code, London; London Java Community; Oracle Code One
BoF: Diversity and Inclusion - Are We There Yet?
We still: - Have conferences with only one woman speaker
- Regularly see all male panels
- See only a small subset of races represented
- Use language that excludes people in job adverts
By now we’ve heard that diversity makes better teams, better products, better leadership, and it seems like the industry has been beating itself up about it for some time now. Why isn’t it fixed? This session is for those who feel passionately about diversity and inclusion, whether you’re from an underrepresented group or are an ally. It’s also for those who are wondering what all the fuss is about, and those asking whether they should be making changes to their company, their events, or their own approaches.
- 2018: Oracle Code One
Is boilerplate code really so bad?
Summary: A look at both modern Java syntax and Kotlin syntax to see options for making JVM code more elegant.
Many JVM languages promote “less boilerplate code” as one of their selling points. Even updates to Java in recent years have removed unnecessary syntax. While this is clearly meant to be a Good Thing, many of us - particularly if we’ve been writing Java for a long time - think “so what?". Our IDEs can generate code, and our brains get used to ignoring the stuff that doesn’t matter. Is the removal of extraneous code from the syntax of a language necessary, or just a gimmick? How does it impact our ability to write and read code? In this talk, Trisha will explore common coding scenarios using Java and Kotlin. We’ll see what’s important for developers to write (and, more importantly, read) and what can be removed. We’ll also see how Java has evolved to improve our productivity as producers and consumers of code, and why understanding new languages and staying up to date with the features of Java can ultimately make your life easier.
- 2018: QCon London, DevoxxUK, JBCN Conf, Oracle Code One, Devoxx Belgium
Real World Java 9
The feature we always hear about whenever Java 9 is in the news is Jigsaw, modularity. But this doesn’t scratch the same developer itch that Java 8’s lambdas and streams did, and we’re left with a vague sensation that the next version might not be that interesting. Java 9 actually has a lot of great additions and changes to make development a bit nicer. These features can’t be lumped under an umbrella term like Java 8’s lambdas and streams, the changes are scattered throughout the APIs and language features that we regularly use. In this presentation Trisha will show, via live coding: - What the Java Platform Module System is and how to make your code modular
- The improvements to the Streams API that make it easier to control infinite streams
- How the Collections convenience methods simplify code Along the way we’ll bump into other Java 9 features, including some of the additions to interfaces and Optional, and a number of other small changes that make coding in Java a bit nicer than it was before.
- 2017: QCon London 2017; DevoxxUK; J on the Beach, GOTO Amsterdam
Refactoring to Java 8
Summary: “How do we tackle all the “legacy” (pre-Java 8) code in our applications?”
While we’re drawing ever closer to Java 9, and even hearing about features in Java 10, it’s also true that many of us are still working with an older version. Even if your project has technically adopted Java 8, and even if you’re using it when coding new features, it’s likely the majority of your code base is still not making the most of what’s available in Java 8 - features like Lambda Expressions, the Streams API, and new Date/Time. In this presentation, Trisha will: - Highlight some of the benefits of using Java 8 - after all, you’ll probably have to persuade The Management that tampering with existing code is worthwhile
- Demonstrate how to identify areas of code that can be updated to use Java 8 features
- Show how to automatically refactor your code to make use of features like lambdas and streams.
- Cover some of the pros and cons of using the new features, including the impact on performance. At the end of this session, you’ll have a better idea of when refactoring can easily be done, and when it may NOT be a good idea.
Who is this for?
Java developers who are working on an existing system. From a technical point of view, this is suitable for junior and senior developers, but senior/lead devs and architects will find this talk useful to decide whether to apply these changes in their applications and to provide guidance to the rest of their teams.
More live coding. While Java 8 may no longer be “new” and “sexy”, this is yet another talk aimed at Real Life Developers to help them with their day jobs. Whether the application they work on has migrated to using a Java 8 JVM or not, this talk will provide guidance on how to tackle all the existing code written before lambdas, streams, and the new date/time API were introduced.
- 2016: QCon New York, JavaOne, and more…
Java 8 in Anger
Java 9 is just around the corner, but many of us developers have yet to use Java 8 features in an application. This presentation moves beyond slide-sized examples of streams and lambdas, and to shows how to build a fully working end-to-end application using minimal external dependencies and the latest version of Java. In this session, Trisha will build a Java 8 application live. This application will consume a real-time feed of high velocity data, contain small services (possibly micro-sized) that make sense of the data, and present it in a JavaFX dashboard. Along the way, we’ll encounter Java 8 streams, lambdas, new ways of working with collections, and bump into the new date and time API.
- 2016: Lambda World and YOW 2016 (as "Java 8 & 9 in Anger")
- 2015: QCon London, QCon New York, DevoxxUK, Devoxx France, Craft Conf
Level Up Your Automated Tests
Summary: “Why one Java team started writing their tests in Groovy. Did it help?”
Two years ago, we introduced Spock tests into the MongoDB Java driver. The decision could be considered controversial - the project used no external dependencies in production code, and was 100% Java. But there was a back door… with Gradle as the build system, there was a tiny excuse to use Groovy in the project, provided it wasn’t in the production code. That’s all the excuse we needed to start using Spock for unit and, later, integration tests. Groovy has a lot of advantages as a testing language, and with Spock’s mocking, stubbing, and data driven testing features, it might seem as if this is the perfect way to write tests. In this session, Trisha will cover some of the features that make Spock (and Groovy) compelling for writing tests. But in the interests of fairness, she’ll also discuss some of the downsides, and the times when Java was chosen instead.
- Real project
- Groovy syntax is nicer for things like maps but Groovy is a bit slower
- Easier to read
- Spock forces people to write BDD-style tests
- Some tooling limitations to writing tests first
- Data driven testing
- There’s a place for Java tests
There will be real code examples and demos of the sorts of tests that are possible in Spock, and which tests might be better in Java. Attendees will learn what the advantages of a Groovy testing framework like Spock are, and some of the costs to adopting this technology.
HTML5, AngularJS, Groovy, Java and MongoDB all together - what could possibly go wrong?
It seems to have been a common theme amongst startups to create the MVP (Minimum Viable Product) in a language that facilitates rapid prototyping (for example Ruby), and then migrate to the JVM when the application has proved itself and requires more in terms of stability and performance. I’m going to demonstrate that it’s possible to use a static, boiler-plate-heavy language like Java to create a web application in under an hour, in front of your very eyes. The JVM is a true polyglot platform, and I’m going to show you how to use the correct tools for each part of your application, including: AngularJS; Bootstrap; HTML 5; Web Services; Java-the-language; MongoDB; and Groovy - a fully buzz-word-compliant application. While I won’t go into every technology in depth, I’ll demonstrate the role of each tool and how they interact. At the end of the talk we will have a fully working mobile-and-browser-friendly application, without compromising on design or good practice. It’s even going to have tests.
Yes, live coding, with all attendant danger.
What will attendees learn? Developers and architects who attend this talk will get a view of how to create full end-to-end applications with pretty user interfaces simply by selecting the correct tools.
For those who are used to client-side development, they’ll have a view of what happens on the server side and how the correct tools there also make it simple to create a functional back end without the learning curve traditionally associated with “back end” development.
In addition this also shows how NoSQL technologies support rapid and agile application development.
Most of all, I hope attendees learn from this that Java and the JVM is a very valid platform to choose for prototyping.
- 2014: QCon London, The Joy of Coding, GOTO Chicago, JavaOne, and more…