I'm blogging about Emacs, Drupal, php and exciting subjects
Here is a robots.txt that appears in some form on a very large number of sites:
User-agent: *
Disallow: /admin/
Disallow: /private/
User-agent: Googlebot
Disallow: /nogoogle/
Read it the way anyone would: everyone is kept out of /admin/ and /private/, and Googlebot is additionally kept out of /nogoogle/.
Autowiring is one of the better things to happen to PHP. Typehint a class in a constructor, and Symfony finds it, builds it, and hands it over. No configuration, no factory, no container gymnastics. A generation of PHP developers now writes dependency injection without ever thinking about it, which is exactly what good tooling should achieve.
The standard criticism of user personas is that they are fiction. Someone runs a workshop, the team invents "Marketing Mary, 34, values efficiency, enjoys yoga," and it goes on a wall. Nobody can say whether Mary is right, because nothing about her is falsifiable. She was assembled from assumptions, and she reflects them back with the authority of a laminated poster.
Take a requirement that sounds unremarkable: upgrade twelve web servers with no downtime. One at a time, drained from the load balancer first, health-checked before returning to service, and the whole thing stops if more than a quarter of them fail.
Here is how relevance tuning usually goes. Someone complains that searching for the company name returns a press release above the About page. You raise the title boost. You try the query. It is fixed. You ship it.
There is a class of search failure you cannot tune your way out of. Someone searches for infrastructure automation; you have an excellent page about configuration management; the words never overlap and BM25 scores it zero. No field boost fixes that, no stemmer, no synonym list you will actually maintain.
Set opcache.save_comments=0 on a Drupal site running annotation-based plugins, rebuild caches, and you get this:
Most Drupal search articles stop at "and now it works." That is the easy half. The hard half is the phone call three weeks later where someone points out that searching for the company's own name returns a 2019 press release above the About page, and nobody can explain why.
Four packages, one playbook. This should be a boring afternoon, and it mostly is — except for one ordering problem that breaks almost every tutorial on the subject, in a way that only shows up on a genuinely fresh server.
So let me start there, because if you understand it the rest is just YAML.
If you came here looking for how to install open-source Puppet on a current Ubuntu, the short answer is that you can't, and it is not your fault for not knowing. The instructions everyone wrote — add deb.puppetlabs.com, install puppet-agent — stopped producing new versions in early 2025.
Subscribe to Linkhub