Trisha has developed Java applications for a range of industries, including finance, manufacturing, software and non-profit, for companies of all sizes. She has expertise in Java high performance systems, is passionate about enabling developer productivity, and dabbles with Open Source development. Trisha is a leader of the Sevilla Java User Group and a Java Champion, she believes healthy communities and sharing ideas help us to learn from mistakes and build on successes. As a Developer Advocate for JetBrains, she gets to share all the interesting things she’s constantly discovering.
140 chars: Trisha has expertise in Java high performance systems, is passionate about community in tech, and dabbles with Open Source development
These are ordered with the most recent first (more or less)
BoFs and Workshops
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.
Life After 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 how painful it might be to migrate to Java 9 left many applications taking a wait-and-see approach, happy with Java 8.
But now Java has a new version every six months, and suddenly Java 12 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:
- Why upgrade from Java 8, including language features from Java 9, 10, 11 and 12
- What sorts of issues might we run into if we do choose to upgrade
- How the support and license changes that came in with Java 11 might impact us.
Boost Your Productivity With IntelliJ IDEA
Presented at: onsite at customers
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.
Continuous Delivery With TeamCity
Presented at: Bitnami Sevilla
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.
Notes: Was a 30 min user groups demo, could use more detail on cloud deployment and on
visibility of problems etc
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.
BoF: Diversity and Inclusion - Are We There Yet?
It’s 2018 and 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.
Is boilerplate code really so bad?
Presented at: QCon London, Oracle Code One, and more…
Videos and more info
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.
Real World Java 9
Presented at: QCon London; DevoxxUK; GOTO Amsterdam
Videos and more info
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.
Becoming A Fully Buzzword Compliant Developer
Presented at: ProgSCon London, QCon London 2019
Videos and more info
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.
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.
Refactoring to Java 8
Presented at: QCon New York, JavaOne, and more…
Videos and more info
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.
Notes: 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.
Java 8 in Anger
Presented at: QCon London, QCon New York, DevoxxUK, Devoxx France, Craft Conf, Lambda World
Videos and more info
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.
Java 8 (and 9!) in Anger:
Java 9 is just around the corner, but many of us developers are still getting to grips with thinking in terms of Java 8 idioms. This presentation shows how use lambda expressions and the streams API to to build a fully working end-to-end application using minimal external dependencies and the very latest version of Java. In fact, since we’ll be using the OpenJDK Java 9 build, we’ll even sneak in some of the lesser-known Java 9 features and see how these are going to make developers’ lives easier.
In this session, Trisha will build, live on stage, an application that consumes a real-time feed of high velocity data, architected as small (possibly micro-sized) independent services 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 (from Java 8 and 9), and bump into the new date and time API. As we design and build the application, we’ll see how to slice up our application into small, independent services, and almost certainly encounter some of the common issues around running a system in this fashion.
Notes: Learn how to build a realistic async application using Java 8 features, such as lambdas
and streams. For bonus points, you’ll see how to use JavaFX to show live streaming data.
Level Up Your Automated Tests
Presented at: GOTO Chicago, and Greach conf Madrid.
Summary: Why one Java team started writing their tests in Groovy. And 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
- groovy is slower
- easier to read
- forces people to write BDD-style tests
- some limitations to writing tests first
- data driven testing
- 1 week spike to check it works
- there’s a place for Java tests
This presentation will be less of a live demo than “Java 8 in Anger” or “HTML5/AngularJS/Groovy/Java/MongoDB All Together”, but 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, not just slideware code.
Attendees will learn what the advantages of a Groovy framework like Spock are, and some of the costs to adopting this technology.
Keynote: Staying Ahead of the Curve
Presented at: GOTO Berlin, The Lead Developer (London), Craft Conf
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?
HTML5, AngularJS, Groovy, Java and MongoDB all together - what could possibly go wrong?
Presented at: QCon London, The Joy of Coding, GOTO Chicago, JavaOne, and more…
Videos and more info
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.
Career Advice for Programmers
Presented at: GOTO Aarhus 2013, YOW Australia 2013, ProgNET London, Sevilla Developer Conference
Summary: I’m no expert, but I have worked hard to steer my career, and 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.
Career Advice for Architects
Presented at: O’Reilly Software Architecture Conference
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!
Code Review Best Practices
Presented at: SCLConf London
Videos and more info
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.