Jiří Pudil

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

From my blog

Don't just float, swim with the floating point

They say you should understand floating-point precision by 35.0000000000014. This post is here to help you: it 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.

Read 20 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

I have given a number of talks as well:

  • Don’t just float, swim with the floating point
    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.
    @ Péhápkaři #28 slides
  • AJAX (and front-end) in Nette, the simple and modern way
    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.
    @ Nette Conference slides
  • Naja: thin, modern AJAX library for Nette
    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.
    @ Poslední sobota #102 slides
  • The frameworkless application
    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.
    @ ViennaPHP slides
  • Editor-based HTTP client in PHPStorm
    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.
    @ Péhápkaři Brno #25
  • 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