Skip to content

Tech & Code

Krzysztof Zdunkowski

Senior Full-Stack Developer

I design, build and deploy applications independently. For more than 12 years I ran my own business, working directly with client requirements, code and server infrastructure. I have also worked in teams developing business systems and integrations with cameras and industrial automation.

I use AI for problem analysis, solution discovery and software development. I compare approaches, build prototypes and verify how they actually behave. I prefer efficient systems that remain simple to operate rather than increasing infrastructure cost and complexity without a concrete reason.

Krzysztof Zdunkowski

AI in software development

I work with language models and coding agents when analysing existing systems, exploring solutions, refactoring and prototyping. I also use them for tests, documentation, data transformations and changes spanning many files. AI is part of my workflow, not merely an autocomplete tool.

I adapt the way I run a task to the problem: I define requirements and constraints, provide the necessary context, split larger changes into stages and compare proposed solutions. I work both conversationally and directly in editors or agent-based tools. What matters is whether a given approach improves the actual result.

I compare proposals from different models, but I judge them primarily by behaviour: whether the result matches the assumptions, whether the changes are precise and where further corrections are required. A convincing answer is not the same thing as a solved problem.

ClaudeCode analysis and refactoring

I use Claude for analysing existing code, architectural work and larger refactors. I also use it for API design, tests and technical documentation.

For larger tasks I divide the work into smaller steps and make project constraints explicit. I also compare its proposals with GPT when choosing a tool for a particular type of problem.

GPTSolution variants and prototypes

I use GPT models for prototyping and checking different solution variants, including interface sketches, code fragments, data transformations and test structures.

Comparing GPT and Claude on different tasks is part of how I refine an AI-assisted workflow rather than assuming one model is always the right choice.

Copilot and CursorEditor-based work

I use Copilot and Cursor directly in the editor for code completion, repetitive fragments, regular expressions, SQL and data transformations.

I also use agent modes for narrowly defined tasks such as refactors, coordinated changes across many files or preparing the skeleton of a new module.

Experience

08.2024 – presentIndependent projects and AI-assisted developmentSmaller client work · independent solutions · models and coding agents

Since August 2024 I have been handling smaller projects while developing my own applications and prototypes. During this period I have worked intensively with AI tools, comparing their capabilities and using them for code analysis, refactoring, tests, documentation and new solutions.

My own projects give me a practical environment for testing different ways of describing requirements, passing context, splitting work and managing subsequent iterations. I work both in conversation with models and with editor-integrated and agent-based tools.

I compare the behaviour of the resulting solutions, their compliance with the original assumptions and the accuracy of introduced changes. This is how I build practical AI-assisted development skills while continuing ordinary software work.

06.2023 – 08.2024Senior Backend & Full-Stack DeveloperAdministration panel and API · PHP, Vue 3, Nuxt

I developed and maintained an administration panel in Vue 3, Nuxt and TypeScript together with an Admin API implemented in both plain PHP and Laravel. I designed a permissions, licence and role system covering hundreds of scenarios, prepared complete Swagger documentation and wrote more than 200 unit tests.

I introduced CI/CD automation with GitLab CI and Docker Compose and improved the release process, reducing deployments from several hours to tens of minutes. I also regularly performed code reviews and mentored junior developers.

08.2022 – 05.2023Senior Backend DeveloperCameras and automation · Laravel, ONVIF, Modbus

I designed and developed a Laravel backend, including REST APIs with generated Swagger documentation. I built modules for ONVIF camera management and integrations with Modbus devices.

I optimised MySQL/MariaDB queries and refactored existing Node.js modules managed through PM2, adding monitoring and alerts while working on production stability.

02.2020 – 07.2022Senior Full-Stack DeveloperConstruction-sector system · Yii2, MS SQL

I developed a multi-module construction project management system based on Yii2, PHP 7.2 and MS SQL. My work covered database design, application logic, pagination and reports, responsive views and integrations with external APIs.

I wrote reusable components for tables, filtering and pagination as well as tools for bulk data migrations and PDF report generation.

08.2016 – 01.2020Senior Full-Stack Developer & Business AnalystMaintenance and development of PHP systems

I stabilised and extended existing PHP systems, introduced Git and Continuous Delivery and worked on migrations from PHP 5.4 to 7.2. I also focused on performance optimisation and reducing application response times.

In Python I designed candidate verification algorithms based on IRT.

