<?xml version="1.0" encoding="utf-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Lessthan12ms.com by Dmitry Lezhnev</title>
<subtitle>Blog about php ecosystem and backend development</subtitle>
<updated>2026-03-08T03:49:08+00:00</updated>
<id>urn:uuid:bd14b742-cc1b-b8e6-a5e3-a065329a1426</id>
<entry>
<title>How to Run MySQL in Production for Under &amp;dollar;100/month</title>
<updated>2025-07-08T12:00:00+00:00</updated>
<link href="https://lessthan12ms.com/cheap-mysql.html"></link>
<id>urn:uuid:085ae31c-78b5-fe68-40e1-400a0af82fe5</id>
</entry>
<entry>
<title>Faster Text Search With PostgreSQL's GiST Index And Trigrams.</title>
<updated>2025-04-18T12:00:00+00:00</updated>
<link href="https://lessthan12ms.com/pg_trgm_gist.html"></link>
<id>urn:uuid:337130d7-b9bf-45e6-a91c-92a49ae986ff</id>
</entry>
<entry>
<title>Notes On Concurrency</title>
<updated>2025-02-28T12:00:00+00:00</updated>
<link href="https://lessthan12ms.com/concurrency.html"></link>
<id>urn:uuid:a51bb430-bde9-0145-25d9-0be92d919a39</id>
</entry>
<entry>
<title>Protecting Expensive Calls In Go</title>
<updated>2024-12-13T12:00:00+00:00</updated>
<link href="https://lessthan12ms.com/go-expensive-call.html"></link>
<id>urn:uuid:4d501cf3-2396-20c8-154c-a68be61e773f</id>
</entry>
<entry>
<title>Heaplog - Search For Local Log Files</title>
<updated>2024-01-12T12:00:00+00:00</updated>
<link href="https://lessthan12ms.com/heaplog.html"></link>
<id>urn:uuid:7aeb0b48-8459-7cc0-4ebe-f960e98695e6</id>
</entry>
<entry>
<title>Go's Go-Tos</title>
<updated>2023-09-30T12:00:00+00:00</updated>
<link href="https://lessthan12ms.com/go-go-tos.html"></link>
<id>urn:uuid:7e295719-2663-ef30-5924-9e33b849d325</id>
</entry>
<entry>
<title>Designing Inverted Index</title>
<updated>2023-08-13T12:00:00+00:00</updated>
<link href="https://lessthan12ms.com/inverted-index.html"></link>
<id>urn:uuid:5bd10d90-3fab-e49e-d528-ee88ed2064c7</id>
</entry>
<entry>
<title>Databases Design Reading List</title>
<updated>2023-07-30T18:08:00+00:00</updated>
<link href="https://lessthan12ms.com/databases-reading-list.html"></link>
<id>urn:uuid:2f108bf3-2e98-b38c-559f-44662a8bf4bb</id>
</entry>
<entry>
<title>Playbook for Remote Development Teams</title>
<updated>2023-02-18T12:00:00+00:00</updated>
<link href="https://lessthan12ms.com/remote-teams-playbook.html"></link>
<id>urn:uuid:9c8e8410-d291-ec69-6bf1-129dfd46b1fe</id>
</entry>
<entry>
<title>Namespaces For Goroutines</title>
<updated>2022-12-25T12:00:00+00:00</updated>
<link href="https://lessthan12ms.com/goroutines-request-isolation.html"></link>
<id>urn:uuid:3074ba8a-8406-6dd0-a6a9-ecbf2ca21df9</id>
</entry>
<entry>
<title>Like Regular Expressions But For...</title>
<updated>2022-05-14T12:00:00+00:00</updated>
<link href="https://lessthan12ms.com/regular-expressions-for.html"></link>
<id>urn:uuid:efeadc31-96a9-15ca-8d99-a1f9f2d37669</id>
</entry>
<entry>
<title>Evaluation Of Expressions In PHP (as of 7.4)</title>
<updated>2021-03-20T08:00:00+00:00</updated>
<link href="https://lessthan12ms.com/expression-evaluation-php.html"></link>
<id>urn:uuid:6efad17a-8aa5-9903-746e-dde8ccb8a4a2</id>
</entry>
<entry>
<title>Expensive Code (Maintainable PHP Backend 1/3)</title>
<updated>2020-02-21T08:00:00+00:00</updated>
<link href="https://lessthan12ms.com/expensive-code.html"></link>
<id>urn:uuid:ab539dec-4b3d-50d7-1226-036f4e2ec1ce</id>
</entry>
<entry>
<title>MVC and the Web</title>
<updated>2019-11-05T08:00:00+00:00</updated>
<link href="https://lessthan12ms.com/mvc.html"></link>
<id>urn:uuid:896d16b9-a389-3eca-6293-5efc3b467dad</id>
</entry>
<entry>
<title>The Discipline Of Software Development</title>
<updated>2019-10-19T00:00:00+00:00</updated>
<link href="https://lessthan12ms.com/software-development-discipline.html"></link>
<id>urn:uuid:fe1aeda4-698d-90df-5f5b-aa4cdd62fed1</id>
</entry>
<entry>
<title>Docker + PHP + Xdebug + PHPStorm = Good Developer Experience</title>
<updated>2019-07-09T14:52:16+00:00</updated>
<link href="https://lessthan12ms.com/docker-php-xdebug-phpstorm-good-developer-experience.html"></link>
<id>urn:uuid:8173c66d-aa80-9abb-857d-b200bcb275bb</id>
</entry>
<entry>
<title>OpenAPI with PHP - documenting and testing API automatically</title>
<updated>2019-05-03T18:01:00+00:00</updated>
<link href="https://lessthan12ms.com/openapi-with-php-documenting-and-testing-api-automatically.html"></link>
<id>urn:uuid:39c66862-2edb-dec6-a1a7-bafc23693a42</id>
</entry>
<entry>
<title>Data locking strategies in PHP apps. Practical approach</title>
<updated>2019-03-18T13:11:00+00:00</updated>
<link href="https://lessthan12ms.com/data-locking-strategies-in-php-apps-practical-approach.html"></link>
<id>urn:uuid:d480c116-32b8-b30e-ce1f-e58cb590db8c</id>
</entry>
<entry>
<title>Value Objects in PHP</title>
<updated>2018-12-02T19:50:00+00:00</updated>
<link href="https://lessthan12ms.com/value-objects-in-php.html"></link>
<id>urn:uuid:2fba5a98-22fb-c172-d521-d6962f84f58f</id>
</entry>
<entry>
<title>How Active Record harms domain logic</title>
<updated>2018-11-22T12:42:00+00:00</updated>
<link href="https://lessthan12ms.com/how-active-record-harms-domain-logic.html"></link>
<id>urn:uuid:81310c3a-13af-fb63-2ecc-fe6925f3ca50</id>
</entry>
<entry>
<title>Think &quot;frameworkless&quot;</title>
<updated>2018-11-07T11:36:00+00:00</updated>
<link href="https://lessthan12ms.com/think-frameworkless.html"></link>
<id>urn:uuid:6057698b-1554-179e-c843-a3afceb8629b</id>
</entry>
<entry>
<title>PHP Cache - practical, reliable, multi driver, multilevel chainable cache</title>
<updated>2018-08-31T16:18:00+00:00</updated>
<link href="https://lessthan12ms.com/php-cache-practical-reliable-multi-driver-multilevel-chainable-cache.html"></link>
<id>urn:uuid:01fa68a2-3d9f-f2ae-5f0d-91a960e20b9c</id>
</entry>
<entry>
<title>PHP 7: Zend Certified Engineer Exam (ZCE)</title>
<updated>2018-08-15T09:40:00+00:00</updated>
<link href="https://lessthan12ms.com/php-7-zend-certified-engineer-exam-zce.html"></link>
<id>urn:uuid:f422a03a-f919-f1d0-3e90-a51ee82d5277</id>
</entry>
<entry>
<title>A hacker and a nerd  - the two hats of engineers</title>
<updated>2018-05-26T19:15:00+00:00</updated>
<link href="https://lessthan12ms.com/a-hacker-and-a-nerd-the-two-hats-of-engineers.html"></link>
<id>urn:uuid:37aef14b-0bd9-bdbd-16ae-55ca5788477c</id>
</entry>
<entry>
<title>Validation is documentation</title>
<updated>2018-05-18T17:14:00+00:00</updated>
<link href="https://lessthan12ms.com/validation-is-documentation.html"></link>
<id>urn:uuid:8d084752-4129-074d-60af-29215e9b18d5</id>
</entry>
<entry>
<title>Frameworkless foundation of your PHP application</title>
<updated>2018-02-14T18:36:00+00:00</updated>
<link href="https://lessthan12ms.com/frameworkless-foundation-of-your-php-application.html"></link>
<id>urn:uuid:29f41999-ef4e-6917-89c4-fab8b13923e8</id>
</entry>
<entry>
<title>PHP Array validation gets simpler</title>
<updated>2018-01-14T23:32:00+00:00</updated>
<link href="https://lessthan12ms.com/php-array-validation-gets-simpler.html"></link>
<id>urn:uuid:c036289e-2da3-c8aa-7609-890cf9aa2f70</id>
</entry>
<entry>
<title>Nginx to cache dynamic PHP(Laravel) pages. Make your website partly static and reduce response time.</title>
<updated>2017-12-29T23:51:00+00:00</updated>
<link href="https://lessthan12ms.com/nginx-to-cache-dynamic-phplaravel-pages-make-your-website-partly-static-and-reduce-response-time.html"></link>
<id>urn:uuid:b4248f58-da01-c0ba-3fa4-4de2f6d46692</id>
</entry>
<entry>
<title>Clean Laravel app with Prooph message bus</title>
<updated>2017-12-26T20:21:00+00:00</updated>
<link href="https://lessthan12ms.com/clean-laravel-app-with-prooph-message-bus.html"></link>
<id>urn:uuid:f9a51570-3146-69bd-0c64-76267e534769</id>
</entry>
<entry>
<title>Request handler as a gateway to your backend – keep your code clean</title>
<updated>2017-09-24T12:37:00+00:00</updated>
<link href="https://lessthan12ms.com/request-handler-as-a-gateway-to-your-backend-keep-your-code-clean.html"></link>
<id>urn:uuid:0878dc5a-7751-fffb-39f7-729c333be87c</id>
</entry>
<entry>
<title>How to log(see, view) every HTTP request and response in Laravel</title>
<updated>2017-07-17T23:33:00+00:00</updated>
<link href="https://lessthan12ms.com/how-to-log-every-http-request-and-response-in-laravel.html"></link>
<id>urn:uuid:d45c4de0-d207-78d8-3fce-6bd0d68a4677</id>
</entry>
<entry>
<title>How to validate(check) a php array format (structure)</title>
<updated>2017-06-19T16:04:00+00:00</updated>
<link href="https://lessthan12ms.com/how-to-validate-a-php-array-format-structure.html"></link>
<id>urn:uuid:4c54e28c-52d0-8b82-8f2a-f992a4777136</id>
</entry>
<entry>
<title>Error handling in PHP and formatting pretty error responses to users</title>
<updated>2017-05-10T16:12:00+00:00</updated>
<link href="https://lessthan12ms.com/error-handling-in-php-and-formatting-pretty-error-responses-to-users.html"></link>
<id>urn:uuid:7bb87601-935d-3d78-1a87-125fc5576a51</id>
</entry>
<entry>
<title>Authorization and authentication in clean architecture</title>
<updated>2017-05-08T18:07:00+00:00</updated>
<link href="https://lessthan12ms.com/authorization-and-authentication-in-clean-architecture.html"></link>
<id>urn:uuid:e5528a38-97fe-cc80-f737-40618f7271a4</id>
</entry>
<entry>
<title>When clean architecture is not worth it</title>
<updated>2017-05-06T10:16:00+00:00</updated>
<link href="https://lessthan12ms.com/when-clean-architecture-is-not-worth-it.html"></link>
<id>urn:uuid:764894a1-cf08-adcf-f8a9-43a66aa30604</id>
</entry>
<entry>
<title>Clean architecture links</title>
<updated>2017-05-02T19:02:00+00:00</updated>
<link href="https://lessthan12ms.com/clean-architecture-links.html"></link>
<id>urn:uuid:0975a034-33b2-92a3-a6a6-76dedddd4eac</id>
</entry>
<entry>
<title>Clean architecture implemented as a PHP app</title>
<updated>2017-04-30T22:05:00+00:00</updated>
<link href="https://lessthan12ms.com/clean-architecture-implemented-as-a-php-app.html"></link>
<id>urn:uuid:43a0cb70-9c73-6f6e-34da-203ba369783d</id>
</entry>
<entry>
<title>Clean exceptions with logging and translation</title>
<updated>2017-04-08T22:31:00+00:00</updated>
<link href="https://lessthan12ms.com/clean-exceptions-with-logging-and-translation.html"></link>
<id>urn:uuid:a07c9a39-94d7-2095-7497-d95901f0bd38</id>
</entry>
<entry>
<title>One step towards clean architecture from rapid application development</title>
<updated>2017-03-13T21:24:00+00:00</updated>
<link href="https://lessthan12ms.com/one-step-towards-clean-architecture-from-rapid-application-development.html"></link>
<id>urn:uuid:6a66cf34-b192-ce30-6a01-6113169c0953</id>
</entry>
<entry>
<title>Why I need a bigger monitor (monitors set) to improve quality of my code?</title>
<updated>2017-01-24T10:13:00+00:00</updated>
<link href="https://lessthan12ms.com/why-i-need-a-bigger-monitor-monitors-set-to-improve-quality-of-my-code.html"></link>
<id>urn:uuid:6b3dfbb6-8d72-365c-6bb0-01f2cfd50436</id>
</entry>
<entry>
<title>My PHP code structure should tell you what it does - or how do I show project's intents to my teammates?</title>
<updated>2017-01-01T17:15:00+00:00</updated>
<link href="https://lessthan12ms.com/my-php-code-structure-should-tell-you-what-it-does-or-how-do-i-show-projects-intents-to-my-teammates.html"></link>
<id>urn:uuid:bcc73da8-9b1d-49ef-82b0-6c257285e9cc</id>
</entry>
<entry>
<title>Don't trust files users upload to your server</title>
<updated>2016-10-02T15:29:00+00:00</updated>
<link href="https://lessthan12ms.com/dont-trust-files-users-upload-to-your-server.html"></link>
<id>urn:uuid:3175c395-2b89-4dfe-1ef1-fc620e7ad954</id>
</entry>
<entry>
<title>Save all dates in UTC for multi timezone apps</title>
<updated>2016-08-29T15:58:00+00:00</updated>
<link href="https://lessthan12ms.com/save-all-dates-in-utc-for-multi-timezone-apps.html"></link>
<id>urn:uuid:7a41d1df-22c1-0264-fe2d-d98bff66ebce</id>
</entry>
<entry>
<title>Protect your site from ddos with free built-in nginx feature ngx_http_limit_req_module</title>
<updated>2016-05-02T05:56:00+00:00</updated>
<link href="https://lessthan12ms.com/protect-your-site-from-ddos-with-free-built-in-nginx-feature-ngx-http-limit-req-module.html"></link>
<id>urn:uuid:191e5bff-2ba8-1500-b96c-ea055d9cf5c4</id>
</entry>
</feed>