Terraform Basics and Provider Setup
Day 22 of 90 Days of DevOps - Terraform Basics and Provider Setup. Part of the Infrastructure as Code series covering essential DevOps concepts and hands-on practices.
332 words
|
2 minutes
Start, test, then stop a localhost web server in a Bash script
I wanted to write a bash script that would start a Datasette server running, run a request against it using `curl`, then stop the server again.
719 words
|
4 minutes
Pisco sour
This classic Peruvian cocktail recipe is particularly useful if you have both a lemon tree and chickens producing fresh eggs!
298 words
|
1 minute
Infrastructure as Code Concepts
Day 21 of 90 Days of DevOps - Infrastructure as Code Concepts. Part of the Infrastructure as Code series covering essential DevOps concepts and hands-on practices.
366 words
|
2 minutes
Accessing 1Password items from the terminal
I save things like API keys in [1Password](https://1password.com/). Today I figured out how to access those from macOS terminal scripts.
409 words
|
2 minutes
Building Your First CI/CD Pipeline
Day 20 of 90 Days of DevOps - Building Your First CI/CD Pipeline. Part of the Version Control & CI/CD series covering essential DevOps concepts and hands-on practices.
496 words
|
2 minutes
Using pipenv and Docker
I had [a Django project](https://github.com/natbat/cbwg) that used `pipenv` (in particular a `Pipfile.lock`) to manage dependencies and I wanted to...
417 words
|
2 minutes
The SQLite now argument is stable within the same query
I stumbled across an interesting little detail of SQLite today, running the following query:
162 words
|
1 minute
Jenkins Setup and Configuration
Day 19 of 90 Days of DevOps - Jenkins Setup and Configuration. Part of the Version Control & CI/CD series covering essential DevOps concepts and hands-on practices.
465 words
|
2 minutes
CI/CD Pipeline Introduction
Day 18 of 90 Days of DevOps - CI/CD Pipeline Introduction. Part of the Version Control & CI/CD series covering essential DevOps concepts and hands-on practices.
548 words
|
3 minutes
Tracing every executed Python statement
Today I learned how to use the Python [trace module](https://docs.python.org/3/library/trace.html) to output every single executed line of Python c...
130 words
|
1 minute
Building an automatically updating live blog in Django
OpenAI's DevDay event yesterday (October 1st 2024) didn’t invite press (as far as I can tell), didn’t livestream the event and didn’t allow audienc...
2414 words
|
12 minutes
GitHub Collaboration and Pull Requests
Day 17 of 90 Days of DevOps - GitHub Collaboration and Pull Requests. Part of the Version Control & CI/CD series covering essential DevOps concepts and hands-on practices.
534 words
|
3 minutes
Language-specific indentation settings in VS Code
When I'm working with Python I like four space indents, but for JavaScript or HTML I like two space indents.
138 words
|
1 minute
Linking from /latest/ to /stable/ on Read The Docs
[Read The Docs](https://readthedocs.org/) has a handy feature where documentation for older versions will automatically link to the latest release,...
457 words
|
2 minutes
Mocking Stripe signature checks in a pytest fixture
I'm writing some code that accepts webhooks from Stripe. I wanted to simulate hits to this endpoint in my Django tests. Stripe uses a `Stripe-Signa...
283 words
|
1 minute
Minifying JavaScript with npx uglify-js
While [upgrading CodeMirror](https://github.com/simonw/datasette/issues/948) in Datasette I figured out how to minify JavaScript using `uglify-js` ...
199 words
|
1 minute
Advanced Git Workflows and Branching
Day 16 of 90 Days of DevOps - Advanced Git Workflows and Branching. Part of the Version Control & CI/CD series covering essential DevOps concepts and hands-on practices.
3225 words
|
16 minutes
Git Version Control Fundamentals
Day 15 of 90 Days of DevOps - Git Version Control Fundamentals. Part of the Version Control & CI/CD series covering essential DevOps concepts and hands-on practices.
1958 words
|
10 minutes
Concatenating strings and newlines in Google Sheets
I was asked if there was a way to run [shot-scraper](https://github.com/simonw/shot-scraper) against a list of URLs in a Google Sheet.
352 words
|
2 minutes
Database Management in DevOps
Day 14 of 90 Days of DevOps - Database Management in DevOps. Part of the Version Control & CI/CD series covering essential DevOps concepts and hands-on practices.
343 words
|
2 minutes
Web Servers and Application Deployment
Day 13 of 90 Days of DevOps - Web Servers and Application Deployment. Part of the Version Control & CI/CD series covering essential DevOps concepts and hands-on practices.
612 words
|
3 minutes
Using recursive CTEs to explore hierarchical Twitter threads
This TIL adapted from [a Gist](https://gist.github.com/simonw/656a8c6e4688f720773c474080abe1b0) I put together in 2019, before I started tracking T...
367 words
|
2 minutes
JSON Pointer
I'm [looking at options](https://github.com/simonw/datasette/issues/1875) for representing JSON validation errors in more JSON. The recent [RFC 780...
311 words
|
2 minutes