Design Driven Design builds feedback loops that allow for continuous improvements to open source projects during each pull request. The loops are: Design Writing informs Feature Testing which in turn informs the Design, Feature Testing informs Unit Testing which in turn informs the Feature Testing, Unit Testing informs Design Writing which in turn informs the Unit Testing. These loops form seams for collaboration across partners or for self-re-evaluation at mindful points in the process to maximize success.
Articles tagged with FormaK
Superoptimization - New FormaK Experiment Building
A new experiment for FormaK has landed: Superoptimization. Instead of individual peephole optimization, the experiment prototypes using search and a model of the CPU to find the optimal ordering of all operations.
Hyperparameter Selection - New FormaK Feature Building
A new feature for FormaK has landed: Hyperparameter selection. Automatically select optimal parameters based on data from the modeled system.
FormaK Tooling: Documentation Building
FormaK implements a new documentation builder to make documentation much easier to navigate and look better too.
The Simplify Speedup Experiment Building
Over multiple iterations of improving FormaK (reference IMU model rocket model, the original Python code generation), I've wanted to leverage the power of Sympy to provide efficient implementations of symbolic concepts before converting to Python or C++. The tool for this job is
simplify
. With one call, it can simplify polynomials, simplify trigonometry and other approaches. Combine this with Common Subexpression Elimination and we have a powerful pair of tools to write efficient code regardless of the model. There's just one problem: Sympy can be incredibly sluggish for some functions. Each call can take 10s of seconds. These 10s of seconds can stack up to minutes of time spent waiting and hoping for a result. For this experiment, I take some time to dive into what's going on and try to understand why it can be so darn slow sometimes.Behind the Scenes of the Strapdown IMU Reference Model Building
A new feature for FormaK has landed: the Strapdown IMU Reference model. The model is now available for inclusion into new models and use as a reference for implementing future models. This post covers some of the aspects of the design and development that didn't make it into the final design and feature.
Strapdown IMU Reference Model - New FormaK Feature Building
A new feature for FormaK has landed: the Strapdown IMU Reference model. The model is now available for inclusion into new models and use as a reference for implementing future models.
Innovation Filtering - New FormaK Feature Building
A new feature for FormaK has landed: Innovation filtering. Automatically make Kalman Filters more robust.
FormaK Runtime - New FormaK Feature Building
A new feature for FormaK has landed: The FormaK runtime. The first tool in the runtime is a Managed Filter that handles coordinating process and sensor updates.
AST Code Generation - New FormaK Feature Building
A new feature for FormaK has landed: improved model generation by leveraging a subset of the C++ Abstract Syntax Tree
Calibration - New FormaK Feature Building
A new feature for FormaK has landed: generating models with calibrated sensors
FormaK Week in Review 2023-01-13 Building
It's been a little while since I last wrote about Formak ( FormaK Under The Hood: Optimization for scikit-learn integration , Sat 08 October 2022). Since then, I've been busy adding functionality to FormaK and I've also been improving the tooling for the project, inspired by Boring Python: code quality. The latest piece of functionality is the C++ code generation. The PR is in progress, but the initial experiments have proved out that the generation pipeline is feasible and able to be integrated into bazel.
CPU Modeling: First Order Latency and Data Dependencies Building
This post is a new episode in a miniseries focused on modeling the workings of a CPU to use for generating optimal code. This post focuses on taking a sequence of instructions and simulating their results while respecting the latency of each instruction execution and data dependencies between instructions.
SIMD and Graphs: Partitioning Graphs into data-dependency levels Building
This post is a new episode in a miniseries focused on SIMD instructions. This second post focuses on fusing common single operations across multiple data
SIMD and Graphs: Graph Matching Building
This post is a new episode in a miniseries focused on SIMD instructions. This first post focuses on matching points in the compute graph where we can combine individual instructions to form SIMD instructions.
FormaK Under The Hood: Optimization for scikit-learn integration Building
For the new scikit-learn feature, let's dive into how the model gets fit to data.
FormaK Tooling: CI Building
FormaK implements CI for new commits as of PR #4 via GitHub Actions
FormaK Coming Soon: Scikt-Learn Integration Building
There's a new feature coming to Formak: integration with sckit-learn. This enables quickly integrating new features such as model selection, pipelines and other data tooling.
FormaK: Python Code Generation Building
The second feature for FormaK landed: generating Python models
FormaK: User Interface Building
The first feature for FormaK landed: the user interface!
FormaK User Interface Experiment: Physical Units as Python Types Building
Using Python's type checking to check for mismatched physical quantities
I Love Bazel, I Hate Bazel Building
I love Bazel. It's one of those satisfying tools where computer science algorithms and data structures fuse with good software practice to create something that's satisfying on many levels. It knows how to minimally rebuild things. It knows how to hermetically build things in a repeatable way. I also hate Bazel.
30 for 30: Open Sourcing "FormaK" Building
Starting live development of a new open source project