Compliance as Code
Day 66 of 90 Days of DevOps - Compliance as Code. Part of the Security & Compliance series covering essential DevOps concepts and hands-on practices.
470 words
|
2 minutes
Show files opened by pytest tests
My test suite for [Datasette](https://github.com/simonw/datasette) has grown so large that running the whole thing sometimes causes me to run out o...
225 words
|
1 minute
Deploying the CLIP embedding model on Fly
Inspired by [Drew Breunig's Faucet Finder](https://www.dbreunig.com/2023/09/26/faucet-finder.html) I decided I wanted to deploy an API somewhere th...
605 words
|
3 minutes
Open a debugging shell in GitHub Actions with tmate
> :warning: **17 Feb 2022: There have been reports of running tmate causing account suspensions**. See [this issue](https://github.com/mxschmitt/ac...
273 words
|
1 minute
SAST and DAST Implementation
Day 65 of 90 Days of DevOps - SAST and DAST Implementation. Part of the Security & Compliance series covering essential DevOps concepts and hands-on practices.
560 words
|
3 minutes
Driving an external display from a Mac laptop
For a friend's wedding I needed to run a Google Photos slideshow on some large televisions.
243 words
|
1 minute
Secrets Management and Vault
Day 64 of 90 Days of DevOps - Secrets Management and Vault. Part of the Security & Compliance series covering essential DevOps concepts and hands-on practices.
635 words
|
3 minutes
Getting Python MD5 to work with FIPS systems
[This issue](https://github.com/simonw/datasette/issues/2270) by Parand Darugar pointed out that Datasette doesn't currently run on Linux systems w...
723 words
|
4 minutes
Creating a tiled zoomable image with OpenSeadragon and vips
The San Francisco Microscopical Society has some extremely high resolution scanned images - one of them is a 1.67GB PNG file with a 25,088 × 17,283...
381 words
|
2 minutes
Container Security and Image Scanning
Day 63 of 90 Days of DevOps - Container Security and Image Scanning. Part of the Security & Compliance series covering essential DevOps concepts and hands-on practices.
430 words
|
2 minutes
Cumulative total over time in SQL
This is a quick trick for creating a cumulative chart of the total number of items created over time based just on their creation date.
103 words
|
1 minute
Embedding JavaScript in a Jupyter notebook
I recently found out modern browsers include a JavaScript API for creating public/private keys for cryptography.
280 words
|
1 minute
Security Scanning in CI/CD Pipelines
Day 62 of 90 Days of DevOps - Security Scanning in CI/CD Pipelines. Part of the Security & Compliance series covering essential DevOps concepts and hands-on practices.
468 words
|
2 minutes
Unix timestamp in milliseconds in SQLite
I wanted to retrieve the time in milliseconds since the Unix epoch in SQLite.
548 words
|
3 minutes
DevSecOps Introduction and Principles
Day 61 of 90 Days of DevOps - DevSecOps Introduction and Principles. Part of the Security & Compliance series covering essential DevOps concepts and hands-on practices.
566 words
|
3 minutes
Snapshot testing with Syrupy
I'm a big fan of snapshot testing - writing tests where you compare the output of some function to a previously saved version, and can re-generate ...
697 words
|
3 minutes
Using LD_PRELOAD to run any version of SQLite with Python
I've been wanting to figure this out for ages. [This thread](https://news.ycombinator.com/item?id=23282684) on Hacker News plus [this Stackoverflow...
793 words
|
4 minutes
Observability Best Practices
Day 60 of 90 Days of DevOps - Observability Best Practices. Part of the Monitoring & Observability series covering essential DevOps concepts and hands-on practices.
544 words
|
3 minutes
Running pip install '.[docs]' on ReadTheDocs
I decided to use ReadTheDocs for my in-development [datasette-enrichments](https://github.com/datasette/datasette-enrichments) project.
160 words
|
1 minute
Set a GIF to loop using ImageMagick
I managed to accidentally create a GIF that ran once without looping. I think this is because I created it in [LICEcap](https://www.cockos.com/lice...
91 words
|
1 minute
Running pip install -e .[test] in zsh on macOS Catalina
macOS Catalina uses `zsh` rather than `bash` as the default shell (apparently because Apple don't like GPL 3).
108 words
|
1 minute
Chaos Engineering and Resilience
Day 59 of 90 Days of DevOps - Chaos Engineering and Resilience. Part of the Monitoring & Observability series covering essential DevOps concepts and hands-on practices.
679 words
|
3 minutes
Convert a datetime object to UTC without using pytz
I wanted to convert a datetime object (from GitPython) to UTC without adding the `pytz` dependency.
66 words
|
1 minute
Adding extra read-only information to a Django admin change page
I figured out this pattern today for adding templated extra blocks of information to the Django admin change page for an object.
164 words
|
1 minute