08.2013 – 12.2017Full-Stack DeveloperKohanaPHP · integrations and infrastructure

I led the development of a system based on KohanaPHP. My scope included server configuration, partner REST APIs, landing pages and payment integration.

I independently managed Mercurial repositories and OVH infrastructure and improved the deployment process.

10.2012 – 02.2013Junior Full-Stack DeveloperMediaWiki · portal and application environments

I adapted MediaWiki to the needs of a portal and optimised the presentation of large volumes of real-time data. I also deployed development and production environments.

11.2008 – 06.2021Own business · CreaWeb / iFotosWebsites, applications and hosting

For more than 12 years I ran my own business, independently handling client requirements, design, programming and deployment of websites. I also maintained hosting infrastructure based on Nginx, PHP-FPM, XCache and MySQL.

I developed partner REST APIs, landing pages and marketing tools. I also operated iFotos, my own image-hosting service on several dedicated servers, each connected at 1 Gbit/s. Efficient use of server resources and handling large numbers of downloads were important parts of this work.

From practice

iFotos — my own image hosting service

For many years I operated iFotos on several dedicated servers, each with a 1 Gbit/s connection. The service used Nginx, PHP-FPM, XCache and MySQL. With limited hardware, it mattered which layer performed each task.

I used X-Accel-Redirect so that PHP handled metadata and cached counters while Nginx served the file itself. At full link utilisation, average CPU usage was around 40%.

The infrastructure remained stable for years. I later suspended the service after traffic declined as market needs changed.

My approach

I favour lightweight, well-optimised solutions that make efficient use of available hardware and remain inexpensive to operate. I would rather improve architecture, code and database queries than compensate for avoidable inefficiencies with larger servers and more services.

I will not recommend cloud infrastructure or a large, expensive technology stack without a concrete reason. If the project requirements can be met by a simpler solution, adding dependencies, cost and operational complexity is not a benefit. I consider not only initial implementation but also future development, diagnostics, deployment and infrastructure bills.

I use containers and cloud services where they genuinely solve a problem — for example by simplifying deployment, handling required scale or satisfying specific security requirements. Their benefits still need to justify their additional cost and complexity. Infrastructure expansion is not my default response to performance problems.

I value well-organised projects with clear development, testing and deployment standards. I also have substantial experience working with systems carrying technical debt: analysing existing code, understanding its conventions and introducing changes that make future work easier through refactoring, automated tests and CI/CD.

Technologies

Backend

PHPApplications, APIs and optimisation

I have worked with PHP since version 4.2, on both small websites and larger business applications, using custom solutions as well as Laravel, Yii and KohanaPHP. I have worked through successive language releases including PHP 8.4. My responsibilities have also included technology selection, application architecture and the basic technical assumptions of projects.

A large part of my work has involved performance optimisation in both new and existing systems. I have used debugging and profiling tools such as Xdebug and analysed complete solutions rather than PHP in isolation — including database queries and server configuration.

iFotos was another practical example: PHP handled metadata while Nginx served files via X-Accel-Redirect, helping keep infrastructure cost and resource use low.

LaravelAPIs, queues and application tooling

I have used Laravel on projects ranging from small services to larger business applications. I built Blade views and REST APIs documented with Swagger, created Artisan commands for automation and used queues for asynchronous work.

I implemented JWT-based authentication and user-account workflows including registration, login, password reset and e-mail confirmation. Redis was used to cache data whose retrieval placed the highest load on the application and database.

Yii2Business systems and reusable components

I have used Yii for simple CRUD applications as well as larger business systems. I worked with ActiveRecord, schema migrations and Gii and created reusable components and widgets used across multiple parts of an application.

I built paginated REST APIs, console commands and RBAC-based permissions and used Redis for heavier queries. Tables, filtering, pagination and reporting were recurring areas where reusable components substantially reduced duplicated work.

Data and infrastructure

MySQLSchemas, queries and transactions

I have worked with MySQL both when designing new databases and optimising existing systems. My work includes schemas, data types, indexes including covering indexes, and solutions using GIS and JSON data. I have experience with MySQL 5.x and 8.x.

I have worked with autocommit as well as explicit START / COMMIT / ROLLBACK, and with deadlock analysis under isolation levels including READ COMMITTED and REPEATABLE READ.

I have also handled backups and recovery with mysqldump and phpMyAdmin and configured users, roles and permissions.

