This is my first post in about 10 months. I wanted to write, but I didn't have the energy or interest. I had been working some larger content (like the working with repositories series) but ran out of energy towards the end. I was constantly considering finishing it but a time never came up and things were continually punted down the road. At the same time, my growing distaste for the Ruby language and it's ecosystem soured me on writing about and trying to teach people how to architect their applications in a better way. On top of that things had drastically changed for me professionally around the time I stopped blogging. I was promoted to platform team lead and put in charge of managing a technical rewrite that grew into an entire re-invisioning of a 3 year old product. After a large amount of hard work, over time, and personal investment that's finally winding down. This engineering effort provided my test bed for my new ideas on system architecture and sure as hell taught me a lot about software management, process management, product design, and whole ton of other shit. It's been interesting experience and I've had some time to reflect on my ideas, implementations, and learning experiences. I want to share some of these things with you.
At this point, I'm still soured on the ruby ecosystem and many of the ideas & practices. So don't expect to find any in depth Ruby content from me anymore. I'd like to finish the working with repositories series since I have that code in production for a few years now and put through many different use cases. (I've also made some commits to Chassis and have been collecting larger changes based on professional experience). However, I'm still actively writing ruby in my own way and still doing FOSS ruby gems if you know where to look. I think my work from this point will be more language agnostic and focused on software engineering process and high level system design. Here are some things I've had on my mind recently:
- Thrift, Thrift, Thrift, & more Thrift!
- Fundamentally insane practices of the wider ruby community
- "Adam's Principles of Holistic System Design": trade offs, optimizations, and considerations for building large systems and their components
- The Big Rewrite (hint: don't)
- Docker & VMs for a polygot workflow
- Docker Orchestration (creating images is easy, shipping containers is the real challenge)
- Make is Great (& why I no longer use rake)
- Out of process & network testing
- Sane HTTP & JSON APIs with JSON schema
- Perspectives going from general developer to team lead (e.g. into "management")
- Virtualized & dockerized environments
There's probably more, but that's what I've had rattling around my brain for the last 6 months or so. I'm looking forward so sharing this stuff with you once I recover and gain some more energy. For those of you how asked me questions on architecture, chassis, and many other coding concerns, I'm sorry I could get back to you. Shoot me an email again I'll see what I can do.
— Adam Hawkins