41554 blogs · [ { "id": "01a08c56-ed22-73a2-80b0-bd37e690358d", "title": "How to Scope Your PHP Tool in 10 Steps", "url": "https://tomasvotruba.com/blog/how-to-scope-your-php-tool-in-10-steps", "published_at": "2021-07-08T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37e6c1ea70", "title": "Why do we Scope PHP Tools", "url": "https://tomasvotruba.com/blog/why-do-we-scope-php-tools", "published_at": "2021-07-05T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37e7835f35", "title": "How to Replace Single Node with Two Nodes in Abstract Syntax Tree", "url": "https://tomasvotruba.com/blog/how-to-replace-single-node-with-two-nodes-in-abstract-syntax-tree", "published_at": "2021-06-28T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37e85236e7", "title": "How to make Upgrade Safe with Bridge Testing", "url": "https://tomasvotruba.com/blog/how-to-make-upgrade-safe-with-bridge-testing", "published_at": "2021-06-21T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37e88d5ed0", "title": "Doctrine Annotations and Attributes Living Together in Peace", "url": "https://tomasvotruba.com/blog/doctrine-annotations-and-attributes-living-together-in-peace", "published_at": "2021-06-14T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37e91933be", "title": "Why Should We Talk about Our Mistakes in PHP Community", "url": "https://tomasvotruba.com/blog/why-should-we-talk-about-our-mitakes-in-php-community", "published_at": "2021-06-07T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37e96ac938", "title": "How I Redesigned my Website the Way I Refactor Legacy Projects", "url": "https://tomasvotruba.com/blog/how-i-redesigned-my-website-the-way-i-refactor-legacy-projects", "published_at": "2021-06-03T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37e97b1023", "title": "How to Refactor Custom Doctrine Annotations to Attributes", "url": "https://tomasvotruba.com/blog/how-to-refactor-custom-doctrine-annotations-to-attributes", "published_at": "2021-05-31T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37e98b41a0", "title": "How Exception to the Convention Does More Harm than Good", "url": "https://tomasvotruba.com/blog/how-exception-to-the-convention-does-more-harm-than-good", "published_at": "2021-05-24T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37ea5fedfb", "title": "Rector - The Power of Automated Refactoring Book Released", "url": "https://tomasvotruba.com/blog/rector-the-power-of-automated-refactoring-book-released", "published_at": "2021-05-17T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37eaea537f", "title": "Write GitHub Actions for Gitlab Too", "url": "https://tomasvotruba.com/blog/write-github-actions-for-gitlab-too", "published_at": "2021-05-10T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37eb07b021", "title": "PHPStan Generics for Dummies - With 2 Parents", "url": "https://tomasvotruba.com/blog/phpstan-generics-for-dummies-with-two-parents", "published_at": "2021-05-03T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37eb255d78", "title": "Dependency Juggling Code Smell", "url": "https://tomasvotruba.com/blog/dependency-juggling-code-smell", "published_at": "2021-04-26T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37ebb4e3e3", "title": "How can We use GitHub Actions in Gitlab", "url": "https://tomasvotruba.com/blog/how-can-we-use-github-actions-in-gitlab", "published_at": "2021-04-19T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37ec36b96c", "title": "2 Ways to Write Big Numbers More Readable", "url": "https://tomasvotruba.com/blog/2ways-to-write-big-numbers-more-readable", "published_at": "2021-04-12T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37ecf479bf", "title": "Monorepo Split GitHub Action 2.0 with Gitlab split is Out!", "url": "https://tomasvotruba.com/blog/monorepo-split-github-action-20-with-gitlab-split-is-out", "published_at": "2021-04-05T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37ed6c46ad", "title": "How to Traverse PHPDoc and Modify It", "url": "https://tomasvotruba.com/blog/how-to-traverse-phpdoc-and-modify-it", "published_at": "2021-03-29T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37edf11b1e", "title": "Never Forget Symfony Config Options Again", "url": "https://tomasvotruba.com/blog/never-forget-symfony-config-options-again", "published_at": "2021-03-15T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37ee3fd947", "title": "It's not Null, it's Enum", "url": "https://tomasvotruba.com/blog/its-not-null-null-its-enum", "published_at": "2021-02-22T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37ee77dfc0", "title": "Tree Coding vs. Bush Coding", "url": "https://tomasvotruba.com/blog/2021/02/11/tree-coding-vs-bush-coding", "published_at": "2021-02-11T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37eeacc18c", "title": "Why Coding Standards Should Not Be Part of CI", "url": "https://tomasvotruba.com/blog/2020/12/28/why-coding-standards-should-not-be-part-of-ci", "published_at": "2020-12-28T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37ef0316e1", "title": "5 New Combos opened by Symfony 5.2 and PHP 8.0", "url": "https://tomasvotruba.com/blog/2020/12/21/5-new-combos-opened-by-symfony-52-and-php-80", "published_at": "2020-12-21T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37efea8bc7", "title": "New in Symplify 9: More than 110 PHPStan Rules", "url": "https://tomasvotruba.com/blog/2020/12/14/new-in-symplify-9-more-than-110-phpstan-rules", "published_at": "2020-12-14T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37f023982c", "title": "New in Symplify 9: Documentation Generator for PHP CS Fixer, Code Sniffer, PHPStan and Rector Rules", "url": "https://tomasvotruba.com/blog/2020/11/30/new-in-symplify-9-documentation-generator-for-php-cs-fixer-code-sniffer-phpstan-rector-rules", "published_at": "2020-11-30T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37f0cab498", "title": "How to make a Dynamic Matrix in GitHub Actions", "url": "https://tomasvotruba.com/blog/2020/11/16/how-to-make-dynamic-matrix-in-github-actions", "published_at": "2020-11-16T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37f0e7c00a", "title": "How to Split Test Monorepo with Composer 2", "url": "https://tomasvotruba.com/blog/2020/10/19/how-to-split-test-monorepo-with-composer-2", "published_at": "2020-10-19T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37f12c373d", "title": "How We Stopped Merging Pull Requests", "url": "https://tomasvotruba.com/blog/2020/10/12/how-we-stopped-merging-pull-requests", "published_at": "2020-10-12T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37f13c8fc6", "title": "How to Add Colors to Continuous Integration Output", "url": "https://tomasvotruba.com/blog/2020/09/28/how-to-add-colors-to-continuous-integration-output", "published_at": "2020-09-28T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37f18301cf", "title": "Symfony AutoBind Parameter is Dead, Long live Constant Parameters", "url": "https://tomasvotruba.com/blog/2020/09/21/symfony-autobind-parameter-is-dead-long-live-constant-parameters", "published_at": "2020-09-21T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37f18d63ee", "title": "How to Apply Coding Standard on PHP Snippets in Markdown Files", "url": "https://tomasvotruba.com/blog/2020/09/14/how-to-apply-coding-standard-on-php-snippets-in-markdown-files", "published_at": "2020-09-14T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37f1bbe1ba", "title": "How Static Methods Kill You Like Corona", "url": "https://tomasvotruba.com/blog/2020/08/31/how-static-methods-kills-you-like-corona", "published_at": "2020-08-31T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37f298c796", "title": "What if We Remove Strings from Symfony Extension Configuration", "url": "https://tomasvotruba.com/blog/2020/08/24/what-if-we-remove-strings-from-symfony-extension-configuratoin", "published_at": "2020-08-24T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37f3080e23", "title": "How to Get Rid of Magic, Static and Chaos from Latte Filters", "url": "https://tomasvotruba.com/blog/2020/08/17/how-to-get-rid-of-magic-static-and-chaos-from-latte-filters", "published_at": "2020-08-17T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37f3a1fe57", "title": "How to Give Away 1500 € in 1 Tweet and Help 25 People Learn Something New", "url": "https://tomasvotruba.com/blog/2020/08/03/how-give-away-1500-eur--in-1-tweet-and-help-25-people-learn-something-new", "published_at": "2020-08-03T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37f456b12f", "title": "How to Switch from YAML Configs to PHP Today with Symplify", "url": "https://tomasvotruba.com/blog/2020/07/27/how-to-switch-from-yaml-xml-configs-to-php-today-with-migrify", "published_at": "2020-07-27T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37f473a9cb", "title": "How to Update Hundreds of Test Fixtures with Single PHPUnit run", "url": "https://tomasvotruba.com/blog/2020/07/20/how-to-update-hundreds-of-test-fixtures-with-single-phpunit-run", "published_at": "2020-07-20T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37f5338b11", "title": "10 Cool Features You Get after switching from YAML to PHP Configs", "url": "https://tomasvotruba.com/blog/2020/07/16/10-cool-features-you-get-after-switching-from-yaml-to-php-configs", "published_at": "2020-07-16T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37f5dabb0f", "title": "The most Effective Test I found in 7 years of Testing", "url": "https://tomasvotruba.com/blog/2020/07/13/the-most-effetive-test-i-found-in-7-years-of-testing", "published_at": "2020-07-13T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37f6af4e08", "title": "Cleaning Lady Notes: From Class Mess to PSR-4 Step by Step With Confidence", "url": "https://tomasvotruba.com/blog/2020/07/06/cleaning-lady-notes-from-class-mess-to-psr4-step-by-step-with-confidence", "published_at": "2020-07-06T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37f7240eec", "title": "How to Patch a Package in Vendor, Yet Allow its Updates", "url": "https://tomasvotruba.com/blog/2020/07/02/how-to-patch-package-in-vendor-yet-allow-its-updates", "published_at": "2020-07-02T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37f725f503", "title": "How Will Programming look like in 2025", "url": "https://tomasvotruba.com/blog/2020/06/29/how-will-programming-look-like-in-2025", "published_at": "2020-06-29T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37f79fc175", "title": "Why Class Constants Should be Typed", "url": "https://tomasvotruba.com/blog/2020/06/22/why-class-constants-should-be-typed", "published_at": "2020-06-22T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37f8279702", "title": "Drop RobotLoader and let Composer Deal with Autoloading", "url": "https://tomasvotruba.com/blog/2020/06/08/drop-robot-loader-and-let-composer-deal-with-autoloading", "published_at": "2020-06-08T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37f8a2efbe", "title": "The Bulletproof Event Naming For Symfony Event Dispatcher", "url": "https://tomasvotruba.com/blog/2020/05/25/the-bulletproof-event-naming-for-symfony-event-dispatcher", "published_at": "2020-05-25T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37f990269b", "title": "The Future of Pehapkari Meetups and Training - You", "url": "https://tomasvotruba.com/blog/2020/05/18/the-future-of-pehapkari-meetups-and-trainings-you", "published_at": "2020-05-18T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37fa660b3e", "title": "How to Upgrade to Symplify 8 - From Sniffs to PHPStan Rules", "url": "https://tomasvotruba.com/blog/2020/05/04/how-to-upgrade-to-symplify-8-from-sniffs-to-phpstan-rules", "published_at": "2020-05-04T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37fb556e65", "title": "How to Hydrate Arrays to Objects via Constructor", "url": "https://tomasvotruba.com/blog/2020/04/20/how-to-hydrate-arrays-to-objects-via-constructor", "published_at": "2020-04-20T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37fbe57e85", "title": "How to Migrate Spaghetti to 304 Symfony 5 Controllers Over Weekend", "url": "https://tomasvotruba.com/blog/2020/04/13/how-to-migrate-spaghetti-to-304-symfony-5-controllers-over-weekend", "published_at": "2020-04-13T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37fc281c07", "title": "Doctrine Entity Typed Properties With PHP 7.4", "url": "https://tomasvotruba.com/blog/2020/03/23/doctrine-entity-typed-properties-with-php74", "published_at": "2020-03-23T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37fcd1c1b5", "title": "Art of Letting Go", "url": "https://tomasvotruba.com/blog/2020/03/09/art-of-letting-go", "published_at": "2020-03-09T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37fd96d789", "title": "We Do Not Need Senior Developers, We Need Senior Codebases", "url": "https://tomasvotruba.com/blog/2020/03/02/we-do-not-need-senior-developers-we-need-senior-code-bases", "published_at": "2020-03-02T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37fe6161aa", "title": "How to Test Monorepo After Split Before Actual Split", "url": "https://tomasvotruba.com/blog/2020/02/10/how-to-test-monorepo-after-split-before-actual-split", "published_at": "2020-02-10T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37ff29648f", "title": "How to run Rector and PHPStan on Huge Project in 3 Seconds with PHPStorm", "url": "https://tomasvotruba.com/blog/2020/02/03/how-to-run-rector-and-phpstan-on-huge-project-in-3-seconds-with-phpstorm", "published_at": "2020-02-03T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37ff78afa6", "title": "Switch Travis to GitHub Actions to Reduce Stress", "url": "https://tomasvotruba.com/blog/2020/01/27/switch-travis-to-github-actions-to-reduce-stress", "published_at": "2020-01-27T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd37ffe36370", "title": "Why is First Instant Feedback Crucial to Developers", "url": "https://tomasvotruba.com/blog/2020/01/13/why-is-first-instant-feedback-crucial-to-developers", "published_at": "2020-01-13T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd3800a46d48", "title": "Migrate Gedmo to KnpLabs", "url": "https://tomasvotruba.com/blog/2020/01/06/migrate-gedmo-to-knplabs", "published_at": "2020-01-06T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd3800e7a7ee", "title": "Doctrine Behaviors 2.0 - Reloaded", "url": "https://tomasvotruba.com/blog/2019/12/30/doctrine-behaviors-2-0-reloaded", "published_at": "2019-12-30T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd38016cac68", "title": "5 Things I Improve when I Get to new Repository", "url": "https://tomasvotruba.com/blog/2019/12/23/5-things-i-improve-when-i-get-to-new-repository", "published_at": "2019-12-23T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd38018c0e95", "title": "8 Steps You Can Make Before Huge Upgrade to Make it Faster, Cheaper and More Stable", "url": "https://tomasvotruba.com/blog/2019/12/16/8-steps-you-can-make-before-huge-upgrade-to-make-it-faster-cheaper-and-more-stable", "published_at": "2019-12-16T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd380203dd25", "title": "How to Get Rid of Technical Debt or What We Would Have Done Differently 2 Years ago", "url": "https://tomasvotruba.com/blog/2019/12/09/how-to-get-rid-of-technical-debt-or-what-we-would-have-done-differently-2-years-ago", "published_at": "2019-12-09T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd3802948a22", "title": "The Single Best Skill to Master Command Line", "url": "https://tomasvotruba.com/blog/2019/11/25/the-single-best-skill-to-master-command-line", "published_at": "2019-11-25T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd38037c378a", "title": "How to Delegate Code Reviews to CI", "url": "https://tomasvotruba.com/blog/2019/11/18/how-to-delegate-code-reviews-to-ci", "published_at": "2019-11-18T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd380401ce57", "title": "From 0 Doc Types to Full Type Declaration with Dynamic Analysis", "url": "https://tomasvotruba.com/blog/2019/11/11/from-0-doc-types-to-full-type-declaration-with-dynamic-analysis", "published_at": "2019-11-11T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd380490de8b", "title": "Still on PHPUnit 4 Come to PHPUnit 8 Together in a Day", "url": "https://tomasvotruba.com/blog/2019/11/04/still-on-phpunit-4-come-to-phpunit-8-together-in-a-day", "published_at": "2019-11-04T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd38057ab6a0", "title": "How we Migrated 54 357-lines Application from Nette to Symfony in 2 People under 80 Hours", "url": "https://tomasvotruba.com/blog/2019/08/26/how-we-migrated-54-357-lines-of-code-nette-to-symfony-in-2-people-under-80-hours", "published_at": "2019-08-26T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd3805ac1970", "title": "How we Completed Thousands of Missing @var Annotations in a Day", "url": "https://tomasvotruba.com/blog/2019/07/29/how-we-completed-thousands-of-missing-var-annotations-in-a-day", "published_at": "2019-07-29T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd3806124dcf", "title": "How to Convert Listeners to Subscribers and Reduce your Configs", "url": "https://tomasvotruba.com/blog/2019/07/22/how-to-convert-listeners-to-subscribers-and-reduce-your-configs", "published_at": "2019-07-22T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd3806665aa3", "title": "Why use One-Time Migration Scripts", "url": "https://tomasvotruba.com/blog/2019/07/15/why-use-one-time-migration-scripts", "published_at": "2019-07-15T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd38074d2712", "title": "7 Tips to Write Flawless Issue Reports on Github", "url": "https://tomasvotruba.com/blog/2019/07/08/7-tips-to-write-flawless-issue-report-on-github", "published_at": "2019-07-08T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd380848e490", "title": "5 Workflow Tips every PHP Developer Should Know", "url": "https://tomasvotruba.com/blog/2019/07/01/5-workflow-tips-every-php-developer-should-know", "published_at": "2019-07-01T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd380907ea3e", "title": "Do you use PHP_CodeSniffer and PHP CS Fixer PHPStorm Plugin You are Slow and Expensive", "url": "https://tomasvotruba.com/blog/2019/06/24/do-you-use-php-codesniffer-and-php-cs-fixer-phpstorm-plugin-you-are-slow-and-expensive", "published_at": "2019-06-24T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd38098aa666", "title": "Don't Ever use Symfony Listeners", "url": "https://tomasvotruba.com/blog/2019/05/16/don-t-ever-use-listeners", "published_at": "2019-05-16T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd380a0b746c", "title": "Alias as a Code Smell", "url": "https://tomasvotruba.com/blog/2019/05/02/alias-as-a-code-smell", "published_at": "2019-05-02T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd380a478aa5", "title": "Rector European Tour in May & June 2019", "url": "https://tomasvotruba.com/blog/2019/04/29/rector-european-tour-in-may-june-2019", "published_at": "2019-04-29T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd380ae43b78", "title": "Don't Give Up Your PHP Code for Compiler Passes so Easily", "url": "https://tomasvotruba.com/blog/2019/04/25/don-t-give-up-your-php-code-for-compiler-passes-so-easily", "published_at": "2019-04-25T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd380b425175", "title": "Symfony 4.2 is used Twice More than Symfony 3.4", "url": "https://tomasvotruba.com/blog/2019/04/18/symfony-4-2-is-used-2-times-more-than-symfony-3-4", "published_at": "2019-04-18T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd380bdc252f", "title": "Pattern Refactoring", "url": "https://tomasvotruba.com/blog/2019/04/15/pattern-refactoring", "published_at": "2019-04-15T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd380beb982b", "title": "What You Lose by Switching to Symfony", "url": "https://tomasvotruba.com/blog/2019/04/08/what-you-lose-by-switching-to-symfony", "published_at": "2019-04-08T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd380c840f19", "title": "How to Upgrade Twig from Underscored to Namespaces", "url": "https://tomasvotruba.com/blog/2019/04/04/how-to-upgrade-twig-from-underscored-to-namespaces", "published_at": "2019-04-04T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd380d28c73c", "title": "Removing Static - There and Back Again", "url": "https://tomasvotruba.com/blog/2019/04/01/removing-static-there-and-back-again", "published_at": "2019-04-01T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd380d546de6", "title": "How to Mock Final Classes in PHPUnit", "url": "https://tomasvotruba.com/blog/2019/03/28/how-to-mock-final-classes-in-phpunit", "published_at": "2019-03-28T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd380dd3400e", "title": "How to Instantly Migrate Nette\\Tester to PHPUnit", "url": "https://tomasvotruba.com/blog/2019/03/25/how-to-instantly-migrate-nette-tester-to-phpunit", "published_at": "2019-03-25T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd380e69da91", "title": "How to Migrate PhpSpec to PHPUnit", "url": "https://tomasvotruba.com/blog/2019/03/21/how-to-instantly-migrate-phpspec-to-phpunit", "published_at": "2019-03-21T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd380ee5cc9c", "title": "How to Detect Dead PHP Code in Code Review in 7 Snippets", "url": "https://tomasvotruba.com/blog/2019/03/18/how-to-detect-dead-php-code-in-code-review-in-7-snippets", "published_at": "2019-03-18T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd380f6db0ba", "title": "Why we Migrated from Nette to Symfony in 3 Weeks - Part 3 - Brain Drain Dead Packages-Lock", "url": "https://tomasvotruba.com/blog/2019/03/11/why-we-migrated-from-nette-to-symfony-in-3-weeks-part-3", "published_at": "2019-03-11T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd380fcac50e", "title": "Why we Migrated from Nette to Symfony in 3 Weeks - Part 2 - Escaping Semantic Hell", "url": "https://tomasvotruba.com/blog/2019/03/07/why-we-migrated-from-nette-to-symfony-in-3-weeks-part-2", "published_at": "2019-03-07T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd38100678e1", "title": "How to turn Laravel from Static to Dependency Injection in one Day", "url": "https://tomasvotruba.com/blog/2019/03/04/how-to-turn-laravel-from-static-to-dependency-injection-in-one-day", "published_at": "2019-03-04T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd381029df64", "title": "How to Upgrade Symfony 2.8 to 3.4", "url": "https://tomasvotruba.com/blog/2019/02/28/how-to-upgrade-symfony-2-8-to-3-4", "published_at": "2019-02-28T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd38110d338b", "title": "5 Tips to Effective Work with Github Repository", "url": "https://tomasvotruba.com/blog/2019/02/25/5-tips-to-effective-work-with-github-repository", "published_at": "2019-02-25T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd3811283fa8", "title": "How we Migrated from Nette to Symfony in 3 Weeks - Part 1", "url": "https://tomasvotruba.com/blog/2019/02/21/how-we-migrated-from-nette-to-symfony-in-3-weeks-part-1", "published_at": "2019-02-21T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd3811fb604a", "title": "Why Config Coding Sucks", "url": "https://tomasvotruba.com/blog/2019/02/14/why-config-coding-sucks", "published_at": "2019-02-14T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd3812b9cc20", "title": "New in Rector: Asterisk Type Match", "url": "https://tomasvotruba.com/blog/2019/02/04/new-in-rector-asterisk-type-match", "published_at": "2019-02-04T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd3812ca3a2c", "title": "2 Files that Your Symfony Application Misses", "url": "https://tomasvotruba.com/blog/2019/01/28/2-files-that-your-symfony-application-misses", "published_at": "2019-01-28T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd381359ae07", "title": "How to Kill Parents", "url": "https://tomasvotruba.com/blog/2019/01/24/how-to-kill-parents", "published_at": "2019-01-24T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd381387fc14", "title": "How Writing Posts Helps you to Become Better Programmer", "url": "https://tomasvotruba.com/blog/2019/01/17/how-writing-posts-helps-you-to-become-better-programmer", "published_at": "2019-01-17T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd3814609084", "title": "Your Most Favorite Posts in 2018", "url": "https://tomasvotruba.com/blog/2018/12/31/your-most-favorite-posts-in-2018", "published_at": "2018-12-31T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd3814acf3f6", "title": "How To Convert All Your Symfony Service Configs to Autodiscovery", "url": "https://tomasvotruba.com/blog/2018/12/27/how-to-convert-all-your-symfony-service-configs-to-autodiscovery", "published_at": "2018-12-27T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd38154a4849", "title": "Thank You", "url": "https://tomasvotruba.com/blog/2018/12/24/thank-you", "published_at": "2018-12-24T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd3815cf2adf", "title": "Function create_function() is Deprecated in PHP 7.2 - How to Migrate", "url": "https://tomasvotruba.com/blog/2018/12/17/function-create-function-is-deprecated-in-php-72-how-to-migrate", "published_at": "2018-12-17T00:00:00+00:00" }, { "id": "01a08c56-ed22-73a2-80b0-bd38162ad61c", "title": "Kirill Smelov's PHPStorm Tips in 9 Gifs", "url": "https://tomasvotruba.com/blog/2018/12/13/kirill-smelov-s-phpstorm-tips-in-9-gifs", "published_at": "2018-12-13T00:00:00+00:00" } ] posts Claim your blog
Back to tomasvotruba.com
Blog · corpus.blog/blogs/tomasvotruba.com/posts

tomasvotruba.com

tomasvotruba.com

2021

2020

2019

2018