# Briebug > Briebug helps enterprise teams build, modernize, and migrate Angular applications with less delivery risk. US-based, senior-led, and ISO 27001 certified. Briebug's Developer Resource Center publishes 111 in-depth, practitioner-written engineering articles - primarily on Angular, TypeScript, RxJS, state management, testing, DevOps/cloud, and UX. The articles below are grouped by topic area; each entry links to the canonical article on https://briebug.com with a one-line summary. Blog index: https://briebug.com/articles RSS feed: https://briebug.com/rss.xml ## Frontend - [Using Angular @defer](https://briebug.com/articles/using-angular-defer/): With the release of Angular 17 (stable in Angular 18), came an exciting new feature to the framework, which is known as deferrable views, but more commonly called @defer blocks. This powerful new tool can be used to optimize app performance by deferring the loading of components and other resources, in turn, reducing the initial bundle size of an application. In this article I will walk you through the concept, syntax, usage, and best practices for working with @defer. - [Implementing Material 3 Theming in Angular 20](https://briebug.com/articles/material-3-theming/): A practical guide to Material 3 (M3) theming in Angular 20: how M3's semantic, role-based system works, setup with SCSS, design tokens, Nx monorepo and Tailwind integration, and the common gotchas when migrating from Material 2. - [Angular's resource() API: Asynchronous Data Fetching with Signals](https://briebug.com/articles/angular-resource-api/): How Angular 20's stabilized resource() API fetches asynchronous data reactively with signals: core setup, configuration, resource state, route-driven loading, chaining resources, and the key considerations to keep in mind. - [How AI Will Change Software Delivery in the Next 2 Years](https://briebug.com/articles/how-ai-will-change-software-delivery-in-the-next-2-years/): AI promises faster, better software delivery, but most teams see marginal gains. Here is why projects still fail, what AI can and cannot fix, and how to adopt it with discipline over the next two years. - [Exploring Angular Signals: A Case for Fine-Grained Reactivity in Modern Applications](https://briebug.com/articles/exploring-angular-signals-a-case-for-fine-grained-reactivity-in-modern-applications/): How Angular's evolution toward signals, computed, effect, and zoneless change detection brings fine-grained reactivity and precise, attentive state management to modern enterprise applications. - [Deep Dive: The Accessible Angular Application](https://briebug.com/articles/the-accessible-angular-application/): Why accessibility is really a UX and business advantage, then a hands-on walk through making Angular apps usable for everyone: meaningful markup, focus management, sufficient color contrast, and clearly labeled forms. - [Angular 19: The Most Transformative Angular Release Yet](https://briebug.com/articles/angular-19-the-most-transformative-angular-release-yet/): A tour of what is new in Angular 19, including incremental hydration, zoneless change detection, signals, standalone-by-default, micro-frontend support, and router upgrades, and why each matters in production. - [Mastering Vue 3 Components: A Comprehensive Guide for Software Developers](https://briebug.com/articles/mastering-vue-3-components-a-comprehensive-guide-for-software-developers/): A comprehensive guide to Vue 3 components covering defining components, props, prop data flow, events, dynamic components, and async components. - [Typed Forms in Angular 14+](https://briebug.com/articles/typed-forms-in-angular-14/): How Angular 14's Typed Forms work: infer control types from initial values, build a TypedForm helper from any interface, handle the FormBuilder null gotcha, and use Omit and Pick for flexible form types. - [A Comparison of Angular, React, and Vue](https://briebug.com/articles/a-comparison-of-angular-react-and-vue/): Angular, React, or Vue? A senior engineer weighs each framework's philosophy, strengths, and trade-offs, alongside community adoption and performance, to help match the right tool to your project. - [Reactive State Management with async/await, NgRx ComponentStore, and Signals](https://briebug.com/articles/reactive-state-management-with-async-await-ngrx-componentstore-and-signals/): Combine the best of Angular's reactive toolkit, Observables, async/await, NgRx ComponentStore, and Signals, into a state-management approach that stays simple as an app grows, with guidance on when to use each. - [Intro to React Form Libraries](https://briebug.com/articles/intro-to-react-form-libraries/): Building forms in React from the ground up: uncontrolled and controlled inputs, then Formik and React Hook Form, compared on how easily each produces typed, reusable, low-boilerplate forms. - [Angular Seed and Its Successors](https://briebug.com/articles/angular-seed/): A look at project scaffolding for Angular: what Angular Seed was, why the Angular CLI and Nx replaced it, and how to choose between them for your next project. - [How to Use CodePush in React Native](https://briebug.com/articles/how-to-use-codepush-in-react-native/): Ship JavaScript fixes to a React Native app without waiting on the app stores. What CodePush and App Center are, their limits and alternatives, how to set them up, and when over-the-air updates make sense. - [When To Choose Angular](https://briebug.com/articles/when-to-choose-angular/): A deep look at when and why to choose Angular for your web project: its modular architecture, component-based design, Node package ecosystem, built-in Forms API, and how it compares to React and Vue. - [The Wonderful Lives of Angular Components](https://briebug.com/articles/angular-component-lifecycle/): A deep dive into the Angular component lifecycle (construction, initialization, change detection, and destruction) and the lifecycle hooks that let you handle each phase. - [A Crash Course in Using Google's Firestore with AngularFire](https://briebug.com/articles/crash-course-firebases-firestore-angularfire/): Get up and running with AngularFire, Firebase's official Angular library, and use Cloud Firestore for CRUD: securing the database, installing the library, and reading and writing collection data with examples. - [How To Declare A Global Variable In Angular](https://briebug.com/articles/how-declare-global-variable-angular/): Compare three ways to handle global values in Angular: the environment file, a dedicated constants file, and a global service, and learn which fits configuration, shared constants, and managed state. - [Getting Started With Angular Progressive Web Apps (PWA)](https://briebug.com/articles/angular-progressive-web-application/): Learn what a Progressive Web App (PWA) is and how to turn a basic Angular application into a PWA using ng add, the service worker, caching, and app icons. - [What is a higher-order component in React?](https://briebug.com/articles/what-is-higher-order-component-react/): Higher-order components let you wrap a React component to share logic across many. Here is how they work, why you would reach for one, and a step-by-step build using a fitness-logging example. - [Detecting Route Changes in Angular](https://briebug.com/articles/detect-route-changes-angular/): Learn how Angular's router works as a single page application and how to detect route changes using the router events observable, with a practical breadcrumb example. - [Intro to Angular Dependency Injection](https://briebug.com/articles/angular-dependency-injection/): An introduction to the Angular Injector and dependency injection: Inversion of Control, providers, injection tokens, hierarchical injectors, lifecycle, manual injection, and automatic provisioning with providedIn. - [The Guide to Using Bootstrap With Angular](https://briebug.com/articles/using-bootstrap-with-angular/): Add Bootstrap to an Angular app the right way: the full framework versus just its CSS utilities, the NG-Bootstrap and NGX-Bootstrap component libraries, and how to customize the theme to fit your brand. - [What are React Fragments?](https://briebug.com/articles/react-fragments/): A guide to React Fragments: what they are, how to use the long and short syntax, keyed fragments, and why they help when returning multiple elements from a component. - [Conditional Rendering in React](https://briebug.com/articles/conditional-rendering-in-react/): Techniques for showing React content based on changing state: inline ternaries and logical operators, returning JSX from functions, and conditional styling, with an example of each. - [Advanced Reactive Angular Interceptors](https://briebug.com/articles/reactive-angular-interceptors/): A step-by-step walkthrough of building an advanced, purely reactive Angular HTTP interceptor that caches results and synchronizes concurrent cross-request streams with custom RxJs operators. - [Advanced Async Reactive Angular Validators](https://briebug.com/articles/async-reactive-angular-validators/): A progressive, step-by-step guide to building advanced asynchronous, reactive Angular form validators that make HTTP calls, cross-validate related fields, and stay fully functional with RxJs. - [What is the difference between a Subject and an Observable?](https://briebug.com/articles/subject-observable-difference/): An in-depth look at how RxJs Subjects differ from Observables, covering push vs. pull, the multi-channel and Subscribable interfaces, BehaviorSubject, ReplaySubject, AsyncSubject, and building custom subjects. - [Getting started with Apollo + GraphQL in Angular](https://briebug.com/articles/apollo-graphql-in-angular/): A step-by-step guide to installing and configuring the Apollo Client in Angular, writing GraphQL queries and mutations, sending requests, handling errors, typing responses, disabling caching, and unit testing your services. - [Getting Started With Micro FrontEnds and Angular](https://briebug.com/articles/micro-frontends-angular/): A practical guide to setting up an Angular Micro Frontends project using Webpack 5 Module Federation, with both Nx Workspace and the Angular CLI. - [Basics of the React Router](https://briebug.com/articles/react-router/): Learn the basics of routing in React: add react-router-dom, set up Routes, Links, Switch, Redirect, and pass route and query params in a React application. - [Foundations of Functional Programming in Java/TypeScript (Part 1)](https://briebug.com/articles/functional-programming-part-1/): The start of a multi-part series laying a solid foundation for functional programming in JS/TS: what functional programming is, how it compares to other paradigms, and what functions really are. - [Foundations of Functional Programming in Java/TypeScript (Part 2)](https://briebug.com/articles/functional-programming-part-2/): The second installment in the series covers the key tenets of functional programming (purity, immutability, and composability) and explores when mutability is allowable without observable side effects. - [Foundations of Functional Programming in Java/TypeScript (Part 3)](https://briebug.com/articles/functional-programming-part-3/): Part 3 of the functional programming series explores higher order functions, currying, partial application, function decomposition, and closures in JavaScript and TypeScript. - [The Ultimate Guide To Angular Reactive Forms](https://briebug.com/articles/angular-reactive-forms/): A deep dive into Angular Reactive Forms: building scalable, reusable, and maintainable forms with FormControl, FormGroup, FormArray, FormBuilder, custom validators, nested forms, and submission strategies. - [Mastering RouterLink](https://briebug.com/articles/router-link/): A comprehensive introduction to routing via the Angular template using the RouterLink directive, covering relative links, parameters, fragments, state, navigation options, multiple outlets, active styling, and disabling links. - [How to Create an External Package for Angular](https://briebug.com/articles/how-to-create-an-external-package-for-angular/): Learn how to build, export, and publish a reusable Angular library to npm using the Angular CLI, with a shared UI components library as an example. - [Converting your Angular project from TSLint to ESLint](https://briebug.com/articles/convert-angular-project-tslint-eslint/): A step-by-step guide to migrating your Angular project from the deprecated TSLint to ESLint using the @angular-eslint schematic. - [Template Variables in Angular](https://briebug.com/articles/template-variables-angular/): A deep dive into Angular template variables (also called template reference variables or local references): how to define and use them, scope, ViewChild, element references, template references, and alternative representations. - [Building Responsive Applications with Angular Flex Layout](https://briebug.com/articles/building-responsive-applications-angular-flex-layout/): Learn how to build responsive layouts in Angular using the Angular Flex Layout package, from installation and basic directives to content positioning and the responsive breakpoints API. - [How to add NgRx Store Slices into LocalStorage](https://briebug.com/articles/how-to-add-ngrx-store-slices-into-localstorage/): Learn how to sync select slices of your NgRx store into a user's localStorage using ngrx-store-localstorage, including rehydration and a mergeReducer. - [Managing Local Storage in Angular](https://briebug.com/articles/managing-local-storage-in-angular/): Go beyond the raw localStorage API in Angular: wrap it in a reactive service backed by an Observable subject, handle the server-side rendering case, and decide what is actually safe to store. - [Staying Functional and Reactive with Angular Data Services](https://briebug.com/articles/staying-functional-and-reactive-with-angular-data-services/): Turn imperative Angular data services into clean, reactive RxJS using creation operators like of and from to compose streams, join data sources, and reuse logic across an app. - [Mastering the Angular CLI](https://briebug.com/articles/mastering-the-angular-cli/): Dig deeper into the Angular CLI to boost your productivity: workspaces, command aliases, ng config customizations, updating Angular, and automatic deployment. - [Getting Started With the Angular CLI](https://briebug.com/articles/getting-started-with-the-angular-cli/): Everything you need to start with the Angular CLI: how it works under the hood, installing it, generating a new app and its building blocks with schematics, and serving the project locally. - [What is the activated route?](https://briebug.com/articles/what-is-the-activated-route/): An in-depth look at Angular's ActivatedRoute API: what it is, what route data it holds, how it differs from ActivatedRouteSnapshot, and what you can do with it. - [How do I restructure and streamline my UI by using "container/presenter" pattern?](https://briebug.com/articles/streamline-ui-using-container-presenter/): Split Angular components into smart containers that manage data and presentational components that handle display: a pattern that improves testability, reuse, and maintainability, built up with example code. - [AngularJS vs. Angular](https://briebug.com/articles/angularjs-vs-angular/): AngularJS and Angular share a name but little else. How the 2016 ground-up rewrite reshaped front-end development with TypeScript, RxJS, the CLI, and a new router, and what it means if you are upgrading. - [Using RxJs to Write Functional JavaScript](https://briebug.com/articles/using-rxjs-to-write-functional-javascript/): How RxJs lets you write functional, reactive JavaScript and TypeScript, using pipe, pipeable operators, and decomposition to simplify Angular data services and make them easier to test. - [What can I do with Observables?](https://briebug.com/articles/what-can-i-do-with-observables/): A tour of what Observables and RxJs make possible beyond Promises: reactive programming, transforming, combining, switching, forking, and joining streams of data in Angular. - [What's a fork and why would I join one? Understanding the forkJoin RxJs operator](https://briebug.com/articles/understanding-the-forkjoin-rxjs-operator/): A deep dive into the RxJs forkJoin operator: what forking and joining mean in reactive programming, and how to fork and join both completing and continuous streams in Angular. - [What is the difference between Promises and Observables?](https://briebug.com/articles/what-is-the-difference-between-promises-and-observables/): An in-depth look at how Promises and Observables both handle asynchrony in JavaScript and Angular, and why Observables and RxJs offer a far richer reactive platform. - [How do I manually trigger change detection in Angular?](https://briebug.com/articles/how-do-i-manually-trigger-change-detection-in-angular/): Learn the differences between Angular's default change detection and OnPush, when to use manual change detection, and the simplest way to achieve optimal performance. - [When should I unsubscribe my Subscriptions in Angular?](https://briebug.com/articles/when-should-i-unsubscribe-my-subscriptions-in-angular/): A guide to managing RxJS subscriptions in Angular: when you need to unsubscribe, and the framework tools that handle subscriptions for you. - [How do I restructure and streamline my UI by using Angular Workspaces & Libraries?](https://briebug.com/articles/how-do-i-restructure-and-streamline-my-ui-by-using-angular-workspaces-libraries/): Use Angular workspaces and libraries to run multiple apps from one monorepo, share UI and logic across them, and standardize your organization's components, with a step-by-step directory walkthrough. - [Using WebAuthn with Angular](https://briebug.com/articles/using-webauthn-with-angular/): A primer on WebAuthn, public-key authentication for the web, and a demonstration of how to implement it in your Angular application with a node server. - [How do I bind to 'formGroup' when it isn't a known property of 'form'?](https://briebug.com/articles/how-do-i-bind-to-formgroup-when-it-isn-t-a-known-property-of-form/): Resolve the Angular error "Can't bind to 'formGroup' since it isn't a known property of 'form'" by importing the correct Forms module in the module that declares your component. - [How do I display HTML inside an Angular binding?](https://briebug.com/articles/how-do-i-display-html-inside-an-angular-binding/): How to bind and display HTML inside an Angular component using innerHtml, sanitize it safely with a custom DomSanitizer pipe, and refactor away from innerHtml entirely. - [What is the difference between Constructor and ngOnInit?](https://briebug.com/articles/what-is-the-difference-between-constructor-and-ngoninit/): Should setup logic go in the constructor or in ngOnInit? A look at what each does during Angular component initialization, and how picking the right one keeps your code predictable and testable. - [Switching to Cypress: The Update](https://briebug.com/articles/switching-to-cypress-the-update/): A walkthrough of updates to the Briebug Cypress schematic, including a custom Angular CLI builder that lets you run ng e2e to start Cypress. - [Angular Material Theme Switcher: Part 2](https://briebug.com/articles/angular-material-theme-switcher-part-2/): Three strategies for persisting a user's Angular Material theme preference through a page reload: local storage, an API request, and the operating system's color-scheme preference. - [Angular Material Theme Switcher: Part 1](https://briebug.com/articles/angular-material-theme-switcher-part-1/): A step-by-step guide to Angular Material's Sass-based theming: define your own color palettes and typography, then add a runtime light and dark mode toggle built on the same engine. - [Internationalizing your Angular app](https://briebug.com/articles/internationalizing-your-angular-app/): An overview of options to consider when approaching internationalization in an Angular app, and how to implement them, including formatting dates and numbers, Angular's i18n tooling, Ngx-translate, Transloco, language switchers, and debugging i18n. - [3 ways to use Angular HTTP Interceptors](https://briebug.com/articles/3-ways-to-use-angular-http-interceptor/): How to use Angular HTTP Interceptors to control your application's network requests and responses, with examples for caching, XML to JSON conversion, and scope-based redirects. - [With NgRx Effects, There's A Place for Every Mapper!](https://briebug.com/articles/a-place-for-every-mapper/): Every mapper has its place in NgRx Effects. Learn the semantics of switchMap, exhaustMap, concatMap, and mergeMap, and how to choose the right one for each use case. - [Not going to conferences is costing you too much - Here's two reasons why](https://briebug.com/articles/why-not-going-to-conferences-is-costing-you-too-much/): Briebug CEO Jesse Sanders shares why conferences are an invaluable, cost-effective way for developers and teams to learn best practices and avoid the high cost of failed projects. - [I'm not ready for NgRx](https://briebug.com/articles/i-m-not-ready-for-ngrx/): An introduction to the service-with-a-subject pattern in Angular, a simple alternative to NgRx that gives developers a clear upgrade path to a redux pattern with little to no refactor. - [Introducing NgRx Auto-Entity](https://briebug.com/articles/introducing-ngrx-auto-entity/): An introduction to NgRx Auto-Entity, an add-on library that eliminates NgRx boilerplate by providing ready-made generic CRUD actions, effects, reducers, and facades for Angular entity state. - [Making Use of WebSockets in Angular—Way Easier Than You Expected](https://briebug.com/articles/making-use-of-websockets-in-angular/): A practical guide to using WebSockets in Angular with the RxJs WebSocket wrapper (no extra dependencies needed), covering setup, a connection service, auth, and troubleshooting. - [Angular: How to Implement Drag and Drop in a Material tree](https://briebug.com/articles/angular-how-to-implement-drag-and-drop-in-a-material-tree/): How to integrate the Angular Material CDK drag and drop with the Material flat tree, including handling the drop event, generating unique IDs, and persisting node expansion state. - [Angular Material Modal Schematic](https://briebug.com/articles/everybody-hates-modals/): How I built an Angular schematic that scaffolds an Angular Material dialog, automatically installing @angular/material, generating the components, and wiring up the required modules. - [Common Angular Errors And How To Fix Them](https://briebug.com/articles/common-angular-errors-and-how-to-fix-them/): A field guide to the Angular errors you will actually hit, from circular dependency injection to ExpressionChangedAfterItHasBeenChecked and missing value accessors, with the cause and the fix for each. - [Switching to Cypress from Protractor in Less Than 30 Seconds](https://briebug.com/articles/switching-to-cypress-from-protractor-in-less-than-30-seconds/): A walkthrough of a custom Angular schematic that installs Cypress with TypeScript support out of the box and optionally removes Protractor and its dependencies. - [I'm soo done with E2E testing... until now - An Introduction to E2E Testing with Cypress.io](https://briebug.com/articles/i-m-so-done-with-e2e-testing-until-now/): An introduction to end-to-end testing with Cypress.io, covering setup, writing tests, stubbing responses, fixtures, and wait commands for fast, reliable E2E tests. - [5 Ways to Pass Data into Child Components in Angular](https://briebug.com/articles/5-ways-to-pass-data-into-child-components-in-angular/): Five techniques for passing data into Angular child components: @Inputs, @ViewChild, BehaviorSubjects in services, the Angular Router, and NgRx. - [Building Schematics with a Sandbox](https://briebug.com/articles/building-schematics-with-a-sandbox/): Set up a local sandbox to build and end-to-end test Angular schematics with instant visual feedback before you publish, so you can see exactly what your schematic generates. - [3 Ways You're Using NgRx Wrong](https://briebug.com/articles/3-ways-youre-using-ngrx-wrong/): Three common NgRx anti-patterns and how to avoid them: taking shortcuts, nesting data in the store, and underusing selectors. - [A is for Enterprise: 6 Reasons We Love Angular](https://briebug.com/articles/a-is-for-enterprise/): Six reasons Angular is a great fit for the enterprise: it's opinionated, scaled, trustworthy, familiar, and backed by a strong ecosystem. - [5 Considerations for Successful Web Application Design](https://briebug.com/articles/5-considerations-for-successful-web-application-design/): Five essential considerations for execs and developers getting ready to dive into new web application design projects, and how they can help you avoid problems along the way. - [MailChimp Subscribe Form with Angular Using jsonp](https://briebug.com/articles/mailchimp-subscribe-form-with-angular-using-jsonp/): A working recipe for an AJAX Mailchimp signup form in Angular using HttpClient's jsonp, including the endpoint tweak Mailchimp does not document and the component code to drop in. - [Five Coachable Steps For Building Complex Applications](https://briebug.com/articles/complex-applications/): A repeatable, five-step process for taming complex Angular applications and reducing eventing spaghetti with NgRx and Redux patterns. - [Building an Angular Schematic for Jest Unit Testing](https://briebug.com/articles/building-an-angular-schematic-for-jest-testing/): How Briebug built an Angular CLI schematic to configure unit tests to run with Jest instead of Karma and Jasmine. - [Why Angular?](https://briebug.com/articles/why-angular/): What makes modern Angular a stable, productive choice for front-end work: its evolution since AngularJS, its performance and mobile gains, and the conventions that guide solid architecture. ## DevOps/Cloud - [Git Beyond Version Control!](https://briebug.com/articles/git-beyond-version-control/): Git has mighty powers beyond version control! This article will explore how it can help developers in surprising ways. While we will be providing examples in an Angular codebase, these Git concepts are universally useful for any project. Learn how to understand code change origins, effectively manage multiple repositories, and discover practical tips to enhance your local Git workflow as we unlock more of Git's potential. - [Git Questions, Good and Bad](https://briebug.com/articles/git-questions-good-and-bad/): Many common Git questions rest on assumptions that do not hold, because Git's internals differ from older version-control tools. This clears up the confusing ones, from commit hashes to rebasing, squashing, and safe force-pushing. - [Is Cypress Cloud Worth It? A Cost-Benefit Breakdown for Modern Testing Teams](https://briebug.com/articles/is-cypress-cloud-worth-it/): A practical cost-benefit breakdown of the free Cypress App versus Cypress Cloud to help testing teams decide which fits their project scale and budget. - [Regression Testing; What It Is, Why It's Important, and Which Types You Should Consider Using](https://briebug.com/articles/regression-testing/): An overview of the most impactful automated test types (unit, integration, and end-to-end), plus other test types and why regression tests matter. - [Mocking Cypress GraphQL Response With Fixtures](https://briebug.com/articles/mocking-cypress-graphql-response-with-fixtures/): A three-step guide to mocking out Cypress GraphQL responses with fixtures by aliasing queries, intercepting them, and using the routeHandler to modify the reply. - [Cloud Compute Services Comparison](https://briebug.com/articles/cloud-compute-services-comparison/): How AWS, GCP, and Azure stack up on compute. The article maps their IaaS virtual machines, PaaS offerings, and serverless functions side by side to help you pick the right service for a workload. - [High-level Comparison of AWS, GCP, and Azure Services](https://briebug.com/articles/aws-gcp-and-azure-comparison/): New to the cloud? Start here: the core concepts and vocabulary, who the major providers are, and a side-by-side look at the compute, storage, networking, and security services across AWS, GCP, and Azure. - [Visual Testing with Cypress](https://briebug.com/articles/visual-testing-with-cypress/): Use Cypress with stubbed data and visual regression tools like cypress-visual-regression and Percy.io to reliably test complex visual elements. - [Jest Testing: Your test tools are all wrong](https://briebug.com/articles/jest-testing-your-test-tools-are-all-wrong/): Jest brings zero-config setup, fast JSDOM-based runs, built-in coverage, a powerful CLI, and snapshot testing to make testing faster and easier. ## UX/UI - [Why UX Designers Should Care About Table Relationships](https://briebug.com/articles/database-design-and-user-experience/): How database design and table relationships shape product usability, and why UX designers and database designers should coordinate early. - [UX vs. UI](https://briebug.com/articles/ux-vs-ui/): A practical look at how UX and UI design are distinct yet inextricably connected, and how their deliverables work together throughout the product development process. - [UX for Developers: The #1 Biggest Issue With Most Designs](https://briebug.com/articles/ux-for-developers/): Even though UX is not the primary job of a developer, any software has the goal of interfacing with users, and the number one principle of UX is that software is about the user first. - [Why User Flows Play a Critical Role in the UI/UX Design Process](https://briebug.com/articles/user-flows/): User flows are a vital tool in the UX product design toolbelt, ensuring teams share a clear understanding of where a product is headed before development begins. ## Project Management - [Case Study: Turning Around a Stalled Platform with Strategic Technical Leadership](https://briebug.com/articles/case-study-turning-around-a-stalled-platform-with-strategic-technical-leadership/): How Briebug stabilized a stalled gifting platform through technical assessment, Agile transformation, DevOps modernization, and security hardening. - [So You Want to Be a Product Owner?](https://briebug.com/articles/want-to-be-product-owner/): A breakdown of what a Product Owner is, how people grow into the role, and the day-to-day responsibilities both inside and outside the agile scrum team. - [The #1 Mistake Made in Agile Backlog Grooming](https://briebug.com/articles/biggest-mistake-in-agile-backlog-grooming/): Why backlog refinement deserves dedicated time, what a backlog refinement meeting looks like, and the common mistakes to avoid along the way. - [Getting a "Lead" Start on Time: Using Agile to Improve Efficiency](https://briebug.com/articles/using-agile-to-improve-efficiency/): Lead Time and Cycle Time explained, and three tactics from agile and Kanban to reduce them and improve efficiency. - [Navigating Data-Driven Projects Using Agile Ceremonies](https://briebug.com/articles/data-driven-projects-agile-ceremonies/): How to manage data-heavy projects with Agile ceremonies, spot common data pitfalls, and keep your team on track without being a data expert yourself. - [Advanced Project Management: Functional vs. Nonfunctional Requirements](https://briebug.com/articles/functional-vs-nonfunctional-requirements/): An advanced project management guide to functional vs. nonfunctional requirements: what they are, how they differ, and how user stories and use cases capture them. - [Scrum Master vs. Project Manager](https://briebug.com/articles/scrum-master-vs-project-manager/): Scrum Master and Project Manager look alike but own different things on an Agile team. Here is what each is responsible for, where they overlap, and how they work together to deliver. - [A Guide to The 5 Agile Scrum Ceremonies](https://briebug.com/articles/agile-scrum-ceremonies/): A quick guide to the five Agile Scrum ceremonies (the Sprint, Sprint Planning, the Daily Scrum, the Sprint Review, and the Sprint Retrospective), plus the unofficial Product Backlog Grooming event. - [What Should You Look for When Hiring Your Next Developer?](https://briebug.com/articles/what-should-you-look-for-when-hiring-your-next-developer/): What to look for when hiring your next web application developer to keep your project on time, on budget, and on target. ## Other - [A Game-Changer for Software Development](https://briebug.com/articles/tax-code-changes-lower-interest-rates-fuels-software-development/): Two shifts are reopening the door to software investment: the 2025 repeal of Section 174's R&D amortization rules and the prospect of Federal Reserve rate cuts. Here is what changed and why it matters now. - [Big Data Purging in Oracle](https://briebug.com/articles/big-data-purging-in-oracle/): An approach to building a performant data purging solution in Oracle for high-volume, high-velocity tables using BULK COLLECT, ROWIDs, FORALL, and incremental commits. - [Using the Java String.split() Method](https://briebug.com/articles/java-split-string/): A practical guide to the Java String.split() method: both overloads, regex and limit usage, and how to avoid PatternSyntaxException. - [Setting up Cross-platform Push Notifications for Your Mobile App](https://briebug.com/articles/cross-platform-push-notifications/): A practical map of mobile push notifications across iOS and Android: how APNs and FCM or GCM fit together, the services that send them such as Azure and Firebase, and what it takes to wire push up end to end. - [How In-House Developer Education Can Bridge IT Skills Gaps](https://briebug.com/articles/bridge-the-it-skills-gap-with-in-house-developer-education/): How partnering with an expert team to provide in-house developer education can help bridge the IT skills gap. - [Development Team Need a Boost? Partner Up!](https://briebug.com/articles/development-team-need-a-boost-partner-up/): How partnering with an expert development team can give your in-house developers a boost by avoiding bad hires, applying best practices, and accelerating your projects.