# Yellow! GNU > Software for the future of your business ## Posts - [Check If a Docker Volume Is Assigned and Mounted to a Running Container](https://yellowgnu.com/check-if-a-docker-volume-is-assigned-and-mounted-to-a-running-container/): Docker volumes are a core feature for persisting data outside containers. However, one of the most common troubleshooting questions in Docker-based environments is: “Is my volume actually mounted to the running container?” This article provides a step-by-step, production-ready guide to verify whether a Docker volume is correctly assigned, mounted, and writable, using CLI tools and real-world debugging techniques. Why Verifying Docker Volume Mounts Matters Incorrectly mounted volumes can lead to: Data not being persisted Files disappearing after container restarts Applications writing to the container filesystem instead of the host Permission-related runtime errors Before debugging application code, you should always confirm […] - [Parse ISO 8601 Dates from JSON to LocalDateTime in Java](https://yellowgnu.com/parse-iso-8601-dates-from-json-to-localdatetime-in-java/): When working with APIs or other systems that return JSON responses, you’ll often encounter date-time values in ISO 8601 format — like "2022-03-25T00:00:00.000Z". In Java, converting these strings into a usable LocalDateTime, OffsetDateTime, or ZonedDateTime object is a common task, especially when using libraries like org.json. In this article, we’ll show you: How to extract an ISO 8601 date string from a JSONObject How to parse it into a LocalDateTime When to use OffsetDateTime instead Multiple full examples for Java 8 and later 📦 Dependencies We’ll be using the standard Java 8+ time API (java.time) and the popular org.json library: […] - [Request Battery Optimization Exemption and Other Android Permissions](https://yellowgnu.com/request-battery-optimization-exemption-and-other-android-permissions/): Battery optimization features introduced in Android 6.0 (Marshmallow) have significantly improved power efficiency, especially for background apps. However, certain applications—such as navigation, fitness trackers, messaging, or alarm apps—require uninterrupted background operation. In such cases, developers must request exemption from Android’s battery optimizations and handle additional permissions carefully. In this article, we’ll walk through how to request exemption from battery optimizations, and provide a complete overview of commonly used Android permissions, with practical advice for requesting and managing them responsibly. 🔋 How to Request Ignore Battery Optimization on Android 1. Add Permission to AndroidManifest.xml To request exemption from battery optimizations, your […] - [Install and Configure 389 Directory Server on Linux with SSSD Authentication](https://yellowgnu.com/install-and-configure-389-directory-server-on-linux-with-sssd-authentication/): Introduction 389 Directory Server (also known as 389-ds) is a powerful, open-source LDAP server developed by the Fedora Project. It provides centralized identity and authentication services for enterprise systems, including support for replication, access control, and schema extensibility. Installing 389-ds on a system that uses SSSD (System Security Services Daemon) can present unique challenges—particularly around group ID (GID) conflicts. This guide walks you through a successful 389-ds installation and configuration in such environments, based on a real-world scenario. Prerequisites Before starting, ensure your system meets the following: A supported Linux distribution (Fedora, RHEL, CentOS, Rocky Linux, AlmaLinux) Root or sudo […] - [Fix StreamCorruptedException and Invalid URI Errors in application.properties in Spring Boot](https://yellowgnu.com/fix-streamcorruptedexception-and-invalid-uri-errors-in-application-properties-in-spring-boot/): When configuring a Spring Boot application, developers often use application.properties or application.yml files to define endpoints, tokens, and other environment-specific values. However, if not handled correctly, these configurations can lead to confusing errors such as: java.lang.IllegalArgumentException: Invalid URI syntax java.io.StreamCorruptedException: invalid stream header: 68747470 SerializationException: could not deserialize In this article, we’ll explore why these errors happen and how to fix them, especially when working with URIs or other complex values. 💡 Root Cause Summary Symptom Root Cause Invalid URI syntax: Illegal character in scheme name at index 0 Quotation marks mistakenly included in the application.properties value StreamCorruptedException: invalid stream […] - [Composite Primary Keys with Foreign Key Relationships in JPA and Hibernate](https://yellowgnu.com/composite-primary-keys-with-foreign-key-relationships-in-jpa-and-hibernate/): Introduction Working with composite primary keys in Java Persistence API (JPA) and Hibernate can be tricky—especially when part of the composite key also acts as a foreign key to another entity. Many developers encounter issues when trying to map these relationships, such as only part of the foreign key being correctly mapped or schema generation tools failing to generate the appropriate constraints. In this article, we’ll walk through how to correctly map a composite primary key that includes a foreign key reference, resolve common errors, and ensure your schema and entities are working together as expected. ✅ Scenario: Composite Key […] - [SELECT * vs Explicit Column Selection in JPA](https://yellowgnu.com/select-vs-explicit-column-selection-in-jpa/): Performance Benchmarks, Hibernate Behavior, and Best Practices When using JPA with Hibernate, a surprisingly common performance issue comes from something that looks harmless: SELECT e FROM Entity e Under the hood, this often translates to a SELECT * at the SQL level. But is this efficient? Is Hibernate smart enough to optimize it? And how much performance do you really lose? This article answers these questions with JPA-specific examples, Hibernate internals, and benchmark results. TL;DR (JPA Edition) 👉 SELECT * is never faster in JPA 👉 DTO projections and partial selects can be significantly faster 👉 Index-only scans are impossible […] - [Java ResultSet to Objects: Performance, Best Practices, and Using JPA with Prepared Statements](https://yellowgnu.com/java-resultset-to-objects-performance-best-practices-and-using-jpa-with-prepared-statements/): In Java backend development, converting a ResultSet into objects or lists is a very common task. Whether you are using plain JDBC, Spring, or JPA, you will eventually face the question: Is manually mapping a ResultSet slower than using normal statements? Can I use JPA and still benefit from PreparedStatements? This article answers those questions in depth, explains the real performance costs, and shows best-practice implementations for both JDBC and JPA, including when and how to combine them. Understanding the Core Problem A ResultSet is a low-level cursor over database rows. Java does not support casting a ResultSet directly into […] - [Refactoring Java toString() Without Repetitive if Statements](https://yellowgnu.com/refactoring-java-tostring-without-repetitive-if-statements/): Large Java objects often end up with toString() methods containing dozens of conditional checks. This guide shows clean, performant, production-ready ways to refactor such methods without clutter, while keeping full control over formatting and avoiding reflection. Starting Point: The Problem @Override public String toString() { ToStringBuilder builder = new ToStringBuilder(this, CUSTOM_STYLE); if (StringUtils.isNotBlank(requestId)) { builder.append("REQUEST_ID", requestId); } if (StringUtils.isNotBlank(userId)) { builder.append("USER_ID", userId); } if (StringUtils.isNotBlank(status)) { builder.append("STATUS", status); } if (StringUtils.isNotBlank(total)) { builder.append("TOTAL", total); } // ... many more if statements return builder.toString(); } Problems: High noise-to-signal ratio Repetitive conditionals Hard to extend Easy to break formatting Step 1: Extract […] - [Optimizing toString() Implementations in Java: Reflection vs. Manual Builders](https://yellowgnu.com/optimizing-tostring-implementations-in-java-reflection-vs-manual-builders/): When working with Java domain models or data-transfer objects, the toString() method becomes essential for logging, debugging, and monitoring application behavior. Many teams rely on libraries such as Apache Commons Lang’s ToStringBuilder for structured output, but as classes grow in size, the traditional approach—manually appending each field—quickly becomes repetitive and difficult to maintain. In this article, we explore a more efficient approach using Java Reflection, highlight its advantages and drawbacks, and compare alternative solutions that may be better suited for modern applications. Traditional Approach: Manual Field Appending A classic implementation looks like this: @Override public String toString() { ToStringBuilder builder […] - [Send Messages From a Consumer to AWS Lambda (Complete Guide + Multi-Language Examples)](https://yellowgnu.com/send-messages-from-a-consumer-to-aws-lambda-complete-guide-multi-language-examples/): AWS Lambda can be invoked from many types of “consumers”: scripts, applications, backend services, or event sources like SQS, SNS, or API Gateway. This article shows three main ways to send messages to Lambda: Direct invoke using AWS SDK (synchronous or asynchronous) Send a message via Amazon SQS → automatically triggers Lambda Publish to Amazon SNS → automatically triggers Lambda Below you will find practical code snippets for all major languages commonly used with Lambda. 1. Architecture Options for Sending Messages to AWS Lambda Option A — Direct SDK Invocation The consumer calls Lambda directly with AWS SDK. ✔️ Real-time […] - [Prevent Your Android App From Going to Sleep on Oreo (API 26+)](https://yellowgnu.com/prevent-your-android-app-from-going-to-sleep-on-oreo-api-26/): Modern Android versions—starting with Android 8.0 Oreo—introduced strict battery-saving policies. These policies help users get more screen time, but they can also cause problems for developers who need their apps to keep running in the background. If your app performs long-running tasks—such as tracking sensors, recording data, streaming audio, processing network requests, or maintaining continuous connectivity—you’ve probably noticed that Android can pause or delay your background work to conserve battery. This guide explains why this happens, what changed in Android Oreo, and how you can prevent your app from going to sleep safely and correctly using WakeLocks. Why Android Puts […] - [Read, Decrypt, and Reconstruct Files in TypeScript Using FileReader, CryptoJS, and Blob](https://yellowgnu.com/read-decrypt-and-reconstruct-files-in-typescript-using-filereader-cryptojs-and-blob/): Modern web and mobile applications increasingly rely on secure file storage. Whether you’re protecting user documents, encrypted media, or sensitive configuration files, the ability to read, decrypt, and rebuild these files in the browser or a hybrid environment (Ionic, Capacitor, Electron, etc.) is essential. This guide explains how to handle encrypted files using: FileReader API CryptoJS AES decryption Base64 decoding Typed Arrays (Uint8Array) JavaScript Blob reconstruction We will walk through a real-world scenario where an application loads an encrypted file from device storage, decrypts it, extracts its data, and rebuilds it into a usable binary format. 📂 1. Reading Files […] - [Fix TransactionTooLargeException in Android: Causes, Examples, and Best Practices](https://yellowgnu.com/fix-transactiontoolargeexception-in-android-causes-examples-and-best-practices/): When developing modern Android applications, especially those built with complex navigation stacks, fragments, or multiple ViewModels, you may encounter the dreaded: android.os.TransactionTooLargeException: data parcel size XXX bytes This error often appears during configuration changes (rotation), navigating between screens, or when an Activity is moving to the background. It typically occurs when the system tries to save the Activity or Fragment state and the bundle being transferred becomes too large. In this article, we break down why this happens, how to diagnose it, and best practices to prevent it, with real-world examples for Android, Jetpack libraries, Parcelable objects, and even hybrid […] - [Configure Multiple Principals in Krb5LoginModule (Complete Java Kerberos Guide + Spring Boot, Hadoop & JDBC Examples)](https://yellowgnu.com/configure-multiple-principals-in-krb5loginmodule-complete-java-kerberos-guide-spring-boot-hadoop-jdbc-examples/): Kerberos authentication plays a vital role in securing enterprise Java applications. Whether you integrate with Hadoop, secure JDBC connections, or build Spring Boot microservices, you’ll eventually need to authenticate the application using a Kerberos principal. But what if your application must authenticate using multiple Kerberos identities? For example: a service principal for reading files from HDFS another principal for connecting to a secured database multiple principals stored inside a shared keytab This article explains how to configure multiple principals safely and correctly using com.sun.security.auth.module.Krb5LoginModule. It also includes practical examples for Spring Boot, Hadoop, and Kerberized JDBC connections. Can Krb5LoginModule Support […] - [Generate and Store a Unique Client Identifier Using Cookies (PHP, JavaScript, Node.js, Python)](https://yellowgnu.com/generate-and-store-a-unique-client-identifier-using-cookies-php-javascript-node-js-python/): Tracking unique visitors is one of the most common tasks in web development. Whether you need analytics, personalization, or user session continuity, assigning each client a unique identifier and saving it in a cookie is a reliable and widely supported approach. In this article, you’ll learn how to: Generate a unique identifier for each user Store the identifier in a cookie Retrieve the cookie on future visits Use modern techniques in languages like PHP, JavaScript, Node.js, and Python Follow best practices for security and SEO Let’s begin with the classic: PHP. Why Use a Unique Client Identifier? A unique identifier […] - [Enforce the Content-Type Header in a Spring Boot REST API](https://yellowgnu.com/enforce-the-content-type-header-in-a-spring-boot-rest-api/): When developing RESTful APIs with Spring Boot, ensuring that clients send well-formed and properly annotated requests is essential. One of the most common issues arises when a request is missing critical headers — such as the Content-Type header, which tells the server how to interpret the body of the request. In this article, we’ll explore how to make the Content-Type header mandatory in a Spring Boot controller method and how to return a 400 Bad Request response when it’s not provided. 🧩 Why the Content-Type Header Matters The Content-Type header tells the server how to parse the request body. For […] - [Define and Use a Set of Enums in Java (With Code Examples)](https://yellowgnu.com/define-and-use-a-set-of-enums-in-java-with-code-examples/): When working with fixed categories such as permissions, statuses, or configuration options, Enums are one of Java’s most useful features. But often, you need to combine multiple Enum values — for example, a user with multiple permissions or a device that supports several protocols. In such cases, you can use a Set of Enums, and the most efficient implementation is EnumSet. This guide explains, step by step, how to: Define an Enum Create and populate a Set of Enums Iterate over EnumSets Compare EnumSet with other Set types Use EnumSets in real-world scenarios 1. Defining an Enum in Java An […] - [Implement Address Lookup on Marker Click in an iOS App (Capacitor + Xcode + Google Maps)](https://yellowgnu.com/implement-address-lookup-on-marker-click-in-an-ios-app-capacitor-xcode-google-maps/): 1. Overview When building hybrid mobile applications with Ionic Capacitor for iOS, you can embed Google Maps to offer a native-like map experience. A common use case is performing a reverse geocoding lookup — converting marker coordinates into a readable address when a user taps on a marker. This tutorial walks you through setting up the Google Maps SDK for iOS, configuring permissions in Xcode, and writing TypeScript logic to geocode marker locations using google.maps.Geocoder(). 2. Prerequisites Before you begin, ensure you have: Xcode 14.2 or later Node.js and npm Capacitor installed (npm install @capacitor/core) A valid Google Maps API […] - [Export and Install an LDAP Self-Signed Certificate on an IIS Server](https://yellowgnu.com/export-and-install-an-ldap-self-signed-certificate-on-an-iis-server/): When integrating an LDAP directory with a Windows IIS server, secure communication over SSL/TLS is essential. If your LDAP server uses a self-signed certificate for LDAPS (port 636), you’ll need to export that certificate and install it on your IIS server so that the connection is trusted. In this article, we’ll walk through each step to help you do just that. Why You Need to Export the LDAP SSL Certificate By default, a Windows IIS server will not trust a self-signed certificate generated on another system (for example, an LDAP server running on Linux). Without importing the certificate, any secure […] - [Integrate Google Maps in an Ionic + Capacitor Application for Android and iOS](https://yellowgnu.com/integrate-google-maps-in-an-ionic-capacitor-application-for-android-and-ios/): Developers building hybrid mobile apps with Ionic and Capacitor often need to display interactive maps. Integrating Google Maps gives users precise location context, route guidance, and a familiar navigation interface. This step-by-step guide explains how to connect the Google Maps API to an Ionic Capacitor project and run it seamlessly on both Android and iOS devices. 1. Enable Google Maps APIs Visit the Google Cloud Console. Create a new project or use an existing one. From APIs & Services → Library, enable: Maps SDK for Android Maps SDK for iOS Under Credentials, generate separate API keys for each platform and […] - [How to Convert a byte[] to URI in Java 8 — Step-by-Step Guide](https://yellowgnu.com/how-to-convert-a-byte-to-uri-in-java-8-step-by-step-guide/): Working with byte[] data is common in Java applications — for example, when reading input streams, files, or network responses. In many cases, you may need to convert this binary data into a URI (Uniform Resource Identifier) to access or reference a resource programmatically. In this article, we’ll walk through the cleanest way to convert a byte[] to a URI in Java 8, and highlight a few common pitfalls to avoid. Step 1: Understand What the byte[] Represents Before converting, it’s important to know what your byte array actually contains. If the byte[] represents a URI string encoded in UTF-8 […] - [Templating and Placeholder Replacement in Java and Spring](https://yellowgnu.com/templating-and-placeholder-replacement-in-java-and-spring/): In modern Java applications, generating dynamic text is a common need — whether it’s building personalized email content, log messages, SQL queries, or configuration templates. Templating and placeholder replacement allow developers to inject values dynamically into predefined strings or files. This article explores different ways to handle templating and placeholder replacement in Java — from simple string operations to more advanced Spring-specific solutions. 1. Basic Placeholder Replacement Using String.replace() For simple use cases, such as replacing a static placeholder in a text, the easiest way is to use the replace() method of the String class. String template = "Hello, {name}! […] - [Fix “Pool Empty. Unable to Fetch a Connection” Errors in Java Applications](https://yellowgnu.com/fix-pool-empty-unable-to-fetch-a-connection-errors-in-java-applications/): Understanding the Error When working with database connection pools in Java (for example, HikariCP, Apache DBCP, or C3P0), you might encounter an error like: Pool empty. Unable to fetch a connection in 20 seconds, none available [size:50; busy:50; idle:0; lastwait:20000] This message indicates that: The connection pool size is 50. All 50 connections are busy (actively being used). There are no idle connections available. The application waited 20 seconds for a connection to be returned but timed out. In short, your application ran out of database connections. 🧠 Root Causes This error generally occurs due to one or more of […] - [How to Configure Azure NGINXaaS as a Reverse Proxy to Your Local Server](https://yellowgnu.com/how-to-configure-azure-nginxaas-as-a-reverse-proxy-to-your-local-server/): NGINX as a Service for Azure (NGINXaaS) is a managed solution that brings the power of NGINX directly into the Microsoft Azure ecosystem. Whether you need to optimize traffic routing, secure access to on-premise systems, or scale cloud applications efficiently, Azure’s NGINXaaS makes it possible with minimal management overhead. In this guide, you’ll learn how to configure Azure NGINXaaS as a reverse proxy to route incoming requests to one of your local or internal servers. What Is NGINX as a Service for Azure? NGINXaaS for Azure is a fully managed offering built on NGINX Plus, the enterprise edition of NGINX. […] - [How to Use a PreparedStatement with an IN Clause in MSSQL](https://yellowgnu.com/how-to-use-a-preparedstatement-with-an-in-clause-in-mssql/): When working with SQL queries in Java, using a PreparedStatement is one of the best practices for preventing SQL injection and improving code readability. However, developers often encounter a common challenge when dealing with the IN clause in Microsoft SQL Server (MSSQL). Unlike a single parameter placeholder, the IN clause typically requires multiple values — and PreparedStatement parameters must be explicitly defined. In this article, we’ll explore several effective ways to use a PreparedStatement with an IN clause in MSSQL. ✅ Why the IN Clause Is Tricky in PreparedStatements The IN clause allows filtering results based on a list of […] - [Online vs Offline Backup: Key Differences, Advantages, and Step-by-Step Implementation (with 389 Directory Server Example)](https://yellowgnu.com/online-vs-offline-backup-key-differences-advantages-and-step-by-step-implementation-with-389-directory-server-example-2/) - [Online vs Offline Backup: Key Differences, Advantages, and Step-by-Step Implementation (with 389 Directory Server Example)](https://yellowgnu.com/online-vs-offline-backup-key-differences-advantages-and-step-by-step-implementation-with-389-directory-server-example/): 1. Why Backup Type Matters Whether you’re running a 389 Directory Server, a database, or any mission-critical service, backup is not just “making a copy.” The backup method directly affects: Data integrity System availability Recovery time Compliance (GDPR, ISO, audits) This is why understanding online (hot) and offline (cold) backup approaches is essential for every system administrator. 2. What Is an Online Backup? Definition: An online backup is created while the system or database is running and accepting connections or writes. It allows continuous service availability during the backup process. 2.1. How It Works The service (for example, dirsrv@slapd-yourinstance) remains […] - [How to Get the User’s Current Location and Display It on a Map in Angular](https://yellowgnu.com/how-to-get-the-users-current-location-and-display-it-on-a-map-in-angular/): Modern web applications often need to access the user’s location to provide personalized experiences — such as showing nearby stores, delivery tracking, or location-based services. In this article, you’ll learn how to get the user’s current location in Angular and display it on an interactive Google Map. We’ll go step by step — from enabling the browser’s Geolocation API to rendering a map centered on the current coordinates. Prerequisites Before we begin, make sure you have the following: An Angular project created with Angular CLI (ng new my-map-app) A Google Maps API key Basic understanding of TypeScript and Angular components […] - [Fixing the “BAD_AUTHENTICATION” Error in Android Apps Using Google Services](https://yellowgnu.com/fixing-the-bad_authentication-error-in-android-apps-using-google-services/): When developing or using Android applications that rely on Google authentication, you might encounter the dreaded error: [GoogleAccountDataServiceImpl] getToken() -> BAD_AUTHENTICATION Account: Account {name=example@gmail.com, type=com.google} App: com.google.android.gms Service: oauth2:https://www.googleapis.com/auth/login_manager sry: Long live credential not available This message often appears in the device logs or the app’s output console and can prevent the application from authenticating properly with Google’s servers. It’s especially common in apps that use OAuth2 tokens for background operations — such as SMS sender applications, backup utilities, or synchronization tools. 🧩 What the Error Means The error BAD_AUTHENTICATION means the app failed to obtain a valid OAuth2 token […] - [How to Fix java.lang.AbstractMethodError in Tomcat (With Real Examples)](https://yellowgnu.com/how-to-fix-java-lang-abstractmethoderror-in-tomcat-with-real-examples/): When starting a Java web application on Apache Tomcat, you might encounter an intimidating message like this: SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.filterStart Exception starting filter [monitoringFilter] java.lang.AbstractMethodError This type of error can prevent your application from starting altogether — but the good news is that it’s almost always caused by a simple library incompatibility. Let’s explore what this error means, why it happens, and how to resolve it properly. 🧩 What Is java.lang.AbstractMethodError? The java.lang.AbstractMethodError occurs when a class tries to call an abstract method that it doesn’t actually implement. In most cases, this happens due to version mismatches between compiled code […] - [How to Fix the “'capacitor-google-map' Is Not a Known Element” Error in Angular](https://yellowgnu.com/how-to-fix-the-capacitor-google-map-is-not-a-known-element-error-in-angular/): When integrating Capacitor Google Maps into your Angular or Ionic application, you might encounter an error like: 'capacitor-google-map' is not a known element: 1. If 'capacitor-google-map' is an Angular component, then verify that it is part of this module. 2. If 'capacitor-google-map' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component. This error can be confusing, especially when the setup seems correct. In this article, we’ll explain why this happens, what it means, and how to fix it properly. Understanding the Error Angular uses a concept called schemas to determine which HTML elements it recognizes. When […] - [Handling Missing Content-Type Header in Spring Boot REST APIs](https://yellowgnu.com/handling-missing-content-type-header-in-spring-boot-rest-apis/): When building REST APIs in Spring Boot, developers often rely on Spring’s powerful annotation-based request mapping to validate incoming HTTP headers automatically. Usually, when a required header like authToken or Protocol-Version is missing, the framework throws a MissingRequestHeaderException, which can be cleanly handled with a global @ExceptionHandler. However, one header often behaves differently — the Content-Type. The Problem: Content-Type Doesn’t Trigger MissingRequestHeaderException You might define a @PostMapping endpoint like this: @PostMapping("/{payment-product}") public ResponseEntity<GenericResponse<Object>> createPayment( @RequestHeader("authToken") String authToken, @RequestHeader("Protocol-Version") String protocolVersion, @RequestHeader("Content-Type") String contentType, @RequestBody PaymentRequestBody paymentRequest) { // ... } For most headers, missing values trigger a MissingRequestHeaderException, which can […] - [Resolving Incorrect Boolean Mapping in Jackson ObjectMapper: When All Values Are False](https://yellowgnu.com/resolving-incorrect-boolean-mapping-in-jackson-objectmapper-when-all-values-are-false/): When converting between Java objects — such as entities, DTOs, or database objects — developers often rely on Jackson’s ObjectMapper for its convenience and flexibility. However, subtle differences in field naming conventions can cause unexpected issues, especially with boolean fields. A common problem appears when using: ObjectMapper objectMapper = new ObjectMapper(); return objectMapper.convertValue(this, BankDto.class); Even though the database contains both true and false values, the resulting DTO shows only false values for the field — for example, oauthEnabled. This article explores why this happens, how Jackson handles naming conventions, and how to properly fix it. The Scenario Let’s assume the […] - [🔧 How to Add Packages and Integrate Firebase into Your Xcode Build Target](https://yellowgnu.com/%f0%9f%94%a7-how-to-add-packages-and-integrate-firebase-into-your-xcode-build-target/): Modern iOS development thrives on modularity — and Xcode makes it easy to add third-party packages directly to your project. Whether you’re integrating a small utility or a major SDK such as Firebase, managing packages correctly ensures cleaner builds and easier maintenance. This guide walks you through: Adding packages using Swift Package Manager (SPM) Setting up Firebase in your Xcode build target Configuring your project for Firebase SDK integration ⚙️ Step 1. Open Your Project and Add a Package Launch Xcode and open your project. From the menu bar, choose File → Add Packages… Figure 1 – Accessing the “Add […] - [How to Use and Query TTL (Time to Live) in Apache Cassandra with Spring Data](https://yellowgnu.com/how-to-use-and-query-ttl-time-to-live-in-apache-cassandra-with-spring-data/): What Is TTL in Cassandra? TTL, or Time to Live, is a Cassandra feature that allows you to automatically expire rows or columns after a given time period. Instead of manually deleting old data, Cassandra automatically marks expired data as deleted (tombstoned) and removes it during compaction. TTL values are set in seconds and can be applied to entire rows or individual columns. Basic Example — Setting TTL in CQL INSERT INTO user_sessions (user_id, session_id, last_access) VALUES ('u123', 's456', toTimestamp(now())) USING TTL 86400; ✅ What happens: The row will automatically expire after 24 hours (86,400 seconds). Querying TTL for a […] - [How to Remotely Start EV Charging Using the OCPP Protocol](https://yellowgnu.com/how-to-remotely-start-ev-charging-using-the-ocpp-protocol/): The Open Charge Point Protocol (OCPP) is the global standard for communication between EV chargers (Charge Points) and Central Management Systems (CMS). It enables features such as remote start/stop of charging, firmware updates, diagnostics, and session reporting. Among these operations, RemoteStartTransaction allows a CMS to start a charging session remotely—for example, when a driver taps “Start Charging” in a mobile app. In this article, we’ll cover how this process works, show JSON message examples for OCPP 1.6 and 2.0.1, and include a sequence diagram illustrating the entire flow. 🔄 Remote Start Charging Overview High-Level Steps User action: The EV driver […] - [How to Build a Kubernetes GPU Cluster for AI Workloads with K3s and NVIDIA Runtime](https://yellowgnu.com/how-to-build-a-kubernetes-gpu-cluster-for-ai-workloads-with-k3s-and-nvidia-runtime/): Modern AI workloads demand high computational power, scalability, and efficiency. Traditional CPU clusters can’t keep up with the processing needs of deep learning, data analytics, and model inference at scale. This guide walks you through building a GPU-enabled K3s cluster that supports containerized AI workloads using the NVIDIA container runtime, containerd, and RuntimeClass integration — a lightweight but powerful foundation for machine learning infrastructure. 🧩 Why Choose K3s for GPU Workloads? K3s is a lightweight, CNCF-certified Kubernetes distribution optimized for edge and hybrid environments. Its minimal footprint and simple deployment make it ideal for: On-prem GPU clusters AI research labs […] - [Understanding Regular Expressions (Regex) with Practical Examples](https://yellowgnu.com/understanding-regular-expressions-regex-with-practical-examples/): What Are Regular Expressions (Regex)? Regular expressions, often shortened to regex, are sequences of characters that define a search pattern. They are used to find, validate, extract, or replace text that matches specific rules — from checking an email address format to parsing logs or sanitizing input data. Regex is supported in almost every programming language, including JavaScript, Python, Java, PHP, C#, and Perl. Why Use Regex? Regular expressions allow developers to: Validate input formats (emails, phone numbers, postal codes). Find and replace patterns in text. Extract structured data from unstructured text. Simplify complex string operations with concise syntax. Basic […] - [Detect and Prevent Database Deadlocks in Spring Applications](https://yellowgnu.com/detect-and-prevent-database-deadlocks-in-spring-applications/): Deadlocks are among the most frustrating issues in database-driven applications. They occur when two or more transactions permanently block each other, each waiting for a resource that the other transaction holds. In Spring-based systems — especially those using JPA, Hibernate, or direct JDBC — a deadlock can cause unexpected timeouts, slowdowns, and even application crashes. While modern relational databases like PostgreSQL, MySQL, and Oracle are capable of detecting and resolving deadlocks automatically by rolling back one transaction, the real challenge for developers lies in identifying the root cause and preventing recurrence. This guide explores practical methods to find, detect, and […] - [How to Access a Docker Application from Another Computer](https://yellowgnu.com/how-to-access-a-docker-application-from-another-computer/): Docker makes it incredibly easy to package and run applications in isolated containers. But what if you want to access your Dockerized application from another computer on your local network — for example, to test it from a mobile device or let a colleague see it in action? By default, Docker containers are isolated from the outside world. To make your application accessible, you need to expose its internal port to your host machine and ensure that your host can be reached over the network. In this article, we’ll show you how to do this step by step, using a […] - [How to Fix Corrupted SSTables in Apache Cassandra: A Complete Guide](https://yellowgnu.com/how-to-fix-corrupted-sstables-in-apache-cassandra-a-complete-guide/): When Apache Cassandra detects a corrupted SSTable file during startup, you might see an error like this: org.apache.cassandra.io.sstable.CorruptSSTableException: Corrupted: /var/lib/cassandra/data/keyspace/table-UUID/me-1-big-Data.db Exiting forcefully due to file system exception on startup, disk failure policy "stop" This can be alarming — your node refuses to start and your database appears unavailable. In this article we’ll explain what SSTables are, why corruption happens, and step-by-step methods to recover a node safely. We’ll also include preventive best practices. What Are SSTables? SSTables (Sorted String Tables) are immutable files on disk where Cassandra stores data. Each write to Cassandra eventually becomes an SSTable on disk. They […] - [How to Handle Cassandra UDTs in Java with Custom Codecs (Step-by-Step Guide + Examples)](https://yellowgnu.com/how-to-handle-cassandra-udts-in-java-with-custom-codecs-step-by-step-guide-examples/): When working with Apache Cassandra in real-world enterprise applications, you often need to store structured data such as monetary amounts, contact information, or complex settings. Instead of flattening everything into multiple columns, User-Defined Types (UDTs) let you model complex objects as a single column. However, to use UDTs effectively in Java (especially with frameworks like Spring or the DataStax Java driver), you must map UDTs to Java classes and often create a custom codec to serialize and deserialize these values automatically. In this article you’ll learn: What Cassandra UDTs are and why they’re useful. How to create a UDT in […] - [Fix “Building for iOS Simulator but Linking in Object File Built for iOS” in Cordova/Xcode](https://yellowgnu.com/fix-building-for-ios-simulator-but-linking-in-object-file-built-for-ios-in-cordova-xcode/): If you develop hybrid apps using Apache Cordova, sooner or later you may encounter an intimidating Xcode build error: Building for ‘iOS Simulator’, but linking in object file built for ‘iOS’. This typically appears when you run cordova build ios or launch your app in the iOS Simulator on a Mac, especially Apple Silicon Macs. It’s a common stumbling block for developers integrating third-party plugins such as cordova-plugin-facebook5 or libraries like Bolts.framework. In this article, we’ll explain why this happens, how architectures differ between device and simulator builds, and provide clear, step-by-step solutions to eliminate the error. Why This Error […] - [Managing Unique Objects in Java Collections: Update Instead of Ignore](https://yellowgnu.com/managing-unique-objects-in-java-collections-update-instead-of-ignore/): When working with Java applications, you’ll often maintain collections of objects — user accounts, transactions, balances, etc. A common challenge arises when you’re using a Set to enforce uniqueness, but later need to update an existing object when a “duplicate” arrives, rather than ignore it. In this article, we’ll explore several ways to achieve this: Using HashSet with manual updates Using a Comparator with TreeSet Switching to a Map for more efficient updates By the end, you’ll know which strategy best fits your use case. 1. Why a Set Alone Isn’t Enough Java’s Set interface (HashSet, LinkedHashSet, TreeSet) guarantees that […] - [Recursive Depth: From Programming to Art and Everyday Life](https://yellowgnu.com/recursive-depth-from-programming-to-art-and-everyday-life/): When people hear the word “recursion”, they usually think of computer programming. In programming, a recursive function calls itself until it reaches a stopping point. This concept of recursive depth simply means how many “layers” deep the repetition goes before it stops. But recursion is not only for code — it’s a powerful idea that also appears in art, literature, nature, and even daily life. What is Recursive Depth in Simple Words? Imagine looking into two mirrors facing each other. You see an endless tunnel of reflections. That’s a real-life example of recursion — the image is repeating inside itself. […] - [Exporting and Importing Cassandra Data Under a Different Structure](https://yellowgnu.com/exporting-and-importing-cassandra-data-under-a-different-structure/): Migrating data in Apache Cassandra is often more complex than just running a few commands. The built-in cqlsh tools (COPY TO and COPY FROM) work well for simple tasks but struggle with large datasets, complex UDTs, and schema changes. The Challenge Many organizations need to: Move data to a new table structure. Split or merge columns. Convert data formats before import. Out-of-the-box tools cannot do this efficiently or at scale. Common Export & Import Commands Basic export using cqlsh: COPY old_keyspace.old_table TO '/tmp/export.csv' WITH HEADER = TRUE; Basic import into a new table: COPY new_keyspace.new_table FROM '/tmp/transformed.csv' WITH HEADER = […] - [Why Does the Last Stream Icon Disappear in Android Auto? Advanced Troubleshooting Guide](https://yellowgnu.com/why-does-the-last-stream-icon-disappear-in-android-auto-advanced-troubleshooting-guide/): If you are developing a media or streaming app with Android Auto support, you might encounter a strange glitch: the final stream in your list appears without its icon while all other streams show correctly. This issue can frustrate both developers and users. In this article, we’ll explore why it happens and how you can solve it — based on Android Auto’s metadata system and Media3 best practices. Understanding How Android Auto Renders Media Items Android Auto relies on your app’s MediaSession or MediaLibrarySession to populate lists of MediaItems. Each MediaItem contains a MediaMetadata object describing its title, artist, and […] - [Fixing “Target bean of DefaultUdtValue is not of type of the persistent entity” in Spring Data Cassandra](https://yellowgnu.com/fixing-target-bean-of-defaultudtvalue-is-not-of-type-of-the-persistent-entity-in-spring-data-cassandra/): If you’re working with Apache Cassandra and Spring Data Cassandra, you may come across the following error: Target bean of type com.datastax.oss.driver.internal.core.data.DefaultUdtValue is not of type of the persistent entity At first glance it looks confusing, but this error usually points to a mismatch between how User-Defined Types (UDTs) are declared in Cassandra and how they’re mapped in your Java application. In this article we’ll explain what causes this issue and how you can fix it. What the Error Means Cassandra allows you to define User Defined Types (UDTs) to store structured data. In Spring Data Cassandra, each UDT should […] - [How to Fix “No Converter Found Capable of Converting” for Custom Objects in Spring Data Cassandra](https://yellowgnu.com/how-to-fix-no-converter-found-capable-of-converting-for-custom-objects-in-spring-data-cassandra/): If you’ve tried to store a custom Java object inside a Cassandra table using Spring Data Cassandra and encountered an error like: No converter found capable of converting from type [com.example.TransactionEntity] to type [com.datastax.oss.driver.api.core.data.UdtValue] you’re not alone. This error appears when Spring Data Cassandra can’t map your Java class to a Cassandra User-Defined Type (UDT). In this article, you’ll learn why this happens and how to fix it step-by-step. Why the Error Happens Cassandra stores primitive types (text, int, boolean, etc.) easily, but when you embed a complex object in another entity (for example, a TransactionEntity inside an Account entity), […] - [How to Add a Timed Pop-Up Notification for Announcements on Your HTML Website](https://yellowgnu.com/how-to-add-a-timed-pop-up-notification-for-announcements-on-your-html-website/): Sometimes you need to communicate an important announcement — a change in schedule, a special promotion, or an urgent update — and a pop-up can be an effective way to ensure visitors see the message right away. A well-designed pop-up can: Highlight critical information such as schedule changes or new policies. Display content only when it’s relevant (for example, only for certain locations or user segments). Encourage users to take action, like signing up for a newsletter or booking an appointment. Code Example 1 – HTML Structure <!-- Popup HTML --> <div class="popup-backdrop" id="popupBackdrop"> <div class="popup-modal" role="dialog" aria-modal="true" aria-labelledby="popupTitle"> <h3 […] - [Congratulating Personetics on Tearsheet’s 2025 Big Bank Theory Award](https://yellowgnu.com/congratulating-personetics-on-tearsheets-2025-big-bank-theory-award/): We are proud to celebrate the recognition of Personetics as Best Banking Service Partner at Tearsheet’s 2025 Big Bank Theory (TBBT) Awards. For more than five years, we’ve partnered with Personetics to deliver innovative solutions that help banks and financial institutions transform the way they serve their customers. This award is a testament to Personetics’ vision of making banking more personalized, AI-driven, and impactful—empowering institutions to increase engagement, retention, and digital sales while providing real value to end users. The TBBT Awards highlight the companies shaping the future of financial services. Seeing Personetics recognized alongside leaders such as Lendflow, Cross […] - [How to Automate Linux Backups with a Custom Bash Script: A Step-by-Step Guide](https://yellowgnu.com/how-to-automate-linux-backups-with-a-custom-bash-script-a-step-by-step-guide/): Backing up critical system files, configurations, and application data is essential for any production-grade Linux server. In this article, we walk you through building a powerful yet flexible backup script using Bash — ideal for developers, sysadmins, and DevOps engineers who want control over their backup logic without relying on external tools. 🔄 Why Use a Custom Backup Script? While tools like rsnapshot, Bacula, or Duplicity are robust and mature, a custom script allows: Complete control over what gets backed up Seamless integration into existing workflows (e.g., GitLab, cron) Minimal dependencies Lightweight and portable logic 📦 Key Features of the […] - [Can I Delete the Windows.old Folder? Here's What You Need to Know](https://yellowgnu.com/can-i-delete-the-windows-old-folder-heres-what-you-need-to-know/): If you’ve recently upgraded your Windows operating system, you may have noticed a folder named Windows.old taking up a significant amount of space on your C: drive. Wondering if it’s safe to delete? Here’s a clear explanation. 💡 What Is the Windows.old Folder? The Windows.old folder is automatically created when you: Upgrade to a newer version of Windows Reinstall Windows without formatting the drive It contains a backup of your previous installation, including system files, installed programs, and personal data. This allows you to roll back to your previous Windows version if needed. ❗ Should You Delete Windows.old? You can […] - [How to List WordPress Posts with Title, Creation, Publish, and Modification Dates (Using WP-CLI, PHP, and XML Export)](https://yellowgnu.com/how-to-list-wordpress-posts-with-title-creation-publish-and-modification-dates-using-wp-cli-php-and-xml-export/): Whether you’re performing a content audit, migrating a site, or optimizing for SEO, extracting a structured list of WordPress posts with metadata like title, creation date, publish date, and modification date can be incredibly useful. In this guide, we’ll explore multiple methods to do just that—using WP-CLI, PHP, REST API, and WordPress XML export. ✅ Method 1: Use WP-CLI for Quick Command-Line Listing If you have terminal access to your WordPress installation, WP-CLI offers a fast way to extract post metadata: wp post list --post_type=post --format=csv --fields=ID,post_title,post_date,post_modified Explanation: post_title: Post title post_date: Creation/Publish date post_modified: Last updated time 📌 Pro […] - [Smart Forms in React: Handling Autocomplete, Focus, and User Experience](https://yellowgnu.com/smart-forms-in-react-handling-autocomplete-focus-and-user-experience/): When building modern web applications, forms are often the first point of contact between you and your users. A smooth, intuitive form experience can make or break your app — and your business. We specialize in building user-friendly, scalable web apps using React. In this article, we’ll show how our team tackles common challenges like autocomplete, focus detection, and browser navigation in React forms — so you can see the level of care and technical precision we bring to your project. 🔍 What Is Autocomplete and Why Does It Matter? Autocomplete helps users fill out forms faster by suggesting previously […] - [From Push to Production: Automated Deployments to K3s with GitLab CI/CD (Real-World Guide)](https://yellowgnu.com/automated-deployment-k3s-gitlab-cicd/): You’ve got a K3s cluster and a GitLab instance. You push code and—ideally—your app rolls out automatically. In practice, you might hit a few snags: pipelines not triggering, service ports clashing, or images refusing to pull with an ominous ImagePullBackOff (401 Unauthorized). This guide shows a clean, repeatable setup and the exact fixes that work in real life—with anonymized URLs/IPs so you can drop this straight onto your blog. Environment used in this guide (genericized) K3s cluster: accessible at <CLUSTER_NODE_IP> GitLab: https://<GITLAB_HOST> with a private registry https://<REGISTRY_HOST> Runner host: separate Linux box (Podman or Docker installed; kubectl access to K3s) […] - [Pendo API Key vs Pendo Feedback Integration Key – What’s the Difference and How to Use Them](https://yellowgnu.com/pendo-api-key-vs-pendo-feedback-integration-key-whats-the-difference-and-how-to-use-them/): If you’re just getting started with Pendo, you might notice there are two different keys you can encounter: the Pendo API Key (also called Agent or Install Key) and the Pendo Feedback Integration Key. They sound similar, but they serve completely different purposes. Using the wrong one will cause errors in your setup. This article explains, in plain language, what Pendo is, how it works, and the difference between these two keys so you can integrate Pendo without headaches. 1. What Is Pendo? Pendo is a product experience platform that helps you: Track how users interact with your application (analytics). […] - [TypeScript Complex Data Types (and What You Can Do With Them)](https://yellowgnu.com/typescript-complex-data-types-and-operations/): Master arrays, tuples, objects, unions, intersections, generics, and utility types in TypeScript with practical patterns you can ship today. This guide shows safe operations—push, map, filter, reduce, immutable updates, and type‑narrowing—using examples from a mini CRM and an EV‑charging app. Includes a cheat sheet, common pitfalls, JSON‑LD, and copy‑paste code. Table of contents What “complex data types” mean in TypeScript Arrays: push, map, filter, reduce (mutable vs immutable) Tuples: typed positions, labels, and variadic tuples Objects with interfaces & type aliases Unions and safe narrowing (type guards) Intersections: combining types without tears Enums vs literal unions Generics, keyof, mapped & […] - [Fixing Back Navigation in Ionic Tabs: Prevent Tab Reset on Page Exit](https://yellowgnu.com/fixing-back-navigation-in-ionic-tabs-prevent-tab-reset-on-page-exit/): When building a mobile app using Ionic with Angular, it’s common to use a tab-based layout with routes like: /tabs/tab1 /tabs/tab2 /tabs/tab3 /tabs/tab4 However, if you navigate from one of the tabs to a non-tab route such as /wallet, pressing the hardware back button on Android or using NavController.back() might reset your tab selection to tab1, even if the user started from tab4. This article explains why this happens and shows you how to fix it using best practices and Angular routing configurations. 🔍 Problem Description Let’s say a user is on /tabs/tab4 and navigates to /wallet. When they press […] - [Why 401 Errors Happen (And Why You Should Care)](https://yellowgnu.com/why-401-errors-happen-and-why-you-should-care/): When your Android app talks to a server, it often sends an authentication token (like a JWT) with each request. If that token expires or is invalid, the server responds with a 401 Unauthorized status. Left unhandled, your users see cryptic errors or get stuck in a broken state. In this guide you’ll learn: What triggers a 401 and why auto-refresh matters How to structure your API client to retry once with a fresh token How to broadcast logout events to your UI using a shared ViewModel Best practices for clean, maintainable Kotlin code Table of Contents Understanding Token Refresh […] - [Cross-Platform Geolocation in Capacitor: A Beginner-Friendly Guide to getCurrentPosition()](https://yellowgnu.com/cross-platform-geolocation-in-capacitor-a-beginner-friendly-guide-to-getcurrentposition/): 1. Why you should care about geolocation Whether you’re building a ride-sharing app, a “find my charger” map, or simply pre-filling an address form, you need the device’s GPS coordinates. Capacitor gives you two main tools: Platform Best-practice API Android & iOS @capacitor/geolocation plugin Web (desktop / mobile browsers) navigator.geolocation Using each one correctly—and waiting for the result before moving on—is the trick. (Capacitor) 2. The asynchronous puzzle (explained for total beginners) JavaScript never blocks the main thread. Both Capacitor’s plugin and the browser’s geolocation run asynchronously because the device might need a few seconds to talk to the GPS […] - [How to Add Chromecast (Cast) Functionality in Your Android Kotlin App](https://yellowgnu.com/android-kotlin-chromecast-duration-seek/): For Dummies · Beginner-Friendly · Step‑by‑Step Integrating Chromecast (Google Cast) into your Android app can feel daunting, especially if you’re new to media streaming. In this guide, you’ll learn how to: Set up the Google Cast SDK in Kotlin Retrieve the total duration of your media file Implement a seek bar so users can skip forward or rewind Let’s break it down into simple, actionable steps! 📋 Prerequisites Before you begin, make sure you have: Android Studio (Arctic Fox or newer) Kotlin configured in your project Internet permission in AndroidManifest.xml: <uses-permission android:name="android.permission.INTERNET" /> A basic MediaSessionCompat or ExoPlayer setup (optional, […] - [How to Change Data in a Child Component from the Parent in React (Beginner Guide)](https://yellowgnu.com/how-to-change-data-in-a-child-component-from-the-parent-in-react-beginner-guide/): If you’re just getting started with React, you might be wondering how to send data from a parent component to a child component—and how to change that data from the parent. Don’t worry! This guide will explain it in the simplest terms, with real-world examples. In React, data flows from parent to child using something called props (short for “properties”). When the parent updates the data, the child receives the new value automatically. Let’s walk through the concept step by step. 🔁 One-Way Data Flow in React React is built on the principle of one-way data flow. This means: The […] - [How to Convert Java Objects to UDT Values in Apache Cassandra](https://yellowgnu.com/how-to-convert-java-objects-to-udt-values-in-apache-cassandra/): When working with Apache Cassandra, one powerful feature is the use of User-Defined Types (UDTs) — allowing you to define complex, nested structures similar to objects in programming. In Java applications, converting your domain objects to UDT values (UdtValue) is essential for seamless integration with your Cassandra database. This article guides you through the process of converting a Java object into a UdtValue using the DataStax Java Driver for Cassandra. What is a UDT in Cassandra? A User-Defined Type (UDT) in Cassandra lets you group related fields together. For example: CREATE TYPE my_keyspace.my_udt ( id int, name text, description text […] - [How to Keep Only the Most Recent Record per Group in SQL (Oracle and SQL Server)](https://yellowgnu.com/how-to-keep-only-the-most-recent-record-per-group-in-sql-oracle-and-sql-server/): In many database-driven applications, tables often store multiple records for the same business entity. Whether it’s logs, transactions, status snapshots, or historical data, it’s common to encounter duplicate keys with different update timestamps. To improve performance or prepare clean datasets for reporting, it’s often necessary to retain only the most recent record (based on a timestamp or date column) for each unique combination of identifiers. This article walks you through how to: Select only the most up-to-date row per group. Delete older records while preserving the latest entry. Use SQL techniques compatible with Oracle and SQL Server (MSSQL). Use Case […] - [How to Retrieve PreparedStatement Results into Tuples in Java 8 Without Using EntityManager](https://yellowgnu.com/how-to-retrieve-preparedstatement-results-into-tuples-in-java-8-without-using-entitymanager/): If you’re working with Java and databases, chances are you’ve encountered PreparedStatement — a safe and efficient way to run SQL queries. But what if you want to group each row of results into a nice, reusable object like a Tuple, especially when you’re not using advanced tools like JPA or EntityManager? In this beginner-friendly guide, we’ll show you how to: Run SQL queries using PreparedStatement Define your own simple Tuple class in Java 8 Store and print the results cleanly Do all of this without any JPA, Hibernate, or EntityManager What is a Tuple in Java? In languages like […] - [How to Fix the 'google is not defined' and 'initMap is not a function' Errors in Your Angular App: A Step-by-Step Guide](https://yellowgnu.com/how-to-fix-the-google-is-not-defined-and-initmap-is-not-a-function-errors-in-your-angular-app-a-step-by-step-guide/): Are you seeing a blank screen on your Angular app with just the footer visible? Have you encountered the error message “google is not defined” or the warning “initMap is not a function”? If so, you’re not alone! These issues commonly occur when integrating Google Maps into an Angular application. In this post, we will walk you through the steps to resolve these errors, ensuring your Google Maps integration works smoothly. What is the ‘google is not defined’ Error? The error google is not defined typically happens when the Google Maps JavaScript API is not loaded properly before your application […] - [How to Automatically Deploy a Spring Boot App to Kubernetes with GitLab CI/CD](https://yellowgnu.com/how-to-automatically-deploy-a-spring-boot-app-to-kubernetes-with-gitlab-ci-cd/): If you’re building a Spring Boot application and want to automate your deployment to Kubernetes using GitLab CI/CD, this beginner-friendly tutorial will walk you through every step — no advanced DevOps skills required. ✅ What You’ll Learn How to build and push a Docker image from GitLab How to authenticate Kubernetes with a private container registry How to automatically apply your deployment using GitLab pipelines How to make your image tag dynamic for better version control 📦 Prerequisites Before we dive in, make sure you have: A GitLab repository (self-hosted or GitLab.com) A GitLab Runner connected and working A Kubernetes […] - [Docker vs Kubernetes: A Beginner’s Guide with Real-Life Analogies](https://yellowgnu.com/docker-vs-kubernetes-a-beginners-guide-with-real-life-analogies/): Are you confused about the difference between Docker and Kubernetes? You’re not alone. These two technologies are often mentioned together, but they serve very different purposes. In this beginner-friendly guide, we’ll explain what Docker and Kubernetes are using simple language and fun analogies—perfect for non-techies or curious minds. 🚢 What Is Docker? Docker is a tool that packages your application together with everything it needs to run. That includes code, settings, libraries, and tools. The result is called a container—a portable and self-sufficient unit. Think of Docker Like a Shipping Container for Apps Just like real-world shipping containers hold goods […] - [Why Is My Input Field Empty Until I Refresh the Page?](https://yellowgnu.com/why-is-my-input-field-empty-until-i-refresh-the-page/): You’re working on a form and everything seems in place—until you notice a frustrating bug: an input field is initially empty when the page loads, but suddenly shows its value only after you refresh the page. If you’ve encountered this issue, you’re not alone. This article explains the most common causes of this behavior and offers practical solutions for each, whether you’re working with JavaScript, server-rendered HTML, or WordPress-based sites. 1. Browser Autofill Interference Most modern browsers implement autofill features to help users quickly fill in repetitive information such as names or email addresses. However, autofill can create confusing situations, […] - [How to Find the Most Recent Date in a List of Objects Using Java](https://yellowgnu.com/how-to-find-the-most-recent-date-in-a-list-of-objects-using-java/): In many Java applications, it’s common to work with lists of objects that include timestamps or date fields. Whether you’re tracking events, user activity, or document creation times, you may need to find the object with the most recent date. This tutorial will show you exactly how to do that in Java using best practices. ✅ Problem Statement You have a list of Java objects, and each object contains a Date or LocalDateTime field. Your goal is to extract the object with the most recent (latest) date. 🔧 Step-by-Step Java Example Let’s walk through a practical example using a custom […] - [Automating Kubernetes Deployment from GitLab CI/CD to a K3s Cluster: A Complete Guide](https://yellowgnu.com/automating-kubernetes-deployment-from-gitlab-ci-cd-to-a-k3s-cluster-a-complete-guide/): In this comprehensive tutorial, we walk through the complete process of building a scalable and reusable GitLab CI/CD pipeline for deploying containerized applications to a K3s Kubernetes cluster. This article covers server roles, setup procedures, file configurations, and YAML template generalization to enable seamless deployment across multiple projects. Overview Our goal is to automate the following: Build container images using Podman Push images to GitLab’s built-in Container Registry Pull the images from a K3s cluster Deploy the application via Kubernetes manifests 1. Server Infrastructure Involved 1.1 GitLab Server (VM1) Domain: src.yellowgnu.net Role: Hosts GitLab, GitLab Container Registry, manages CI pipelines […] - [Automate Kubernetes Deployments with GitLab CI/CD and Dynamic Image Tags](https://yellowgnu.com/automate-kubernetes-deployments-with-gitlab-ci-cd-and-dynamic-image-tags/): Continuous deployment to Kubernetes clusters doesn’t have to be complex. In this guide, you’ll learn how to fully automate Docker image builds, pushes to a GitLab container registry, and Kubernetes deployments using a clean and efficient GitLab CI/CD pipeline. Whether you’re working with a production-grade app or a side project, this pipeline template will help you: Build and push container images using Podman (or Docker). Create Kubernetes secrets for private registry access. Automatically update your deployment files with dynamic image tags. Apply your manifests to a Kubernetes cluster using kubectl. ✅ Why Automate Kubernetes Deployments? Manual deployments are slow, error-prone, […] - [How to Create a New Object Based on an Existing One in Java](https://yellowgnu.com/java-create-new-objects-based-on-existing/): Creating a new object based on an existing one is a common pattern in Java, especially when working with DTOs (Data Transfer Objects), view models, or cloning domain objects with slight modifications. In this article, we’ll explore the best practices for copying data from an existing object into a new instance, ensuring immutability, separation of concerns, and clarity. Why You Might Want to Clone or Map Objects Here are a few common scenarios: Creating a simplified view model (DTO) from a full entity. Transferring only safe or relevant data between layers. Applying transformations while keeping the original object untouched. Resetting […] - [How to Deploy a .NET Application from Visual Studio to a Linux Server](https://yellowgnu.com/how-to-deploy-a-net-application-from-visual-studio-to-a-linux-server/): Deploying a .NET application to a Linux server might sound challenging, especially if you’ve built and tested it entirely on Windows using Visual Studio. But with the cross-platform power of .NET Core and .NET 5+, deploying your app to Linux has never been easier. In this guide, we’ll walk through the exact steps to get your .NET app running on a Linux server — whether you’re managing a startup, building your own side project, or migrating workloads. What You’ll Learn What type of .NET application works on Linux How to prepare your build in Visual Studio How to publish your […] - [Code Optimization Techniques to Improve Server Response Time](https://yellowgnu.com/code-optimization-techniques-to-improve-server-response-time/): In today’s fast-paced digital world, user expectations are higher than ever. Whether you’re running a web app, mobile platform, or REST API, performance matters. Users expect instant feedback, and search engines reward faster websites. One of the most effective ways to enhance performance is through code optimization, which directly contributes to faster server response times, improved SEO rankings, and a better user experience. In this article, we’ll explore proven strategies for optimizing backend code and server-side logic to achieve optimal response time. 🔍 Why Server Response Time Matters Server response time is the amount of time it takes for a […] - [How to Disable Bounce in UIWebView on iOS: A Simple Guide for Developers](https://yellowgnu.com/how-to-disable-bounce-in-uiwebview-on-ios-a-simple-guide-for-developers/): If you’re developing an iOS application using UIWebView, you may have noticed the default bounce or elastic scrolling behavior when users scroll beyond the content boundaries. While this effect feels natural in native apps, it might not be desirable in a web-based view—especially for fixed layouts or full-screen web apps. In this guide, we’ll walk you through how to disable the bounce effect in UIWebView, with a focus on Objective-C implementation and practical examples. ⚠️ Note: UIWebView is Deprecated Before we dive in, it’s important to mention that UIWebView has been officially deprecated by Apple since iOS 12 and replaced […] - [Fixing “No Converter Found Capable of Converting” in Cassandra with Spring Data: A Complete Guide](https://yellowgnu.com/fixing-no-converter-found-capable-of-converting-in-cassandra-with-spring-data-a-complete-guide/): If you’re using Spring Data Cassandra and encountered the error: No converter found capable of converting from type [...] to type [...] you’re not alone. This error typically occurs when trying to store or retrieve User-Defined Types (UDTs) without the proper converters in place. In this article, we’ll explain what causes this error, how to solve it using custom converters, and how to correctly configure your application to support Cassandra UDTs using Spring Data. 🔍 What Causes the “No Converter Found” Error? This error occurs when Spring Data Cassandra is unable to map a Java class (usually a POJO) to […] - [How to Fix ConverterNotFoundException When Using Cassandra UDTs with Spring Data](https://yellowgnu.com/how-to-fix-converternotfoundexception-when-using-cassandra-udts-with-spring-data/): If you’re working with Spring Data Cassandra and hit the dreaded ConverterNotFoundException, you’re not alone. This guide walks you through the steps to solve the issue when mapping a custom Java object to a User-Defined Type (UDT) in Cassandra, providing practical code samples and best practices. What Is a Cassandra UDT and Why It’s Used A User-Defined Type (UDT) in Cassandra is a way to define structured, nested objects. For example, instead of storing three fields like mandateId, checkId, and creditorId as separate columns, you can group them in a single UDT column. In Spring Data, a matching Java class […] - [What Are User-Defined Types (UDTs) in Cassandra?](https://yellowgnu.com/what-are-user-defined-types-udts-in-cassandra/): When developing applications that use Apache Cassandra as a backend, you’ll eventually encounter situations where simple data types (like text, int, or timestamp) are not sufficient to represent your domain model. This is where User-Defined Types (UDTs) come in. In this article, we’ll break down what UDTs are, when to use them, and how to work with them in Spring Data Cassandra—complete with a real-world example involving a complex TransactionEntity object. We’ll also show how to fix common errors such as: org.springframework.data.mapping.MappingException: Cannot resolve DataType No converter found capable of converting 🧠 What Is a User-Defined Type (UDT) in Cassandra? […] - [How to Use Java Enum Ordinals – Best Practices and Common Pitfalls](https://yellowgnu.com/how-to-use-java-enum-ordinals-best-practices-and-common-pitfalls/): Enums are a powerful feature in Java, enabling developers to represent fixed sets of constants in a type-safe manner. One lesser-known but sometimes used feature of enums is the ordinal value, which represents the position of an enum constant in its declaration. This article will explore how to use enum ordinals in Java, when to use them, and the best practices you should follow to avoid common bugs and maintenance issues. 🧠 What is an Enum Ordinal in Java? Every enum constant in Java has an implicit integer value called the ordinal, which is based on its position in the […] - [Fixing High Memory Usage in MappingCassandraConverter: A Practical Guide for Java Developers](https://yellowgnu.com/fixing-high-memory-usage-in-mappingcassandraconverter-a-practical-guide-for-java-developers/): As your Java application scales, performance bottlenecks like memory leaks or excessive memory usage can sneak in—silently degrading your system over time. One such culprit developers may encounter when working with Apache Cassandra in Spring Data is MappingCassandraConverter. In this post, we’ll explore a real-world scenario where memory was slowly building up in a Spring Boot application. Using VisualVM, we traced the issue to MappingCassandraConverter, which was responsible for retaining over 55% of the used memory. Digging deeper, we found the CassandraTypeResolver and a massive number of ConcurrentHashMapNode instances at the root of the problem. 🧠 What Is MappingCassandraConverter? The […] - [How to Convert a List of Objects to a Comma-Separated String of IDs in Java](https://yellowgnu.com/how-to-convert-a-list-of-objects-to-a-comma-separated-string-of-ids-in-java/): In many Java applications, especially when working with databases, APIs, or configuration files, it’s common to need a comma-separated list of IDs extracted from a List of objects. Whether you’re filtering results, generating SQL queries, or preparing data for front-end display, learning how to transform a List<MyObject> into a String of comma-separated IDs is a useful skill. In this tutorial, we’ll walk through the best practices to convert a list of Java objects into a comma-separated string of their IDs using Java 8’s Stream API. Why You Might Need a Comma-Separated List of IDs Here are a few common use […] - [How to Set PreparedStatement Parameters in a Generic Way in Java](https://yellowgnu.com/how-to-set-preparedstatement-parameters-in-a-generic-way-in-java/): When working with relational databases in Java, PreparedStatement is a powerful and secure way to execute SQL queries. It prevents SQL injection attacks and helps manage dynamic parameters efficiently. In this article, we’ll focus on a robust and generic way to set parameters in a PreparedStatement and explain how to avoid common conversion errors—such as the dreaded “Conversion failed when converting the nvarchar value to data type int.” ✅ Why Use PreparedStatement in Java? PreparedStatement is part of the java.sql package and allows developers to write parameterized SQL statements. This leads to: Improved performance via statement pre-compilation, Enhanced security through […] - [How to Delete Multiple Rows with Composite Primary Keys Using Java PreparedStatement](https://yellowgnu.com/how-to-delete-multiple-rows-with-composite-primary-keys-using-java-preparedstatement/): When working with relational databases in Java, a common task is deleting multiple rows based on their composite primary key. A composite key consists of two or more columns that uniquely identify a row in a table. Deleting such rows efficiently and safely is crucial in enterprise-level applications, especially when using JDBC and PreparedStatement. In this article, we’ll explore multiple strategies to delete multiple records with composite keys using PreparedStatement in Java, including a loop-based method and an optimized batch-style query using tuple conditions. Understanding Composite Primary Keys A composite primary key is made up of two or more columns […] - [How to Save Data in a Cassandra Database Using Spring Boot](https://yellowgnu.com/how-to-save-data-in-a-cassandra-database-using-spring-boot/): In modern software development, the need for scalable, high-performance databases is greater than ever. Apache Cassandra is a powerful NoSQL database designed for handling large amounts of data across many servers, with no single point of failure. In this article, you’ll learn how to save data in a Cassandra database using Spring Boot—a popular Java framework that simplifies building enterprise-grade applications. Why Use Cassandra with Spring Boot? Cassandra is favored for: High availability and fault tolerance Linear scalability Schema flexibility Spring Boot makes Java development easier with: Auto-configuration Dependency management Easy integration with Spring Data Cassandra When combined, Spring Boot […] - [How to Correctly Read VARBINARY Fields in Java using PreparedStatement](https://yellowgnu.com/how-to-correctly-read-varbinary-fields-in-java-using-preparedstatement/): In Java-based applications that interact with relational databases, handling binary data types such as VARBINARY can be tricky. Developers often run into issues when they attempt to retrieve VARBINARY fields as strings, leading to garbled output or runtime errors. This article will guide you through the correct approach to read VARBINARY fields from a database using JDBC and PreparedStatement. Whether you’re storing encrypted data, files, or non-text blobs, knowing how to safely extract and process binary data is critical for application correctness and security. What is a VARBINARY Field? The VARBINARY data type in SQL is used to store variable-length […] - [How to Set Enum Value by Ordinal in Java – Best Practices and Examples](https://yellowgnu.com/how-to-set-enum-value-by-ordinal-in-java-best-practices-and-examples/): Java enum types are powerful constructs used to define collections of constants with meaningful names. Each enum constant has an ordinal, which represents its position in the declaration (starting from 0). In some scenarios—such as deserializing data or interpreting numeric codes—you may need to convert an ordinal back to its corresponding enum constant. In this article, we’ll walk you through how to set an enum value based on its ordinal in Java, explore practical use cases, and discuss potential pitfalls with this approach. Whether you’re a Java beginner or an experienced developer, understanding how to use enum ordinals effectively can […] - [Storing Large and Complex Java Objects in Cassandra Using Spring: Best Practices and Design Strategy](https://yellowgnu.com/storing-large-and-complex-java-objects-in-cassandra-using-spring-best-practices-and-design-strategy/): When developing modern Spring-based applications, it’s not uncommon to deal with large Java objects composed of multiple fields, nested lists, and a mix of data types like LocalDate, String, and int. Storing such complex structures efficiently in a Cassandra database presents unique challenges—and opportunities. This article will guide you through the best practices for modeling and persisting large nested objects in Cassandra, with a focus on Spring Data Cassandra. The Challenge: A Large Java Object with Nested Lists Imagine you’re working with a Java object that looks like this: ~50 fields Some fields are List<T> of other custom objects Those […] - [How to Use LaunchNavigator’s availableApps in TypeScript](https://yellowgnu.com/how-to-use-launchnavigators-availableapps-in-typescript/): How to install and configure the LaunchNavigator plugin in a TypeScript project, detect which navigation apps are available on a device, prompt the user to choose their preferred app, and launch turn-by-turn directions. Whether you’re a complete beginner or just need a refresher, this article breaks down each step in simple terms.   Table of Contents What Is LaunchNavigator? Why Use availableApps? Prerequisites Step 1: Install & Configure the Plugin Step 2: Add TypeScript Definitions Step 3: Check for Available Apps Step 4: Let the User Pick an App Step 5: Launch Navigation iOS Tips & Gotchas Full Example Code […] - [How to Align Your Java DAO with Liquibase Migrations: A Comprehensive Guide](https://yellowgnu.com/how-to-align-your-java-dao-with-liquibase-migrations-a-comprehensive-guide/): Table of Contents Introduction What Is Liquibase and Why It Matters The Challenge: DAO and Changelog Drift Case Study: Refactoring LinksDao 4.1 Matching Column Names 4.2 Reordering SQL Statements 4.3 Refactoring Parameter Mapping 4.4 Handling Unmapped Columns Testing and Validation Best Practices for DAO–Liquibase Synchronization Conclusion Introduction Maintaining consistency between your database changelogs and Java Data Access Objects (DAOs) is crucial for reliable application behavior. When column names or their order changes in Liquibase migrations, overlooked DAO code can lead to subtle bugs or runtime errors. In this article, you’ll discover how to align your DAO with Liquibase, using a […] - [How to Compare JavaScript Dates Correctly When Matching Scheduled Slots](https://yellowgnu.com/how-to-compare-javascript-dates-correctly-when-matching-scheduled-slots/): When building scheduling features in JavaScript—especially in React or modern front-end frameworks—you’ll often deal with checking whether a scheduled slot falls on a specific date. However, comparing dates directly as strings or objects can easily lead to subtle bugs, especially when time zones or formats differ. In this article, we’ll explore a real-world scenario: how to correctly compare dates between a Date object and a string like "2025-05-19T00:00:00.000000Z" representing a one-time scheduled slot. We’ll fix the mismatch and explain best practices for date comparison in JavaScript. ✅ The Problem Suppose you’re looping through several dates to find the first future […] - [Counting JSON Occurrences in Bash Without Syntax Errors on Remote Servers](https://yellowgnu.com/counting-json-occurrences-in-bash-without-syntax-errors-on-remote-servers/): If you’re working with JSON data in shell scripts and need to count occurrences of a specific value (e.g., “pending”) using Bash, you might encounter a surprising syntax error—especially when executing the command remotely over SSH or inside a CI/CD pipeline. Here’s a real-world example. Suppose you have a JSON string stored in a Bash variable and want to count how many times "pending" appears inside it. You might be tempted to write: echo "${jsonString}" | sed 's/},{/}\n{/g' > output1.txt numberOfTransactions=$(grep -o 'pending' output1.txt | wc -l) echo "$numberOfTransactions" This works locally. However, when you run it remotely like: ssh […] - [How to Resolve "Cannot Function Ship Evaluate" Errors in Analytics](https://yellowgnu.com/how-to-resolve-cannot-function-ship-evaluate-errors-in-analytics/): Introduction Oracle Analytics (including Oracle BI and DV) offers advanced capabilities for customizing reports using powerful SQL-based functions like EVALUATE and EVALUATE_AGGR. These functions allow users to inject raw SQL into their analysis or build complex aggregations not natively supported in the semantic layer. However, users often encounter a frustrating error: “Cannot function ship the following expression: Evaluate” This article explains why this error occurs and how to resolve it using best practices and alternative approaches. What Causes the “Cannot Function Ship Evaluate” Error? This error typically indicates that Oracle Analytics is unable to push (or “function ship”) the SQL […] - [Merging JSON Data Records in a Spring Boot Application Using Jackson](https://yellowgnu.com/merging-json-data-in-a-spring-boot-with-jackson/): In modern Java applications, JSON is a popular data interchange format. Developers often face requirements to merge data from multiple JSON sources for testing, analytics, or data consolidation. This article explains how to merge data records from a supplementary JSON file into a primary JSON file within a Spring Boot controller using Jackson. We focus on handling JSON tree structures, file I/O, and dynamic merging logic, while maintaining industry best practices for code quality and SEO. Overview Imagine you have two JSON files: Primary Data File: Contains an event object, which includes metadata and a "records" array that holds existing […] - [The Hidden Security Risks of User Enumeration and How to Prevent Them](https://yellowgnu.com/the-hidden-security-risks-of-user-enumeration-and-how-to-prevent-them/): User enumeration is a security vulnerability that can expose sensitive information by allowing attackers to determine whether specific usernames exist in a system. While often overlooked, this flaw can be exploited for brute-force attacks, credential stuffing, phishing, and even denial-of-service (DoS) attacks. In this article, we explore the risks of user enumeration and provide best practices to mitigate them based on industry standards from OWASP, NIST, CERT, and Microsoft. What Is User Enumeration? User enumeration occurs when an application responds differently based on whether a username exists in the system. This behavior can be observed during login attempts, password reset […] - [Debugging Android Media Player Seek Bar Not Updating](https://yellowgnu.com/debugging-android-media-player-seek-bar-not-updating/): If you’re developing an Android media player and encountering an issue where the seek bar always shows a position of 0, you’re not alone. Many developers using ExoPlayer or MediaPlayer run into this problem. In this guide, we’ll explore common causes of this issue and provide solutions to ensure smooth playback position updates. Understanding the Issue When implementing a seek bar to reflect the current position of a playing media file, you typically retrieve the playback position using a method like getPlaybackState(). However, if the position remains 0, potential causes include: The player is not properly initialized. The playback state […] - [Optimizing RecyclerView Performance in Android: A Comprehensive Guide](https://yellowgnu.com/optimizing-recyclerview-performance-in-android-a-comprehensive-guide/): RecyclerView is a powerful component in Android that efficiently displays large datasets. However, improper implementation can lead to performance issues such as janky scrolling and slow rendering. In this guide, we’ll explore the best practices to optimize RecyclerView performance and ensure smooth user interactions. 1. Use RecyclerView Instead of ListView If you’re still using ListView, switch to RecyclerView. It offers better view recycling, supports animations, and is highly efficient for handling large datasets. val adapter = MyAdapter() recyclerView.adapter = adapter recyclerView.layoutManager = LinearLayoutManager(context) 2. Implement ViewHolder Pattern Avoid creating new views repeatedly by using the ViewHolder pattern. This ensures views […] - [Creating and Using a Custom AuthenticationManager in Spring Security for REST API Authentication](https://yellowgnu.com/creating-and-using-a-custom-authenticationmanager-in-spring-security-for-rest-api-authentication/): In the world of web security, managing user authentication efficiently and securely is crucial. Spring Security offers a robust framework for securing Java applications, but sometimes the default configurations need a little tweaking to meet specific requirements. One such scenario involves setting up a custom AuthenticationManager for a REST API. This comprehensive guide will walk you through the process of configuring a custom AuthenticationManager in Spring Security and utilizing it in a REST API for user authentication. Why Customize the AuthenticationManager? Spring Security’s default authentication manager works well for many applications, but customizing it allows for greater flexibility and control […] ## Pages - [Cookie Policy](https://yellowgnu.com/cookie-policy-eu/) - [Quote Request](https://yellowgnu.com/quote-request/): [vc_row][vc_column][vc_empty_space][vc_empty_space height=”5px”][cms_heading hd_subtitle=”We Want to Help You !” hd_title=”Request a Quote” cms_template=”cms_heading–style2.php”][vc_empty_space][vc_row_inner][vc_column_inner width=”1/6″][vc_empty_space][/vc_column_inner][vc_column_inner width=”2/3″][/vc_column_inner][vc_column_inner width=”1/6″][vc_empty_space][/vc_column_inner][/vc_row_inner][/vc_column][/vc_row] - [About Us](https://yellowgnu.com/about-us/): [vc_row full_width=”stretch_row” css=”.vc_custom_1455699715297{padding-bottom: 85px !important;}”][vc_column][vc_empty_space height=”64px”][/vc_column][/vc_row][vc_row full_width=”stretch_row” css=”.vc_custom_1455699715297{padding-bottom: 85px !important;}”][vc_column width=”1/2″][cms_heading hd_subtitle=”All About Yellow! GNU” hd_title=”Our Story” cms_template=”cms_heading–style2.php”][vc_empty_space height=”43px”][vc_custom_heading text=”Yellow! GNU is developing cutting-edge software solutions. Backed by a 30-year legacy, we excel in diverse industries, employ top-tier technologies, and offer tailored, quality-driven innovation for lasting success” font_container=”tag:div|font_size:18px|text_align:left|color:%235a5a5a|line_height:26px” google_fonts=”font_family:Raleway%3A100%2C200%2C300%2Cregular%2C500%2C600%2C700%2C800%2C900|font_style:700%20bold%20regular%3A700%3Anormal”][vc_empty_space height=”26px”][vc_column_text css=”.vc_custom_1704810320105{background-position: center !important;background-repeat: no-repeat !important;background-size: cover !important;}”]Welcome to Yellow! GNU, where innovation meets experience. With a formidable legacy as part of the Matrix Rom group, we bring over 30 years of industry expertise to the forefront of cutting-edge software solutions. As proud members of the Matrix Rom group, we inherit […] - [Contact Us](https://yellowgnu.com/contact/): [vc_row][vc_column][vc_empty_space height=”96px”][vc_empty_space height=”5px”][cms_heading hd_subtitle=”We Wanna Hear From You !” hd_title=”Contact Us” cms_template=”cms_heading–style2.php”][vc_empty_space][vc_row_inner][vc_column_inner width=”1/3″][vc_empty_space height=”12px”][cms_fancybox_single title_item=”Visit Us” icon_custom=”lnr lnr-map” description_item=”Bucharest, Romania” cms_template=”cms_fancybox_single–layout2.php”][vc_empty_space height=”45px”][cms_fancybox_single title_item=”Email Us” icon_custom=”lnr lnr-envelope” description_item=”contact@yellowgnu.com” cms_template=”cms_fancybox_single–layout2.php”][vc_empty_space height=”45px”][cms_fancybox_single title_item=”Call Us” icon_custom=”lnr lnr-phone” description_item=”+40 771 YELLOW” cms_template=”cms_fancybox_single–layout2.php”][vc_empty_space height=”20px”][/vc_column_inner][vc_column_inner width=”2/3″][/vc_column_inner][/vc_row_inner][/vc_column][/vc_row] - [Clients](https://yellowgnu.com/clients/): We value the diverse collaborations that have enabled us to work across multiple sectors and industries. This section reflects the network of partners and clients we have engaged with, directly or indirectly, through various layers of contracting. Our involvement has ranged from software development to project management and product specifications. Below is a list of companies we have been proud to directly or indirectly support through our contracting or subcontracting roles. The companies listed are those we have supported through our subcontracting services. All company names are trademarks of their respective owners. This list is for informational purposes only and […] - [Services](https://yellowgnu.com/services/) - [Technologies](https://yellowgnu.com/technologies/): Throughout our decades-long tenure in project development and implementation, we have leveraged a diverse array of cutting-edge technologies, to deliver high-quality solutions to our clients. This section highlights the technologies we have utilized in our projects, reflecting our dedication to innovation and excellence. Disclaimer: The technologies listed here represent the tools we have experience with through our work on various projects, either as a direct contractor or subcontractor. This list does not imply endorsement from the developers or companies behind these technologies. All trademarks and registered trademarks are the property of their respective owners and are mentioned here for informational […] - [Industry Solutions](https://yellowgnu.com/industry-solutions/): Our seasoned team brings a wealth of experience across multiple industries, delivering tailored solutions shaped by our diverse project portfolio. We understand that each sector has its unique challenges, and we leverage our deep industry insights and cutting-edge technology to craft solutions that drive real impact. While we uphold strict confidentiality and respect intellectual property, our broad expertise allows us to adapt and innovate across various domains. Partner with us to transform challenges into opportunities, harnessing our knowledge to propel your business forward. - [Projects](https://yellowgnu.com/projects/) - [Yellow! GNU Software Development – Web, Mobile & Cloud](https://yellowgnu.com/): [vc_row][vc_column][vc_raw_html css=””]JTNDZGl2JTIwY2xhc3MlM0QlMjJob21lcGFnZS1zbGlkZXIlMjIlM0UlMEElM0NkaXYlMjBjbGFzcyUzRCUyMmhvbWVwYWdlLXNsaWRlci10ZXh0JTIyJTNFMzAlMkIlMjBZZWFycyUyMG9mJTIwZXhwZXJpZW5jZSUzQyUyRmRpdiUzRSUwQSUzQ2RpdiUyMGNsYXNzJTNEJTIyaG9tZXBhZ2Utc2xpZGVyLXRleHQlMjIlM0VMZXQlMjdzJTIwZG8lMjBpdCUyMGF0dGl0dWRlJTNDJTJGZGl2JTNFJTBBJTNDZGl2JTIwY2xhc3MlM0QlMjJob21lcGFnZS1zbGlkZXItdGV4dCUyMiUzRUVuYWJsaW5nJTIwb3BlbiUyMHNvdXJjZSUzQyUyRmRpdiUzRSUwQSUzQyUyRmRpdiUzRQ==[/vc_raw_html][vc_raw_js]JTNDc2NyaXB0JTNFJTBBdmFyJTIwZWxlbWVudHNTbGlkZXIlM0IlMEF2YXIlMjBpbmRleFNsaWRlciUyMCUzRCUyMDAlM0IlMEElMEFmdW5jdGlvbiUyMHNldFNpemUlMjglMjklMEElN0IlMEF2YXIlMjBjb250ZW50V2lkdGglMjAlM0QlMjBqUXVlcnklMjglMjclMjNwYWdlLWRlZmF1bHQlMjclMjkud2lkdGglMjglMjklM0IlMEFqUXVlcnklMjglMjcuaG9tZXBhZ2Utc2xpZGVyJTI3JTI5LndpZHRoJTI4d2luZG93Lm91dGVyV2lkdGglMjklM0IlMEFpZiUyMCUyOGNvbnRlbnRXaWR0aCUyMCUzQzk5MiUyOSU3QiUwQWpRdWVyeSUyOCUyNy5ob21lcGFnZS1zbGlkZXIlMjclMjkuY3NzJTI4JTdCbGVmdCUzQS0xNSU3RCUyOSUzQiUwQSU3RCUwQWVsc2UlN0IlMEFqUXVlcnklMjglMjcuaG9tZXBhZ2Utc2xpZGVyJTI3JTI5LmNzcyUyOCU3QmxlZnQlM0ElMjAlMjglMjh3aW5kb3cub3V0ZXJXaWR0aC0lMjBjb250ZW50V2lkdGglMjklMkYlMjgtMiUyOSUyOSU3RCUyOSUzQiUwQSU3RCUwQSU3RCUwQXdpbmRvdy5hZGRFdmVudExpc3RlbmVyJTI4JTI3cmVzaXplJTI3JTJDJTIwZnVuY3Rpb24lMjhldmVudCUyOSUyMCU3QiUwQSUyMCUyMCUyMHNldFNpemUlMjglMjklM0IlMEElN0QlMkMlMjB0cnVlJTI5JTNCJTBBalF1ZXJ5JTI4ZG9jdW1lbnQlMjkucmVhZHklMjhmdW5jdGlvbiUyOCUyOSU3QiUwQXNldFNpemUlMjglMjklM0IlMEFlbGVtZW50c1NsaWRlciUyMCUzRCUyMGpRdWVyeSUyOCUyNy5ob21lcGFnZS1zbGlkZXIlMjAuaG9tZXBhZ2Utc2xpZGVyLXRleHQlMjclMjklM0IlMEFzZXRJbnRlcnZhbCUyOGZ1bmN0aW9uJTI4JTI5JTdCJTBBalF1ZXJ5JTI4JTI3LmhvbWVwYWdlLXNsaWRlciUyMC5ob21lcGFnZS1zbGlkZXItdGV4dCUyNyUyOS5oaWRlJTI4JTI5JTNCJTBBZWxlbWVudHNTbGlkZXIuZXElMjhpbmRleFNsaWRlciUyOS5zaG93JTI4JTI5JTNCJTBBaW5kZXhTbGlkZXIlMjAlM0QlMjAlMjhpbmRleFNsaWRlciUyQjElMjklMjUzJTNCJTBBJTBBJTdEJTJDJTIwNDAwMCUyOSUzQiUwQSU3RCUyOSUzQiUwQSUzQyUyRnNjcmlwdCUzRQ==[/vc_raw_js][/vc_column][/vc_row][vc_row full_width=”stretch_row” css=”.vc_custom_1699897790459{background-color: rgba(255,197,39,0.85) !important;*background-color: rgb(255,197,39) !important;}”][vc_column css=”.vc_custom_1483691924951{margin-top: -15px !important;}”][vc_empty_space][cms_cta cta_subtext=”Lets Get Offer” cta_text=”Work With Us !” cta_text_font_size=”75px” cta_desc=”Welcome to Yellow! GNU – Where Innovation Meets Expertise. With a rich legacy spanning over 30 years, we’re not just developers; we’re pioneers in crafting bespoke software solutions. From revitalizing healthcare systems to pioneering in fintech, our journey has been marked by relentless innovation. Dive into a world where every challenge is an opportunity for greatness.” button_text=”Request a Quote” link_button=”url:https%3A%2F%2Fyellowgnu.com%2Fquote-request%2F|title:Quote%20Request” button_quote=”yes” cms_template=”cms_cta–style2.php”][vc_empty_space][/vc_column][/vc_row][vc_row][vc_column][vc_empty_space height=”90px”][vc_row_inner][vc_column_inner width=”1/4″][/vc_column_inner][vc_column_inner width=”1/2″][cms_heading hd_subtitle=”What We Can Do” hd_title=”Our Software Services” cms_template=”cms_heading–style1.php”][/vc_column_inner][vc_column_inner width=”1/4″][/vc_column_inner][/vc_row_inner][vc_empty_space height=”28px”][cms_grid col_xs=”1″ col_sm=”3″ col_md=”3″ col_lg=”3″ hide_icon_services=”hidden-icon-style2″ source=”size:6|order_by:date|post_type:services” […] [comment]: # (Generated by Hostinger Tools Plugin)