Have you ever wrestled with a problem in your mind and then, while trying to explain it to someone else, had an epiphany of how to solve it? This has happened to me on numerous occasions. Or have you ever jumped in to develop some code for a piece of business logic that you felt…
Read more…
In my first post of this series, I discussed how ambiguity and lack of shared understanding between members of a product development team can occur when we rely on unstructured, ad hoc, and abstract communication processes (i.e., conversations and high-level user stories) for expressing our thoughts and ideas. We feel like we are painting a…
Read more…
I was recently re-introduced to one of my favorite essays, Why We Should Build Software Like We Build Houses, by Leslie Lamport. Leslie is one of several thought leaders within our industry who I really admire, both for his insights into the nature of software design as well as for his contributions in terms of…
Read more…
Amazon Web Services (AWS) makes many common cloud services easy to create and maintain. One of the many AWS services really makes easy is supporting authentication. One of them, Cognito, is a platform for authentication within the cloud. Let’s walk through how to use Cognito along with AWS’s Amplify service to create an Angular application…
Read more…
Web development often involves a few components. First is developing the markup (HTML) that runs in a web browser. Second is developing the application style, which is often done using CSS. Third is some client-side application logic, possibly written in JavaScript. Fourth is a backend running on a server somewhere. One interesting aspect of web…
Read more…
Continuous Integration (CI) is a strange concept from the perspective of an outsider. Some of our topics in software development make sense from the outside. Unit tests imply we are adding some value to our development process. Requirement gathering makes sense to almost anyone. But the concept of Continuous Integration seems a little bit like…
Read more…
Progressive Web Applications (PWAs) are kind of the new hotness right now. Lots of chatter, but most probably can’t even spell PWA. 😉 PWAs are an attempt to create applications that live in the web browser and behave like real applications. Let’s take our Angular HTTP Call example and make it into a PWA. To…
Read more…
These days, Async / Await is old hat for most C# developers. Using it in C# land makes async programming almost as readable as synchronous code. What is the difference between synchronous and asynchronous code? Quite frankly, you can read synchronous code and asynchronous code, but it is kind of a mess. With asynchronous code,…
Read more…
As we near the end of another year, it’s time to look back at what our team has contributed to the Don’t Panic Labs blog. Usually, we just cover what was published on our blog, but 2018 saw the launch of Doug Durham’s own site and blog. In late September, he began a three-part series…
Read more…
Dependency inversion is a common software engineering concept. It is the D in SOLID. With DI we are intentionally not programming against a particular implementation. Often this manifests itself by passing the implementation into a service through its constructor. This is called constructor injection. Angular uses constructor injection within its architecture. Services are injected into…
Read more…