This talk introduces all the important updates to PHP in its upcoming version 8.4, ranging from minor changes and deprecations, to big new features that greatly empower properties and have the potential to change the way we write our code: property hooks, and asymmetric visibility.
Many of us have learned and keep learning Git on the go, at work or as a necessity in a programming course. Git is rarely the main thing; it's rare to have time to go deeper and explain not only the basic commands and options, but also the underlying concepts and principles. We will take the time for that and hopefully clear some misconceptions you may have about Git.
The web platform is ever-evolving. In this talk, I discuss what that has meant for Naja in the recent years, which new features led to a new major release, and what backwards incompatible changes you should be aware of when upgrading. And by the end of the talk, I had released Naja 3.0 into the wild.
Production is a magical place. People go there and do things, and sometimes, despite the best-typed and tested code, a bug slips through – and it's likely to be all the more bizarre the higher the quality of your code. In such moments, it's invaluable to have a place to find everything that might be relevant to the situation. This talk shows in theory and in practice how to approach logging so that you have perfect oversight of production and no such bug remains an unsolved mystery. Co-presented with Marek Humpolík.
This talk introduces passkeys, a technology that brings a solution to all problems of passwords: their are unbelievably convenient to use, resistant to data breaches and phishing, and practically eliminate the possibility of human error. All this building upon open standards and existing APIs.
Generics: an ingenious tool of abstraction for some, a source of nightmares for some, and a great unknown for others. And yet, it's likely that most of us have used them. This talk explains what generics are and illustrates how to use them in PHP thanks to PHPStan.
As developers, we deduplicate code to achieve abstraction. But far too often, abstractions tend to stick around even after requirements change in a way that renders the particular abstraction obsolete and impractical. This talk is a gentle reminder to always question your abstractions in the face of requirement changes.
This talk shows all the new features of PHP 8, PHP 8.1 and the soo-to-be-released PHP 8.2, and discusses what's new in the ecosystem and funding of PHP's development. Most importantly, it argues why you should upgrade asap and keep upgrading often.
A feature likely known to Kotlin developers, sealed classes and interfaces provide a way of enforcing restricted inheritance hierarchies. With the most recent versions of PHPStan, we can use statically analyzed sealed classes in PHP!
Generics: an ingenious tool of abstraction for some, a nightmare for others. And yet, it's likely that most of us have used them. This talk explains what generics are and illustrates how to use them in PHP thanks to PHPStan, covering everything from the most trivial situations to advanced use cases such as type bounds, variance, type projections, etc.
Pretty much every web application needs to work with date and time values in some way. But time is not as straightforward nor easy as most developers think, and the standard APIs in web languages do not make things any easier. Luckily, there is an alternative, domain-driven solution, thanks to which we won't waste time on finding temporal bugs ever again!
We've found a way to query the database – create, update, and delete rows, and fetch them based on complex conditions – in a way that can be statically analyzed and checked. And all this without writing a single line of boilperplate code.
A strict separation or responsibilities usually comes at a cost of writing plenty of boilerplate code: domain value objects, commands, queries, events, DTOs – all immutable and statically typed. This talk introduces a tool that can generate all this boilerplate for you.
This talk shows how to AJAX-ify a Nette Framework-powered web application using Naja, and shows and explains its various features and extension points.
In this talk, I discuss dependency injection and show how Nette Framework's DI container leverages PHP's type system to truly obsolete artificial service identifiers.
Pretty much every web application needs to work with date and time values in some way. But time is not as straightforward nor easy as most developers think, and the standard APIs in web languages do not make things any easier. Luckily, there is an alternative, well-thought solution, thanks to which we won't waste time on finding temporal bugs ever again!
In one way or another, every web application works with date and time. But time is tricky, time zones are trickier, and the standard date-time APIs do not really make things easy. Luckily, Java has already worked it out for us! Let’s find out how to handle date and time values, display them to the user, and store them in the database, all without wasting hours on temporal bugs ever again. This talk discusses the different concepts of time, the problems of standard APIs, and presents an alternative, more robust approach inspired by Java’s proven Date and Time API.
Pretty much every web application needs to work with date and time values in some way. But time is not as straightforward nor easy as most developers think, and the standard APIs in web languages do not make things any easier. Luckily, there is an alternative, well-thought solution, thanks to which we won't waste time on finding temporal bugs ever again!
This talk discusses the past of Naja, an AJAX library for Nette Framework, and reveals the future – Naja 2.0. Major changes and BC breaks are shown along with migration paths, and a timeframe is given for the end of life of Naja 1.x.
Pretty much every web application needs to work with date and time values in some way. But time is not as straightforward nor easy as most developers think, and the standard APIs in web languages do not make things any easier. This talk discusses different concepts of time and presents a more robust and less error-prone approach to working with date and time in PHP.
They say you should understand floating-point precision by 35.0000000000014. This talk discusses how floats are (im)precise and why, demonstrates the problems you inevitably encounter when doing math with floats, and presents ways to prevent those problems by using more proper data types and structures.
This talk brings a practical example of how to use Naja to implement AJAX in a Nette Framework application. On top of that, it touches related topics of the front-end development ecosystem in 2019, namely Webpack and its integration into Nette Framework.
A year and a half after I had introduced first public release of Naja, a tiny AJAX library for Nette Framework, this talk gives a recap of what the library can and cannot do, and provides a sneak peek into its future.
The activities of PHP communities made it possible to build robust applications, uniquely composed of little bits, without relying on a big framework. This talk discusses how they work and if they are a good approach.
This very short demo introduces the editor-based HTTP client in PhpStorm (or other JetBrains IDEs) and its capabilities, especially using response handler scripts to test a chain of successive requests.
In a previous talk about HTTP APIs in PHP, I showed a middleware-based approach using Slim Framework. A year later, this talk discusses what's new and how APIs can be written even thinner without any framework at all, utilizing PSR-15 interfaces.
This talk is basically a message queues 101. It introduces the concept of message queues, discusses when and how they are useful, and talks about various message queue implementations and their bindings to both vanilla PHP and some of the most popular PHP frameworks.
Pretty much every web application needs to work with date and time values. Time is, however, a tricky thing and there are many challenging issues one has to remember. This talk discusses them and tries to aid people towards bulletproof datetime handling.
I have been slowly transitioning from PHP towards JavaScript. I had to overcome the so-called Javascript fatigue and learn my way around the plethora of packages. This talk walks you through the essentials of the modern JS ecosystem and why they are needed.
When I needed an AJAX library for Nette Framework, nette.ajax.js had unnecessary dependencies (jQuery) and nittro was too complex. Naja comes inbetween: it is a simple modern library, but at the same time it’s easily extensible for any use case.
Writing APIs using Nette Framework’s presenters can easily lead to bloated code and badly distributed responsibilites. This talk shows a different approach using Slim Framework, PSR-7 and middlewares, wired into Nette DI container to allow reuse of services.
Webpack is a module bundler for more than just Javascript. This talk explains the concepts and usage of Webpack and introduces a library that helps integrate Webpack-built assets into Nette Framework in a way that both developers and users are happy.
I am a full-stack web developer from Brno, Czech Republic. I contribute to open-source projects, write a technical blog, and speak at meetups and conferences.
Learn more about me