- Видео 180
- Просмотров 159 348
Pairing with Duncan
Великобритания
Добавлен 16 апр 2013
Let's pair program in (mainly) Kotlin!
I've been programming since 1981, and a professional software developer for more than 30 years. I've been lucky enough to have some excellent teachers over the years, but I remember what it was like to work in an organisation where people didn't share my passion or expand my skills. So, now that I'm retired, it's time to give back. Subscribe to get a weekly fix of pair programming with an experienced engineer. Learn how I approach coding, problem solving, debugging and project management. Watch me try to figure out AI. Marvel at how often things fail the first time, but quickly get better.
Advanced Kotlin with Extreme Programming (XP), covering Java to Kotlin, Test Driven Development (TDD), Refactoring, Object Oriented (OOP) and Functional Programming (FP). Co-author with Nat Pryce of the O'Reilly book Java to Kotlin - A Refactoring Guidebook.
Show your appreciation though the medium of PayPal - www.paypal.com/paypalme/DuncanMcGregor
I've been programming since 1981, and a professional software developer for more than 30 years. I've been lucky enough to have some excellent teachers over the years, but I remember what it was like to work in an organisation where people didn't share my passion or expand my skills. So, now that I'm retired, it's time to give back. Subscribe to get a weekly fix of pair programming with an experienced engineer. Learn how I approach coding, problem solving, debugging and project management. Watch me try to figure out AI. Marvel at how often things fail the first time, but quickly get better.
Advanced Kotlin with Extreme Programming (XP), covering Java to Kotlin, Test Driven Development (TDD), Refactoring, Object Oriented (OOP) and Functional Programming (FP). Co-author with Nat Pryce of the O'Reilly book Java to Kotlin - A Refactoring Guidebook.
Show your appreciation though the medium of PayPal - www.paypal.com/paypalme/DuncanMcGregor
What IntelliJ isn't telling you - the Truth about Test Speed
Regular viewers won’t be surprised that I’m obsessed with the details of how long our tests are actually taking to run. I won’t speak for all developers, but I at least can be a little, erm compulsive when I get the bit between my teeth.
So when I suspected that IntelliJ was just plain lying to me about how fast tests are running, I had to see if my suspicions were true. Last week (ruclips.net/video/npxjzNvuH_c/видео.html) we saw that there is a lot of time between invoking the action and the tests actually running. This week we’ll see that the reported duration of individual tests, and the suites that they sit in, appear to be wrong too.
In this episode
* 00:00:38 The story so far
* 00:01:18...
So when I suspected that IntelliJ was just plain lying to me about how fast tests are running, I had to see if my suspicions were true. Last week (ruclips.net/video/npxjzNvuH_c/видео.html) we saw that there is a lot of time between invoking the action and the tests actually running. This week we’ll see that the reported duration of individual tests, and the suites that they sit in, appear to be wrong too.
In this episode
* 00:00:38 The story so far
* 00:01:18...
Просмотров: 495
Видео
Why are my tests so slow? JUnit vs Gradle vs IntelliJ
Просмотров 626День назад
I took a test yesterday and it said that I have the reaction time of a 25 year old. My super speedy brain must be the reason that I find it so irritating to sit and wait for tests to complete. My MacBook Air is apparently 5.5 times faster than its equivalent 10 years ago, but I’m pretty that sure building and running the tests on a medium sized project is much less instant than it was then. Why...
Turbocharge Testing with JUnit, Gradle & IntelliJ
Просмотров 51814 дней назад
If you’ve watched any of my previous videos then you will probably know that I practice Test Driven Development. To some extent just having to write tests makes our code better, but, what the hell, we might as well run them to find out if things actually work. If we are going to run the tests, then waiting for them is just a drag. When I’m coding I’ll often run the tests more than once a minute...
Testcontainers, Postgres, Kotlin
Просмотров 65921 день назад
If you check our Kotlin Gilded Rose codebase out of GitHub (github.com/dmcg/gilded-rose-tdd) and try to build it, you will find that you need to be running Postgres just in order to compile things, and then again in order to run the unit tests. That’s not too much of an issue on my Mac, but with the expansion of the team we would like to set up a cloud continuous integration server, and there w...
Tidy First Kotlin - Removing Redundant Code
Просмотров 575Месяц назад
To me, coding feels more like gardening than building. Instead of erecting permanent structures, we are planting things that grow, and occasionally die. Sometimes we need to move code from one place to another where it is better suited. Sometimes a class is alive but just cluttering things up. If so, then we can dig it out and spend the time that we would have spent weeding and feeding on more ...
Understanding Gradle
Просмотров 1,6 тыс.Месяц назад
It’s been 6 months since I had a major and public sense of humour failure with Gradle, but it’s still the build tool I know, and to be honest has been relatively painless in the Gilded Rose codebase. I do find that it helps to periodically refresh my mental model of how build tasks relate to each other, and how Gradle decides what gets run when. So today, instead of arguing with our build, let’...
Taming Dependencies with Gradle Version Catalogs
Просмотров 529Месяц назад
It’s a sad truth of modern software development that maintaining our build and deployment systems is taking more and more of the time that we could be using to write our own bugs. After my recent video on upgrading Gradle dependencies (ruclips.net/video/J8Pi9XvHkxg/видео.html), viewers recommended that I invest some more time in version catalogs (docs.gradle.org/current/userguide/platforms.html...
Groovy to Kotlin - Migrating a Gradle Build
Просмотров 638Месяц назад
I created the TDD Gilded Rose codebase in 2021, when the default for Gradle build scripts was the Groovy language. Since then I’ve tried to convert to the Kotlin DSL at least 3 times, and every time I’ve been beaten by some difficulty that just made the conversion uneconomic. Whatever you think about them, LLMs are certainly changing software economics at a rapid pace, so let’s have another go,...
Upgrading Dependencies for No Fun and No Profit
Просмотров 5432 месяца назад
My aim was to show every significant edit to our Test Driven Gilded Rose codebase, but in practice there is a whole category of changes that I haven’t shown you - upgrading dependencies. As many of our dependencies have new versions I thought that now would be a good time to show my thought processes in deciding when, how and whether to keep up to date. It’s a bit tedious to be honest! As you w...
Replacing Handlebars - kotlinx.html for HTMX
Просмотров 1,1 тыс.2 месяца назад
Extreme Programming introduced the idea of a Spike Solution - a small experiment to that goes deep into a topic to explore and solve potential issues before we commit to changes that would be hard to reverse. In our Gilded Rose codebase we are using HTMX (htmx.org) to implement partial page updates. We have found that using Handlebars templates (handlebarsjs.com) to render these HTML fragments ...
Migrating Kotlin Context Receivers
Просмотров 1 тыс.2 месяца назад
Last week’s refactoring (ruclips.net/video/W_Hd1O3_XUk/видео.html) to remove our IO context receiver was relatively easy because the receiver was never actually referenced, it was just a marker. Our transaction context receiver may carry state though, so to remove its use we are going to have to convert from function contexts to function parameters. This is the widest-ranging refactor that we h...
Abolishing Kotlin Context Receivers
Просмотров 1,1 тыс.2 месяца назад
They say that no good deed goes unpunished, and it is a curse to live in interesting times. Welcome to life as a professional software developer. 18 months ago, I thought that Context Receivers were going to be a useful addition to the Kotlin language. So I published a series of episodes where I used them in the Gilded Rose stock control system, firstly just as a marker to show where code perfo...
Back to Basics Kotlin Refactoring - Man vs Machine
Просмотров 7022 месяца назад
This week we’re back in our test-driven Gilded Rose codebase. For those who have only started watching recently - this is an implementation of a stock control system for a magical goods store, using Kotlin in a largely functional style, and developed iteratively over 100 episodes so far. Key technologies are Postgres via JOOQ and HTMX via http4k. It’s been a year since we added any core functio...
The Future of Source Code with Stephan Janssen
Просмотров 4983 месяца назад
This is the final part of my conversation with Stephan Janssen. Whilst we do look at how to upload a whole project to an LLM’s web interface, and in particular Antropic’s context cache, most of the chat is between the two humans in the room. We discuss the difference between an LLM and a junior developer, what AI is good at now and where it should get better, and one of my favourite topics, the...
Mastering Chat-Oriented Programming with Stephan Janssen
Просмотров 6813 месяца назад
In this episode I’m continuing my chat and pairing with Stephan Janssen, founder of the Devoxx conference empire and author of the Devoxx Genie AI plugin for IntelliJ github.com/devoxx/DevoxxGenieIDEAPlugin Last week (ruclips.net/video/NRAe4d7n6_4/видео.html) Stephan helped me understand how chatting with a large language model is implemented. Armed with this knowledge, this week we open up the...
Devoxx Genie AI Deep Dive with Stephan Janssen
Просмотров 6433 месяца назад
Devoxx Genie AI Deep Dive with Stephan Janssen
Introducing the Devoxx Genie AI Plugin for IntelliJ
Просмотров 1 тыс.3 месяца назад
Introducing the Devoxx Genie AI Plugin for IntelliJ
AI-Generated Property-Based Fizz-BuzzWords - Now with Dark Mode
Просмотров 4554 месяца назад
AI-Generated Property-Based Fizz-BuzzWords - Now with Dark Mode
This one’s important - Refactoring to Functional Kotlin
Просмотров 9844 месяца назад
This one’s important - Refactoring to Functional Kotlin
Science with Servers - Benchmarking http4k and ktor
Просмотров 4585 месяцев назад
Science with Servers - Benchmarking http4k and ktor
Implementing Interfaces with Method Maps
Просмотров 7575 месяцев назад
Implementing Interfaces with Method Maps
Hunt the method - Advanced Kotlin Proxy Magic
Просмотров 4485 месяцев назад
Hunt the method - Advanced Kotlin Proxy Magic
Supercharge your Kotlin with Java Dynamic Proxies
Просмотров 9035 месяцев назад
Supercharge your Kotlin with Java Dynamic Proxies
Refactoring to the Repository Pattern
Просмотров 1,4 тыс.5 месяцев назад
Refactoring to the Repository Pattern
Advanced techniques for Kotlin Power Assert
Просмотров 4866 месяцев назад
Advanced techniques for Kotlin Power Assert