41554 blogs · [ { "id": "01a0d94c-4ac2-71fd-a038-191cd4600641", "title": "Installing and Configuring OpenCode", "url": "https://keestalkstech.com/installing-and-configuring-opencode/", "published_at": "2026-09-21T08:19:04+00:00" }, { "id": "01a0bc20-8c1e-7083-b8e6-f9a46eafeca7", "title": "Shuffling: Fisher-Yates vs Feistel", "url": "https://keestalkstech.com/shuffling-fisher-yates-vs-feistel/", "published_at": "2026-09-19T10:21:52+00:00" }, { "id": "01a0bc20-8c1e-7083-b8e6-f9a46f2d57dc", "title": "Swapping Chrome for Brave on Windows", "url": "https://keestalkstech.com/swapping-chrome-for-brave-on-windows/", "published_at": "2026-09-18T06:58:09+00:00" }, { "id": "01a08794-6a35-7031-9704-df695d62cc45", "title": "How we switched 150+ stores from Redis to Valkey, and nobody cared!", "url": "https://keestalkstech.com/how-we-switched-150-stores-from-redis-to-valkey-and-nobody-cared/", "published_at": "2026-06-22T13:51:38+00:00" }, { "id": "01a08794-6a35-7031-9704-df695deb90c2", "title": "Add Shift+Enter to OpenCode in Windows Terminal", "url": "https://keestalkstech.com/adding-shiftenter-for-opencode-on-windows-terminal/", "published_at": "2026-05-11T07:07:58+00:00" }, { "id": "01a08794-6a35-7031-9704-df695ebdfdee", "title": "When the Planning Wall Doesn’t Scale", "url": "https://keestalkstech.com/when-the-planning-wall-doesnt-scale/", "published_at": "2026-03-16T07:03:58+00:00" }, { "id": "01a08794-6a35-7031-9704-df695f02eef3", "title": "Improve VS Code Commit Messages with GitHub’s git-commit skill", "url": "https://keestalkstech.com/improve-vs-code-commit-messages-with-githubs-git-commit-skill/", "published_at": "2026-03-14T11:37:53+00:00" }, { "id": "01a08794-6a35-7031-9704-df695f34cc43", "title": "Unit Testing complex validations (study)", "url": "https://keestalkstech.com/unit-testing-complex-validations-study/", "published_at": "2025-04-11T03:40:48+00:00" }, { "id": "01a08794-6a35-7031-9704-df69601b9fb6", "title": "Let’s combine Data Annotation Validation with FluentValidation", "url": "https://keestalkstech.com/lets-combine-data-annotation-validation-with-fluentvalidation/", "published_at": "2025-04-06T13:15:50+00:00" }, { "id": "01a08794-6a35-7031-9704-df696109775e", "title": "Data Annotation validation with dependency injection in a business service", "url": "https://keestalkstech.com/data-annotation-validation-in-a-business-service/", "published_at": "2025-04-06T10:24:11+00:00" }, { "id": "01a08794-6a35-7031-9704-df6961d71507", "title": "Kiota Client Unit Testing: mocking data", "url": "https://keestalkstech.com/kiota-client-unit-testing-mocking-data/", "published_at": "2025-04-01T08:46:32+00:00" }, { "id": "01a08794-6a35-7031-9704-df696214ffe4", "title": "Kiota, dependency injection and resilience", "url": "https://keestalkstech.com/kiota-dependency-injection-and-resilience/", "published_at": "2025-02-12T12:24:51+00:00" }, { "id": "01a08794-6a35-7031-9704-df6962405703", "title": "Implementing HTTP Resilience by Microsoft", "url": "https://keestalkstech.com/implementing-http-resilience-by-microsoft/", "published_at": "2025-02-11T10:35:29+00:00" }, { "id": "01a0bb47-ab6d-706d-997b-a142b1dff885", "title": "How to bypass company wallpaper as local admin on Windows 11", "url": "https://keestalkstech.com/how-to-bypass-company-background-image-as-local-admin-on-windows-11/", "published_at": "2024-12-12T02:56:22+00:00" }, { "id": "01a0bb47-ab6d-706d-997b-a142b2673caf", "title": "Debug JWT expiration locally with bash or PowerShell", "url": "https://keestalkstech.com/debug-a-jwt-token-expiration-locally-with-bash-or-powershell/", "published_at": "2024-12-09T04:35:32+00:00" }, { "id": "01a0bb47-ab6d-706d-997b-a142b2da4725", "title": "Simple JWT Access Policies for API security in .NET", "url": "https://keestalkstech.com/simple-jwt-access-policies-for-api-security-in-net/", "published_at": "2024-11-27T06:19:31+00:00" }, { "id": "01a0bb47-ab6d-706d-997b-a142b358c6aa", "title": "Hubot Testing Revisted (Again): Hubot 11", "url": "https://keestalkstech.com/hubot-testing-revisted-again-hubot-11/", "published_at": "2024-11-15T10:22:33+00:00" }, { "id": "01a0bb47-ab6d-706d-997b-a142b42701fc", "title": "How Istio and Argo CD helped us to debug platform migration issues for our App", "url": "https://keestalkstech.com/how-istio-and-argo-cd-helped-us-to-debug-ap-migration-issues/", "published_at": "2024-10-31T00:14:37+00:00" }, { "id": "01a0bb47-ab6d-706d-997b-a142b4a9c599", "title": "Notes on Git Setup with SSH for Windows (GitHub)", "url": "https://keestalkstech.com/notes-on-git-setup-with-ssh-for-windows-github/", "published_at": "2024-10-30T15:22:45+00:00" }, { "id": "01a0bb47-ab6d-706d-997b-a142b4cead06", "title": "Bash GitHub authentication: pull repositories with SSH and App Tokens", "url": "https://keestalkstech.com/bash-github-authentication-pull-repositories-with-ssh-and-app-tokens/", "published_at": "2024-10-09T18:34:40+00:00" }, { "id": "01a0bb47-ab6d-706d-997b-a142b5b08f3e", "title": "Notes on installing Visual Studio Code on Windows", "url": "https://keestalkstech.com/notes-on-installing-visual-studio-code/", "published_at": "2024-10-06T13:12:48+00:00" }, { "id": "01a0bb56-1293-739b-8356-2021da620925", "title": "Home Assistant: track your favourite fuel stations", "url": "https://keestalkstech.com/home-assistant-track-your-favourite-fuel-stations/", "published_at": "2024-09-19T22:40:04+00:00" }, { "id": "01a0bb56-1293-739b-8356-2021dafe92bb", "title": "Home Assistant: sending Zonneplan One stats to PVOutput", "url": "https://keestalkstech.com/home-assistant-sending-zonneplan-one-stats-to-pvoutput/", "published_at": "2024-09-16T19:28:15+00:00" }, { "id": "01a0bb56-1293-739b-8356-2021db54f1cc", "title": "Wehkamp TechHub Journey towards cost optimization on AWS", "url": "https://keestalkstech.com/embedding-finops-into-our-wehkamp-retail-group/", "published_at": "2024-06-12T12:37:00+00:00" }, { "id": "01a0bb56-1293-739b-8356-2021dbbc4c1a", "title": "Setup GPG signing for git commits on Windows", "url": "https://keestalkstech.com/setup-gpg-signing-on-windows/", "published_at": "2024-03-04T07:55:50+00:00" }, { "id": "01a0bb56-1293-739b-8356-2021dc43806b", "title": "Notes on WSL Tuning", "url": "https://keestalkstech.com/notes-on-wsl-tuning/", "published_at": "2024-02-19T15:41:08+00:00" }, { "id": "01a0bb56-1293-739b-8356-2021dc707a58", "title": "Notes on Windows 11", "url": "https://keestalkstech.com/notes-on-windows-11/", "published_at": "2024-02-19T09:37:45+00:00" }, { "id": "01a0bb56-1293-739b-8356-2021dd17664a", "title": "Shipping user friendly bash scripts with your Dev Container", "url": "https://keestalkstech.com/shipping-user-friendly-bash-scripts-with-your-dev-container/", "published_at": "2024-02-12T15:35:02+00:00" }, { "id": "01a0bb56-1293-739b-8356-2021dddf9587", "title": "Create new SFTP user in Ubuntu Server for WordOps", "url": "https://keestalkstech.com/create-new-sftp-user-in-ubuntu-server/", "published_at": "2024-01-05T11:38:21+00:00" }, { "id": "01a0bb56-1293-739b-8356-2021de80485b", "title": "Obtain an Atlassian Cloud 3LO refresh token with Bash", "url": "https://keestalkstech.com/obtain-an-atlassian-cloud-3lo-refresh-token-with-bash/", "published_at": "2024-01-04T14:24:52+00:00" }, { "id": "01a0bb56-1293-739b-8356-2021df267b4d", "title": "Improving responsiveness of hubot-grafana", "url": "https://keestalkstech.com/improving-responsiveness-of-hubot-grafana/", "published_at": "2023-08-22T13:39:53+00:00" }, { "id": "01a0bb5b-888c-735d-91c4-df80605f92ae", "title": "Notes on Chocolatey", "url": "https://keestalkstech.com/notes-on-chocolatey/", "published_at": "2023-08-10T10:26:16+00:00" }, { "id": "01a0bb5b-888c-735d-91c4-df806119168f", "title": "Hubot testing revisited", "url": "https://keestalkstech.com/hubot-testing-revisited/", "published_at": "2023-08-06T11:04:00+00:00" }, { "id": "01a0bb5b-888c-735d-91c4-df80614160e8", "title": "A Dev Container for Bot Zero", "url": "https://keestalkstech.com/a-devcontainer-for-bot-zero/", "published_at": "2023-06-07T08:21:11+00:00" }, { "id": "01a0bb5b-888c-735d-91c4-df8061eb35e8", "title": "Building a replaceAllAsync in TypeScript", "url": "https://keestalkstech.com/building-a-replace-all-async-in-typescript/", "published_at": "2023-04-25T13:31:40+00:00" }, { "id": "01a0bb5b-888c-735d-91c4-df80620bc4f5", "title": ".NET Console Application with injectable commands", "url": "https://keestalkstech.com/net-console-application-with-injectable-commands/", "published_at": "2023-03-07T04:00:49+00:00" }, { "id": "01a0bb5b-888c-735d-91c4-df8062e36935", "title": "Harmonizing Team tags on AWS S3 Buckets", "url": "https://keestalkstech.com/harmonizing-team-tags-on-aws-s3-buckets/", "published_at": "2023-02-20T10:56:46+00:00" }, { "id": "01a0bb5b-888c-735d-91c4-df80637ab34f", "title": "Rethinking our ASP.NET Docker CI", "url": "https://keestalkstech.com/rethinking-our-asp-net-docker-ci/", "published_at": "2023-02-18T18:42:36+00:00" }, { "id": "01a0bb5b-888c-735d-91c4-df8063eb938d", "title": "Share AWS Vault session with Bash (WSL)", "url": "https://keestalkstech.com/share-aws-vault-session-with-bash-wsl/", "published_at": "2023-02-16T21:07:16+00:00" }, { "id": "01a0bb5b-888c-735d-91c4-df8064a4e757", "title": "Expose a Docker Compose App with a Secure Cloudflare Tunnel", "url": "https://keestalkstech.com/expose-docker-compose-app-with-a-secure-cloudflare-tunnel/", "published_at": "2023-01-16T09:25:52+00:00" }, { "id": "01a0bb5b-888c-735d-91c4-df8064fb55f7", "title": "Chrome Extension Development: Fetch non CORS URLs in v3", "url": "https://keestalkstech.com/chrome-extension-development-fetch-non-cors-urls-in-v3/", "published_at": "2023-01-14T12:55:06+00:00" }, { "id": "01a0bb63-9136-72f1-9fae-f8c1663be026", "title": "App definitions from Mesos/Marathon to CSV", "url": "https://keestalkstech.com/app-definitions-from-mesos-marathon-to-csv/", "published_at": "2023-01-12T12:37:40+00:00" }, { "id": "01a0bb63-9136-72f1-9fae-f8c16710173b", "title": "Bash Script with a Library for Named Arguments", "url": "https://keestalkstech.com/bash-script-with-a-lib-for-named-parameters/", "published_at": "2022-12-22T12:37:44+00:00" }, { "id": "01a0bb63-9136-72f1-9fae-f8c167b59656", "title": "Grafana, I want slugs back for my Hubot! 😭", "url": "https://keestalkstech.com/grafana-i-want-slugs-back-for-my-hubot-%f0%9f%98%ad/", "published_at": "2022-11-05T02:48:59+00:00" }, { "id": "01a0bb63-9136-72f1-9fae-f8c167fb36d2", "title": "My Prettier Settings", "url": "https://keestalkstech.com/my-prettier-settings/", "published_at": "2022-10-24T03:28:02+00:00" }, { "id": "01a0bb63-9136-72f1-9fae-f8c168ad7919", "title": "DevOps Days Eindhoven Talk: How To Handle The Immense Traffic of a Successful Influencer Campaign", "url": "https://keestalkstech.com/devops-days-eindhoven-talk-how-to-handle-the-immense-traffic-of-a-successful-influencer-campaign/", "published_at": "2022-10-20T12:34:00+00:00" }, { "id": "01a0bb63-9136-72f1-9fae-f8c168f97060", "title": "Handlebars.Net: Fun with [Flags]", "url": "https://keestalkstech.com/handlebars-net-fun-with-flags/", "published_at": "2022-09-18T16:56:26+00:00" }, { "id": "01a0bb63-9136-72f1-9fae-f8c16907dc1b", "title": "Handlebars.Net & JSON templates", "url": "https://keestalkstech.com/handlebars-net-json-templates/", "published_at": "2022-09-17T11:04:52+00:00" }, { "id": "01a0bb63-9136-72f1-9fae-f8c16a072349", "title": "Connect Ikea TRÅDFRI with KlikAanKlikUit (ICS-2000 / KAKU)", "url": "https://keestalkstech.com/connect-ikea-tradfri-with-klikaanklikuit-ics-2000-kaku/", "published_at": "2022-09-13T13:51:49+00:00" }, { "id": "01a0bb63-9136-72f1-9fae-f8c16ad4bbc1", "title": "Don’t use Slack Incoming WebHooks; App Creation is Dead Simple!", "url": "https://keestalkstech.com/dont-use-slack-incoming-webhooks-app-creation-is-dead-simple/", "published_at": "2022-09-05T14:44:06+00:00" }, { "id": "01a0bb63-9136-72f1-9fae-f8c16b34e0c7", "title": "Full Stack Live Meetup: How to handle the immense web traffic caused by a successful influencer campaign? (Dutch)", "url": "https://keestalkstech.com/full-stack-live-meetup-how-to-handle-the-immense-web-traffic-caused-by-a-successful-influencer-campaign-dutch/", "published_at": "2022-09-01T12:55:00+00:00" }, { "id": "01a0bb69-9f86-7160-b3fb-0d2424457395", "title": "Task: Save Article to Markdown", "url": "https://keestalkstech.com/task-save-article-to-markdown/", "published_at": "2022-08-31T05:14:24+00:00" }, { "id": "01a0bb69-9f86-7160-b3fb-0d242472866c", "title": "Jupyter Notebooks + VSCode Dev Container with Puppeteer support", "url": "https://keestalkstech.com/jupyter-notebooks-vscode-dev-container-with-puppeteer-support/", "published_at": "2022-08-28T09:28:08+00:00" }, { "id": "01a0bb69-9f86-7160-b3fb-0d242555369f", "title": "DateOnly in your .NET 6 API", "url": "https://keestalkstech.com/dateonly-in-your-net-6-api/", "published_at": "2022-08-09T19:00:27+00:00" }, { "id": "01a0bb69-9f86-7160-b3fb-0d2425562152", "title": "Task: take some website screenshots and put them in a folder (in parallel)", "url": "https://keestalkstech.com/task-take-some-website-screenshots-and-put-them-in-a-folder-in-parallel/", "published_at": "2022-07-30T13:30:20+00:00" }, { "id": "01a0bb69-9f86-7160-b3fb-0d2426520658", "title": "Retry with Exponential Back-Off utility method", "url": "https://keestalkstech.com/retry-with-exponential-back-off-utility-method/", "published_at": "2022-07-27T22:13:55+00:00" }, { "id": "01a0bb69-9f86-7160-b3fb-0d2426a18b0e", "title": "Using the S3P API to copy 1.3M of 5M of AWS S3 keys", "url": "https://keestalkstech.com/using-the-s3p-api-to-copy-1-3m-of-5m-of-aws-s3-keys/", "published_at": "2022-05-19T03:39:29+00:00" }, { "id": "01a0bb69-9f86-7160-b3fb-0d2427942ca0", "title": "Named Arguments in a Bash Script", "url": "https://keestalkstech.com/named-arguments-in-a-bash-script/", "published_at": "2022-03-28T11:46:09+00:00" }, { "id": "01a0bb69-9f86-7160-b3fb-0d2427bb1e9a", "title": "Parsing JSON data from S3 (Kinesis) with Spark", "url": "https://keestalkstech.com/parsing-json-data-from-s3-kinesis-with-spark/", "published_at": "2021-11-23T04:28:07+00:00" }, { "id": "01a0bb69-9f86-7160-b3fb-0d2427c8117a", "title": "Having fun grouping arrays into maps with TypeScript", "url": "https://keestalkstech.com/having-fun-grouping-arrays-into-maps-with-typescript/", "published_at": "2021-10-22T09:33:36+00:00" }, { "id": "01a0bb69-9f86-7160-b3fb-0d2427d7c116", "title": "Plotting a grid of images in Databricks", "url": "https://keestalkstech.com/plotting-a-grid-of-images-in-databricks/", "published_at": "2021-10-06T18:16:17+00:00" }, { "id": "01a0bb6d-ba15-7295-ba6d-6996dbdfd860", "title": "The Swiss Army Knife Decorator: exception logging, latency metrics and Jaeger spans combined", "url": "https://keestalkstech.com/the-swiss-army-knife-decorator-exception-logging-latency-metrics-and-jaeger-spans-combined/", "published_at": "2021-08-04T14:40:33+00:00" }, { "id": "01a0bb6d-ba15-7295-ba6d-6996dc2eb488", "title": "Jaegerize my .NET Core setup!", "url": "https://keestalkstech.com/jaeger-net-core-setup-with-decorators/", "published_at": "2021-08-04T08:06:46+00:00" }, { "id": "01a0bb6d-ba15-7295-ba6d-6996dd0bd6a6", "title": "Simple implementation of dark mode", "url": "https://keestalkstech.com/simple-implementation-of-dark-mode/", "published_at": "2021-08-03T11:23:57+00:00" }, { "id": "01a0bb6d-ba15-7295-ba6d-6996dde18b63", "title": "Spark: extract fields from an XML column", "url": "https://keestalkstech.com/spark-extract-fields-from-an-xml-column/", "published_at": "2021-07-19T12:55:19+00:00" }, { "id": "01a0bb6d-ba15-7295-ba6d-6996dedb32c9", "title": "Databricks: CSV, secrets management 🤫 and FTP", "url": "https://keestalkstech.com/databricks-csv-secrets-management-and-ftp/", "published_at": "2021-07-12T11:11:08+00:00" }, { "id": "01a0bb6d-ba15-7295-ba6d-6996deecf457", "title": "Spark: queries with datetime and time zones", "url": "https://keestalkstech.com/spark-queries-with-datetime-and-time-zones/", "published_at": "2021-05-05T13:08:32+00:00" }, { "id": "01a0bb6d-ba15-7295-ba6d-6996dfc32897", "title": ".NET Core & the Google Analytics Real Time Data API", "url": "https://keestalkstech.com/google-analytics-real-time-api-in-net-core/", "published_at": "2021-04-05T10:53:24+00:00" }, { "id": "01a0bb6d-ba15-7295-ba6d-6996e0803ef1", "title": "ALB access logs + Athena: identify target problems", "url": "https://keestalkstech.com/alb-access-logs-athena-identify-target-problems/", "published_at": "2021-03-29T13:32:42+00:00" }, { "id": "01a0bb6d-ba15-7295-ba6d-6996e166f16f", "title": ".NET API: capture original message body", "url": "https://keestalkstech.com/net-api-capture-original-message-body/", "published_at": "2021-03-11T19:43:04+00:00" }, { "id": "01a0bb6d-ba15-7295-ba6d-6996e1cbf9f2", "title": "Python utility function: retry with exponential backoff", "url": "https://keestalkstech.com/python-utility-function-retry-with-exponential-backoff/", "published_at": "2021-03-11T13:59:15+00:00" }, { "id": "01a0bb71-7cf2-71e5-8b84-d6669125d9b9", "title": "Thoughts on AWS Vault config on Windows", "url": "https://keestalkstech.com/share-aws-vault-on-wsl/", "published_at": "2021-03-08T15:46:12+00:00" }, { "id": "01a0bb71-7cf2-71e5-8b84-d66692097b4b", "title": "A To-do List with Redis commands and Lua scripts", "url": "https://keestalkstech.com/redis-and-lua-to-do-list/", "published_at": "2021-01-15T08:37:54+00:00" }, { "id": "01a0bb71-7cf2-71e5-8b84-d666924f2f29", "title": "A Table of Contents shortcode for WordPress articles", "url": "https://keestalkstech.com/a-table-of-contents-shortcode-for-wordpress-articles/", "published_at": "2020-12-26T14:53:11+00:00" }, { "id": "01a0bb71-7cf2-71e5-8b84-d6669255f2c7", "title": "Submenu navigation for category pages", "url": "https://keestalkstech.com/submenu-navigation-for-category-pages/", "published_at": "2020-12-26T08:34:41+00:00" }, { "id": "01a0bb71-7cf2-71e5-8b84-d666927b6cc7", "title": "Shortcodes for simple post lists in WordPress", "url": "https://keestalkstech.com/shortcodes-for-simple-post-lists-in-wordpress/", "published_at": "2020-12-25T16:19:03+00:00" }, { "id": "01a0bb71-7cf2-71e5-8b84-d6669286baac", "title": "A Stack data structure in TypeScript", "url": "https://keestalkstech.com/a-stack-data-structure-in-typescript/", "published_at": "2020-12-05T15:20:49+00:00" }, { "id": "01a0bb71-7cf2-71e5-8b84-d666930f9533", "title": "Pluralize and Singularize a List of Dutch Words with Python", "url": "https://keestalkstech.com/pluralize-a-list-of-dutch-words-with-python/", "published_at": "2020-11-20T17:18:00+00:00" }, { "id": "01a0bb71-7cf2-71e5-8b84-d666938551d7", "title": "Prometheus Latency Metrics & Exception Logging with Scrutor Decorators", "url": "https://keestalkstech.com/prometheus-latency-metrics-exception-logging-with-scrutor-decorators/", "published_at": "2020-08-21T05:57:10+00:00" }, { "id": "01a0bb71-7cf2-71e5-8b84-d666945ab1ee", "title": "Reading 400k+ key/values from Redis fast", "url": "https://keestalkstech.com/reading-multiple-key-values-from-redis/", "published_at": "2020-08-16T13:26:03+00:00" }, { "id": "01a0bb71-7cf2-71e5-8b84-d66694dcfcc8", "title": "Dependency Injection based on request headers", "url": "https://keestalkstech.com/dependency-injection-based-on-request-headers/", "published_at": "2020-06-03T06:12:21+00:00" }, { "id": "01a0bb74-eddd-7181-a112-34d0c7c27a3c", "title": "Cropping model images using PIL", "url": "https://keestalkstech.com/cropping-model-images-using-pil/", "published_at": "2020-05-09T12:21:29+00:00" }, { "id": "01a0bb74-eddd-7181-a112-34d0c7d095a7", "title": "Plotting a grid of PIL images in Jupyter", "url": "https://keestalkstech.com/plotting-a-grid-of-pil-images-in-jupyter/", "published_at": "2020-05-06T11:08:35+00:00" }, { "id": "01a0bb74-eddd-7181-a112-34d0c84cfae2", "title": "Connect to AWS ElastiCache (Redis) with redis-cli", "url": "https://keestalkstech.com/connect-to-aws-elasticache-redis-with-redis-cli/", "published_at": "2020-01-26T12:10:48+00:00" }, { "id": "01a0bb74-eddd-7181-a112-34d0c92ccf8e", "title": "Poll JSON endpoint until value changes with bash & curl", "url": "https://keestalkstech.com/poll-json-endpoint-until-value-changes-with-bash-curl/", "published_at": "2020-01-03T22:48:19+00:00" }, { "id": "01a0bb74-eddd-7181-a112-34d0c9784079", "title": "Incorporate free ngrok in your Node.js application for local development", "url": "https://keestalkstech.com/incorporate-free-ngrok-in-your-node-js-application-for-local-development/", "published_at": "2019-12-27T21:50:00+00:00" }, { "id": "01a0bb74-eddd-7181-a112-34d0ca3df831", "title": "“Is One Of” and “Is Not One Of” validation attributes", "url": "https://keestalkstech.com/is-one-of-and-is-not-one-of-validation-attributes/", "published_at": "2019-12-23T08:05:04+00:00" }, { "id": "01a0bb74-eddd-7181-a112-34d0ca785c10", "title": "Visual Studio Code + Docker + Python using WSL in Windows on Boot Camp", "url": "https://keestalkstech.com/visual-studio-code-docker-python-using-wsl-in-windows-on-boot-camp/", "published_at": "2019-12-21T19:39:15+00:00" }, { "id": "01a0bb74-eddd-7181-a112-34d0cabe9bc6", "title": "Spark: replace array with IDs with values; or: how to join objects?", "url": "https://keestalkstech.com/spark-replace-array-with-ids-with-values-or-how-to-join-objects/", "published_at": "2019-12-11T10:37:54+00:00" }, { "id": "01a0bb74-eddd-7181-a112-34d0cb21c860", "title": "Fix: stuck in Wi-Fi setup Honeywell T6 installation on Samsung", "url": "https://keestalkstech.com/fix-stuck-in-wi-fi-setup-honeywell-t6-installation-on-samsung/", "published_at": "2019-12-07T21:02:02+00:00" }, { "id": "01a0bb74-eddd-7181-a112-34d0cb3c8d52", "title": "Docker on Synology: from git to running container; the easy way", "url": "https://keestalkstech.com/docker-on-synology-from-git-to-running-container-the-easy-way/", "published_at": "2019-11-15T17:09:24+00:00" }, { "id": "01a0bb78-2326-73d6-b197-a7e1dfa1c853", "title": "Add black borders to terminal screen recordings", "url": "https://keestalkstech.com/add-black-borders-to-terminal-screen-recordings/", "published_at": "2019-11-12T20:57:24+00:00" }, { "id": "01a0bb78-2326-73d6-b197-a7e1e00bfe33", "title": "Streaming a Kafka Topic to a Delta Table on S3 with Spark Structured Streaming", "url": "https://keestalkstech.com/streaming-a-kafka-topic-to-a-delta-table-on-s3-with-spark-structured-streaming/", "published_at": "2019-11-09T09:25:36+00:00" }, { "id": "01a0bb78-2326-73d6-b197-a7e1e0997881", "title": "Easy Spark optimization for max record: aggregate instead of join?", "url": "https://keestalkstech.com/easy-spark-optimization-for-max-record-aggregate-instead-of-join/", "published_at": "2019-11-09T08:32:16+00:00" }, { "id": "01a0bb78-2326-73d6-b197-a7e1e13e4f2e", "title": "Add more color to the Python code of your Databricks notebook [retired]", "url": "https://keestalkstech.com/add-more-color-to-the-python-code-of-your-databricks-notebook/", "published_at": "2019-11-08T18:03:20+00:00" }, { "id": "01a0bb78-2326-73d6-b197-a7e1e2379d2e", "title": "Kafka, Spark and schema inference", "url": "https://keestalkstech.com/kafka-spark-and-schema-inference/", "published_at": "2019-11-03T10:17:32+00:00" }, { "id": "01a0bb78-2326-73d6-b197-a7e1e322c2e0", "title": "Simple Python code to send messages to a Slack channel (without packages)", "url": "https://keestalkstech.com/simple-python-code-to-send-message-to-slack-channel-without-packages/", "published_at": "2019-10-25T07:05:45+00:00" }, { "id": "01a0bb78-2326-73d6-b197-a7e1e33f323b", "title": "Caching resized images on S3 with Databricks", "url": "https://keestalkstech.com/caching-resized-images-on-s3-with-databricks/", "published_at": "2019-09-10T12:41:38+00:00" }, { "id": "01a0bb78-2326-73d6-b197-a7e1e392b6ad", "title": "Sorting an array of a complex data type in Spark", "url": "https://keestalkstech.com/sorting-an-array-of-a-complex-data-type-in-spark/", "published_at": "2019-09-05T20:52:43+00:00" }, { "id": "01a0bb78-2326-73d6-b197-a7e1e4142c42", "title": "Adding True/False and list value widgets to your Databricks notebook", "url": "https://keestalkstech.com/adding-true-false-and-list-widgets-to-your-databricks-notebook/", "published_at": "2019-08-31T14:31:37+00:00" } ] posts Claim your blog
Back to keestalkstech.com
Blog · corpus.blog/blogs/keestalkstech.com/posts

keestalkstech.com

keestalkstech.com

2026

2025

2024

2023

2022

2021

2020

2019