Posts

Showing posts with the label dynamic

Java Properties Deep Dive

Image
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!

Teams Evolutions

Image
Every company out there works with teams. There are all sorts of teams such as teams specialized in technology stack like Hadoop or teams which are domain-driven and have cross disciplines( Cross-Functional Team ) inside such as backend, frontend, QA, UX, Architecture, and more. People don't leave companies they leave teams, also it would be accurate to say that people don't join companies and they join teams. So should we have dynamic or static teams? Should teams self-assemble or should we have PMO doing that? Should the teams be stable or should we allow dynamic reteaming? Is work always fitting well in our team's structure? What about Platform vs product teams, which one is best? Should we just pick one model or should we use different models? Should engineers organize around managers or managers organized around engineers? Teams affect Architecture and our perception of ownership. Teams should be a people organization but often is just a grouping of people where everyb...

Advanced Reflection in Java

Image
Reflection is a killer feature in Java Language. It's a technique that combined with annotations and interfaces allows us to do Dynamic and Generic programming which could be complete abstractions or even customizable callbacks. Reflection allows us to do Dynamic discovery in sense of Types, Methods, Fields, Methods, and Annotations. People often couple Annotations with Aspects or AOP. You do not need Aspect you dont need AOP in order to do Generic and dynamic programming using Annotations. Today I want to share a simple POC I made to show the power of annotations combined with Reflection. We will do a 2 layer abstraction pattern. The first level is more generic and the second level allows customization. So Let's get started.