# Blueground Engineering blog

Stories from the teams who enable Blueground through technology

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## A Software Engineer's Guide to Observability: Part 2 - APM & Distributed Tracing

DevFeed: [A Software Engineer's Guide to Observability: Part 2 - APM & Distributed Tracing](<https://devfeed.tech/articles/a-software-engineer-s-guide-to-observability-part-2-apm-distributed-tracing-23695.md>)

Original publisher: [Read original article](<https://engineering.theblueground.com/a-software-engineers-guide-to-observability-part-2-apm-distributed-tracing-2/>)

Author: Andreas Gounaris

Published: 2026-06-02T12:27:24Z

Content type: tutorial

Language: en

Sources: [Blueground Engineering blog](<https://devfeed.tech/sources/blueground-engineering-blog.md>)

Topics: [Application Performance Management (APM)](<https://devfeed.tech/topics/apm.md>), [tracing](<https://devfeed.tech/topics/tracing.md>), [observability](<https://devfeed.tech/topics/observability.md>), [telemetry](<https://devfeed.tech/topics/telemetry.md>), [Instrumentation](<https://devfeed.tech/topics/instrumentation.md>), [debugging](<https://devfeed.tech/topics/debugging.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [apm](<https://devfeed.tech/tags/apm.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [devops](<https://devfeed.tech/tags/devops.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [guide](<https://devfeed.tech/tags/guide.md>), [instrumentation](<https://devfeed.tech/tags/instrumentation.md>), [monitoring](<https://devfeed.tech/tags/monitoring.md>), [observability](<https://devfeed.tech/tags/observability.md>), [tracing](<https://devfeed.tech/tags/tracing.md>)

### AI overview

This guide explains how APM and distributed tracing complement logs by showing application latency, errors, throughput, and time spent across code paths and services. It covers instrumentation, span collection, and tracing workflows for investigating performance problems.

### Source excerpt

Blueground Engineering's observability guide to APM: why tracing matters, auto-instrumentation strategies, custom span best practices, and AI-enhanced debugging workflows In Part 1, we covered logging as your forensics tool for understanding what happened after you've identified a problem. Logs are great at telling you

## A Software Engineer's Guide to Observability: Part 1 - Logging

DevFeed: [A Software Engineer's Guide to Observability: Part 1 - Logging](<https://devfeed.tech/articles/a-software-engineer-s-guide-to-observability-part-1-logging-23694.md>)

Original publisher: [Read original article](<https://engineering.theblueground.com/a-software-engineers-guide-to-observability-part-1-logging/>)

Author: Andreas Gounaris

Published: 2025-09-17T08:04:38Z

Content type: tutorial

Language: en

Sources: [Blueground Engineering blog](<https://devfeed.tech/sources/blueground-engineering-blog.md>)

Topics: [Logging](<https://devfeed.tech/topics/logging.md>), [observability](<https://devfeed.tech/topics/observability.md>), [log management](<https://devfeed.tech/topics/log-management.md>), [Software](<https://devfeed.tech/topics/software.md>), [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>)

Tags: [agents](<https://devfeed.tech/tags/agents.md>), [apm](<https://devfeed.tech/tags/apm.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [guide](<https://devfeed.tech/tags/guide.md>), [incident](<https://devfeed.tech/tags/incident.md>), [json](<https://devfeed.tech/tags/json.md>), [llms](<https://devfeed.tech/tags/llms.md>), [logging](<https://devfeed.tech/tags/logging.md>), [logs](<https://devfeed.tech/tags/logs.md>), [observability](<https://devfeed.tech/tags/observability.md>), [software](<https://devfeed.tech/tags/software.md>), [telemetry](<https://devfeed.tech/tags/telemetry.md>)

### AI overview

Blueground Engineering's guide explains the role of logs in observability and recommends using them primarily as a forensic tool for investigating failures. It discusses reconstructing timelines, preserving context, identifying root causes, validating system behavior, and making structured logs useful to LLMs and AI-assisted incident analysis.

### Source excerpt

Blueground Engineering's observability guide to logging: why log, what to capture, JSON structure, correlation IDs, and AI-ready practices with policy and refs

## A Software Engineer's Guide to Observability

DevFeed: [A Software Engineer's Guide to Observability](<https://devfeed.tech/articles/a-software-engineer-s-guide-to-observability-23696.md>)

Original publisher: [Read original article](<https://engineering.theblueground.com/a-software-engineers-guide-to-observability/>)

Author: Stratos Pavlakis

Published: 2025-09-17T08:04:24Z

Content type: tutorial

Language: en

Sources: [Blueground Engineering blog](<https://devfeed.tech/sources/blueground-engineering-blog.md>)

Topics: [observability](<https://devfeed.tech/topics/observability.md>), [telemetry](<https://devfeed.tech/topics/telemetry.md>), [tracing](<https://devfeed.tech/topics/tracing.md>), [log management](<https://devfeed.tech/topics/log-management.md>), [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>), [OpenTelemetry](<https://devfeed.tech/topics/opentelemetry.md>), [Microservices](<https://devfeed.tech/topics/microservices.md>), [SRE](<https://devfeed.tech/topics/sre.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [apm](<https://devfeed.tech/tags/apm.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [guide](<https://devfeed.tech/tags/guide.md>), [logging](<https://devfeed.tech/tags/logging.md>), [logs](<https://devfeed.tech/tags/logs.md>), [metrics](<https://devfeed.tech/tags/metrics.md>), [microservices](<https://devfeed.tech/tags/microservices.md>), [monitoring](<https://devfeed.tech/tags/monitoring.md>), [observability](<https://devfeed.tech/tags/observability.md>), [opentelemetry](<https://devfeed.tech/tags/opentelemetry.md>), [sre](<https://devfeed.tech/tags/sre.md>), [telemetry](<https://devfeed.tech/tags/telemetry.md>), [tracing](<https://devfeed.tech/tags/tracing.md>)

### AI overview

A practical guide for Engineering Managers and SREs on observability, explaining when to use logs, tracing, and metrics. It provides a high-level framework before covering tools such as OpenTelemetry, ELK, and Datadog, with policies and reference implementations.

### Source excerpt

A practical observability guide for Engineering Managers & SREs: understand when to use logs, tracing, and metrics, with policies, examples, and AI-driven SRE.

## 🔐 AccessOrbit: One-Click, Time-Limited DB Access with Hashicorp Vault & GitHub Actions

DevFeed: [🔐 AccessOrbit: One-Click, Time-Limited DB Access with Hashicorp Vault & GitHub Actions](<https://devfeed.tech/articles/accessorbit-one-click-time-limited-db-access-with-hashicorp-vault-github-actions-23697.md>)

Original publisher: [Read original article](<https://engineering.theblueground.com/accessorbit-one-click-time-limited-db-access-with-hashicorp-vault-github-actions/>)

Author: Pavlos Petros Tournaris

Published: 2025-05-06T09:36:40Z

Content type: tutorial

Language: en

Sources: [Blueground Engineering blog](<https://devfeed.tech/sources/blueground-engineering-blog.md>)

Topics: [HashiCorp Vault](<https://devfeed.tech/topics/hashicorp-vault.md>), [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Security](<https://devfeed.tech/topics/security.md>), [Access Control](<https://devfeed.tech/topics/access-control.md>), [Slack](<https://devfeed.tech/topics/slack.md>)

Tags: [access-control](<https://devfeed.tech/tags/access-control.md>), [databases](<https://devfeed.tech/tags/databases.md>), [dynamic-secrets](<https://devfeed.tech/tags/dynamic-secrets.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [hashicorp-vault](<https://devfeed.tech/tags/hashicorp-vault.md>), [least-privilege](<https://devfeed.tech/tags/least-privilege.md>), [notifications](<https://devfeed.tech/tags/notifications.md>), [secrets](<https://devfeed.tech/tags/secrets.md>), [security](<https://devfeed.tech/tags/security.md>)

### AI overview

Blueground describes AccessOrbit, a self-service workflow for requesting temporary database credentials. It combines HashiCorp Vault, GitHub Actions, GitHub Issues, and Slack to support auditable requests, approvals, and time-limited access.

### Source excerpt

At some point, most platform teams face a common challenge: how to provide engineers with timely, auditable, and secure access to production (or staging) databases--without blowing a hole in security or flooding Slack with manual approval chaos. At Blueground, we've implemented a fully automated, self-serve

## Building an AI-Powered Team Knowledge Base with Cloudflare AutoRAG and Next.js

DevFeed: [Building an AI-Powered Team Knowledge Base with Cloudflare AutoRAG and Next.js](<https://devfeed.tech/articles/ragnarok-creating-an-ai-powered-knowledge-base-for-your-team-is-easier-cheaper-than-you-might-think-23706.md>)

Original publisher: [Read original article](<https://engineering.theblueground.com/ragnarok-creating-an-ai-powered-knowledge-base-for-your-team-is-easier-cheaper-than-you-might-think/>)

Author: Pavlos Petros Tournaris

Published: 2025-04-28T16:02:54Z

Content type: tutorial

Language: en

Sources: [Blueground Engineering blog](<https://devfeed.tech/sources/blueground-engineering-blog.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>), [Next.js](<https://devfeed.tech/topics/next-js.md>), [API](<https://devfeed.tech/topics/api.md>), [Front end](<https://devfeed.tech/topics/frontend.md>), [knowledge-management](<https://devfeed.tech/topics/knowledge-management.md>), [Code](<https://devfeed.tech/topics/code.md>), [coding](<https://devfeed.tech/topics/coding.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Markdown](<https://devfeed.tech/topics/markdown.md>), [Vibe coding](<https://devfeed.tech/topics/vibe-coding.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [api](<https://devfeed.tech/tags/api.md>), [article](<https://devfeed.tech/tags/article.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [code](<https://devfeed.tech/tags/code.md>), [coding](<https://devfeed.tech/tags/coding.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [knowledge-management](<https://devfeed.tech/tags/knowledge-management.md>), [markdown](<https://devfeed.tech/tags/markdown.md>), [next-js](<https://devfeed.tech/tags/next-js.md>), [streaming](<https://devfeed.tech/tags/streaming.md>), [ui](<https://devfeed.tech/tags/ui.md>), [vibe-coding](<https://devfeed.tech/tags/vibe-coding.md>)

### AI overview

The article describes how Blueground's Platform team built an AI-powered internal knowledge base using Cloudflare AutoRAG, Next.js, and targeted in-house development. It integrates Terraform documentation and content from Outline, with streaming, context-aware responses and a responsive frontend.

### Source excerpt

Introduction Building an AI-powered knowledge base for your teams is faster, easier, and more cost-effective than you might expect. You don't need to engage expensive knowledge base vendors or invest in heavy bespoke solutions--instead, with emerging tools like Cloudflare's AutoRAG, Next.js,

## Rustic Witcher: Reimagining data anonymization

DevFeed: [Rustic Witcher: Reimagining data anonymization](<https://devfeed.tech/articles/rustic-witcher-reimagining-data-anonymization-23707.md>)

Original publisher: [Read original article](<https://engineering.theblueground.com/rustic-witcher-reimagining-data-anonymization/>)

Author: Pavlos Petros Tournaris

Published: 2024-07-01T11:10:44Z

Content type: article

Language: en

Sources: [Blueground Engineering blog](<https://devfeed.tech/sources/blueground-engineering-blog.md>)

Topics: [data](<https://devfeed.tech/topics/data.md>), [pii](<https://devfeed.tech/topics/pii.md>), [AWS Database Migration Service](<https://devfeed.tech/topics/aws-database-migration-service.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [datasets](<https://devfeed.tech/topics/datasets.md>), [Amazon S3](<https://devfeed.tech/topics/amazon-s3.md>), [Kafka](<https://devfeed.tech/topics/kafka.md>), [Microservices](<https://devfeed.tech/topics/microservices.md>), [Testing](<https://devfeed.tech/topics/testing.md>)

Tags: [aws-database-migration-service](<https://devfeed.tech/tags/aws-database-migration-service.md>), [data](<https://devfeed.tech/tags/data.md>), [datasets](<https://devfeed.tech/tags/datasets.md>), [debezium](<https://devfeed.tech/tags/debezium.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [microservices](<https://devfeed.tech/tags/microservices.md>), [pii](<https://devfeed.tech/tags/pii.md>), [rust](<https://devfeed.tech/tags/rust.md>), [s3](<https://devfeed.tech/tags/s3.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

Blueground describes replacing an increasingly slow production-data de-identification pipeline with Rustic Witcher, an internal Rust tool designed to support growing data volumes and database counts. The existing process used Debezium, Kafka, temporary Postgres storage, and S3, while the proposed approach considers AWS Database Migration Service exports as its input.

### Source excerpt

At Blueground, the majority of our services require data for testing end-to-end user journeys, whether client-facing or operational. Consequently, we need to de-identify PII from production data to provide our engineers with realistic datasets. This approach ensures our pre-production systems mirror the behavior of production

## Speeding Up Data Imports for Deployment Previews with PVC Snapshotting

DevFeed: [Speeding Up Data Imports for Deployment Previews with PVC Snapshotting](<https://devfeed.tech/articles/98-faster-data-imports-in-deployment-previews-23702.md>)

Original publisher: [Read original article](<https://engineering.theblueground.com/faster-data-imports-in-deployment-previews/>)

Author: Nick Nikitas

Published: 2024-01-23T12:48:14Z

Content type: article

Language: en

Sources: [Blueground Engineering blog](<https://devfeed.tech/sources/blueground-engineering-blog.md>)

Topics: [Deployment](<https://devfeed.tech/topics/deployment.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [Developer experience](<https://devfeed.tech/topics/developer-experience.md>), [pull-requests](<https://devfeed.tech/topics/pull-requests.md>), [data](<https://devfeed.tech/topics/data.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [argo-cd](<https://devfeed.tech/topics/argo-cd.md>), [Amazon Web Services](<https://devfeed.tech/topics/aws.md>)

Tags: [argo-cd](<https://devfeed.tech/tags/argo-cd.md>), [aws](<https://devfeed.tech/tags/aws.md>), [data](<https://devfeed.tech/tags/data.md>), [databases](<https://devfeed.tech/tags/databases.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [developer-experience](<https://devfeed.tech/tags/developer-experience.md>), [devops](<https://devfeed.tech/tags/devops.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [platform](<https://devfeed.tech/tags/platform.md>), [provisioning](<https://devfeed.tech/tags/provisioning.md>), [pull-requests](<https://devfeed.tech/tags/pull-requests.md>)

### AI overview

This article describes a bottleneck in deployment previews caused by importing de-identified production data into ephemeral environments. It introduces PVC snapshotting as the method used to provision previews more promptly and outlines drawbacks of the previous Argo CD- and Kubernetes-based approach, including lengthy waits, limited scalability, and errors.

### Source excerpt

Check out our previous blog post to learn about implementing Deployment Previews, a concept popularized by Netlify and Vercel in Kubernetes. This post will explain our method of provisioning them promptly, rather than keeping our engineers waiting, using PVC snapshotting. This December, we went out and asked our colleagues to

## Mastering UI Testing for Android web forms

DevFeed: [Mastering UI Testing for Android web forms](<https://devfeed.tech/articles/mastering-ui-testing-for-android-web-forms-23704.md>)

Original publisher: [Read original article](<https://engineering.theblueground.com/mastering-ui-testing-for-android-web-forms/>)

Author: Vaios Tsitsonis

Published: 2024-01-05T11:50:19Z

Content type: tutorial

Language: en

Sources: [Blueground Engineering blog](<https://devfeed.tech/sources/blueground-engineering-blog.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [WebView](<https://devfeed.tech/topics/webview.md>), [Forms](<https://devfeed.tech/topics/forms.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [HTML](<https://devfeed.tech/topics/html.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [forms](<https://devfeed.tech/tags/forms.md>), [html-elements](<https://devfeed.tech/tags/html-elements.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [testing](<https://devfeed.tech/tags/testing.md>), [ui-testing](<https://devfeed.tech/tags/ui-testing.md>), [web](<https://devfeed.tech/tags/web.md>), [webview](<https://devfeed.tech/tags/webview.md>)

### AI overview

This tutorial explains a UI-testing problem in Android apps that open web forms in a WebView. Programmatically changing HTML input values can mark related JavaScript events as non-trusted, leaving a button disabled even when the fields display values.

### Source excerpt

Yeah! We are Android engineers! 🎉 We can build almost anything by ourselves and make it run on any Android device! But sometimes we may need to use a third-party library or incorporate web-based functionality into a WebView to go fast. This can introduce challenges during UI testing.

## Accelerating theblueground.com: Five Core Web Vitals improvements

DevFeed: [Accelerating theblueground.com: Five Core Web Vitals improvements](<https://devfeed.tech/articles/accelerating-theblueground-com-five-core-web-vitals-improvements-23705.md>)

Original publisher: [Read original article](<https://engineering.theblueground.com/optimizing-lcp-for-superior-user-experiences-a-blueground-case-study/>)

Author: Dimitris Zotos

Published: 2023-12-22T10:10:37Z

Content type: article

Language: en

Sources: [Blueground Engineering blog](<https://devfeed.tech/sources/blueground-engineering-blog.md>)

Topics: [Core Web Vitals](<https://devfeed.tech/topics/core-web-vitals.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [User Experience](<https://devfeed.tech/topics/user-experience.md>), [Google Search](<https://devfeed.tech/topics/google-search.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Web](<https://devfeed.tech/topics/web.md>)

Tags: [core-web-vitals](<https://devfeed.tech/tags/core-web-vitals.md>), [google-search](<https://devfeed.tech/tags/google-search.md>), [interaction-to-next-paint](<https://devfeed.tech/tags/interaction-to-next-paint.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [performance](<https://devfeed.tech/tags/performance.md>), [seo](<https://devfeed.tech/tags/seo.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>), [web](<https://devfeed.tech/tags/web.md>)

### AI overview

A Blueground case study describes efforts to improve theblueground.com's Core Web Vitals, focusing on website loading performance and Largest Contentful Paint. The article explains the roles of LCP, FID, and CLS, notes Google's planned replacement of FID with Interaction to Next Paint, and reports an initial mobile LCP of 2.7-3 seconds alongside low impressions in Google Search Console.

### Source excerpt

In the realm of modern hospitality, Blueground stands out by providing fully furnished apartments that redefine travel. However, beyond the sophistication of our spaces, a pivotal factor comes into play -- our website's load speed performance. Serving thousands of daily users requires a digital experience that matches the

## Crafting a Floating Bubble in Android with Jetpack Compose

DevFeed: [Crafting a Floating Bubble in Android with Jetpack Compose](<https://devfeed.tech/articles/crafting-a-floating-bubble-in-android-with-jetpack-compose-23700.md>)

Original publisher: [Read original article](<https://engineering.theblueground.com/crafting-a-floating-bubble-in-android-with-jetpack-compose/>)

Author: Vaios Tsitsonis

Published: 2023-06-27T13:29:28Z

Content type: tutorial

Language: en

Sources: [Blueground Engineering blog](<https://devfeed.tech/sources/blueground-engineering-blog.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Android](<https://devfeed.tech/topics/android.md>), [ui](<https://devfeed.tech/topics/ui.md>), [reactive](<https://devfeed.tech/topics/reactive.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [component](<https://devfeed.tech/tags/component.md>), [container](<https://devfeed.tech/tags/container.md>), [declarative](<https://devfeed.tech/tags/declarative.md>), [development](<https://devfeed.tech/tags/development.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [screen](<https://devfeed.tech/tags/screen.md>), [state](<https://devfeed.tech/tags/state.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

A tutorial on implementing a permissionless, in-app floating chat bubble in Android with Jetpack Compose. It explains the draggable container and bubble structure, state tracking for position and dimensions, and coordinate calculations that keep the bubble within the screen.

### Source excerpt

Jetpack Compose simplifies UI development with a declarative approach, improves productivity with live preview, and offers a modern, reactive framework for building dynamic and interactive user interfaces. In simple words, it makes it fast, easy, less error-prone, and funny to do complex UIs. At Blueground, we needed to create

## Fixtures made easy with KSP

DevFeed: [Fixtures made easy with KSP](<https://devfeed.tech/articles/fixtures-made-easy-with-ksp-23703.md>)

Original publisher: [Read original article](<https://engineering.theblueground.com/fixtures-made-easy-with-the-help-of-ksp/>)

Author: Vaios Tsitsonis

Published: 2022-11-16T12:09:04Z

Content type: tutorial

Language: en

Sources: [Blueground Engineering blog](<https://devfeed.tech/sources/blueground-engineering-blog.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [Boilerplate](<https://devfeed.tech/topics/boilerplate.md>), [Library](<https://devfeed.tech/topics/library.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [blog-post](<https://devfeed.tech/tags/blog-post.md>), [build-tools](<https://devfeed.tech/tags/build-tools.md>), [code](<https://devfeed.tech/tags/code.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [open-source](<https://devfeed.tech/tags/open-source.md>)

### AI overview

The article presents Fixtures, an open-source Blueground library built with KSP to generate helper functions for instantiating data-class objects in tests. It explains generated helpers, supported parameter types, configurable random default values, and handling of unsupported field types.

### Source excerpt

Standing on the shoulders of giants In a previous blog post, we discussed how to build tools with the help of KSP. In this one, we will present one of the tools we built in Blueground that recently has been released as an open-source project. Initially, we were inspired

## Deployment previews on Kubernetes

DevFeed: [Deployment previews on Kubernetes](<https://devfeed.tech/articles/deployment-previews-on-kubernetes-23701.md>)

Original publisher: [Read original article](<https://engineering.theblueground.com/deployment-previews/>)

Author: Andreas Gounaris

Published: 2022-11-11T07:30:00Z

Content type: tutorial

Language: en

Sources: [Blueground Engineering blog](<https://devfeed.tech/sources/blueground-engineering-blog.md>)

Topics: [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>), [GitOps](<https://devfeed.tech/topics/gitops.md>), [argocd](<https://devfeed.tech/topics/argocd.md>), [Microservice](<https://devfeed.tech/topics/microservice.md>), [Netlify](<https://devfeed.tech/topics/netlify.md>), [Vercel](<https://devfeed.tech/topics/vercel.md>)

Tags: [argocd](<https://devfeed.tech/tags/argocd.md>), [cost](<https://devfeed.tech/tags/cost.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [developer-experience](<https://devfeed.tech/tags/developer-experience.md>), [devops](<https://devfeed.tech/tags/devops.md>), [energy](<https://devfeed.tech/tags/energy.md>), [gitops](<https://devfeed.tech/tags/gitops.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [netlify](<https://devfeed.tech/tags/netlify.md>), [self-service](<https://devfeed.tech/tags/self-service.md>), [services](<https://devfeed.tech/tags/services.md>), [vercel](<https://devfeed.tech/tags/vercel.md>)

### AI overview

Blueground describes how it brought deployment previews to Kubernetes-hosted microservices using GitOps and ArgoCD. The approach replaced scarce static pre-production environments with temporary, self-service previews using production images and de-identified production data.

### Source excerpt

Deployment previews - made popular by platforms like Vercel and Netlify - are not commonplace in microservice architectures. At Blueground, we brought deployment previews to K8s using ArgoCD. Well, it turned out to be so good, it is worth sharing.

## Using Kotlin Symbol Processing (KSP) to Generate Enum Mappers

DevFeed: [Using Kotlin Symbol Processing (KSP) to Generate Enum Mappers](<https://devfeed.tech/articles/adding-ksp-to-your-toolbelt-23698.md>)

Original publisher: [Read original article](<https://engineering.theblueground.com/adding-ksp-to-your-toolbelt/>)

Author: Vaios Tsitsonis

Published: 2022-08-02T10:45:00Z

Content type: tutorial

Language: en

Sources: [Blueground Engineering blog](<https://devfeed.tech/sources/blueground-engineering-blog.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Boilerplate](<https://devfeed.tech/topics/boilerplate.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [build times](<https://devfeed.tech/topics/build-times.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [annotation-processor](<https://devfeed.tech/tags/annotation-processor.md>), [build-times](<https://devfeed.tech/tags/build-times.md>), [compilation](<https://devfeed.tech/tags/compilation.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>)

### AI overview

This tutorial explains Kotlin Symbol Processing (KSP), its advantages over Java annotation processing, and how to set it up with Gradle. It demonstrates using KSP to generate mapper classes for enums and reduce duplicated conversion code.

### Source excerpt

Let's prepare the ground Before we start examining how to use KSP a.k.a Kotlin Symbol Processing, let's say a few words about what it is. For the familiars with the annotation processing, we could say that is an annotation processing tool for Kotlin. This

## Keep your Tabs and List in sync using Jetpack Compose

DevFeed: [Keep your Tabs and List in sync using Jetpack Compose](<https://devfeed.tech/articles/keep-your-tabs-and-list-in-sync-using-jetpack-compose-23699.md>)

Original publisher: [Read original article](<https://engineering.theblueground.com/auto-sync-tabs-and-a-list-with-jetpack-compose/>)

Author: Vaios Tsitsonis

Published: 2022-06-20T12:15:00Z

Content type: tutorial

Language: en

Sources: [Blueground Engineering blog](<https://devfeed.tech/sources/blueground-engineering-blog.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Development](<https://devfeed.tech/topics/development.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [code](<https://devfeed.tech/tags/code.md>), [compose](<https://devfeed.tech/tags/compose.md>), [development](<https://devfeed.tech/tags/development.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [list](<https://devfeed.tech/tags/list.md>), [recomposition](<https://devfeed.tech/tags/recomposition.md>), [state](<https://devfeed.tech/tags/state.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This tutorial introduces Jetpack Compose and explains how to build a UI with grouped list items, synchronized tabs, scrolling behavior, and automatic navigation to corresponding groups. It also discusses Compose's Kotlin-based UI model, state handling, recomposition, and interoperability with the older UI system.

### Source excerpt

Jetpack Compose In May 2019, Google announced a new UI toolkit for Kotlin developers. In July 2021 the first stable version of this toolkit was made available. So, it is a fresh but I believe very promising toolkit. Some of the benefits of using the Jetpack Compose will be mentioned