Showing posts from June, 2021

Thoughts on Internal Complexity

Complexity is something that needs to be managed down and is an eternal battle. Part of the battle is to stay away from the style and cosmetical changes. Can we really get 100% of style discussions? Even removing discussions of 2-4 tabs, there will be some form of style on the discussion because every engineer has a background towards JEE, Spring, or Functional. That's a greater generalization, and there are other "design schools" over there but still quite common to find people within these 3 backgrounds. A Philosophy of Software Design is a great book that explains what complexity means. In the book, complexity is mainly described as "Obscurity," something that is not readable and has a high cognitive load to be understood. IMHO some problem spaces require you to have some background and experience on how some problems are solved; otherwise, it might look the worst they actually are. Complexity discussion often hard since lots of engineers have high EGO and h


Cloud Development Kits are becoming very popular. Terraform, Cloud Formation, and many old solutions in the sense of infrastructure provisioning support CDKs. All infrastructure provisioning started as an OPS-ish thing, and often developers/engineers were far away from that. Terraform did a good job of being declarative for OPS and being simple and easy for developers. However, today there is a push to have provisioning happening into multiple programming languages such as Python, Javascript/Typescript, and even Java. Mainly to be more developer-friendly and really on the power of established programming languages. There are a bunch of CDKs popping up nowadays. However, CDKs have a price, code generation, and underlying complexity. Today, I have a slide cast and 2 code demos to show you CDKs more detail and compare them with standard solutions like Terraform. Let's get started!

Java Properties Deep Dive

Properties are around since java.  Properties are a persistent form of K/V pair which is mainly used for configuration. Configuration can be extrapolated all the way down to Feature Flags, Feature Toggles, and Canary. Java properties are cool because they are a simple API that allows you to do simple and yet powerful programing around them. There are 2 interesting projects enhancing properties such as Apache Commons Configuration and Netflix Archaius . These projects are pretty cool and give you killer functionally however the Java Stand SDK can also be pretty powerful if you have enough creativity and know-how to use it. So today I want to share a video exploring the Java Properties API in Depth showing how we can do some pretty powerful and simple configuration management for Dynamic Configurations, Feature Flags, Toggles, and more. So Let's get started!

My 2 Cents on "On the Diverse And Fantastical Shapes of Testing"

I want to share my cents about the post: " On the Diverse And Fantastical Shapes of Testing ". First of all, I believe this is a very interesting subject and yet still see very few engineers talking about it. People mostly take tests for granted. Secondly, I would like to acknowledge the parts I agree with on this post mainly around the concept of Sociable and Solitary Unit Tests are quite useful and show be widespread. Also with the need for teams to have reliable, fast, Bounded(Isolated) and not Flacky on Justin tweet . Now that I acknowledge that, let me elaborate on what I think we are missing and why IMHO the pyramid is dated and we need a mentality shift. I have 4 points I want to elaborate on and give more context.