I often read something online and want to reference it weeks or months later. However I can never find it again. So here is where I leave all the interesting links I find that I don’t want to write an entire blog post about.
- How you can buy a elePHPant.
- Identify every breed of the PHP Elephpant with A filed Guide to Elephpants.
- Run PHP code agains almost every version of PHP ever released in one go with 3v4l.org. It even combines the output to make it easy to see the differences between versions.
- A really in depth look at comparing different ORM libraries in PHP: Objectively comparing ORM/DAL libraries.
- The Vancouver PHP user group had a Q&A session with Taylor Otwell.
- PHP-PM is a recently released alternative to PHP-FPM, written entirely in PHP. It looks pretty interesting and I’d like to play with it one day.
- A description of setting up a Makefile for PHP application. I love Makefiles, they’re quick and easy and allow all the commands you need to run in your project to come through a common interface.
- A super in depth look at how sessions work in PHP.
- How to effectively use generators.
- Ever wondered how a framework holds together? This post will walk you through building your own from open source components.
- A YouTube playlist of talks at the PHP UK Conference 2017.
- A YouTube playlist of talks at the PHP UK Conference 2018.
- Using classes and the
...token to create strictly typed arrays in PHP.
- A pretty long video explaining CQRS and event sourcing.
- A list of RSS feeds used by Freek Van der Herten to keep up to date with PHP.
- A hilarious article comparing PHP to 💩.
- Real world examples of array destructuring in PHP.
- A list of useful simple PHP snippets.
- A collection of PHP development tutorials.
- A cool benchmark of associative arrays vs stdClass vs named classes.
- Keep credentials secure in PHP.
- Concurrency in PHP with Swoole, essentially goroutines in PHP.
- Examples or implementing design patters in PHP.
- 7 reasons I switched back to PHP after 2 years on Rails.
- An explanation of exploiting stream wrappers.
- A simple explanation about how MVC routers work.
- Busting some myths about php performance.
- A YouTube playlist from the PHP fwdays’18 conference.
- Testing out a few ways to run serverless PHP.
- An argument for using the
iterabletype over the
- Use nginx to route requests between a xdebug container and a non-xdebug container to develop at full speed with xdebug.
- Fabian Potencier implementing a blockchan in PHP (video).
- Weird behaviour of strtotime().
- What’s new in PHP 7.3 using diffs.
- Thoughts on PHP 8.
- The story of PHP-istan vs. Ruby-istan and the differences between naked PHP warriors and those protected by powerful frameworks.
- Using bitmask constant arguments to pass multiple boolean flags in a single argument.
- Simple examples for how to refactor your legacy PHP code.
- Evolution of a PHP developer in code snippets.
- Picking the best string interpolation.
- A great explanation of security roles vs. voters.
- An overview of how the Symfony routing component works.
- Tips for fast, reliable tests in Symfony.
- Run Symfony command asynchronously with php-enqueue.
- CQRS is easy with the Symfony 4 Messenge Component.
- How to split your chucks with Webpack.
- The PHP Security Advent Calendar is a set of 24 code snippets you’re presented with and have to find the security vulnerability.
- A really great and in depth look at build secure PHP web applications by Paragon Initiative.
- Check if your site has an A+ security rating with securityheaders.com.
- Not sure what a content security policy is? Content Security Policy 101 has got your back.
- How to securely hash passwords in vanilla PHP.
- Troy Hunt on why your static site needs https.
- Troy Hunt on hack yourself first with a talk at Yow! Conference in 2014 and a free pluralsight course.
- Troy Hunt on Some Something Security at NDC 2017.
- Troy Hunt on building a reset password feature.
- A great article about paying down technical debt.
- A post about modular application architecture.
- How to use value objects like a pro to perfec your domain model.
- Examples of implementing common design patterns in PHP.
- A curated collection of project-based programming tutorials: Build your own X.
- A discussion about how object-oriented and functional programming can, and should be used together.
- A great way of combating legacy code by copy pasting a lot, allowing you to remove the original abstractions and come up with better ones.
- Awesome talk by Bob Martin about The Future of Programming.
- A community curated list of awesome tech talks.
- An awesomely hilarious post on how do deal with time and why it sucks.
- A quick read about the value of converting procedural code to OOP.
- Some concrete examples of how to stop using if statements.
- A book explaning Category Theory for Programmers.
- An article clearly explaining the Liskov Substitution Principle.
- An example of how to migrate legacy code to use dependency injection.
- A lecture by Bob Martin about SOLID principles of Object Oriented and Agile design.
- A quick explanation of the collector pattern.
- Why you should embrace the Majestic Monolith especially with a small team.
- What’s so great about OOP a comparison between procedural and object-oriented.
- How to combat legacy code by treating it as 3rd party code.
- A series of posts about software architecture.
- The future of programming is dependent types - an explanation of how we can make type systems better.
- A post explaining why objects should be constructed in one go.
- Guys, REST APIs are not Database: Why CRUD !== REST.
- If you think of coding as the manipulation of data, you’re going to have a hard time writing object-oriented code..
- Using negative architecture to reason about your code lets you easily make assumptions about how it behaves.
- Why you should declare all classes as final.
- Resources to learn about SOLID design.
- A breakdown of when to, and not-to use comments.
- The service locator anti-pattern.
- Code should be like an orange and have a better surface area to volume ration.
- An explanation of CQRS which keeps popping up everywhere but until now I’ve never really understood it.
- Design for flexibility, not for perfection and stop future proofing software.
- A collection of posts about software anti-patterns.
- How to make e technical debt payment plan.
- Nature doesn’t architect for scale, and neither should you.
- How to tidy your code in a piecemeal daily approach: The life changeng magic of tidying up code.
- Follow the everybody poops rule too keep your poop in a special room with a door on it.
- Anemic vs Rich Domain Model.
- Matthias Noback on when to add an interface to a class.
- OOP is dead, long live OOP
- DDD explained in 5 minutes: DDD 101.
- Negotiate features instead of quality to meet deadline: Don’t make squirrel burgers.
- Matthias Nobackn on When to use final classes.
- Immutable documentation - splitting how-docs from why-docs
- 7 Tips to write exceptions everyone will love
- Class based model factories are a way of easily setting up data for a test.
- A package for snapshot testing in PHPUnit.
- How to write better tests and avoid software testing anti-patterns.
- Improve your testing with the help of static analysis.
- Testing strategy with the help of static analysis.
- An explanation of exploratory testing.
- A post explaining Terraform loops and if statements.
- How to use grep in vim: Demystifying multi-file searches in Vim.
- Overview of Terraform 0.12.
- YouTube video about How SQL databases came up with their algorithms.
- Safe database migrations operations at Braintree.
- A talk by Ondrej Mirtes on zero downtime database migrations.
- Want to “level up your PhpStorm game”? Check out phpstorm.tips. A collection of small tips and tricks you can use to get better at PhpStorm.
- Some more PhpStorm tips for power users.
- Ever thought the MAN pages were too hard to understand, or just took too long to read? Check out the TL;DR man pages. A cli program which summarises the man pages for you.
- Some really fun programming tutorials and challenges.
- A set of steps to follow to always be automating and how you shouldn’t accept manual work.
git rebase --ontoto rebase your feature branch from one branch to another.
- GitHub tips and tricks.
- A great post from GitHub about how to undo (almost) anything with Git.
- Explanation of folds and why they’re so great.
- Monads explained in C#.
- Super in-depth Haskell guide: What I wish I knew when learning Haskell
- The last regex guide that you’ll ever need.
- RegexOne is a great regex tutorial that starts out really simple.
- Regex Golf is a fun regex challege where you try to use few characters as possible.
- Another fun regex challenge.
- A reverse regex challenge where you have to write the text that matches the regex.
- A post by Jeff Geerling about what he looks for in a PR to his projects.
- A walkthrough for your first open source PR.
- Avoid disappointent by makinig smaller pull requests.
- A bitter guide to open source.
- Some great tips to cheat at design.
- A super fun game that teaches you flexbox by killing zombies with a crossbow Flexbox Zombies.
- The art of the error message digs into the design of showing errors to your users.
- Optimistic UI is a UI that assumes actions will be successful in order to make a smoother flow for users.
- The journey of a dev moving from semantic CSS to utility CSS.
- How to create a good design as a developer.
- An argument for not using standups and retros.
- It’s not Agile, it’s you.
- Product management mental models.
- Java will kill your startup. PHP will save it.: Why architecture + design > language + tools.
- How to be technical leader.
- Don’t create a sense of urgency, foster a sense of purpose.
- How to design for the modern web.
- An entertaining read describing how easy it would be to harvest credit card numbers from a large portion of sites on the internet. Just by creating a dodgy npm package and getting other popular packages to depend on it.
- Programming sucks
- Learn how to learn things: How to teach yourself hard things.
- How to conduct a technical interview.
- How to effectively work from home.
- 8 steps to fail as an engineering manager.
- JetBrains - State of the developer ecosystem 2018.
- Set up a single page Vue+Symfony4 app with docker, migrations, static analysis, fixtures.