Multiple Successful Paths

I listened to an older Software Engineering Podcast episode with Josh Wills this morning while running. Hearing from the first director of data engineering at Slack was insightful and engaging with some of his spicy takes! A big idea is that approaches that look opposite on the surface can both work out if executed well. We should learn from others’ experiences and not disregard them since they don’t line up with ones that have brought us success personally....

October 20, 2023 · 2 min · Daniel Adams

Framework-ish Dependencies

In software development, we generally must use dependencies to efficiently get more complex functionality we don’t want to write ourselves. However, there are some types of dependencies that prove to be more painful when maintaining software than others. Fewer dependencies leads to less upgrade work including less security vulnerability remediation work. Below I rank categories of dependencies with respect to the likelihood to have coupling issues during framework upgrades. The Dependencies Good: broadly adopted, well-maintained dependencies that provide necessary functionality orthogonal to the framework (Spring Boot) AWS SDK , MapStruct , JAXB used in another project Not ideal, but necessary: coupled to the framework, but necessary functionality SpringFox for OpenAPI spec generation Probably not necessary: small uses of convenience functions or premature optimizations Pulling in the full Apache Commons Collections just for CollectionUtils....

October 14, 2023 · 4 min · Daniel Adams

Influence or Persuasion?

I was given the book Influence by a coworker to help me work on leadership skills. She warned me that the book bordered on the social engineering side of influence. Boy, was that correct! The book goes into our natural instincts and reactions to others’ behavior and how those patterns can be leveraged. One thing I thought was interesting and underscored the real-life applications of these theories were the studies referenced in the book....

October 7, 2023 · 3 min · Daniel Adams

Hammock Driven Development

…Or how good ideas sometimes come in the middle of the night. An episode of the Big Ideas in App Architecture podcast introduced me to a set of talks by Rich Hickey. I think it was this one with Joe Lynch? Rich’s talks were Simple Made Easy and Hammock Driven Development . Both were insightful regarding what mindset to invoke when creating software. The premise of hammock driven development is that thinking about a topic over a long enough period of linear time causes the subconscious mind to prioritize it....

September 26, 2023 · 4 min · Daniel Adams

Blog Search and Premature Optimization

Head over to the search page to try out the newly added search feature! Hugo has a docs page on search options. Most solutions leverage lunr or fuse, both JavaScript client-side libraries. This theme, Papermod, supports search with fuse.js via Hugo’s native JSON output format. When enabled JSON output, I noticed file index.json had the full-text content of all blog posts. Fuse.js pulls this JSON client side and performs a fuzzy search on the content....

September 21, 2023 · 2 min · Daniel Adams

Decision-Making Value Systems

Kishore Koduri: “Autonomy, Mastery, Purpose” Will Larson: “Company, Team, Self” I find analyzing decision-making values systems thought-provoking. Most times they are orthogonal to each other and tend to give a fuller picture when taken together. The interesting point with this set is the value of Autonomy. Autonomy to do what? Autonomy is closely related to trust. When someone gives you trust, you must steward it appropriately. In several Staff+ engineering books I’ve read, a common theme is that with increased autonomy comes increased responsibility for alignment....

September 14, 2023 · 2 min · Daniel Adams

Staff Engineer by Will Larson

Last weekend I was painting the boys’ room and signed up for an Audible trial for some longer-form content than my typical podcasts. I’m not the fastest painter, clocking about 5 hours for cleaning, taping, and clean up and 6 for painting. By the end, the room looked great and the boys were very happy. As mentioned in a previous post, I’ll listen to Will Larson’s StaffEng podcast while driving to work....

September 9, 2023 · 7 min · Daniel Adams

IAM Assert Role

Back at the start of 2021, I delved into a small curiosity project around how to assert ownership of an AWS role to a non-AWS entity. I implemented an API Gateway Sigv4 signer in a Spring RestTemplate Interceptor . Later we integrated that design in a production app. That security integration has had zero issues since. As a thought experiment, I wanted to see if it was possible to use an IAM root of trust when calling other endpoints besides API Gateway....

August 31, 2023 · 4 min · Daniel Adams

System Dependencies

Cloud Service Dependencies To quote Werner Vogles, “Everything fails all the time.” When designing an app, we want to carefully evaluate what dependencies it requires. Cloud services are highly available, but the union of many can still lead to a measurable decrease in availability. Dependencies that are not absolutely necessary should fail open to allow the system to continue doing critical work. Below are two examples I have personally run into in the past couple of years....

August 24, 2023 · 5 min · Daniel Adams

The Man in the Arena

My Uncle Stephen encouraged me to read Theodore Roosevelt’s The Man In The Arena last summer. It has been in the back of my mind until I heard it mentioned again on a podcast alongside a list of influential biographies. I looked it up and found it was readable in just one night, so I pulled a “carpe noctem” and finished it. These quotes stand on their own, so my additions will be minimal....

August 14, 2023 · 6 min · Daniel Adams