Links from 2015 27/01/2016
TL;DR: Links I tweeted during 2015
It's funny how old principles are still useful today. In 2015, the most important ones I've learned are the following:
- Command/Query Responsibility Segregation (CQRS): separate the "read" logic from the "write" logic
- Event Sourcing (ES): recording every action done for analytics and rollback purpose
- Command Bus: store and validate input in a Command object, pass it to a Command Bus middleware that will find and execute the appropriate Command Handler which will execture the logic
- Framework / Library agnosticism: decouple from vendors to be able to change/upgrade them without friction
- microservices: reduce the scope of an API, organize them into a communicating network
- Monolithic Repository: store related applications in the same git repository
It was a year full of links, so here they are!
Articles Highlight
- Using logs to build a solid data infrastructure, or why dual writes are a bad idea
- Targeting broad queries in search
Tools Highlight
- Puli:
- Refactoring Browser:
- Humbug:
- Tactician, the PHP Command Bus:
- The log file navigator
- UUID:
- Pomm:
Interesting Talks
- Monolithic Repository:
- Doctrine:
- PHP Interoperability:
- Desgin:
- Symfony killed me
- Logs hunting
- Scaling Symofny apps with RabbitMq
- Breaking boundaries with FastCGI Symfony
- in french: Monitorer sa prod
Tests:
- Test Driven Desing (TDD):
- Economy of tests
- Your test suite is useless
- Specs VS Tests
- Just say no to more end to end tests
- Testing is not a choice
- Coupling tests
- Open letter from an ignored test
- Single source of truth
- Introducing BDD
- Eradicating Non-Determinism in Tests
PHP Interoperability
- PSR 7:
- PSR 7 Container Interop = cross framework module system
- PSR 11 use cases
- PSR 11, performance impact of the delegate look-up feature
- PHP Security PSR 9 and 10
- PSR-What? Shared Standards for a Bright Future
Pet projects
- Redaktilo 1.7
- Stack middleware to rollback database transactions
- Memio:
- Symfony Micro Framework:
Design Patterns
- The Repository pattern
- DTO vs Value Object vs POCO
- Decoupling architecture and domain with repositories
- Repositories On Top UnitOfWork Are Not a Good Idea
microservice
- Microservice Premium
- Monolith First
- Don't start with a monolith
- Is REST best microservices
- Microservices trade offs
- You're not going to do microservices
Refactoring
- Refactoring external service
- Refactoring the cat API client:
Keep it Simple
OOP
Git
- The beginners guide to rebasing your PR
- The magical and not harmful rebase
- Git's interractive patch mode
- Git disciplined
- Utter Disregard for Git Commit History
Security
- A few things about Redis security
- The Web Authentication Arms Race – A Tale of Two Security Experts
- Secure authentication PHP with long term persistence
PostgreSQL
- What PostgreSQL has over other Open Source SQL databases:
- A better ID generator for PostgreSQL
- Faster JSON generation with PostgreSQL
- Goodbye MongoDB, hello PostgreSQL
REST
Performance
- 5 Doctrine ORM performance traps you should avoid
- Essential macro optimizations to improve PHP performance
- 5 ways to optimize Symfony baseline performance
- PHP high performance
- Intproducting PHP FastCGI
- Why is uniqid slow?
Agile
- Transform your stand up
- They won't be interrested
- Does organization matter
- Modern extreme programming
- If pragmatism raises technical debt, call it over simplification
- Don't blindly follow
- The role of a senior developer
- The failure of agile
- Heisenberg developers
DDD
- To DDD or not to DDD, what to do if your domain is boring
- DDD revisited
- Why CRUD might be what they want but not what they need
Symfony
- Do not use FOSUserBundle
- Re-thinking event listeners
- Tagging Symfony services
- Symfony from scratch
- Structuring my application
- Your package dependencies
Misc
- Do not learn frameworks, lean the architecture
- Let the magic die
- Naming is hard, or is it?
- Setter anxiety
- Doing terrible things to your code
- Programming sucks
- Switching to generators
- ORMs under the hood
- Hexagonal
- Burnout
- Formatting exception messages
- Approaching coding style rationally
- Pipelines, imutability and privates