NginxHTTP, reverse proxy and file serving

I have worked with Nginx since version 0.7, using it for HTTP(S), reverse proxying and caching static assets in both small services and distributed environments.

I configured traffic distribution using least_conn and ip_hash, and used limit_req_zone and limit_conn_zone to control overload and traffic spikes. Earlier deployments also included HTTP/2 configuration and http2_push_preload.

In iFotos, X-Accel-Redirect allowed PHP to prepare metadata and counters while Nginx handled the actual file transfer.

RedisQuery-result and session cache

I have mainly used Redis for expensive query results, frequently accessed data and sessions, reducing database calls and application response time.

I select TTL values with the trade-off between freshness, database load and memory consumption in mind. I used this pattern in Laravel and Yii-based applications.

DockerWorking with Docker Compose environments

I have most often worked with existing Docker images and Compose configurations, using them to launch complete PHP-FPM, Nginx, Redis and MySQL environments.

I understand Dockerfile structure, networks, volumes and multi-service Compose setups as well as image optimisation, multi-stage builds and private registries. In projects, Docker has primarily been a practical environment and deployment tool.

Interfaces

JavaScriptVanilla JS, jQuery and web applications

I have worked with JavaScript since before jQuery, writing both plain-JS scripts and larger modular SPA-style applications. I have also worked with frontend frameworks and maintained Node.js code.

I understand prototypes, hoisting, the event loop and asynchronous behaviour and pay attention to how code structure affects browser memory use. For example, defining separate functions on each object instance instead of sharing methods through a prototype can become significant at scale.

Node.js is not my preferred platform, but I have maintained and refactored it, including PM2-managed modules with monitoring and alerts.

Vue.jsViews, components and administration panels

I adopted Vue later than JavaScript itself, but quickly found the component model productive. Commercially I built individual views and more substantial components, including a reusable REST-paginated table supporting pagination headers and different column data types.

I also worked on an administration panel using Vue 3, Nuxt and TypeScript. I used props, emitted events and slots so shared components could support multiple views without being copied.

Python and devices

PythonData processing, scripts and prototypes

I first worked with Python at university and wrote my entire engineering thesis in it. I have less commercial experience in Python than in PHP, but I have used it both in my own projects and production systems, including video, audio and image processing.

Commercially I wrote scripts for transforming and analysing large data sets: grouping, filtering and bulk modification of file names, file contents and database records using complex patterns. I also designed IRT-based candidate verification algorithms.

Python was also the basis of my Raspberry Pi property-security system, including remotely connected intercoms using WebSockets, encrypted connections and JWT authentication.

FlaskAPIs and device communication

I first used Flask in 2010. I have used it to build REST APIs organised into blueprints, protected with JWT and documented using OpenAPI. Flask-Migrate handled database migrations.

I used Flask-SocketIO for bidirectional communication with remote devices, including Raspberry Pi intercoms communicating over encrypted connections without requiring each device to have a public IP address.

Raspberry PiCustom hardware prototypes

My Raspberry Pi projects combine electronics and software: IR-assisted cameras, microphones, small audio amplifiers, 3 × 4 matrix keypads and displays for user interaction.

Python controlled the complete system, with GPIO libraries for inputs and outputs and Flask-SocketIO for remote communication. I also connected relays and automation controllers.

I designed housings in 3ds Max and prepared them for 3D printing. These are working prototypes covering software, electronics and the physical enclosure.

Graphics and 3D

PhotoshopImages and web assets

I have used Photoshop for more than 20 years. When working on websites I can independently prepare the required assets, cut layouts and extract graphic elements including shadows, layered transitions and transparent or semi-transparent material.

I prepare and optimise images and icons by selecting appropriate sizes and compression and removing unnecessary metadata. I also use AI-assisted tools where they are genuinely useful, for example in selection and retouching.

3ds MaxFrom game mods to 3D-printing models

I first used 3ds Max almost 20 years ago through an interest in games and creating virtual worlds. I worked with object and scene modelling, lighting for photorealistic renders, basic animation and simple particle simulations.

For several years I was the lead 3D artist on the hobby project “Mroczne Tajemnice” for Gothic I, preparing assets from concepts through final meshes and textures.

I no longer use 3ds Max every day, but still apply those skills when designing 3D-printable parts and conceptual visualisations, including housings for Raspberry Pi prototypes.