- On metrics
-
There’s still an ongoing debate whether development in particular and IT, in general, are engineering practices. In all cases, there’s no denying that our industry is based on scientific foundations.
- Your API Shouldn’t Redirect HTTP to HTTPS
-
TL;DR:
Instead of redirecting API calls from HTTP to HTTPS, make the failure visible. Either disable the HTTP interface altogether, or return a clear HTTP error response and revoke API keys sent over the unencrypted connection. Unfortunately, many well-known API providers don’t currently do so.
- 20 Years of Blogging
-
I started in 2008, I hope to celebrate my 20 years!
- DuckDB Doesn’t Need Data To Be a Database
-
I must admit that I’ve no clue about DucksDB, but the use-case looks really nice.
- Apache Doris for log and time series data analysis in NetEase, why not Elasticsearch and InfluxDB?
-
This is another advantage of Doris compared to Elasticsearch: it supports more flexible index management and allows easy addition and removal of indexes.
- The KeePassXC kerfuffle
-
As a KeePassXC user, this is news to me. I’m not on Debian, though.
- Don’t DRY Your Code Prematurely
-
DRY can be detrimental to the code if applied with too much zeal like any other similar principle. And don’t start me on shared libraries.
- Chicory - a WebAssembly Interpreter Written Purely in Java With Zero Native Dependencies
-
I already mentioned Chicory in the #31 of the newsletter. Good news that it starts being mentioned.
- The Arazzo Specification
-
The Arazzo Specification provides a mechanism that can define sequences of calls and their dependencies to be woven together and expressed in the context of delivering a particular outcome or set of outcomes when dealing with API descriptions (such as OpenAPI descriptions).
arazzo: 1.0.0 info: title: A pet purchasing workflow summary: This Arazzo Description showcases the workflow for how to purchase a pet through a sequence of API calls description: | This Arazzo Description walks you through the workflow and steps of `searching` for, `selecting`, and `purchasing` an available pet. version: 1.0.1 sourceDescriptions: - name: petStoreDescription url: https://github.com/swagger-api/swagger-petstore/blob/master/src/main/resources/openapi.yaml type: openapi workflows: - workflowId: loginUserAndRetrievePet summary: Login User and then retrieve pets description: This workflow lays out the steps to login a user and then retrieve pets inputs: type: object properties: username: type: string password: type: string steps: - stepId: loginStep description: This step demonstrates the user login step operationId: loginUser parameters: # parameters to inject into the loginUser operation (parameter name must be resolvable at the referenced operation and the value is determined using {expression} syntax) - name: username in: query value: $inputs.username - name: password in: query value: $inputs.password successCriteria: # assertions to determine step was successful - condition: $statusCode == 200 outputs: # outputs from this step tokenExpires: $response.header.X-Expires-After rateLimit: $response.header.X-Rate-Limit sessionToken: $response.body - stepId: getPetStep description: retrieve a pet by status from the GET pets endpoint operationPath: '{$sourceDescriptions.petstoreDescription.url}#/paths/~1pet~1findByStatus/get' parameters: - name: status in: query value: 'available' - name: Authorization in: header value: $steps.loginUser.outputs.sessionToken successCriteria: - condition: $statusCode == 200 outputs: # outputs from this step availablePets: $response.body outputs: available: $steps.getPetStep.availablePets
Thanks to Stefano Fago for the pointer.
- Map-Oriented Programming in Java
-
An interesting discussion about using the
Map
type instead of more specific types. - The decline of the user interface
-
If it feels like an old guy’s rant, then it’s because it probably is. It still feels unfortunately true.
- Why, after 6 years, I’m over GraphQL
-
I never got on the GraphQL train. I still need to check by myself how good it is.
- How we orchestrate 2000+ DBT models in Apache Airflow
-
The topic of jobs, dependencies between them, and granularity is a huge one. Here’s one sample use-case and how the organization approached the issue.