<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>PCSalt</title><description>Tech tutorials on Android, Java, Backend Development, and IoT</description><link>https://pcsalt.com/</link><item><title>Modern RecyclerView — ListAdapter, DiffUtil &amp; ViewBinding in Kotlin</title><link>https://pcsalt.com/android/recyclerview-listadapter-diffutil-kotlin/</link><guid isPermaLink="true">https://pcsalt.com/android/recyclerview-listadapter-diffutil-kotlin/</guid><description>Build efficient RecyclerView lists with ListAdapter, DiffUtil.ItemCallback, and ViewBinding in Kotlin — with click handling, ViewModel integration, and common pitfalls.</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Multi-Module Spring Boot Project with Gradle Version Catalog</title><link>https://pcsalt.com/spring-boot/spring-boot-4-multi-module/</link><guid isPermaLink="true">https://pcsalt.com/spring-boot/spring-boot-4-multi-module/</guid><description>Structure a multi-module Spring Boot project with Gradle — shared dependencies via version catalogs (libs.versions.toml), module boundaries, and build optimization.</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Automating Immich Version Updates with GitHub Actions</title><link>https://pcsalt.com/homelab/immich-version-update-workflow-github-actions/</link><guid isPermaLink="true">https://pcsalt.com/homelab/immich-version-update-workflow-github-actions/</guid><description>A GitHub Actions workflow to update Immich versions with validation, auto-commit, and chained deployment — no SSH required.</description><pubDate>Sat, 28 Mar 2026 00:00:00 GMT</pubDate></item><item><title>From Manual Chaos to Automated Deployments: My Home Server CI/CD with GitHub Actions</title><link>https://pcsalt.com/homelab/home-server-automated-deployments-github-actions/</link><guid isPermaLink="true">https://pcsalt.com/homelab/home-server-automated-deployments-github-actions/</guid><description>How I replaced SSH-and-pray deployments with GitHub Actions — path-based triggers, reusable workflows, and selective service deployment for a multi-service home server.</description><pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Automating Android Repo Maintenance with Reusable GitHub Actions</title><link>https://pcsalt.com/android/automating-android-repo-maintenance/</link><guid isPermaLink="true">https://pcsalt.com/android/automating-android-repo-maintenance/</guid><description>How I modernized 8 Android repos in one session — reusable CI workflows, batch build system updates, and a pattern for maintaining multiple projects at scale.</description><pubDate>Mon, 16 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Rate Limiting &amp; Circuit Breakers with Resilience4j</title><link>https://pcsalt.com/spring-boot/spring-boot-4-resilience4j/</link><guid isPermaLink="true">https://pcsalt.com/spring-boot/spring-boot-4-resilience4j/</guid><description>Add resilience to Spring Boot 4 services with Resilience4j — circuit breakers, retries, rate limiters, bulkheads, and how to configure them for production.</description><pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate></item><item><title>SharedPreferences in Android — The Complete Guide</title><link>https://pcsalt.com/android/sharedpreferences-android-complete-guide/</link><guid isPermaLink="true">https://pcsalt.com/android/sharedpreferences-android-complete-guide/</guid><description>Everything you need to know about SharedPreferences in Android — when to use it, how to save, read, remove, and list all stored values. All examples in Kotlin.</description><pubDate>Sat, 14 Mar 2026 00:00:00 GMT</pubDate></item><item><title>AlertDialog in Android — The Complete Guide</title><link>https://pcsalt.com/android/alertdialog-android-complete-guide/</link><guid isPermaLink="true">https://pcsalt.com/android/alertdialog-android-complete-guide/</guid><description>Everything you need to know about AlertDialog in Android — basic usage, selection dialogs, custom layouts, and button customization. All in Kotlin.</description><pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Spring Boot Actuator &amp; OpenTelemetry — Production Monitoring</title><link>https://pcsalt.com/spring-boot/spring-boot-4-actuator-otel/</link><guid isPermaLink="true">https://pcsalt.com/spring-boot/spring-boot-4-actuator-otel/</guid><description>Set up Spring Boot Actuator for health checks and metrics, integrate OpenTelemetry for distributed tracing, and export to Prometheus and Grafana.</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Spring Boot + Kafka — Producer, Consumer &amp; Dead Letter Topics</title><link>https://pcsalt.com/spring-boot/spring-boot-4-kafka/</link><guid isPermaLink="true">https://pcsalt.com/spring-boot/spring-boot-4-kafka/</guid><description>Integrate Apache Kafka with Spring Boot 4 — producer configuration, consumer groups, error handling, dead letter topics, and JSON serialization.</description><pubDate>Sun, 15 Feb 2026 00:00:00 GMT</pubDate></item><item><title>CSRF, XSS &amp; SQL Injection — Practical Prevention in Spring Boot</title><link>https://pcsalt.com/security/csrf-xss-sql-injection/</link><guid isPermaLink="true">https://pcsalt.com/security/csrf-xss-sql-injection/</guid><description>Understand CSRF, XSS, and SQL injection attacks — what they are, how they exploit web applications, and how to prevent each one in Spring Boot with practical examples.</description><pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Testing Spring Boot — Unit, Integration &amp; Testcontainers</title><link>https://pcsalt.com/spring-boot/spring-boot-4-testing/</link><guid isPermaLink="true">https://pcsalt.com/spring-boot/spring-boot-4-testing/</guid><description>A practical guide to testing Spring Boot 4 applications — unit tests, MockMvc, @DataJpaTest, Testcontainers for PostgreSQL, and @ServiceConnection.</description><pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Spring Security — Role-Based Access Control (RBAC)</title><link>https://pcsalt.com/security/spring-security-rbac/</link><guid isPermaLink="true">https://pcsalt.com/security/spring-security-rbac/</guid><description>Implement role-based access control in Spring Boot 4 — roles vs authorities, @PreAuthorize, method-level security, hierarchical roles, and database-backed permissions.</description><pubDate>Tue, 20 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Java 25 — String Templates &amp; Flexible Constructor Bodies</title><link>https://pcsalt.com/java/java-25-string-templates/</link><guid isPermaLink="true">https://pcsalt.com/java/java-25-string-templates/</guid><description>Java 25 finalizes string templates with the STR processor and flexible constructor bodies — two features that simplify everyday Java code.</description><pubDate>Thu, 15 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Spring Security — JWT Authentication from Scratch</title><link>https://pcsalt.com/spring-boot/spring-boot-4-security-jwt/</link><guid isPermaLink="true">https://pcsalt.com/spring-boot/spring-boot-4-security-jwt/</guid><description>Implement JWT authentication in Spring Boot 4 with Spring Security 7 — login endpoint, token generation, validation, refresh tokens, and protected routes.</description><pubDate>Thu, 15 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Java 25 — Primitive Types in Patterns &amp; instanceof</title><link>https://pcsalt.com/java/java-25-primitive-patterns/</link><guid isPermaLink="true">https://pcsalt.com/java/java-25-primitive-patterns/</guid><description>Java 25 finalizes primitive type patterns — use int, long, double, and boolean in instanceof checks and switch expressions. Practical examples and migration tips.</description><pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate></item><item><title>API Versioning — URL, Header &amp; Content Negotiation Strategies</title><link>https://pcsalt.com/architecture/api-versioning/</link><guid isPermaLink="true">https://pcsalt.com/architecture/api-versioning/</guid><description>Compare API versioning strategies — URL path, custom header, and content negotiation. Includes Spring Boot 4 built-in versioning support and decision framework.</description><pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Spring Data JPA with PostgreSQL — Repository Pattern Done Right</title><link>https://pcsalt.com/spring-boot/spring-boot-4-jpa-postgresql/</link><guid isPermaLink="true">https://pcsalt.com/spring-boot/spring-boot-4-jpa-postgresql/</guid><description>Set up Spring Data JPA with PostgreSQL in Spring Boot 4 — entities, repositories, custom queries, pagination, and database migrations with Flyway.</description><pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Java 21 — Scoped Values — The ThreadLocal Replacement</title><link>https://pcsalt.com/java/java-21-scoped-values/</link><guid isPermaLink="true">https://pcsalt.com/java/java-21-scoped-values/</guid><description>Understand Java&apos;s Scoped Values — why they replace ThreadLocal, how they work with virtual threads, and practical patterns for request-scoped data.</description><pubDate>Mon, 15 Dec 2025 00:00:00 GMT</pubDate></item><item><title>REST API Design in Spring Boot 4 — Validation, Error Handling &amp; DTOs</title><link>https://pcsalt.com/spring-boot/spring-boot-4-rest-api-design/</link><guid isPermaLink="true">https://pcsalt.com/spring-boot/spring-boot-4-rest-api-design/</guid><description>Design production-ready REST APIs in Spring Boot 4 — request validation with Bean Validation, structured error responses, DTO patterns, and API best practices.</description><pubDate>Mon, 15 Dec 2025 00:00:00 GMT</pubDate></item><item><title>Java 21 — Structured Concurrency</title><link>https://pcsalt.com/java/java-21-structured-concurrency/</link><guid isPermaLink="true">https://pcsalt.com/java/java-21-structured-concurrency/</guid><description>Understand Java&apos;s Structured Concurrency API — StructuredTaskScope, ShutdownOnFailure, ShutdownOnSuccess, and how it prevents thread leaks in concurrent code.</description><pubDate>Mon, 01 Dec 2025 00:00:00 GMT</pubDate></item><item><title>Spring Boot 4 Starter — Project Setup, Structure &amp; First API</title><link>https://pcsalt.com/spring-boot/spring-boot-4-starter/</link><guid isPermaLink="true">https://pcsalt.com/spring-boot/spring-boot-4-starter/</guid><description>Set up a Spring Boot 4 project from scratch — project structure, REST controller, configuration, profiles, and your first working API endpoint.</description><pubDate>Mon, 01 Dec 2025 00:00:00 GMT</pubDate></item><item><title>Migrating from XML Views to Compose — Gradual Adoption Strategy</title><link>https://pcsalt.com/compose/compose-migration-xml/</link><guid isPermaLink="true">https://pcsalt.com/compose/compose-migration-xml/</guid><description>Migrate from XML Views to Jetpack Compose incrementally — ComposeView in Fragments, AndroidView for legacy widgets, navigation interop, and a practical migration roadmap.</description><pubDate>Sat, 15 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Java 21 — Sequenced Collections — Finally, a First/Last API</title><link>https://pcsalt.com/java/java-21-sequenced-collections/</link><guid isPermaLink="true">https://pcsalt.com/java/java-21-sequenced-collections/</guid><description>Java 21&apos;s Sequenced Collections add getFirst(), getLast(), and reversed() to List, Set, and Map — the API Java has been missing for 25 years.</description><pubDate>Sat, 15 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Secure CI/CD — Signing APKs, Protecting Secrets in GitHub Actions</title><link>https://pcsalt.com/security/secure-cicd-android/</link><guid isPermaLink="true">https://pcsalt.com/security/secure-cicd-android/</guid><description>Secure your Android CI/CD pipeline — APK signing in GitHub Actions, keystore management, secret protection, artifact verification, and supply chain security.</description><pubDate>Sat, 15 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Compose + Retrofit + Coroutines — Full API Integration</title><link>https://pcsalt.com/compose/compose-retrofit-coroutines/</link><guid isPermaLink="true">https://pcsalt.com/compose/compose-retrofit-coroutines/</guid><description>Build a complete API integration in Jetpack Compose — Retrofit setup, coroutine-based calls, ViewModel state management, error handling, loading states, and pull-to-refresh.</description><pubDate>Sat, 01 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Java 21 — Record Patterns &amp; Sealed Classes in Practice</title><link>https://pcsalt.com/java/java-21-record-patterns-sealed/</link><guid isPermaLink="true">https://pcsalt.com/java/java-21-record-patterns-sealed/</guid><description>Use Java 21&apos;s record patterns and sealed classes together — destructuring records in switch, nested patterns, and building type-safe domain models.</description><pubDate>Sat, 01 Nov 2025 00:00:00 GMT</pubDate></item><item><title>API Rate Limiting &amp; Abuse Prevention</title><link>https://pcsalt.com/security/rate-limiting-abuse-prevention/</link><guid isPermaLink="true">https://pcsalt.com/security/rate-limiting-abuse-prevention/</guid><description>Implement API rate limiting — token bucket, sliding window, per-user and per-IP limits, Spring Boot implementation with Bucket4j, and abuse prevention strategies.</description><pubDate>Sat, 01 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Migrating from Java 17 to 21 — What Breaks, What Improves</title><link>https://pcsalt.com/java/java-17-to-21-migration/</link><guid isPermaLink="true">https://pcsalt.com/java/java-17-to-21-migration/</guid><description>A practical migration guide from Java 17 to 21 — breaking changes, deprecated removals, new features to adopt, and step-by-step upgrade process.</description><pubDate>Mon, 20 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Custom Layouts &amp; Modifiers in Compose</title><link>https://pcsalt.com/compose/compose-custom-layouts/</link><guid isPermaLink="true">https://pcsalt.com/compose/compose-custom-layouts/</guid><description>Build custom layouts and modifiers in Jetpack Compose — Layout composable, custom modifiers, intrinsic measurements, and when you need to go beyond Column and Row.</description><pubDate>Wed, 15 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Java 21 — Pattern Matching for switch (Exhaustive &amp; Guarded)</title><link>https://pcsalt.com/java/java-21-pattern-matching-switch/</link><guid isPermaLink="true">https://pcsalt.com/java/java-21-pattern-matching-switch/</guid><description>Master Java 21&apos;s pattern matching for switch — type patterns, guarded patterns, null handling, exhaustiveness, and practical examples for cleaner code.</description><pubDate>Wed, 15 Oct 2025 00:00:00 GMT</pubDate></item><item><title>CORS Explained — Why Your API Rejects Frontend Requests</title><link>https://pcsalt.com/security/cors-explained/</link><guid isPermaLink="true">https://pcsalt.com/security/cors-explained/</guid><description>Understand CORS from the ground up — what it is, why browsers enforce it, preflight requests, how to configure it in Spring Boot, and common debugging tips.</description><pubDate>Wed, 15 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Side Effects in Compose — LaunchedEffect, DisposableEffect &amp; More</title><link>https://pcsalt.com/compose/compose-side-effects/</link><guid isPermaLink="true">https://pcsalt.com/compose/compose-side-effects/</guid><description>Master side effects in Jetpack Compose — LaunchedEffect, DisposableEffect, SideEffect, rememberCoroutineScope, and when to use each.</description><pubDate>Wed, 01 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Java 21 — Virtual Threads Explained with Real Examples</title><link>https://pcsalt.com/java/java-21-virtual-threads/</link><guid isPermaLink="true">https://pcsalt.com/java/java-21-virtual-threads/</guid><description>Understand Java virtual threads — how they work, when to use them, migration from thread pools, and real-world performance comparisons with platform threads.</description><pubDate>Wed, 01 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Designing for Failure — Retry, Timeout, Bulkhead &amp; Fallback Patterns</title><link>https://pcsalt.com/architecture/designing-for-failure/</link><guid isPermaLink="true">https://pcsalt.com/architecture/designing-for-failure/</guid><description>Build resilient systems with failure patterns — retries with backoff, timeouts, circuit breakers, bulkheads, and fallbacks. Practical examples with Resilience4j.</description><pubDate>Wed, 01 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Secrets Management — Environment Variables, Vault &amp; Sealed Secrets</title><link>https://pcsalt.com/security/secrets-management/</link><guid isPermaLink="true">https://pcsalt.com/security/secrets-management/</guid><description>How to manage secrets in production — environment variables, HashiCorp Vault, Kubernetes Sealed Secrets, and patterns for keeping credentials out of code.</description><pubDate>Wed, 01 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Java 25 — What&apos;s New in the Next LTS</title><link>https://pcsalt.com/java/java-25-whats-new/</link><guid isPermaLink="true">https://pcsalt.com/java/java-25-whats-new/</guid><description>A practical overview of Java 25 LTS — the features that matter, what&apos;s finalized from preview, and what you need to know before upgrading from Java 21.</description><pubDate>Sat, 20 Sep 2025 00:00:00 GMT</pubDate></item><item><title>Forms in Compose — TextField, Validation &amp; Keyboard Actions</title><link>https://pcsalt.com/compose/compose-forms-textfield/</link><guid isPermaLink="true">https://pcsalt.com/compose/compose-forms-textfield/</guid><description>Build production-ready forms in Jetpack Compose — TextField styling, input validation, error states, keyboard actions, and form submission patterns.</description><pubDate>Mon, 15 Sep 2025 00:00:00 GMT</pubDate></item><item><title>Caching Strategies — Redis, In-Memory &amp; HTTP Cache Headers</title><link>https://pcsalt.com/architecture/caching-strategies/</link><guid isPermaLink="true">https://pcsalt.com/architecture/caching-strategies/</guid><description>A practical guide to caching — when to cache, where to cache, cache invalidation strategies, Redis patterns, HTTP cache headers, and avoiding stale data.</description><pubDate>Mon, 15 Sep 2025 00:00:00 GMT</pubDate></item><item><title>Securing Android Apps — Certificate Pinning, ProGuard &amp; Network Security Config</title><link>https://pcsalt.com/security/securing-android-apps/</link><guid isPermaLink="true">https://pcsalt.com/security/securing-android-apps/</guid><description>Harden your Android app — network security configuration, certificate pinning, ProGuard/R8 obfuscation, encrypted storage, and preventing reverse engineering.</description><pubDate>Mon, 15 Sep 2025 00:00:00 GMT</pubDate></item><item><title>Theming in Compose — Material3, Dynamic Color &amp; Dark Mode</title><link>https://pcsalt.com/compose/compose-theming-material3/</link><guid isPermaLink="true">https://pcsalt.com/compose/compose-theming-material3/</guid><description>Set up a complete theme system in Jetpack Compose — Material3 color schemes, typography, dynamic color, dark mode, and custom theme extensions.</description><pubDate>Mon, 01 Sep 2025 00:00:00 GMT</pubDate></item><item><title>Domain-Driven Design (DDD) — Bounded Contexts in Practice</title><link>https://pcsalt.com/architecture/domain-driven-design/</link><guid isPermaLink="true">https://pcsalt.com/architecture/domain-driven-design/</guid><description>A practical guide to Domain-Driven Design — bounded contexts, aggregates, value objects, and how to apply DDD without drowning in abstraction.</description><pubDate>Mon, 01 Sep 2025 00:00:00 GMT</pubDate></item><item><title>API Security Checklist — OWASP Top 10 for Backend Developers</title><link>https://pcsalt.com/security/api-security-checklist/</link><guid isPermaLink="true">https://pcsalt.com/security/api-security-checklist/</guid><description>A practical API security checklist covering authentication, authorization, input validation, rate limiting, and the OWASP API Security Top 10 risks.</description><pubDate>Mon, 01 Sep 2025 00:00:00 GMT</pubDate></item><item><title>Lists in Compose — LazyColumn, LazyGrid &amp; Performance Tips</title><link>https://pcsalt.com/compose/compose-lists-lazylayout/</link><guid isPermaLink="true">https://pcsalt.com/compose/compose-lists-lazylayout/</guid><description>Build efficient lists in Jetpack Compose — LazyColumn, LazyRow, LazyGrid, item keys, content types, and performance optimization for smooth scrolling.</description><pubDate>Fri, 15 Aug 2025 00:00:00 GMT</pubDate></item><item><title>MVVM vs MVI in Android — Which One and When</title><link>https://pcsalt.com/architecture/mvvm-vs-mvi-android/</link><guid isPermaLink="true">https://pcsalt.com/architecture/mvvm-vs-mvi-android/</guid><description>A practical comparison of MVVM and MVI architecture patterns in Android — how each works, when to use which, and how to avoid common pitfalls in both.</description><pubDate>Fri, 15 Aug 2025 00:00:00 GMT</pubDate></item><item><title>Kotlin 2.x — What Changed and How to Migrate</title><link>https://pcsalt.com/kotlin/kotlin-2x-migration/</link><guid isPermaLink="true">https://pcsalt.com/kotlin/kotlin-2x-migration/</guid><description>Everything you need to know about migrating to Kotlin 2.x — the K2 compiler, breaking changes, new features, Compose compiler integration, and step-by-step migration guide.</description><pubDate>Fri, 15 Aug 2025 00:00:00 GMT</pubDate></item><item><title>JWT Deep Dive — Structure, Signing, Validation &amp; Common Mistakes</title><link>https://pcsalt.com/security/jwt-deep-dive/</link><guid isPermaLink="true">https://pcsalt.com/security/jwt-deep-dive/</guid><description>Understand JSON Web Tokens from the inside — header, payload, signatures, HMAC vs RSA, token validation, refresh strategies, and the mistakes that lead to security breaches.</description><pubDate>Fri, 15 Aug 2025 00:00:00 GMT</pubDate></item><item><title>Navigation in Compose — Type-Safe Routes with Navigation 2.8+</title><link>https://pcsalt.com/compose/compose-navigation-type-safe/</link><guid isPermaLink="true">https://pcsalt.com/compose/compose-navigation-type-safe/</guid><description>Build type-safe navigation in Jetpack Compose using Kotlin Serialization and Navigation 2.8+ — no more string-based routes, argument parsing, or runtime crashes.</description><pubDate>Fri, 01 Aug 2025 00:00:00 GMT</pubDate></item><item><title>Saga Pattern — Managing Distributed Transactions</title><link>https://pcsalt.com/architecture/saga-pattern/</link><guid isPermaLink="true">https://pcsalt.com/architecture/saga-pattern/</guid><description>How to implement the Saga pattern for distributed transactions in microservices — choreography vs orchestration, compensation, and practical implementation with Kafka.</description><pubDate>Fri, 01 Aug 2025 00:00:00 GMT</pubDate></item><item><title>Kotlin Testing with Kotest &amp; MockK — Beyond JUnit</title><link>https://pcsalt.com/kotlin/kotlin-testing-kotest-mockk/</link><guid isPermaLink="true">https://pcsalt.com/kotlin/kotlin-testing-kotest-mockk/</guid><description>Level up your Kotlin testing — Kotest for expressive test styles and assertions, MockK for idiomatic mocking. A practical guide with real-world examples.</description><pubDate>Fri, 01 Aug 2025 00:00:00 GMT</pubDate></item><item><title>OAuth 2.0 &amp; OpenID Connect — How Authentication Actually Works</title><link>https://pcsalt.com/security/oauth-openid-connect/</link><guid isPermaLink="true">https://pcsalt.com/security/oauth-openid-connect/</guid><description>Understand OAuth 2.0 and OpenID Connect from the ground up — flows, tokens, scopes, and how to implement Google/GitHub login in your app without the confusion.</description><pubDate>Fri, 01 Aug 2025 00:00:00 GMT</pubDate></item><item><title>State Management in Compose — remember, mutableStateOf &amp; ViewModel</title><link>https://pcsalt.com/compose/compose-state-management/</link><guid isPermaLink="true">https://pcsalt.com/compose/compose-state-management/</guid><description>Master state management in Jetpack Compose — remember, mutableStateOf, rememberSaveable, state hoisting, and connecting to ViewModel for production apps.</description><pubDate>Tue, 15 Jul 2025 00:00:00 GMT</pubDate></item><item><title>Database Per Service — Patterns for Data Isolation in Microservices</title><link>https://pcsalt.com/architecture/database-per-service/</link><guid isPermaLink="true">https://pcsalt.com/architecture/database-per-service/</guid><description>How to implement database-per-service in microservices — data ownership, cross-service queries, eventual consistency, and practical patterns for data isolation.</description><pubDate>Tue, 15 Jul 2025 00:00:00 GMT</pubDate></item><item><title>Kotlin Value Classes &amp; Inline Functions — Zero-Cost Abstractions</title><link>https://pcsalt.com/kotlin/kotlin-value-classes-inline-functions/</link><guid isPermaLink="true">https://pcsalt.com/kotlin/kotlin-value-classes-inline-functions/</guid><description>Learn how Kotlin value classes and inline functions give you type safety and abstraction without runtime overhead — wrapping primitives, type-safe IDs, and performance patterns.</description><pubDate>Tue, 15 Jul 2025 00:00:00 GMT</pubDate></item><item><title>Jetpack Compose — Your First Screen (Text, Button, Column, Row)</title><link>https://pcsalt.com/compose/compose-first-screen/</link><guid isPermaLink="true">https://pcsalt.com/compose/compose-first-screen/</guid><description>Build your first Jetpack Compose screen from scratch — Text, Button, Column, Row, modifiers, and previews. Everything you need to start building UI in Compose.</description><pubDate>Tue, 01 Jul 2025 00:00:00 GMT</pubDate></item><item><title>Microservices vs Monolith — A Practical Decision Framework</title><link>https://pcsalt.com/architecture/microservices-vs-monolith/</link><guid isPermaLink="true">https://pcsalt.com/architecture/microservices-vs-monolith/</guid><description>A no-hype comparison of microservices and monoliths — when each architecture makes sense, the real tradeoffs, and how to decide for your project.</description><pubDate>Tue, 01 Jul 2025 00:00:00 GMT</pubDate></item><item><title>Kotlin + Arrow — Functional Error Handling (Either, Raise)</title><link>https://pcsalt.com/kotlin/kotlin-arrow-functional-error-handling/</link><guid isPermaLink="true">https://pcsalt.com/kotlin/kotlin-arrow-functional-error-handling/</guid><description>Learn functional error handling in Kotlin with Arrow — Either, Raise, typed errors, and how to replace try-catch with composable error handling.</description><pubDate>Tue, 01 Jul 2025 00:00:00 GMT</pubDate></item><item><title>CQRS with Spring Boot, Kafka &amp; MongoDB — Part 5: Putting It All Together</title><link>https://pcsalt.com/architecture/cqrs-spring-boot-kafka-part-5-putting-it-together/</link><guid isPermaLink="true">https://pcsalt.com/architecture/cqrs-spring-boot-kafka-part-5-putting-it-together/</guid><description>Docker Compose setup, end-to-end flow walkthrough, integration tests with Testcontainers, and a production readiness checklist for the complete CQRS system.</description><pubDate>Sun, 29 Jun 2025 00:00:00 GMT</pubDate></item><item><title>CQRS with Spring Boot, Kafka &amp; MongoDB — Part 4: The Hard Parts</title><link>https://pcsalt.com/architecture/cqrs-spring-boot-kafka-part-4-hard-parts/</link><guid isPermaLink="true">https://pcsalt.com/architecture/cqrs-spring-boot-kafka-part-4-hard-parts/</guid><description>Eventual consistency, idempotent consumers, schema evolution, the outbox problem — the real-world challenges that make CQRS hard and how to handle them.</description><pubDate>Sun, 22 Jun 2025 00:00:00 GMT</pubDate></item><item><title>CQRS with Spring Boot, Kafka &amp; MongoDB — Part 3: Query Side — Reads at Scale</title><link>https://pcsalt.com/architecture/cqrs-spring-boot-kafka-part-3-query-side/</link><guid isPermaLink="true">https://pcsalt.com/architecture/cqrs-spring-boot-kafka-part-3-query-side/</guid><description>Building the query service — consuming Kafka events, building read-optimized projections, and serving fast queries from MongoDB.</description><pubDate>Sun, 15 Jun 2025 00:00:00 GMT</pubDate></item><item><title>Event-Driven Architecture — When and Why (Not Just Kafka)</title><link>https://pcsalt.com/architecture/event-driven-architecture/</link><guid isPermaLink="true">https://pcsalt.com/architecture/event-driven-architecture/</guid><description>Understand event-driven architecture beyond the buzzwords — events vs commands, messaging patterns, when to use it, and when synchronous calls are better.</description><pubDate>Sun, 15 Jun 2025 00:00:00 GMT</pubDate></item><item><title>Kotlin Context Receivers &amp; Scope Functions Deep Dive</title><link>https://pcsalt.com/kotlin/kotlin-context-receivers-scope-functions/</link><guid isPermaLink="true">https://pcsalt.com/kotlin/kotlin-context-receivers-scope-functions/</guid><description>Master Kotlin&apos;s scope functions (let, run, with, apply, also) and understand context receivers — when to use each, common patterns, and real-world examples.</description><pubDate>Sun, 15 Jun 2025 00:00:00 GMT</pubDate></item><item><title>CQRS with Spring Boot, Kafka &amp; MongoDB — Part 2: Command Side — Writes Done Right</title><link>https://pcsalt.com/architecture/cqrs-spring-boot-kafka-part-2-command-side/</link><guid isPermaLink="true">https://pcsalt.com/architecture/cqrs-spring-boot-kafka-part-2-command-side/</guid><description>Building the command service — accepting orders, validating business rules, persisting to MongoDB, and publishing domain events to Kafka.</description><pubDate>Sun, 08 Jun 2025 00:00:00 GMT</pubDate></item><item><title>Clean Architecture for Android — Without Over-Engineering</title><link>https://pcsalt.com/architecture/clean-architecture-android/</link><guid isPermaLink="true">https://pcsalt.com/architecture/clean-architecture-android/</guid><description>A practical guide to Clean Architecture in Android — when to use it, how to structure layers, and how to avoid the over-abstraction trap that kills productivity.</description><pubDate>Sun, 01 Jun 2025 00:00:00 GMT</pubDate></item><item><title>CQRS with Spring Boot, Kafka &amp; MongoDB — Part 1: What is CQRS and why you need it</title><link>https://pcsalt.com/architecture/cqrs-spring-boot-kafka-part-1-what-is-cqrs/</link><guid isPermaLink="true">https://pcsalt.com/architecture/cqrs-spring-boot-kafka-part-1-what-is-cqrs/</guid><description>Understanding Command Query Responsibility Segregation, when it makes sense, and how Spring Boot, Kafka, and MongoDB fit together in a CQRS architecture.</description><pubDate>Sun, 01 Jun 2025 00:00:00 GMT</pubDate></item><item><title>Kotlin + Ktor — Building a REST API Without Spring</title><link>https://pcsalt.com/kotlin/kotlin-ktor-rest-api/</link><guid isPermaLink="true">https://pcsalt.com/kotlin/kotlin-ktor-rest-api/</guid><description>Build a REST API with Ktor 3 and Kotlin — routing, serialization, authentication, database access, and testing. A lightweight alternative to Spring Boot.</description><pubDate>Sun, 01 Jun 2025 00:00:00 GMT</pubDate></item><item><title>Kotlin Multiplatform — Share Code Between Android &amp; Backend</title><link>https://pcsalt.com/kotlin/kotlin-multiplatform-android-backend/</link><guid isPermaLink="true">https://pcsalt.com/kotlin/kotlin-multiplatform-android-backend/</guid><description>A practical guide to Kotlin Multiplatform (KMP) — share business logic, models, and validation between your Android app and Spring Boot backend without duplicating code.</description><pubDate>Thu, 15 May 2025 00:00:00 GMT</pubDate></item><item><title>Kotlin DSL — Build Your Own Type-Safe Builder</title><link>https://pcsalt.com/kotlin/kotlin-dsl-type-safe-builder/</link><guid isPermaLink="true">https://pcsalt.com/kotlin/kotlin-dsl-type-safe-builder/</guid><description>Learn how to create type-safe DSLs in Kotlin using lambdas with receivers, extension functions, and builder patterns. Build a real HTML DSL and a config DSL from scratch.</description><pubDate>Thu, 01 May 2025 00:00:00 GMT</pubDate></item><item><title>Kotlin Sealed Classes &amp; When Expressions — Modeling State</title><link>https://pcsalt.com/kotlin/kotlin-sealed-classes-when-expressions/</link><guid isPermaLink="true">https://pcsalt.com/kotlin/kotlin-sealed-classes-when-expressions/</guid><description>Learn how Kotlin sealed classes and when expressions work together to model state, handle API responses, and eliminate impossible states in your code.</description><pubDate>Tue, 15 Apr 2025 00:00:00 GMT</pubDate></item><item><title>Kotlin Flows — Cold Flows, Hot Flows &amp; StateFlow Explained</title><link>https://pcsalt.com/kotlin/kotlin-flows-cold-hot-stateflow/</link><guid isPermaLink="true">https://pcsalt.com/kotlin/kotlin-flows-cold-hot-stateflow/</guid><description>Understand Kotlin Flow from the ground up — cold vs hot flows, Flow builders, operators, StateFlow, SharedFlow, and when to use each in Android and backend projects.</description><pubDate>Tue, 01 Apr 2025 00:00:00 GMT</pubDate></item><item><title>5 Kotlin Extension Functions You&apos;ll Use in Every Android Project</title><link>https://pcsalt.com/kotlin/kotlin-extension-functions-android/</link><guid isPermaLink="true">https://pcsalt.com/kotlin/kotlin-extension-functions-android/</guid><description>Practical Kotlin extension functions for Android — view visibility, toasts, keyboard handling, dp conversion, and intent helpers. Copy, paste, use.</description><pubDate>Sat, 15 Mar 2025 00:00:00 GMT</pubDate></item><item><title>Kotlin Coroutines — Part 3: Real-World Patterns</title><link>https://pcsalt.com/kotlin/kotlin-coroutines-real-world-patterns/</link><guid isPermaLink="true">https://pcsalt.com/kotlin/kotlin-coroutines-real-world-patterns/</guid><description>Flows, StateFlow, coroutines in Android and Spring Boot, Retrofit, Room, and testing — practical patterns you&apos;ll use every day.</description><pubDate>Sat, 01 Mar 2025 00:00:00 GMT</pubDate></item><item><title>Kotlin Coroutines — Part 2: Structured Concurrency</title><link>https://pcsalt.com/kotlin/kotlin-coroutines-structured-concurrency/</link><guid isPermaLink="true">https://pcsalt.com/kotlin/kotlin-coroutines-structured-concurrency/</guid><description>How structured concurrency keeps your coroutines under control — scopes, cancellation, exception handling, and the parent-child relationship that prevents orphan coroutines.</description><pubDate>Sat, 08 Feb 2025 00:00:00 GMT</pubDate></item><item><title>Kotlin Coroutines — Part 1: The Basics</title><link>https://pcsalt.com/kotlin/kotlin-coroutines-basics/</link><guid isPermaLink="true">https://pcsalt.com/kotlin/kotlin-coroutines-basics/</guid><description>A practical introduction to Kotlin coroutines — why they exist, how to launch them, suspend functions, dispatchers, and concurrent execution patterns.</description><pubDate>Sat, 01 Feb 2025 00:00:00 GMT</pubDate></item><item><title>JSON Parsing in Kotlin — Parsing with Kotlin Serialization</title><link>https://pcsalt.com/kotlin/json-parsing-kotlin-serialization/</link><guid isPermaLink="true">https://pcsalt.com/kotlin/json-parsing-kotlin-serialization/</guid><description>Parse a complex JSON response using Kotlin Serialization — the Kotlin-native, compile-time safe approach with no reflection.</description><pubDate>Wed, 15 Jan 2025 00:00:00 GMT</pubDate></item><item><title>CI/CD for Android with GitHub Actions</title><link>https://pcsalt.com/android/ci-cd-android-github-actions/</link><guid isPermaLink="true">https://pcsalt.com/android/ci-cd-android-github-actions/</guid><description>Set up automated builds, tests, signing, and Play Store deployment for your Android project using GitHub Actions.</description><pubDate>Mon, 05 Aug 2024 00:00:00 GMT</pubDate></item><item><title>XML Parsing in Kotlin — XmlPullParser and Retrofit</title><link>https://pcsalt.com/kotlin/xml-parsing-kotlin/</link><guid isPermaLink="true">https://pcsalt.com/kotlin/xml-parsing-kotlin/</guid><description>Parse XML in Kotlin using Android&apos;s built-in XmlPullParser and Retrofit with SimpleXML converter. Manual vs automatic — when to use what.</description><pubDate>Thu, 01 Aug 2024 00:00:00 GMT</pubDate></item><item><title>JSON Parsing in Kotlin — Which Library Should You Use?</title><link>https://pcsalt.com/kotlin/json-parsing-comparison-kotlin/</link><guid isPermaLink="true">https://pcsalt.com/kotlin/json-parsing-comparison-kotlin/</guid><description>A side-by-side comparison of org.json, Gson, Moshi, Kotlin Serialization, and Jackson for JSON parsing in Kotlin.</description><pubDate>Fri, 19 Jul 2024 00:00:00 GMT</pubDate></item><item><title>JSON Parsing in Java — Which Library Should You Use?</title><link>https://pcsalt.com/java/json-parsing-comparison-java/</link><guid isPermaLink="true">https://pcsalt.com/java/json-parsing-comparison-java/</guid><description>A side-by-side comparison of org.json, Gson, Moshi, and Jackson for JSON parsing in Java — with recommendations for Android, backend, and new projects.</description><pubDate>Wed, 17 Jul 2024 00:00:00 GMT</pubDate></item><item><title>JSON Parsing in Kotlin — Parsing with Jackson</title><link>https://pcsalt.com/kotlin/json-parsing-jackson-kotlin/</link><guid isPermaLink="true">https://pcsalt.com/kotlin/json-parsing-jackson-kotlin/</guid><description>Parse a complex JSON response using Jackson with the Kotlin module — the server-side powerhouse that&apos;s also the default in Spring Boot.</description><pubDate>Mon, 15 Jul 2024 00:00:00 GMT</pubDate></item><item><title>JSON Parsing in Java — Parsing with Jackson</title><link>https://pcsalt.com/java/json-parsing-jackson-java/</link><guid isPermaLink="true">https://pcsalt.com/java/json-parsing-jackson-java/</guid><description>Parse a real-world JSON response using Jackson in Java 21. ObjectMapper, annotations, and the JavaTimeModule for dates.</description><pubDate>Sat, 13 Jul 2024 00:00:00 GMT</pubDate></item><item><title>JSON Parsing in Kotlin — Parsing with Moshi</title><link>https://pcsalt.com/kotlin/json-parsing-moshi-kotlin/</link><guid isPermaLink="true">https://pcsalt.com/kotlin/json-parsing-moshi-kotlin/</guid><description>Parse a complex JSON response using Moshi with Kotlin data classes, codegen, and proper null safety. The recommended JSON library for modern Android.</description><pubDate>Thu, 11 Jul 2024 00:00:00 GMT</pubDate></item><item><title>JSON Parsing in Java — Parsing with Moshi</title><link>https://pcsalt.com/java/json-parsing-moshi-java/</link><guid isPermaLink="true">https://pcsalt.com/java/json-parsing-moshi-java/</guid><description>Parse a real-world JSON response using Moshi in Java 21. Clean annotations, custom adapters, and built-in null safety.</description><pubDate>Tue, 09 Jul 2024 00:00:00 GMT</pubDate></item><item><title>JSON Parsing in Kotlin — Parsing with Gson</title><link>https://pcsalt.com/kotlin/json-parsing-gson-kotlin/</link><guid isPermaLink="true">https://pcsalt.com/kotlin/json-parsing-gson-kotlin/</guid><description>Parse a complex JSON response using Gson with Kotlin data classes. Automatic mapping, @SerializedName, nullable types, and a custom TypeAdapter for Instant.</description><pubDate>Sun, 07 Jul 2024 00:00:00 GMT</pubDate></item><item><title>JSON Parsing in Java — Parsing with Gson</title><link>https://pcsalt.com/java/json-parsing-gson-java/</link><guid isPermaLink="true">https://pcsalt.com/java/json-parsing-gson-java/</guid><description>Parse a real-world JSON response using Gson in Java 21. Automatic mapping, annotations, and custom adapters — the easy way.</description><pubDate>Fri, 05 Jul 2024 00:00:00 GMT</pubDate></item><item><title>JSON Parsing in Kotlin — Manual Parsing with org.json</title><link>https://pcsalt.com/kotlin/json-parsing-org-json-kotlin/</link><guid isPermaLink="true">https://pcsalt.com/kotlin/json-parsing-org-json-kotlin/</guid><description>Parse a complex, real-world JSON response manually using org.json in Kotlin. Extension functions help, but the verbosity is still real.</description><pubDate>Wed, 03 Jul 2024 00:00:00 GMT</pubDate></item><item><title>JSON Parsing in Java — Manual Parsing with org.json</title><link>https://pcsalt.com/java/json-parsing-org-json-java/</link><guid isPermaLink="true">https://pcsalt.com/java/json-parsing-org-json-java/</guid><description>Parse a complex, real-world JSON response manually using org.json in Java 21. Every getString, every null check, every nested loop — the hard way.</description><pubDate>Mon, 01 Jul 2024 00:00:00 GMT</pubDate></item><item><title>Display Item Selected from AutoCompleteTextView in Chip</title><link>https://pcsalt.com/android/display-item-selected-from-autocompletetextview-in-chip-android/</link><guid isPermaLink="true">https://pcsalt.com/android/display-item-selected-from-autocompletetextview-in-chip-android/</guid><description>In this blog we are going to display a list of planets in an AutoCompleteTextView. The list of planets will...</description><pubDate>Sun, 23 May 2021 00:00:00 GMT</pubDate></item><item><title>Add Border to Just One Side of View</title><link>https://pcsalt.com/android/add-border-to-just-one-side-of-view-android/</link><guid isPermaLink="true">https://pcsalt.com/android/add-border-to-just-one-side-of-view-android/</guid><description>At some point there is a need to display a layout with border(s). And sometimes the border is required in...</description><pubDate>Thu, 22 Apr 2021 00:00:00 GMT</pubDate></item><item><title>BottomSheetDialogFragment — Disable Cancel on Touch Outside and Drag</title><link>https://pcsalt.com/android/bottomsheetdialogfragment-disable-cancel-on-touch-outside-and-drag-android/</link><guid isPermaLink="true">https://pcsalt.com/android/bottomsheetdialogfragment-disable-cancel-on-touch-outside-and-drag-android/</guid><description>Disable Cancel on Touch Outside &amp; on Back press In order to create a BottomSheetDialogFragment which should not dismiss on...</description><pubDate>Tue, 20 Apr 2021 00:00:00 GMT</pubDate></item><item><title>Rearrange positive and negative numbers in an array — Java</title><link>https://pcsalt.com/java/rearrange-positive-and-negative-number-in-array-with-only-one-variable-java/</link><guid isPermaLink="true">https://pcsalt.com/java/rearrange-positive-and-negative-number-in-array-with-only-one-variable-java/</guid><description>Partition an array so all negative numbers appear on the left and positive numbers on the right, in-place with only one extra variable.</description><pubDate>Mon, 09 Nov 2020 00:00:00 GMT</pubDate></item><item><title>Convert JSON to comma-separated key=value pairs — Java</title><link>https://pcsalt.com/java/convert-json-values-into-comma-separated-values-java/</link><guid isPermaLink="true">https://pcsalt.com/java/convert-json-values-into-comma-separated-values-java/</guid><description>Recursively flatten a nested JSON object into a compact comma-separated key=value string in Java.</description><pubDate>Tue, 03 Nov 2020 00:00:00 GMT</pubDate></item><item><title>Add Badge Count to Navigation Drawer Hamburger Icon</title><link>https://pcsalt.com/android/add-badge-count-to-navigation-drawer-hamburger-icon-android/</link><guid isPermaLink="true">https://pcsalt.com/android/add-badge-count-to-navigation-drawer-hamburger-icon-android/</guid><description>NavigationDrawer provides easy access to menu functions. Sometimes the menu items have some actionable content available. To notify user that...</description><pubDate>Sat, 09 May 2020 00:00:00 GMT</pubDate></item><item><title>Migrate to Android Room with Date Column</title><link>https://pcsalt.com/android/migrate-to-android-room-with-date-column-android/</link><guid isPermaLink="true">https://pcsalt.com/android/migrate-to-android-room-with-date-column-android/</guid><description>Migrating our apps to Android Room from conventional SQLite Database was flawless except when we encountered issue with Date column...</description><pubDate>Fri, 01 May 2020 00:00:00 GMT</pubDate></item><item><title>Generate App Name with Version Code and Flavour Name</title><link>https://pcsalt.com/android/generate-app-name-with-version-code-name-and-flavour-name-android/</link><guid isPermaLink="true">https://pcsalt.com/android/generate-app-name-with-version-code-name-and-flavour-name-android/</guid><description>After a build is shared to a team or group of people, sometimes a question arises that what was the...</description><pubDate>Sun, 19 Apr 2020 00:00:00 GMT</pubDate></item><item><title>Detecting obstacle with IR (Infrared) Sensor Raspberry Pi 3</title><link>https://pcsalt.com/iot/detecting-obstacle-with-ir-infrared-sensor-raspberry-pi-3/</link><guid isPermaLink="true">https://pcsalt.com/iot/detecting-obstacle-with-ir-infrared-sensor-raspberry-pi-3/</guid><description>Concept: IR (Infrared) Sensor IR (Infrared) Sensor works by emitting infrared signal/radiation and receiving of the signal when the signal...</description><pubDate>Mon, 06 Mar 2017 00:00:00 GMT</pubDate></item><item><title>“Check if a string has balanced brackets — Java”</title><link>https://pcsalt.com/java/check-if-a-string-is-a-balanced-string/</link><guid isPermaLink="true">https://pcsalt.com/java/check-if-a-string-is-a-balanced-string/</guid><description>“Use a stack to check if a string has balanced opening and closing brackets. Handles parentheses, square brackets, and curly braces.”</description><pubDate>Sun, 11 Sep 2016 00:00:00 GMT</pubDate></item><item><title>== vs equals() in Java — What&apos;s the difference?</title><link>https://pcsalt.com/java/difference-between-equals-operator-and-equals-method/</link><guid isPermaLink="true">https://pcsalt.com/java/difference-between-equals-operator-and-equals-method/</guid><description>Understanding the difference between the == operator and equals() method in Java, and why using the wrong one leads to subtle bugs.</description><pubDate>Sun, 11 Sep 2016 00:00:00 GMT</pubDate></item><item><title>Product Flavors in Android</title><link>https://pcsalt.com/android/product-flavors-android/</link><guid isPermaLink="true">https://pcsalt.com/android/product-flavors-android/</guid><description>Environment plays a vital role in the application development. As per the requirements, we have to create few environments, viz....</description><pubDate>Sun, 29 May 2016 00:00:00 GMT</pubDate></item><item><title>Set Margins in DP Programmatically</title><link>https://pcsalt.com/android/set-margins-in-dp-programmatically-android/</link><guid isPermaLink="true">https://pcsalt.com/android/set-margins-in-dp-programmatically-android/</guid><description>Sometimes at runtime, it is required to set margin to a view. But, the problem is getting different size for...</description><pubDate>Sat, 17 Oct 2015 00:00:00 GMT</pubDate></item><item><title>EditText with Single Line, Line Wrapping and Done Action in Android</title><link>https://pcsalt.com/android/edittext-with-single-line-line-wrapping-and-done-action-in-android/</link><guid isPermaLink="true">https://pcsalt.com/android/edittext-with-single-line-line-wrapping-and-done-action-in-android/</guid><description>Regular formula for making an EditText- Single Line : no new line &lt;Enter&gt; allowed,- Line Wrapping : Single line wrapped...</description><pubDate>Mon, 05 Oct 2015 00:00:00 GMT</pubDate></item><item><title>Find and Delete Duplicate Files — Kotlin CLI Tool</title><link>https://pcsalt.com/kotlin/search-delete-duplicate-files-kotlin/</link><guid isPermaLink="true">https://pcsalt.com/kotlin/search-delete-duplicate-files-kotlin/</guid><description>A command-line utility in Kotlin that scans directories for duplicate files using MD5 hashing and lets you review and delete them safely.</description><pubDate>Tue, 12 Aug 2014 00:00:00 GMT</pubDate></item><item><title>Copy to Clipboard Programmatically</title><link>https://pcsalt.com/android/copy-to-clipboard-programmatically-android/</link><guid isPermaLink="true">https://pcsalt.com/android/copy-to-clipboard-programmatically-android/</guid><description>Copy text to clipboard and paste from clipboard programmatically in Android using ClipboardManager and ClipData.</description><pubDate>Mon, 02 Dec 2013 00:00:00 GMT</pubDate></item><item><title>Create List Using ListView</title><link>https://pcsalt.com/android/create-list-using-listview-android/</link><guid isPermaLink="true">https://pcsalt.com/android/create-list-using-listview-android/</guid><description>Update: Instead of using ListView now you should start using RecyclerView. If you are unfamiliar with RecyclerView then you can...</description><pubDate>Sat, 09 Mar 2013 00:00:00 GMT</pubDate></item><item><title>String Concatenation in Java — concat() vs + vs StringBuilder</title><link>https://pcsalt.com/java/difference-between-concat-and-concat-operator-java/</link><guid isPermaLink="true">https://pcsalt.com/java/difference-between-concat-and-concat-operator-java/</guid><description>Understanding the real differences between concat(), the + operator, and StringBuilder in Java — what actually matters and what doesn&apos;t.</description><pubDate>Fri, 15 Feb 2013 00:00:00 GMT</pubDate></item><item><title>Add EditText Programmatically</title><link>https://pcsalt.com/android/add-edittext-programmatically-android/</link><guid isPermaLink="true">https://pcsalt.com/android/add-edittext-programmatically-android/</guid><description>Sometimes it is the requirement of the program to add EditText programmatically. The following code can be used to add...</description><pubDate>Sat, 26 Jan 2013 00:00:00 GMT</pubDate></item></channel></rss>