Useful Links
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.
PHP
- 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
iterable
type over thearray
type. - 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.
- Instantly upgrade PHP applications with rector.
- A great walkthrough on how to Fine-Tune Your OpCache Settings.
- An explanation of different OpCache settings.
- Moving away from Laravel and magic.
- High volume tuning php-fpm on nginx.
- How PHP environment variables actually work.
- An overview of the PHP compiler and JIT.
- PHP in 2019 - an answer to “A fractal of bad design”.
- GitHub actions for PHP developers.
- Comparing Symfony to vanilla PHP.
- Controlling time in tests.
- Why you shouldn’t have nullable paramters.
- Clean-code-php is Robert C. Martin’s book ‘Clean Code’ adapted for PHP.
- How to complete thousands of missing @var annotations in a day.
- How to create a custom PhpStorm inspection.
- 10 rules to code like NASA in interpreted languages.
Symfony
- 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.
Javascript
- Everything new in JavaScript from 2016-2018 https://medium.freecodecamp.org/here-are-examples-of-everything-new-in-ecmascript-2016-2017-and-2018-d52fa3b5a70e>.
- A great explanation of why modern JavaScript is the way it is.
- How to split your chucks with Webpack.
Python
- A curated list of awesome-python libraries and frameworks.
- The Hitchhiker’s Guide to Python code style.
- Writing idiomatic python
Security
- 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.
- Why you shouldn’t use Javascript Object Signing and Encryption (JWT/JWE/JWS).
- 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.
- Privacy is the first step, the goal is data ownership
Software Engineering
- 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.
- Why you should spend time mastering your tools - craftsmen know their tools.
- Using hand written service containers.
- Martin Fowler on is quality sofwnare worth the cost?.
- Interesting points about the downsides of fluent interfaces.
- Understanding the SOLID principles.
- Vertical slice architecture.
- The KISS principle explained.
- What is a binary tree?.
- Using the command pattern to refactor legacy code.
- A great intro into functional core, imperative shell.
- An article from DoorDash about using functional core, imperitive shell in practice
- CyberChef is a great tool for complex data conversions.
- To all the people that don’t like static typing: You already use types.
Testing
- 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.
- Is not writing tests unprofessional.
DevOps
- A post explaining Terraform loops and if statements.
- Overview of Terraform 0.12.
- An into tutorial to CloudFormation.
Databases
- 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.
- Conditional logic in MySQL with the CASE expression.
Programming Tools
- 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.
- Some tips to improve PhpStorm performance.
- 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.
- Use
git rebase --onto
to 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.
- Use the reflog to recover deleted git commits.
Functional Programming
- 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
- Functional programming is a silly toy.
- Haskell for TypeScript developer.
Regex
- 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.
Open Source
- 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.
- The complicated economy to open source.
Design
- 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.
- Stop designing products for random people.
Development Processes
- An argument for not using standups and retros.
- It’s not Agile, it’s you.
- Product management mental models.
Business
- 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.
- Make your job ads suck less - Anatomy of a good job ad.
- The difference between deep and shallow work.
- How to hire the best developers.
- Watch out for the fear cycle.
- A micro-managers guide to chilling out.
- How Etsy handles incidents: Debriefing guide.
Jokes
- 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
General
- 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.
- How to use grep in vim: Demystifying multi-file searches in Vim.
- A rather long article about how to be great.
- Why loarning to code is so damn hard.
Tutorials
- Set up a single page Vue+Symfony4 app with docker, migrations, static analysis, fixtures.