How to install only NPM dev dependencies

There are some situations where you wish to only install the devDependencies from the package.json. We encountered this recently where we set Playwright [https://www.mikestreety.co.uk/category/playwright/] as a development dependency and wished to install the specified version in … | Continue reading


@mikestreety.co.uk | 1 month ago

Scanning your code with Bearer; a Gitlab compatible SAST

Gitlab offer Static Application Security Testing (SAST) with all tiers of their product, however for any kind of UI integration and configuration you need to be on their Ultimate tier. SAST is a way of scanning your code to highlight any known vulnerabilities. It's worth noting i … | Continue reading


@mikestreety.co.uk | 1 month ago

Scanning your code with Bearer; a Gitlab compatible SAST

Gitlab offer Static Application Security Testing (SAST) with all tiers of their product, however for any kind of UI integration and configuration you need to be on their Ultimate tier. SAST is a way of scanning your code to highlight any known vulnerabilities. It's worth noting i … | Continue reading


@mikestreety.co.uk | 1 month ago

Validate a JSON API with Playwright & JSON Schema

Chase Jarvis once said "the best camera is the one that is with you" and I often apply this to other parts of my life. Playwright might not be the best tool [https://json-schema.org/implementations] to validate JSON with, but if you are already using it and have it set up, then i … | Continue reading


@mikestreety.co.uk | 1 month ago

Testing the frontend of a TYPO3 project

Testing is an interesting topic in the web world; everyone you talk to seems to know how valuable it is, but finding concrete examples on the web is hard. We have started testing our TYPO3 websites with Playwright [https://playwright.dev/] - an end-to-end testing framework that c … | Continue reading


@mikestreety.co.uk | 2 months ago

Tweetback

I finally downloaded my ~Twitter~ X archive [https://help.twitter.com/en/managing-your-account/how-to-download-your-x-archive] as a trusty zip file and set up a version of Tweetback [https://github.com/tweetback/tweetback]. You can see my tweets here [https://tweets.mikestreety.c … | Continue reading


@mikestreety.co.uk | 2 months ago

Composer Best Practices for TYPO3

I revel in reading about other peoples processes, file structures and best practices. I soak up their standards, seeing if I can optimise, tweak or evolve my own to seek that golden chalice of efficiency. Following in the same vein of Daniel Siepmann's TYPO3 Composer Best Practic … | Continue reading


@mikestreety.co.uk | 2 months ago

2023 In Review

2023 was a year which seemed to fly by - it doesn't seem like 12 months have passed since I was last reflecting my annual achievements. Despite this, there were some pretty big events this year, when I actually think about it, but it all seems to be compressed into, what feels li … | Continue reading


@mikestreety.co.uk | 3 months ago

Frameworks, Tools and Utility meta-packages for quicker configuration

There are a lot of fantastic tools, frameworks and utilities out there for helping with development in various ways. We are so lucky to be living in a world where people make amazing stuff and then just, Open Source it. The one thing I often struggle with is configuration of them … | Continue reading


@mikestreety.co.uk | 4 months ago

Accessing iframe content and JavaScript variables from Puppeteer

Following on from the previous post about logging in and saving cookies with Puppeteer [https://www.mikestreety.co.uk/blog/login-with-puppeteer-and-re-use-cookies-for-another-window/], I also needed to access content and, more specifically, a JavaScript variable present within th … | Continue reading


@mikestreety.co.uk | 5 months ago

Login with Puppeteer and re-use cookies for another window

For a recent project I needed to automate something which was only available in the CMS via a login. To help speed to process up, I created a script which can login with supplied credentials and store the cookies in a local file. The main process can then use these cookies to car … | Continue reading


@mikestreety.co.uk | 5 months ago

Get your Pocket Casts data using the unofficial API and PHP

Pocket Casts is a Android podcast player I've been using for some time. I wanted a method of extracting podcasts I had listened to to gather some stats and keep a history of my podcasts. Pocket Casts doesn't offer an official API, unfortunately, but does have some data available … | Continue reading


@mikestreety.co.uk | 6 months ago

A release process for our NPM and Composer packages

At Liquid Light, we maintain several public [https://github.com/orgs/liquidlight/repositories] and private packages for our TYPO3 installations. Over the last couple of years, we have honed the development and release process of the packages so that 6 developers independently wor … | Continue reading


@mikestreety.co.uk | 7 months ago

Building and Pushing Docker images using Github Actions

We needed to build a Docker image via Github Actions and push to the Package repository to create a public, shareable image. Add the following in a .github/workflows folder with a .yml extension. You'll also need to add the following secrets to the respoitory: * DOCKER_USERNAME … | Continue reading


@mikestreety.co.uk | 7 months ago

PHP Ternary and null coalescing operators

I write PHP on a daily basis and often, as with most programming, need to check if something is there or not, or if it is what I expect. Beyond if statements, there are ternary operators. Things like the Elvis (?:) operator or the Null coalescing operator (??) can be used to make … | Continue reading


@mikestreety.co.uk | 8 months ago

Build different images with multi-stage Docker builds

I've written before about multi-stage Docker builds [https://www.mikestreety.co.uk/blog/creating-a-multi-stage-docker-build-to-make-your-images-smaller/] to help you make smaller images, however today I discovered you can build images out of each of the stages. The advantage for … | Continue reading


@mikestreety.co.uk | 8 months ago

Install private composer packages with CI and Deployer

Installing private composer packages can be a bit like Crufts - you sometimes have to jump through so many hoops and tunnels and all you get at the end is a belly rub. However you host your packages, the general theory is the same. I would advise finding a host which can act like … | Continue reading


@mikestreety.co.uk | 8 months ago

Open Door Meetings - How I can bother my colleagues without interrupting them

I was listening to Episode 216 [https://www.codingblocks.net/podcast/better-application-management-with-custom-apps/] of the Coding Blocks podcast and the conversation of "Open Jim" hours came up. The idea being that a senior developer has some set hours (I think it was mentioned … | Continue reading


@mikestreety.co.uk | 9 months ago

Docker image with Node, PHP and Composer

Website deployment strategies are tricky things to get into. There are so many ways and means of deploying your application to the web that it is hard to pick one. That's why, when you find one you like, you just need to stick with it and tweak it, rather than trying to re-invent … | Continue reading


@mikestreety.co.uk | 9 months ago

The UPCOMING.md file in our packages and extensions

Every package that we maintain at Liquid Light, be it private or open-source [https://github.com/orgs/liquidlight/repositories], all follow the same conventions. One of those conventions is the CHANGELOG.md and UPCOMING.md file contained within the repository. The CHANGELOG.md de … | Continue reading


@mikestreety.co.uk | 11 months ago

NPM Install without modifying the package-lock.json

Lock files should exist so that anyone installing the dependencies get the exact same version. In my mind, lock files should not be modified unless you are actively updating the packages required. It seems that sometimes, however, npm decides to update the package-lock.json file … | Continue reading


@mikestreety.co.uk | 11 months ago

The End of the Social Network School Year

Since the mass exodus of Twitter after Elon bought it, I've felt unsettled in the Social Media world; like I'm sitting in someone else's house and can't quite be as comfortable as I would like to be. Like a lot of my Twitter followings (and followers), I moved across to Mastodon … | Continue reading


@mikestreety.co.uk | 11 months ago