Jiří Pudil

I turn into <code>
I am currently sort of busy

From my blog

Keeping your dependencies up-to-date

As the business requirements grow, so does the list of dependencies. Managers ask for a new feature, you just composer-require this thing and that other thing, and wire it into the application. But how do you keep track of new features in the dependencies? Or bugfixes? Or, most importantly, security patches?!

Read 18 more posts

$ whoami

I started playing with PHP back in 2009 and have been developing in it professionally since 2012. I am most proficient with Nette Framework and Doctrine 2 ORM. I’ve also fallen in love with modern JavaScript, both client-side with React.js and server-side with Node, Express, etc. I have worked with MySQL, PostgreSQL, Elasticsearch, Redis, RabbitMQ and other exciting technologies. I also manage my own little Debian VPS that runs Nginx and PHP-FPM, as well as some of the aforementioned software.

I use common sense at work and enjoy participating in the design process of web development as well. I strive to make websites as easy to use and navigate as possible. My primary focus is still development, though.


I started my professional career at PeckaDesign in Brno. I spent the vast majority of my three years there working on Megapixel.cz, a leading Czech e-commerce site for photographers. I helped rethink and refactor the community gallery code, and implemented an online photolab service, handling large amounts of uploaded files via modern JavaScript (XHR2) and Nginx’s file upload module.


Rohlik.cz is a relatively new Czech startup running an electronic grocery store, delivering goods in the Czech Republic’s two largest cities, Prague and Brno. Dispatching over 1500 orders each day, the project’s codebase utilized technologies such as Elasticsearch to list products without relational database lookups, or RabbitMQ to perform various tasks asynchronously.

Bachelor’s degree

Faculty of Informatics, Masaryk University, Brno

In mid-2016, I finished writing my thesis – a single-page JavaScript chatting app, with React.js on the front end and Express and MongoDB on the back end. I implemented Google’s Web Speech API so that users could navigate the app, dictate messages and have them read, all without using the keyboard. I successfully defended the thesis, passed my state exams and got a bachelor’s degree.


Since 2016 I’ve been helping Grifart, a Brno-based company organizing medicinal congresses, rebuild their registration system so that all the processes that can be automated are automated. I have also occassionally worked on React.js front-ends, and I’ve helped set up infrastructure components like Nginx-based reverse proxy or a logging server built with the Elastic stack.


In mid-2018 I’ve started working with Smartlook, a Czech startup providing website and mobile app analytics based on visitor recordings. With PHP being only a small part of the whole cloud-based solution, I also get in touch with React and Node.js applications written in TypeScript, and I’ve got to know Docker better.

giving back to the community

The community has given me so much that it’s only natural that I give back to it whenever I can. Thus I try to help people on Nette forum, write this blog, and contribute to or even create and/or maintain a number of open source projects, including

  • Naja, a modern AJAX library for Nette Framework;
  • neon-loader, a Neon loader for Webpack;
  • intellij-nette-tester, a plugin that integrates Nette Tester into PhpStorm;
  • intellij-nette-factory-generator, a PhpStorm plugin that smoothens the process of creating factory interfaces for services and components in Nette Framework;
  • WebpackNetteAdapter, a library that helps integrate a Nette Framework application with assets built via Webpack;
  • SlimNetteBridge, a tool that helps integrate Slim framework with Nette Framework’s DI container;
  • TotpAuthenticator, a library that lets you easily implement two-factor authentication via apps like Google Authenticator.

I have given a number of talks as well:

  • How to write even thinner APIs in PHP
    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.
    @ Poslední sobota #99 slides
  • Message queues: Leave the hard work for later
    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.
    @ Péhápkaři Brno #20 slides
  • Tick tock, goes the clock
    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.
    @ Péhápkaři Brno #17 slides
  • Don’t be afraid of JavaScript
    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.
    @ Poslední sobota #94 slides
  • Naja: modern AJAX library for Nette Framework
    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.
    @ Poslední sobota #91 slides
  • Writing truly slim APIs in Nette Framework
    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.
    @ Poslední sobota #91 slides
  • Webpack ♥ Nette Framework
    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.
    @ Poslední sobota #87 slides
  • File upload for the 21st century
    Handling large amounts of file uploads is quite a challenge for both ends of web development. This talk shows a solution using pure HTML5 awesomeness on the front-end and Nginx’s efficient upload module on the back-end.
    @ Poslední sobota #66 slides

Also I contribute to the PHP docs, mainly helping to keep it up-to-date with new features: #341025, #341653, #341998, #342265, #342541, #342628, #342629, #343851

  • #php
  • #nettefw
  • #doctrine2
  • #prooph
  • #mysql
  • #postgresql
  • #elasticsearch
  • #redis
  • #rabbitmq
  • #javascript
  • #typescript
  • #reactjs
  • #nodejs
  • #git
  • #linux
  • #nginx
  • #docker
  • native
  • C1
  • B1
  • A2

Jiří Pudil
Hálkova 926
39601 Humpolec
Czech Republic

Registered in the Trade Register
Reg. no. 04299604
Content licensed under Creative CommonsAttribution