<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>The Dev Exchange Blog</title><description>In this blog, we discuss some of the unique challenges we meet whilst working for a service provider on enterprise customer projects. Who is &quot;we?&quot; Software engineers working at Zühlke.</description><link>https://thedevexchange.com/</link><language>en-us</language><item><title>Feature Flags in Angular</title><link>https://thedevexchange.com/angular-feature-toggles/</link><guid isPermaLink="true">https://thedevexchange.com/angular-feature-toggles/</guid><description>Feature flags enable dynamic application behavior by remotely configuring features and their states, allowing for gradual rollouts, A/B tests, and quick rollbacks. An Angular application can leverage feature flags to conditionally inject scripts, show or hide UI elements, and guard routes, enhancing flexibility and reducing deployment risks. While adding complexity, feature flags can significantly improve experimentation and adaptability in application development.</description><pubDate>Tue, 10 Jun 2025 07:51:57 GMT</pubDate><category>Angular</category><category>Frontend Development</category><category>guide</category><category>JavaScript</category><category>Web Development</category><author>Philipp Emmenegger</author></item><item><title>All we need is Structure</title><link>https://thedevexchange.com/all-we-need-is-structure/</link><guid isPermaLink="true">https://thedevexchange.com/all-we-need-is-structure/</guid><description>The article explores best practices for managing concurrency in software development, categorizing approaches based on parallelism and asynchronicity. It highlights structured programming for non-concurrent tasks, data parallelism for synchronous parallel execution, and the async/await pattern for time-shared concurrency. The discussion extends to structured concurrency, emphasizing its benefits in error handling, resource management, and compile-time correctness, particularly in languages like Swift and Verse.</description><pubDate>Mon, 14 Oct 2024 09:20:00 GMT</pubDate><category>async</category><category>asynchronous</category><category>Computer Science</category><category>concurrency</category><category>Developer</category><category>General Advice</category><category>learning</category><category>multithreading</category><category>opinion pieces</category><category>General Programming</category><category>Programming Tips</category><category>software development</category><category>Software Engineering</category><author>Timon Jucker</author></item><item><title>Build Azure AD B2C Templates</title><link>https://thedevexchange.com/azb2c-with-parcel/</link><guid isPermaLink="true">https://thedevexchange.com/azb2c-with-parcel/</guid><description>Customizing Azure Active Directory B2C user interfaces with HTML templates can enhance the user experience. A streamlined development workflow can be achieved using a zero-configuration build tool to optimize and prepare these templates for production. This approach allows for features like CSS preprocessing and avoids complex JavaScript frameworks, resulting in clean and lightweight templates.</description><pubDate>Mon, 28 Nov 2022 10:22:39 GMT</pubDate><category>Azure</category><category>Sass</category><category>Web Development</category><category>Build tool</category><author>Christoph Salvisberg</author></item><item><title>Are you getting the Test Pyramid wrong?</title><link>https://thedevexchange.com/are-you-getting-the-test-pyramid-wrong/</link><guid isPermaLink="true">https://thedevexchange.com/are-you-getting-the-test-pyramid-wrong/</guid><description>The traditional Test Pyramid emphasizes unit tests, but modern architectures and microservices can blur the definition of a &quot;unit,&quot; leading to ineffective testing practices. Over-reliance on mocking and interaction-based testing can create fragile tests that don&apos;t accurately reflect application behavior. A more valuable approach focuses on verifying state changes using fakes, prioritizing tests that provide meaningful confidence in the correctness of business logic, regardless of speed or strict adherence to traditional unit testing definitions.</description><pubDate>Thu, 28 Dec 2023 20:44:54 GMT</pubDate><category>Software Testing</category><category>TDD (Test-driven development)</category><category>test driven development</category><category>Testing</category><category>unit testing</category><author>Alan Tai</author></item><item><title>Belimo and Zühlke - How to win with Flutter in production</title><link>https://thedevexchange.com/belimo-and-zuhlke-how-to-win-with-flutter-in-production/</link><guid isPermaLink="true">https://thedevexchange.com/belimo-and-zuhlke-how-to-win-with-flutter-in-production/</guid><description>Discover how Belimo and Zühlke developed Belimo Assistant 2, a cross-platform Flutter app that pushes the framework to its limits with low-level device communication, proprietary protocols, and industrial-grade requirements across 40 device families and 10,000+ usage combinations.</description><pubDate>Mon, 27 Oct 2025 10:00:00 GMT</pubDate><category>flutter</category><category>mobile</category><category>desktop</category><category>cross-platform</category><category>industrial</category><category>bluetooth</category><category>nfc</category><author>Djordje Madic</author></item><item><title>Breaking the Line: The Benefits of Limited Line Lengths</title><link>https://thedevexchange.com/breaking-the-line/</link><guid isPermaLink="true">https://thedevexchange.com/breaking-the-line/</guid><description>Limiting line length in code promotes readability by easing scanning and comprehension, aiding debugging by simplifying error identification, and improving collaboration through easier code referencing. Shorter lines also enhance accessibility for developers with visual impairments and facilitate efficient use of screen space when working with multiple files. Furthermore, restricting line length can encourage better code quality by prompting refactoring of overly complex lines, variables, or functions.</description><pubDate>Tue, 02 May 2023 06:42:43 GMT</pubDate><category>code style</category><category>development</category><category>lint</category><author>Lucas Schnüriger</author></item><item><title>How to use Behaviour-Driven Development (BDD) with C# and SpecFlow</title><link>https://thedevexchange.com/bdd-specflow/</link><guid isPermaLink="true">https://thedevexchange.com/bdd-specflow/</guid><description>Behavior-Driven Development (BDD) is an agile technique employing the Gherkin syntax to define software requirements as test cases, enabling collaboration among stakeholders. This approach allows anyone involved in a project to contribute tests, which are easy to read and automate, reducing the domain knowledge needed by developers. BDD differs from Test-Driven Development (TDD) in that test cases can be supplied by anyone related to the project.</description><pubDate>Tue, 30 May 2023 09:09:35 GMT</pubDate><category>bdd</category><category>C#</category><category>dotnet</category><category>TDD (Test-driven development)</category><category>Testing</category><author>Alexander Duschek</author></item><item><title>Blazor Project Structure</title><link>https://thedevexchange.com/blazor-project-structure/</link><guid isPermaLink="true">https://thedevexchange.com/blazor-project-structure/</guid><description>Structuring Blazor applications by feature can improve organization and clarity as projects grow. Grouping related pages, components, and services within feature-specific folders promotes cohesion. Shared components and services can reside in a dedicated folder at the root of the features directory, allowing for reuse across the application.</description><pubDate>Mon, 20 Feb 2023 10:10:15 GMT</pubDate><category>architecture</category><author>Steven Giesel</author></item><item><title>Finally, multi-file OpenAPI specifications</title><link>https://thedevexchange.com/api-first-part-2/</link><guid isPermaLink="true">https://thedevexchange.com/api-first-part-2/</guid><description>The API-first approach emphasizes the importance of APIs in software development. A new feature in OpenAPI Generator allows for organizing API specifications into multiple files, improving manageability as APIs grow. This feature also enables the reuse of data models across different API specifications, promoting consistency and reducing redundancy.</description><pubDate>Mon, 02 Oct 2023 09:12:38 GMT</pubDate><category>api</category><category>API-First</category><category>APIs</category><category>gradle</category><category>OpenApi</category><category>REST</category><category>REST API</category><author>Marco Romanutti</author></item><item><title>Effortless API-first</title><link>https://thedevexchange.com/api-first-part-1/</link><guid isPermaLink="true">https://thedevexchange.com/api-first-part-1/</guid><description>API-first development prioritizes designing APIs before writing code, using specifications like OpenAPI to define endpoints, operations, and data structures. This approach fosters better API design, enables parallel development, facilitates code generation, and improves integration testing. Tools like Swagger Editor and OpenAPI Generator streamline the process, allowing for the creation of server and client code from API specifications.</description><pubDate>Mon, 18 Sep 2023 09:09:21 GMT</pubDate><category>api</category><category>API-First</category><category>APIs</category><category>gradle</category><category>OpenApi</category><category>REST</category><category>REST API</category><author>Marco Romanutti</author></item><item><title>Architecture verification and documentation with jQAssistant and arc42</title><link>https://thedevexchange.com/architecture-verification-with-jqassistant/</link><guid isPermaLink="true">https://thedevexchange.com/architecture-verification-with-jqassistant/</guid><description>Software architecture can be verified and documented using tools like jQAssistant, which enables the creation of custom rules to monitor architectural aspects and validate implementation against design. This approach supports automated verification, living documentation, and flexible integration with existing pipelines, allowing teams to maintain architectural integrity and keep documentation synchronized with the codebase. By leveraging concepts, constraints, and plugins, teams can gain insights into system structure, validate architectural decisions, and generate comprehensive reports.</description><pubDate>Mon, 17 Feb 2025 09:43:04 GMT</pubDate><category>software architecture</category><author>Steffen Musiol</author></item><item><title>Building observability into the NHS COVID-19 app backend serving 16 million users</title><link>https://thedevexchange.com/building-observability-into-the-nhs-covid19-app/</link><guid isPermaLink="true">https://thedevexchange.com/building-observability-into-the-nhs-covid19-app/</guid><description>During the COVID-19 pandemic, a digital contact-tracing solution was rapidly developed to help contain the virus&apos;s spread. A key aspect of this solution was prioritizing observability to proactively identify and resolve issues. By emitting structured &quot;Wide Events&quot; instead of traditional logs, the development team gained deeper insights into system operations, enabling faster diagnosis and resolution of problems, ultimately improving the user experience and maintaining public trust.</description><pubDate>Mon, 25 Nov 2024 10:20:26 GMT</pubDate><category>Amazon S3</category><category>AWS</category><category>DynamoDB</category><category>engineering</category><category>Java</category><category>json</category><category>Kotlin</category><category>logging</category><category>monitoring</category><category>telemetry</category><author>Kevin Denver</author></item><item><title>A conceptual idea for building a registry to access micro frontends</title><link>https://thedevexchange.com/concept-micro-frontends-registry/</link><guid isPermaLink="true">https://thedevexchange.com/concept-micro-frontends-registry/</guid><description>The challenge of managing widget configurations in a self-contained system architecture is explored, specifically the complexities arising from multiple CDNs per service and stage. Two potential solutions are considered: leveraging a reverse proxy for routing or introducing a dedicated registry service for micro frontends. Each approach presents trade-offs between configuration simplicity and system complexity.</description><pubDate>Mon, 06 Mar 2023 10:18:09 GMT</pubDate><category>Microservices</category><category>frontend</category><category>Web Development</category><category>software architecture</category><category>Frontend Development</category><author>Michael Lehmann</author></item><item><title>One Table to Rule them All</title><link>https://thedevexchange.com/builder-pattern-tables/</link><guid isPermaLink="true">https://thedevexchange.com/builder-pattern-tables/</guid><description>Implementing tables in web applications can be complex and repetitive, often resulting in verbose templates and inconsistent designs. A shared table component, configured using a builder pattern, can streamline this process. This approach promotes consistency, reduces boilerplate code, and simplifies maintenance, though it may introduce complexity in the shared table template itself.</description><pubDate>Mon, 22 Jan 2024 10:09:45 GMT</pubDate><category>Angular</category><category>design patterns</category><category>refactoring</category><category>software architecture</category><category>Web Development</category><author>Timo Spring</author></item><item><title>An Introduction to Unit Testing</title><link>https://thedevexchange.com/an-introduction-to-unit-testing/</link><guid isPermaLink="true">https://thedevexchange.com/an-introduction-to-unit-testing/</guid><description>Unit testing involves writing automated code to verify the behavior of small units of work, ensuring assumptions about end results are correct. It contrasts with integration testing, which uses real dependencies and can be slower and less reliable. Key concepts include test-driven development, value-based, state-based, and interaction testing, as well as the use of fakes like stubs and mocks to isolate code and manage external dependencies.</description><pubDate>Mon, 09 Jan 2023 10:07:51 GMT</pubDate><category>TDD (Test-driven development)</category><category>C#</category><category>test</category><category>test driven development</category><category>Software Testing</category><author>Fabio Scagliola</author></item><item><title>Creating Component Variants in React</title><link>https://thedevexchange.com/component-variants-react/</link><guid isPermaLink="true">https://thedevexchange.com/component-variants-react/</guid><description>Creating reusable and customizable components with different styles is a common challenge in web development. Several approaches exist for managing component variants, each with its own trade-offs in terms of scalability and maintainability. Using a utility like Class Variance Authority (CVA) offers a flexible and type-safe solution for managing component variants, enabling composition and compound variants for complex styling needs.</description><pubDate>Mon, 16 Sep 2024 12:21:29 GMT</pubDate><category>components</category><category>design patterns</category><category>patterns</category><category>React</category><category>software architecture</category><category>Web Development</category><author>Dario Bugmann</author></item><item><title>The Art of Component Composition - Leveraging Compound Components in React</title><link>https://thedevexchange.com/compound-components/</link><guid isPermaLink="true">https://thedevexchange.com/compound-components/</guid><description>Complex frontend applications often require highly flexible UI components. The compound component pattern addresses this need by breaking down large, configurable components into smaller, composable parts that share a common context. This approach promotes consistency and reduces complexity compared to managing numerous configuration parameters or creating distinct component subtypes.</description><pubDate>Mon, 27 May 2024 11:32:17 GMT</pubDate><category>components</category><category>design patterns</category><category>patterns</category><category>React</category><category>software architecture</category><author>Gabriel Duss</author></item><item><title>Routing Beyond Forward and Back</title><link>https://thedevexchange.com/angular-navigation-concept/</link><guid isPermaLink="true">https://thedevexchange.com/angular-navigation-concept/</guid><description>Complex web application navigation can be simplified by leveraging the browser&apos;s built-in history stack and state management. By storing offsets to key pages like flow sources and main sections within the history state, developers can implement custom navigation behaviors, such as returning to the start of a flow or navigating back to the last active main page. This approach reduces the need for custom internal navigation stacks and resolves issues arising from inconsistencies between browser and application history.</description><pubDate>Mon, 12 May 2025 12:11:25 GMT</pubDate><category>Angular</category><category>Frontend Development</category><category>JavaScript</category><category>navigation</category><category>Web Development</category><author>Mika Ruch</author></item><item><title>ASP.NET Core Integration Testing</title><link>https://thedevexchange.com/asp_net-core-integration-testing/</link><guid isPermaLink="true">https://thedevexchange.com/asp_net-core-integration-testing/</guid><description>Integration testing for an ASP.NET Core web API with EF Core can be achieved by mocking the database context to use an SQLite in-memory database. This approach allows for repeatable tests without leaving traces of previous executions. The process involves creating a web application factory and a design-time database context factory to replace the SQL Server database with an in-memory SQLite database at runtime and design time, respectively, enabling comprehensive testing of API endpoints.</description><pubDate>Mon, 26 Jun 2023 09:14:35 GMT</pubDate><category>asp.net core</category><category>integration</category><category>Software Testing</category><category>SQL Server</category><category>SQLite</category><category>Testing</category><category>Web API</category><author>Fabio Scagliola</author></item><item><title>Disagreeing Without Dividing</title><link>https://thedevexchange.com/disagreeing-without-dividing/</link><guid isPermaLink="true">https://thedevexchange.com/disagreeing-without-dividing/</guid><description>Disagreements in software consultancy are inevitable, but they don’t have to be a battle of being right. By shifting from defending our perspective to leading with curiosity, we create space for trust, collaboration, and wiser decisions. Listening deeply not only defuses tension but also helps uncover insights we might otherwise miss, turning conflict into an opportunity for stronger partnerships and better outcomes.</description><pubDate>Mon, 15 Sep 2025 00:00:00 GMT</pubDate><category>conflictresolution</category><category>engineering-leadership</category><category>team-culture</category><category>team-management</category><category>alignment</category><category>software-engineering</category><author>Mavis Hayrettin</author></item><item><title>Demystifying Concurrency</title><link>https://thedevexchange.com/concurrency-demystified/</link><guid isPermaLink="true">https://thedevexchange.com/concurrency-demystified/</guid><description>The article addresses the confusion surrounding the term &quot;concurrency&quot; in software engineering, highlighting how differing mental models and inconsistent definitions across contexts complicate its understanding. It proposes a definition of concurrency in the context of programming languages, encompassing both parallel and asynchronous execution models. The piece emphasizes that concurrency is about managing multiple tasks at the same time, whether they are running simultaneously or not, and that a shared understanding is crucial for building stable and efficient software.</description><pubDate>Mon, 30 Sep 2024 15:50:44 GMT</pubDate><category>async</category><category>asynchronous</category><category>Computer Science</category><category>concurrency</category><category>Developer</category><category>General Advice</category><category>learning</category><category>multithreading</category><category>opinion pieces</category><category>General Programming</category><category>Programming Tips</category><category>software development</category><category>Software Engineering</category><author>Timon Jucker</author></item><item><title>Context-Driven Smells</title><link>https://thedevexchange.com/context-driven-smells/</link><guid isPermaLink="true">https://thedevexchange.com/context-driven-smells/</guid><description>This article explores common software development pitfalls through the lens of a rapidly scaling tech company. It identifies seven critical &quot;smells,&quot; including siloed DevOps, sales-driven prioritization, and a lack of testing, which can lead to compromised quality, increased technical debt, and ultimately, business risk. The text emphasizes the importance of addressing these issues proactively through cultural shifts, process improvements, and a focus on delivering value.</description><pubDate>Mon, 28 Apr 2025 06:53:31 GMT</pubDate><category/><author>Phill Royle</author></item><item><title>Cypress app actions with Angular</title><link>https://thedevexchange.com/cypress-app-actions-with-angular/</link><guid isPermaLink="true">https://thedevexchange.com/cypress-app-actions-with-angular/</guid><description>The deprecation of Protractor led to a migration of end-to-end tests, revealing challenges with test speed and flakiness due to repetitive UI interactions and data dependencies. Leveraging Cypress&apos;s ability to access the application directly, a solution was implemented to manipulate the application state, improving test stability, readability, and speed. This approach minimized impact on the Angular app by exposing a central service for targeted actions.</description><pubDate>Mon, 20 Mar 2023 10:13:29 GMT</pubDate><category>Web Development</category><category>Angular</category><category>Testing</category><category>Frontend Development</category><category>Cypress</category><author>Lucas Schnüriger</author></item><item><title>Moving from Sass to CSS variables to implement Dark Mode</title><link>https://thedevexchange.com/css-vars-dark-mode/</link><guid isPermaLink="true">https://thedevexchange.com/css-vars-dark-mode/</guid><description>The development of a dark mode for public-facing machines with bright screens explored the use of CSS variables to facilitate runtime adjustments and testing. This approach enabled dynamic color modifications for accessibility improvements, particularly for users with visual impairments. While some Sass features are absent in CSS, the flexibility and tooling of CSS variables proved valuable for iterative development and user feedback integration.</description><pubDate>Wed, 26 Oct 2022 08:18:21 GMT</pubDate><category>CSS</category><category>dark mode</category><category>Sass</category><category>variables</category><category>Web Development</category><author>Patrick Walther</author></item><item><title>Shallow Component Tests in Cypress with Angular Standalone Components</title><link>https://thedevexchange.com/cypress-shallow-component-tests/</link><guid isPermaLink="true">https://thedevexchange.com/cypress-shallow-component-tests/</guid><description>Component testing validates rendered components in the browser, offering a focused approach similar to unit tests. While mocking providers and components is straightforward, Angular standalone components present challenges when overriding child components. A custom Cypress command leveraging Angular&apos;s `TestBed` and dynamic component creation streamlines the mocking of child components within standalone component tests.</description><pubDate>Mon, 05 Feb 2024 10:09:46 GMT</pubDate><category>Angular</category><category>components</category><category>Testing</category><author>Timo Spring</author></item><item><title>Develop a Web Editor for your DSL using Angular and Monaco Editor library with Language Server support</title><link>https://thedevexchange.com/develop-a-web-editor-with-angular-and-monaco-with-language-server-support/</link><guid isPermaLink="true">https://thedevexchange.com/develop-a-web-editor-with-angular-and-monaco-with-language-server-support/</guid><description>The development of domain-specific languages often requires custom editors to support features like syntax highlighting and autocompletion. This involves implementing a web editor and connecting it to a language server using the Language Server Protocol (LSP) over WebSockets. The Monaco Editor, known for its performance and rich features, can be integrated into an Angular application along with the Monaco Language Client to achieve this.</description><pubDate>Mon, 28 Oct 2024 10:51:03 GMT</pubDate><category>coding</category><category>Web Development</category><author>Chathura Jayashantha</author></item><item><title>Develop a Web Editor for your DSL using React and Monaco Editor library with Language Server support</title><link>https://thedevexchange.com/develop-a-web-editor-with-react-and-monaco-with-language-server-support/</link><guid isPermaLink="true">https://thedevexchange.com/develop-a-web-editor-with-react-and-monaco-with-language-server-support/</guid><description>The article explores the creation of a web-based code editor using React and the Monaco Editor library. It details how to integrate the Monaco Editor with a Language Server Protocol (LSP) server to provide features like syntax highlighting and autocompletion. The implementation involves setting up a WebSocket connection for communication between the editor and the language server.</description><pubDate>Mon, 28 Oct 2024 10:51:02 GMT</pubDate><category>coding</category><category>Web Development</category><author>Nipuna Marcus</author></item><item><title>Ditch the Template Chaos - Angular Dynamic Components Loading</title><link>https://thedevexchange.com/dynamic-components-loading/</link><guid isPermaLink="true">https://thedevexchange.com/dynamic-components-loading/</guid><description>Angular offers a way to dynamically load components at runtime, enabling the display of different views based on data type. By using the `ngComponentOutlet` directive, developers can select and render specific components based on an item&apos;s attributes, keeping templates clean and scalable. This approach simplifies the management of diverse data representations within a single view.</description><pubDate>Mon, 16 Oct 2023 09:10:33 GMT</pubDate><category>Angular</category><category>components</category><category>HTML</category><category>template</category><category>Web Development</category><author>Timo Spring</author></item><item><title>Develop your own Language Server</title><link>https://thedevexchange.com/develop-your-own-language-server/</link><guid isPermaLink="true">https://thedevexchange.com/develop-your-own-language-server/</guid><description>Language Server Protocol (LSP) standardizes communication between development tools and language-specific logic, enabling features like autocompletion and syntax checking. By implementing LSP, language developers can create a single language server that integrates with multiple IDEs, reducing the effort required to support various development environments. A basic language server can be implemented using libraries like LSP4J and exposed via WebSockets, allowing integration with web-based editors.</description><pubDate>Mon, 28 Oct 2024 10:51:02 GMT</pubDate><category>coding</category><author>Nipuna Marcus</author></item><item><title>Finally, custom form elements that don&apos;t suck!</title><link>https://thedevexchange.com/element-internals-api/</link><guid isPermaLink="true">https://thedevexchange.com/element-internals-api/</guid><description>The ElementInternals API simplifies the creation of custom form elements within web components, enabling seamless integration with HTML forms and compatibility with common form libraries. By associating web components with forms and managing value, validity, and focus events, developers can create custom elements that behave like native form controls. This API empowers developers to build more robust and versatile web components for form interactions.</description><pubDate>Mon, 17 Apr 2023 09:07:01 GMT</pubDate><category>Web Components</category><category>form</category><category>Shadow DOM</category><category>lit</category><category>JavaScript</category><author>Patrick Walther</author></item><item><title>DDD - How to do Event-Storming?</title><link>https://thedevexchange.com/event-storming/</link><guid isPermaLink="true">https://thedevexchange.com/event-storming/</guid><description>Event Storming is a collaborative workshop method used to identify and map domain events within a system. Participants brainstorm and arrange events on a timeline, fostering shared understanding and revealing potential issues. The resulting visual representation provides a comprehensive overview of the business process and serves as a foundation for further development.</description><pubDate>Mon, 06 Feb 2023 10:05:22 GMT</pubDate><category>software architecture</category><category>DDD</category><author>Keerthikan</author></item><item><title>From Borderlands to Cornerlands - Why border-radius is wrong?</title><link>https://thedevexchange.com/from-borderlands-to-cornerlands/</link><guid isPermaLink="true">https://thedevexchange.com/from-borderlands-to-cornerlands/</guid><description>CSS&apos;s `border-radius` property, despite its name, operates by rounding the corners of an element using a circle with a defined radius. The maximum `border-radius` value is constrained by the element&apos;s dimensions, and individual corners can be targeted for specific rounding. The property&apos;s behavior and application to corners, rather than borders, suggests a more accurate name would have been `corner-radius`.</description><pubDate>Mon, 08 Jan 2024 10:17:45 GMT</pubDate><category>CSS</category><category>CSS3</category><category>Web Development</category><author>Julio Castro</author></item><item><title>Automated API tests with Gherkin increase efficiency and quality</title><link>https://thedevexchange.com/gherkin-api-tests/</link><guid isPermaLink="true">https://thedevexchange.com/gherkin-api-tests/</guid><description>Automated testing of web service interfaces using Gherkin allows for early detection of discrepancies against specifications, leading to reduced defects and lower costs. This approach enables business experts, developers, and testers to define, interpret, and execute tests, while also providing documentation for audits. By optimizing the development process with living documentation, feedback is provided earlier, manual testing effort is reduced, and discrepancies are identified more quickly, resulting in a more efficient implementation and testing of interfaces.</description><pubDate>Mon, 14 Apr 2025 06:52:35 GMT</pubDate><category>APIs</category><category>automation</category><category>bdd</category><category>domain</category><category>TDD (Test-driven development)</category><category>Testing</category><author>Marcel Stalder</author></item><item><title>Frozen Collections in .NET 8</title><link>https://thedevexchange.com/frozen-collections/</link><guid isPermaLink="true">https://thedevexchange.com/frozen-collections/</guid><description>.NET 8 introduces frozen collections, a new type of collection designed for performance gains in scenarios where the collection is initialized once and then remains unchanged. Unlike read-only collections, frozen collections are immutable after creation, allowing for optimizations that can significantly improve lookup speeds compared to lists, hash sets, and immutable hash sets. While creation of frozen collections is more expensive, their lookup performance makes them ideal for frequently accessed, static datasets.</description><pubDate>Thu, 15 Dec 2022 06:32:06 GMT</pubDate><category>C#</category><category>.NET</category><author>Steven Giesel</author></item><item><title>Homemade Signals</title><link>https://thedevexchange.com/homemade-signals/</link><guid isPermaLink="true">https://thedevexchange.com/homemade-signals/</guid><description>Signals are a mechanism for managing state and keeping the UI synchronized in modern JavaScript frameworks. By creating a simplified version of Signals from scratch, the core principles of reactive state, derived values, and side effects become clear. This exploration highlights how effects subscribe to source Signals, enabling efficient UI updates based on a pull principle.</description><pubDate>Mon, 13 May 2024 09:05:53 GMT</pubDate><category>Frontend Development</category><category>guide</category><category>JavaScript</category><category>Reactivity</category><category>signals</category><category>Web Development</category><author>Lucas Schnüriger</author></item><item><title>Introducing Pair Programming to a Sceptical Team</title><link>https://thedevexchange.com/introducing-pair-programming-to-a-skeptical-team/</link><guid isPermaLink="true">https://thedevexchange.com/introducing-pair-programming-to-a-skeptical-team/</guid><description>A software development team facing challenges with a complex, legacy system explored pair programming to improve code quality and accelerate delivery. Initial skepticism was addressed by dispelling common misconceptions and establishing a clear etiquette for collaborative coding. The team found that pairing fostered knowledge sharing, reduced code review time, and ultimately helped meet project deadlines, although not all members fully embraced the approach.</description><pubDate>Mon, 03 Feb 2025 06:53:14 GMT</pubDate><category>pair programming</category><author>Kevin Denver</author></item><item><title>Avoid the urgency trap</title><link>https://thedevexchange.com/importance-of-architecture/</link><guid isPermaLink="true">https://thedevexchange.com/importance-of-architecture/</guid><description>Software projects involve balancing the urgent need for functional behavior with the long-term importance of maintainable architecture. The &quot;Mere-Urgency Effect&quot; describes a tendency to prioritize immediate tasks over those with greater future benefits. Prioritizing adaptability ensures the software remains useful even as requirements evolve, highlighting the developer&apos;s crucial role in advocating for architectural considerations.</description><pubDate>Mon, 31 Oct 2022 10:23:52 GMT</pubDate><category>software architecture</category><category>architecture</category><category>design and architecture</category><author>Marco Romanutti</author></item><item><title>Instant page navigations with speculation rules</title><link>https://thedevexchange.com/instant-page-navigation-with-speculation-rules/</link><guid isPermaLink="true">https://thedevexchange.com/instant-page-navigation-with-speculation-rules/</guid><description>The Speculation Rules API is an experimental browser feature designed to improve navigation speed by pre-rendering or pre-fetching resources based on defined rules. This can benefit both multi-page and single-page applications, but developers should consider potential downsides like increased resource consumption and security risks. The API offers an &quot;eagerness&quot; setting to control when speculation rules are triggered, balancing performance with resource usage.</description><pubDate>Tue, 14 Jan 2025 10:07:21 GMT</pubDate><category>Browsers</category><category>Google Chrome</category><category>Developer Tools</category><category>performance</category><category>web</category><category>Web Development</category><author>Benny Joe Villiger</author></item><item><title>Keep the lights on</title><link>https://thedevexchange.com/keep-the-lights-on/</link><guid isPermaLink="true">https://thedevexchange.com/keep-the-lights-on/</guid><description>Software projects often neglect error handling in favor of feature development, which can lead to frustrating user experiences and even significant financial losses. A more effective approach involves designing systems to gracefully handle failures, prioritizing partial functionality over complete system shutdowns. This requires a team-wide effort to anticipate potential errors and implement strategies for maintaining operation within acceptable limits.</description><pubDate>Mon, 29 Apr 2024 09:09:16 GMT</pubDate><category>frontend</category><category>Microservices</category><category>software architecture</category><category>Web Components</category><category>Web Development</category><author>Michael Lehmann</author></item><item><title>Using tailwindcss with web components and ShadowDOM in LitElement</title><link>https://thedevexchange.com/lit-tailwind/</link><guid isPermaLink="true">https://thedevexchange.com/lit-tailwind/</guid><description>Integrating Tailwind CSS with web components using Shadow DOM presents a challenge, as Shadow DOM prevents global styles from penetrating component boundaries. By leveraging LitElement&apos;s static styles property and constructable stylesheets, Tailwind utility classes can be effectively incorporated into each component without duplication. This approach allows for maintainable and scalable styling within web components while preserving the encapsulation provided by Shadow DOM.</description><pubDate>Mon, 14 Nov 2022 10:11:08 GMT</pubDate><category>Web Development</category><category>Web Components</category><category>TypeScript</category><category>Tailwind CSS</category><author>Patrick Walther</author></item><item><title>Using Ktor in Kotlin Multiplatform</title><link>https://thedevexchange.com/ktor-in-kmp/</link><guid isPermaLink="true">https://thedevexchange.com/ktor-in-kmp/</guid><description>A strategy for enhancing the maintainability of networking infrastructure in Kotlin Multiplatform applications is presented. The approach focuses on separating concerns when configuring the Ktor HTTP client, allowing for environment-specific configurations and easier testing through mocking. This method promotes flexibility and adaptability for diverse project requirements.</description><pubDate>Mon, 17 Mar 2025 11:12:51 GMT</pubDate><category>Android</category><category>http</category><category>iOS</category><category>KMM</category><category>kmp</category><category>Kotlin</category><category>Kotlin Multiplatform</category><category>ktor</category><category>mobile</category><category>Mocking</category><category>networking</category><category>Testing</category><author>Mo Ramezanpoor</author></item><item><title>Precision calibration of digital light projectors using the Moiré effect - How to unveil the unseen...</title><link>https://thedevexchange.com/moire-effect-for-digital-light-projector-alignment-and-calibration/</link><guid isPermaLink="true">https://thedevexchange.com/moire-effect-for-digital-light-projector-alignment-and-calibration/</guid><description>Inspired by super-resolution microscopy: harnessing the Moiré effect for precision alignment and calibration of digital light projectors</description><pubDate>Mon, 23 Jun 2025 09:28:20 GMT</pubDate><category>optics</category><category>projector</category><category>calibration</category><category>aliasing</category><category>super-resolution-techniques</category><author>Stefan Geissbühler</author></item><item><title>Creating an icon web component with lazy loading in LitElement</title><link>https://thedevexchange.com/lit-icon-component/</link><guid isPermaLink="true">https://thedevexchange.com/lit-icon-component/</guid><description>The process of building a custom icon component using LitElement is explored, focusing on lazy loading icons for improved performance. The approach involves using dynamic imports and a custom plugin to compress SVG files, remove unnecessary elements, and optimize attributes. The solution also addresses color customization by setting the fill attribute to `currentColor` for easier styling.</description><pubDate>Mon, 23 Jan 2023 10:06:16 GMT</pubDate><category>CSS</category><category>Sass</category><category>Web Development</category><author>Patrick Walther</author></item><item><title>Building micro-frontends with Angular and StencilJS</title><link>https://thedevexchange.com/micro-frontends-with-angular-and-stenciljs/</link><guid isPermaLink="true">https://thedevexchange.com/micro-frontends-with-angular-and-stenciljs/</guid><description>Micro frontends offer a way to decompose monolithic UIs into independently deployable and scalable components, aligning the frontend architecture with microservices principles. WebComponents offer a standardized approach to composing these distributed UI elements, though framework maturity requires some manual effort. Stencil.js can be used to create small, efficient WebComponent bundles for integration into applications.</description><pubDate>Mon, 26 Dec 2022 14:31:14 GMT</pubDate><category>Microservices</category><category>JavaScript</category><category>Angular</category><category>Web Development</category><category>software architecture</category><author>Michael Lehmann</author></item><item><title>How to test a .NET MAUI App Part 1</title><link>https://thedevexchange.com/maui-test_pt1/</link><guid isPermaLink="true">https://thedevexchange.com/maui-test_pt1/</guid><description>This article explores testing strategies for .NET MAUI applications, focusing on the service and view model layers. It details setting up a test project and demonstrates how to mock dependencies, such as the file system, to effectively test services. The article also covers testing view model methods, including navigation, highlighting the importance of mocking platform-specific features like the Shell.</description><pubDate>Tue, 11 Jun 2024 10:34:12 GMT</pubDate><author>Nijaz Zaljevic</author></item><item><title>Micro Frontend - Module Federation with Vite for React</title><link>https://thedevexchange.com/module-federation-with-vite-for-react/</link><guid isPermaLink="true">https://thedevexchange.com/module-federation-with-vite-for-react/</guid><description>Module federation enables the composition of independently built and deployed applications into a unified frontend experience. This architecture, similar to microservices, allows for runtime integration of remote components, offering flexibility in development and deployment. Key to implementation is configuring both remote and host applications, defining exposed components and shared dependencies, and choosing between static imports and dynamic loading for remote modules.</description><pubDate>Mon, 15 May 2023 09:28:20 GMT</pubDate><category>Microfrontend</category><category>module federation</category><category>React</category><category>vite</category><category>Web Development</category><author>Nipuna Marcus</author></item><item><title>Reducing boilerplate code with the MVVM Community Toolkit in .NET MAUI</title><link>https://thedevexchange.com/mvvm_toolkit/</link><guid isPermaLink="true">https://thedevexchange.com/mvvm_toolkit/</guid><description>The Model-View-ViewModel (MVVM) pattern separates an application&apos;s business and presentation logic from its user interface, improving maintainability and testability by decoupling UI controls from underlying logic. Implementing MVVM can involve boilerplate code, which the MVVM Community Toolkit addresses through source generators, reducing the amount of code developers need to write in XAML-based solutions. By using attributes like `INotifyPropertyChanged`, `ObservableProperty`, and `RelayCommand`, developers can significantly reduce code volume</description><pubDate>Mon, 04 Sep 2023 09:13:05 GMT</pubDate><category>C#</category><category>dotnet</category><category>#maui</category><category>MVVM</category><category>xaml</category><author>Nijaz Zaljevic</author></item><item><title>Create own GraphQL Spring Boot Starter</title><link>https://thedevexchange.com/own-graphql-spring-boot-starter/</link><guid isPermaLink="true">https://thedevexchange.com/own-graphql-spring-boot-starter/</guid><description>A custom Spring Boot starter can streamline the process of sharing functionality across multiple applications. This involves creating a starter project with a GraphQL controller, auto-configuration, and schema, which, when included in an application, automatically exposes a GraphQL endpoint. The starter&apos;s behavior can be configured through application properties, and troubleshooting tools are available for debugging schema loading and query mapping.</description><pubDate>Mon, 09 Dec 2024 12:09:21 GMT</pubDate><category>GraphQL</category><category>Java</category><category>Springboot</category><author>Christian Abegg</author></item><item><title>Navigating the Challenges of Pair Programming</title><link>https://thedevexchange.com/pair-programming-mistakes/</link><guid isPermaLink="true">https://thedevexchange.com/pair-programming-mistakes/</guid><description>Pair programming, while beneficial, presents challenges such as mismatched paces, overwhelming junior developers with information, neglecting breaks, and dealing with poor remote setups. Success hinges on effective communication, establishing trust, and adapting to individual dynamics. Recognizing these potential pitfalls and fostering open communication can significantly enhance the collaborative coding experience.</description><pubDate>Fri, 28 Jun 2024 09:49:23 GMT</pubDate><category>pair programming</category><category>software development</category><author>Oliver Amstutz</author></item><item><title>Parsing inconsistent JSON with a reader monad in Java</title><link>https://thedevexchange.com/parsing-json-with-a-reader-monad/</link><guid isPermaLink="true">https://thedevexchange.com/parsing-json-with-a-reader-monad/</guid><description>An inconsistent JSON API, which expresses missing values as nulls, empty strings, or empty arrays, can be handled with a functional approach. The reader monad provides a clean and composable way to process JSON and manage these inconsistencies. This method separates data extraction from transformation, allowing for modularity, easy chaining, and graceful error handling, ultimately improving code readability and maintainability.</description><pubDate>Mon, 03 Mar 2025 16:08:48 GMT</pubDate><category>Functional Programming</category><category>Java</category><category>legacy</category><category>legacy app modernization</category><category>legacy-systems</category><author>Kevin Denver</author></item><item><title>Efficiently Parsing COBOL Fixed-Length Records with Functional Lenses</title><link>https://thedevexchange.com/parsing-fixed-width-records-using-lenses/</link><guid isPermaLink="true">https://thedevexchange.com/parsing-fixed-width-records-using-lenses/</guid><description>Parsing fixed-width COBOL records, a common format in mainframe systems, presents unique challenges due to the fixed position and size of each field. A functional programming approach using lenses offers a structured and composable way to handle this parsing in a type-safe manner. This method encapsulates reading, writing, and padding logic, allowing for clear mappings between data classes and fixed-width schemas, and can be extended to handle collections of items within records.</description><pubDate>Wed, 18 Sep 2024 04:53:48 GMT</pubDate><category>COBOL</category><category>Functional Programming</category><category>IBM</category><category>Java</category><category>legacy</category><category>legacy app modernization</category><category>legacy-systems</category><category>mainframe</category><author>Kevin Denver</author></item><item><title>Reactive Element Size Tracking in Angular with ResizeObserver and Signals</title><link>https://thedevexchange.com/resize-observer/</link><guid isPermaLink="true">https://thedevexchange.com/resize-observer/</guid><description>Learn how to combine Angular Signals with the ResizeObserver API to build reactive, efficient UI updates that keep dropdowns and overlays aligned—even during dynamic layout changes.</description><pubDate>Wed, 13 Aug 2025 09:03:38 GMT</pubDate><category>angular</category><category>responsive-web-design</category><category>responsive-design</category><category>frontend</category><category>web-development</category><category>javascript</category><category>performance</category><category>best-practices</category><category>browser</category><author>Timo Spring</author></item><item><title>No Data Left Behind: Enforcing Required Inputs in Angular Components</title><link>https://thedevexchange.com/required-inputs/</link><guid isPermaLink="true">https://thedevexchange.com/required-inputs/</guid><description>Angular developers can improve component usage and prevent bugs by explicitly defining required inputs. Older versions of Angular can leverage the component selector for this purpose, while Angular v16 introduces a dedicated &quot;required&quot; input property. This ensures that necessary data is provided, leading to more robust and predictable component behavior.</description><pubDate>Mon, 22 May 2023 04:34:28 GMT</pubDate><category>Angular</category><category>basics</category><category>Bugs and Errors</category><category>components</category><category>Web Development</category><author>Timo Spring</author></item><item><title>Refactoring Legacy Code using Tiny Types and Data Oriented Programming in Java</title><link>https://thedevexchange.com/refactoring-legacy-code-with-tiny-types-in-java/</link><guid isPermaLink="true">https://thedevexchange.com/refactoring-legacy-code-with-tiny-types-in-java/</guid><description>Legacy systems often suffer from maintainability issues due to their procedural nature and reliance on mutable state. Applying techniques like Tiny Types and Data Oriented Programming can address these challenges by shifting towards immutable data structures and separating business logic. This approach enhances code clarity, enforces type safety, and ensures data integrity by making invalid states unrepresentable, ultimately leading to a more robust and maintainable codebase.</description><pubDate>Mon, 06 Jan 2025 17:09:12 GMT</pubDate><category>Functional Programming</category><category>Java</category><category>legacy</category><category>legacy app modernization</category><category>legacy-systems</category><author>Kevin Denver</author></item><item><title>Building page transitions with react-router v6 and framer motion</title><link>https://thedevexchange.com/react-router-6-page-transitions/</link><guid isPermaLink="true">https://thedevexchange.com/react-router-6-page-transitions/</guid><description>Achieving smooth fade transitions between pages in a client-side rendered React application requires careful handling of component mounting and unmounting. By leveraging animation libraries, developers can create visually appealing navigation experiences, but challenges arise from the router&apos;s immediate content updates. Stabilizing the outlet component, either by cloning it or using a stable reference, ensures that the transition animation is visible and effective during page navigation.</description><pubDate>Mon, 08 Apr 2024 13:18:01 GMT</pubDate><category>animations</category><category>React</category><category>react router</category><category>UX</category><author>Christoph Salvisberg</author></item><item><title>Source Generators and regular expressions</title><link>https://thedevexchange.com/regex-source-generators/</link><guid isPermaLink="true">https://thedevexchange.com/regex-source-generators/</guid><description>.NET 7 introduced source generators for regular expressions, enabling compile-time code generation. This approach offers performance benefits similar to compiled regular expressions and the startup advantages of assembly compilation, while simplifying the development process. The generated code is directly embedded into the assembly, making it viewable and debuggable.</description><pubDate>Mon, 05 Jun 2023 11:45:26 GMT</pubDate><category>architecture</category><author>Steven Giesel</author></item><item><title>RxJS Memory Leaks in Angular</title><link>https://thedevexchange.com/rxjs-memory-leaks/</link><guid isPermaLink="true">https://thedevexchange.com/rxjs-memory-leaks/</guid><description>Memory leaks in Angular applications often stem from unmanaged RxJS Observable subscriptions, where allocated memory isn&apos;t released when components are destroyed, leading to performance degradation.  Various techniques, including leveraging the `ngOnDestroy` lifecycle hook, the `takeUntil` operator, mixins, and the new `takeUntilDestroyed` operator in Angular 16, can effectively address this issue.  Employing specific linting rules can further help prevent these leaks by enforcing proper subscription management.</description><pubDate>Mon, 07 Aug 2023 09:03:38 GMT</pubDate><category>Bugs and Errors</category><category>form</category><category>RxJS</category><category>Web Development</category><author>Timo Spring</author></item><item><title>Coding for a Greener Future, Actions for Big Impact</title><link>https://thedevexchange.com/taking-a-byte-of-the-carbon-cake/</link><guid isPermaLink="true">https://thedevexchange.com/taking-a-byte-of-the-carbon-cake/</guid><description>Software development significantly contributes to carbon emissions, and understanding the carbon cost of cloud resources like compute, memory, and storage is crucial. By measuring resource usage and making informed decisions about infrastructure, developers can reduce their software&apos;s environmental impact. Optimizing memory allocation, choosing storage types wisely, and designing for scalability are key strategies for creating more sustainable software systems.</description><pubDate>Mon, 20 Jan 2025 07:58:06 GMT</pubDate><category>best practices</category><category>Cloud</category><category>design patterns</category><category>developers</category><category>Microservices</category><category>software architecture</category><author>Paul Simmons</author></item><item><title>Artificial Intelligence is reshaping the Software Development Lifecycle!</title><link>https://thedevexchange.com/ai-driven-development/</link><guid isPermaLink="true">https://thedevexchange.com/ai-driven-development/</guid><description>If you don’t change, AI will change you. Explore how AI-driven tools are reshaping the Software Development Lifecycle—from Requirements Engineering to Production Release.</description><pubDate>Wed, 08 Apr 2026 07:30:00 GMT</pubDate><category>agile</category><category>Behavior-Driven Development</category><category>Test-Driven Development</category><category>Coding</category><category>Software Engineering</category><category>AI</category><category>AIDD</category><author>Abishek Anthony</author></item><item><title>Signals, Signals everywhere</title><link>https://thedevexchange.com/signals-everywhere/</link><guid isPermaLink="true">https://thedevexchange.com/signals-everywhere/</guid><description>Signals are emerging as a unifying concept in JavaScript frameworks, offering a standardized approach to reactive user interfaces. This fine-grained reactivity, inspired by earlier technologies, simplifies state management and UI synchronization. The core idea involves special objects that notify subscribers of changes and detect dependencies, enabling more transferable knowledge across different technologies.</description><pubDate>Mon, 04 Mar 2024 10:07:45 GMT</pubDate><category>explained</category><category>Frontend Development</category><category>JavaScript</category><category>Reactivity</category><category>signals</category><author>Lucas Schnüriger</author></item><item><title>Implement a Powerful Application Search using Apache Solr</title><link>https://thedevexchange.com/searching-using-apache-solr/</link><guid isPermaLink="true">https://thedevexchange.com/searching-using-apache-solr/</guid><description>Implementing a robust search function is vital for enhancing user experience by providing quick access to relevant data. Standard databases often struggle with complex search requirements, but specialized tools like Apache Solr can be integrated to address these challenges. Solr indexes documents, enabling efficient retrieval of information based on user queries, and offers features like faceting, highlighting, and spell checking.</description><pubDate>Mon, 21 Aug 2023 09:08:39 GMT</pubDate><category>apache</category><category>Java</category><category>General Programming</category><category>Tutorial</category><category>Web Development</category><author>Matthias Graf</author></item><item><title>Staying Ahead of the Competition with HTAP</title><link>https://thedevexchange.com/staying-ahead-of-the-competition-with-htap/</link><guid isPermaLink="true">https://thedevexchange.com/staying-ahead-of-the-competition-with-htap/</guid><description>Hybrid Transactional Analytical Processing (HTAP) offers a unified system for managing both transactions and real-time data analysis, enabling faster insights and more informed decision-making. By storing data in both row and columnar formats, HTAP systems efficiently process diverse workloads, but may not be ideal for single workload scenarios, small datasets, or when specific database features are critical. Successful implementation requires careful assessment of business needs, selection of an appropriate database, and strategic system architecture planning.</description><pubDate>Mon, 12 Jun 2023 09:19:36 GMT</pubDate><category>big data</category><category>data analysis</category><category>Databases</category><category>performance</category><category>realtime</category><author>Daniel Costa</author></item><item><title>Source Generators in the MVVM Community Toolkit</title><link>https://thedevexchange.com/source_generators_mvvm_toolkit/</link><guid isPermaLink="true">https://thedevexchange.com/source_generators_mvvm_toolkit/</guid><description>Source Generators, introduced with .NET 5, analyze code and generate new code during compilation, offering performance advantages over runtime reflection. The MVVM Community Toolkit leverages Source Generators to minimize boilerplate code, exemplified by the `ObservablePropertyGenerator` which automatically creates properties and associated methods based on attributes. This approach streamlines development and enhances application performance by generating code at compile time.</description><pubDate>Mon, 30 Oct 2023 10:10:29 GMT</pubDate><category>C#</category><category>dotnet</category><category>#maui</category><category>MVVM</category><category>xaml</category><author>Nijaz Zaljevic</author></item><item><title>The retain cycle of Swift async/await</title><link>https://thedevexchange.com/swift-async-await-cycle/</link><guid isPermaLink="true">https://thedevexchange.com/swift-async-await-cycle/</guid><description>A debugging effort revealed an unexpected object lifetime extension caused by long-running asynchronous functions in Swift. The issue stemmed from a background task preventing deallocation, which in turn hindered task cancellation. Two potential solutions involve either externally cancelling the task or removing the self-reference within the asynchronous function to allow for proper deallocation.</description><pubDate>Mon, 11 Nov 2024 10:15:46 GMT</pubDate><category>Apple</category><category>async</category><category>async-await</category><category>asynchronous</category><category>await</category><category>bluetooth</category><category>code</category><category>coding</category><category>concurrency</category><category>Developer</category><category>iOS</category><category>learning</category><category>macOS</category><category>Programming Tips</category><category>software development</category><category>Software Engineering</category><category>Swift</category><category>Swift Concurrency</category><category>TVOS</category><category>vapor</category><category>VisionOS</category><category>watchOS</category><author>Simon Seyer</author></item><item><title>SQL Server CLR Integration</title><link>https://thedevexchange.com/sql-server-clr-integration/</link><guid isPermaLink="true">https://thedevexchange.com/sql-server-clr-integration/</guid><description>SQL Server&apos;s `ROUND` function and the .NET Framework&apos;s `Math.Round` method can produce different results. Leveraging SQL Server CLR integration, developers can create custom functions using .NET languages like C# and then deploy them within SQL Server. This allows for extending SQL Server&apos;s functionality with custom logic implemented in .NET.</description><pubDate>Mon, 03 Apr 2023 09:07:56 GMT</pubDate><category>C#</category><category>SQL</category><author>Fabio Scagliola</author></item><item><title>What happens when a team dedicates 10% of their time to fixing technical debt?</title><link>https://thedevexchange.com/tech-debt/</link><guid isPermaLink="true">https://thedevexchange.com/tech-debt/</guid><description>Technical debt, often viewed as a necessary evil, can be a strategic tool impacting velocity, morale, and innovation. It manifests in various forms, from design flaws to process inefficiencies, and poses significant business risks if ignored, including missed deadlines and increased costs. A proactive approach, involving transparent tracking, strategic prioritization, and dedicated time for reduction, fosters a healthier engineering culture and enables long-term value.</description><pubDate>Mon, 26 May 2025 09:12:35 GMT</pubDate><category>agile</category><category>code smell</category><category>coding</category><category>dashboard</category><category>designing</category><category>DevJourney</category><category>front end</category><category>patterns</category><category>Programming Blogs</category><category>Software Engineering</category><category>styleguide</category><category>Website design</category><author>Abishek Anthony</author></item><item><title>Untangling Legacy Systems</title><link>https://thedevexchange.com/untangling-legacy-systems/</link><guid isPermaLink="true">https://thedevexchange.com/untangling-legacy-systems/</guid><description>Working with legacy systems presents common challenges in software development, often stemming from factors like evolving business needs, lack of vendor support, or outdated technology. Understanding the system&apos;s original requirements, architecture, and performance constraints is crucial for successful transformation. Effective strategies include thorough documentation, source code exploration, and running the system to refine understanding and inform modernization approaches.</description><pubDate>Mon, 31 Mar 2025 07:31:25 GMT</pubDate><category>legacy</category><category>legacy app modernization</category><category>legacy-systems</category><author>Kevin Denver</author></item><item><title>Configuring Terraform to obtain a provider from the local filesystem</title><link>https://thedevexchange.com/terraform-with-provider-from-filesystem/</link><guid isPermaLink="true">https://thedevexchange.com/terraform-with-provider-from-filesystem/</guid><description>Learn how to configure Terraform to use a local provider from the filesystem. This step-by-step guide covers Terraform CLI configuration, troubleshooting provider not found errors, using dev_overrides, filesystem mirrors, and integrating custom providers into CI/CD pipelines. It also explains how to handle Windows, Linux, and macOS builds, and how to switch back to providers hosted in Artifactory, Nexus, or other Terraform registries.</description><pubDate>Tue, 30 Sep 2025 00:00:00 GMT</pubDate><category>terraform</category><category>windows</category><category>ci-cd</category><category>infrastructure</category><author>Immo Huneke</author></item><item><title>Understanding the three trees in Flutter - Widget tree, Element tree and RenderObject tree</title><link>https://thedevexchange.com/three-trees-in-flutter/</link><guid isPermaLink="true">https://thedevexchange.com/three-trees-in-flutter/</guid><description>Flutter&apos;s UI rendering relies on three interconnected trees: Widget, Element, and RenderObject. The Widget tree describes the UI, the Element tree manages the lifecycle and connects Widgets to RenderObjects, and the RenderObject tree handles the actual rendering process. This architecture allows for efficient UI updates by minimizing the need to rebuild the mutable Element and RenderObject trees.</description><pubDate>Tue, 11 Jul 2023 09:12:26 GMT</pubDate><category>Flutter</category><category>Flutter Widgets</category><author>Gabriel Duss</author></item><item><title>The garbage collector in .NET</title><link>https://thedevexchange.com/the_garbage_collector_in__net/</link><guid isPermaLink="true">https://thedevexchange.com/the_garbage_collector_in__net/</guid><description>The .NET garbage collector manages memory by identifying and reclaiming unreachable objects on the heap. It operates in two phases: marking live objects and sweeping away the rest. To optimize performance, the heap is divided into generations, prioritizing the collection of short-lived objects to minimize pauses in application threads. Understanding the garbage collector&apos;s behavior helps developers write more efficient code, particularly when choosing between classes and structs for data structures.</description><pubDate>Wed, 26 Oct 2022 11:05:31 GMT</pubDate><category>C#</category><category>.NET</category><author>Steven Giesel</author></item><item><title>Two-way binding between Signals and Query Params</title><link>https://thedevexchange.com/two-way-binding-signals-and-query-params/</link><guid isPermaLink="true">https://thedevexchange.com/two-way-binding-signals-and-query-params/</guid><description>The article explores the use of signals in Angular to manage query parameters, addressing the challenge of two-way binding between signals and the browser URL. It details the implementation of a custom service that allows components to interact with query parameters using writable signals, ensuring that changes are reflected in both the application state and the URL. The discussion also covers potential issues with Angular&apos;s router startup logic and concurrent navigations, providing a solution to ensure proper synchronization.</description><pubDate>Mon, 15 Apr 2024 12:53:24 GMT</pubDate><category>Angular</category><category>explained</category><category>Frontend Development</category><category>JavaScript</category><category>Reactivity</category><category>signals</category><category>TypeScript</category><category>Web Development</category><author>Julio Castro</author></item><item><title>Web Development Tools</title><link>https://thedevexchange.com/web_dev_tools/</link><guid isPermaLink="true">https://thedevexchange.com/web_dev_tools/</guid><description>Web development tools, available as browser extensions, plugins, or IDEs, assist in application development. Factors like complexity, security, and cost should be considered when choosing the right tool. Chrome DevTools allows for webpage updates, JavaScript debugging, and website optimization within the browser. Visual Studio Code is a customizable code editor with features like a command palette and Zen mode. Marvel is a design tool for creating mockups and design specifications, while Figma excels in creating animations, prototypes, and facilitating cloud collaboration.</description><pubDate>Mon, 05 Aug 2024 09:11:22 GMT</pubDate><category>devtools</category><category>learning</category><category>software development</category><category>Web Development</category><category>webdev</category><author>Livi</author></item></channel></rss>