Skip to main content

· 4 min read
Josh Kaplan

DevOps, a portmanteau of development and operations, is the concept of breaking down the boundaries between development and operations to create an environment that achieves faster feedback and enables teams iterate faster towards the right solution.

· 21 min read
Josh Kaplan

Abstract: The gap between formal and informal architecture is discussed with an emphasis on the need to leverage informal architecture artifacts for analysis. A new methodology for creating formal structured models from informal architecture artifacts is presented. The methodology is demonstrated using a sample architecture diagram and the resulting model is analyzed using graph analysis techniques.

· 8 min read
Josh Kaplan

I've been using TypeScript more and more lately. And I don't like it. I've found that I spend more time fixing type mismatch errors than I save by having a strongly typed variant of JavaScript. However, I am commonly in the minority opinion among my teams. In this article, I'll explore why that is, how to better leverage TypeScript's typing system rather than treating like annotations on top of Javascript, and I'll go through some hands-on examples based on a few real-world cases we recently encountered.

· 5 min read
Josh Kaplan

Spectra, originally Peer Review Insights and Student Metrics (PRISM), is a data engineering and data science project to support engineering student capstone programs.

In 2022, we migrated from manually collecting less than 40 data points per student team to to automatically capturing over 8000 data points across >60 teams per semester. Once we validated the approach at the end of 2022, we spent the first half of 2023, rewriting the system for better modularity to enable for rapid support of new use cases and analysis.

· 8 min read
Josh Kaplan

Capacity margins are a fundamental aspect of successful Agile implementations, particularly within the context of the Scaled Agile Framework (SAFe®). In essence, capacity margins refer to the intentional allocation of surplus resources and time beyond the estimated requirements for Agile projects. As Agile methodologies gain prominence in modern software development, capacity margins serve as a safety net, allowing teams to effectively handle unforeseen challenges, fluctuations in workload, and uncertainties that are inherent in complex development endeavors. By maintaining capacity margins, Agile teams can avoid the risk of overloading their resources, prevent potential bottlenecks, and retain the agility necessary to adapt to changing requirements or market demands.

· 4 min read
Josh Kaplan

After spending a year building a software & systems architecture platform, I learned several things. First, no one does architecture the same way. In fact, the feedback we got about what different teams want out of an "architecture" tool was so wildly different that it was the primary reason we stopped pursuing that project.

Second, some teams value data-driven architecture (i.e. more formal architecture models that support things like code generation or system analysis) while others value not having prescribed structure and syntax. But every team values ease of use. One of the top pain points we identified among all of teams we talked to was that thorough architecture wasn't easy enough.

As a result, most teams use informal approaches to define architecture. Informal "boxes and lines" diagrams are used by every team even when formal architecture artifacts such as models are expected.

· 6 min read
Josh Kaplan

In preparation for our upcoming pilot bootcamp, I've been working on a few programming challenges. Since we're challenging our bootcamp participants to learn a new language as part of this effort, I thought I'd do the same and finally begin exploring Rust.