Data Science, Complex System Modeling, BlockScience, Token Engineering, Algorithms

Announcing cadCAD 1.0: Foundations for a New Era of Open Modeling


Community Update — cadCAD 1.0 Launch, Upcoming Bounties & New Model Collaboration Tools

The cadCAD ecosystem is evolving and expanding — both cadCAD’s core tech and the open source community around it are leveling up! In this community update, we introduce cadCAD 1.0’s impending release — the high level details of its new programming methodology, notable features and benefits, as well as its connections to algorithmic policy design and Computer-Aided Governance.

On the community side, cadCAD is undergoing registration as a non-profit and preparing bounty programs to seed growth in model testing and development, education and operations, and is now receiving support from newly launched BlockScience Labs.

Why the World Needs Open Modeling

Many of the world’s most influential systems — from social media to justice, transportation systems to healthcare — are guided by machine learning algorithms programmed in black boxes with little or no oversight (Fry, H. Hello World). A lack of access, transparency and accountability has led to our deepening “algorithmic dependence”, creating fractured information streams and trust in society (Zargham, M. & Nabben K. Algorithms as Policy). In an era so profoundly affected by algorithmic policy design, it is more important than ever to promote education around these topics and support the creation, iteration and maintenance of open source data science tools, technology, and information systems that have the capacity to open and illuminate these “black boxes.”

cadCAD (complex adaptive dynamics Computer-Aided Design) is one such tool that facilitates more democratic algorithmic policymaking. The Python-based modeling framework for research, validation, and Computer-Aided Design of complex systems was developed out of a need for engineers and scientists to have more flexibility in describing complex systems at various levels of abstraction, to design and analyze systems capable of adapting to uncertainty and adversarial conditions.

The cadCAD framework is robust enough to be applied to any field, but is especially effective for technology mediated social and economic networks, and the exploration of how design decisions can affect various stakeholders, information, capital and other flows — both in the design and analysis of complex systems.

The ability to produce and reproduce models, create simulations based on different parameter selections or agent behavior at a highly granular level while preserving data fidelity is crucial. This capacity will not only allow for more insight in understanding dynamical systems and networks, but will enable engineers, programmers, scientists and businesses to better understand the possible ripple effects and design trade offs of the systems they create, which will enable them to make more conscious and informed decisions. In the public policy realm, tools like cadCAD can also help to support broader data analysis and a shared basis for collective reasoning. Shedding light into these engineering processes and having powerful tools like cadCAD will help facilitate Computer-Aided Governance (CAG) and forthcoming CAG-related processes.

cadCAD 1.0 Launch

cadCAD 1.0 is a rewrite of the existing cadCAD engine, intended to be used as a reference implementation of the cadCAD formal specification. The new cadCAD will further enable an era of open modeling and more systemic, data-driven and inclusive decision making in complex systems.

The upgraded modeling framework is the culmination of years of work by a distributed team of systems and software engineers and data scientists. They saw and experienced the need to simplify and better organize code for modeling and simulation. They wanted more flexibility and modularity in the way it is represented, to reduce friction and use something more design methodology oriented; something that could componentize building blocks of code into a rigorous scientific framework where they could be “wired together” or deconstructed in ways that acknowledge complexity whilst honoring simplicity and abstraction.

Diagram by cadCAD Product Manager Dr. Michael Zargham, showing a closed loop `dynamic`, made by “wiring” blocks of code together where the “wires” represent spaces. Spaces encode data structures ensuring such diagrams can be converted to valid code using cadCAD.

Custom Code Organization for a New Paradigm

Building what they needed as they went and bootstrapping off of their own work, the team’s work has resulted in a custom built programming methodology dubbed Spatio-Temporal Programming, a blend of object and function oriented programming that also introduces the notion of space, mathematically, in the code. In other words — a programming framework from first principles that translates math into a software process.

“This approach is not so much new as renewed; it takes its formal structure from block diagrams, which are generalizations of circuit diagrams which are used to represent how a system processes information.

One major difference between our Block Diagrams and the canonical ones used in electrical engineering, is that we work predominantly with discrete rather than continuous systems; as a result our block diagrams transfer functions are expressed as input-output transformer in state-space rather than in the Laplace Domain, resulting in increased legibility. This structure allows us to organize our system models as “blocks” of code representing interconnected primitives which may drawn from any field of interest to the modeler.”

- Dr. Michael Zargham, cadCAD Product Manager, Core Tech Working Group
Spatio-Temporal Programming embeds the concept of space from mathematical first principles to allow code sets to be bundled into “blocks” in order to examine various state variables.

Spatio-Temporal Programming accounts for a major and important dimension in dynamical systems — space — so that different “blocks” can be isolated and experimented with to analyze various elements such as dynamics, agent dynamics, parameter spaces, mechanisms, etc.

Blocks are one-way relations between spaces; they may be interpreted as discrete transfer functions or what a big-data engineer would call a “transformer”. Blocks (or collections of blocks) that map from a space back to the same space can be interpreted as dynamical systems. Diagram by Dr. Michael Zargham.

This way of organizing code allows for more degrees of freedom and granularity, and better overall documentation (especially that of queries and assumptions), whilst better supporting data fidelity and provenance. The way code is organized in cadCAD 1.0 can extend beyond Python, so the cadCAD framework can now also be translated into various programming languages, several of which are already in the works.

In addition to the code structure overhaul, cadCAD 1.0 will also feature improved UI/UX that will make it easier to use. Interface upgrades will lay out more distinct paths for system designers and model builders creating simulations that are reproducible, and system analyzers and scientists running experiments via open versioning and validation.

Combining and iterating open source models will enable systems thinkers and data scientists to collaborate on commonly encountered classes of problems across a range of disciplines.

The core tech team continues to explore and expand the possibilities of the new architecture of the cadCAD 1.0 framework, and looks forward to experimenting with the possibility of running second order models and fully reproducible open source experiments with identical data, instantiation and seed parameters in the future as the tech and other data tools progress.

The new code base will be released before the end of Q1 this year, and while there will be no further official releases for the soon to be legacy 0.4.28 version of cadCAD, the core tech team will continue to provide support for those running that version and those transitioning to the upgraded cadCAD 1.0.

An Expanding Ecosystem

Since BlockScience open-sourced cadCAD in August of 2019, an ecosystem has coalesced around the mission of making open modeling more widely available and its importance understood. The cadCAD community is grateful for the countless volunteers and organizations that have contributed to the body of work and education supporting it including BlockScience, Commons Stack, Token Engineering Community, Academy & Commons, cadCAD Edu, as well as the welcome contributions of the newly launched BlockScience Labs.

BlockScience Labs is developing software combining cadCAD with other best in class open-source toolkits to create an enterprise suite that can manage data science pipelines for complex system design and analysis. Labs will support cadCAD core tech, education and partnerships, and Labs software will remain up to date and fully compatible with cadCAD 1.0 and future version updates. For cadCAD users, that means no more compatibility issues with older cadCAD models! 🙌

Get Involved in #OpenModeling with cadCAD Bounties!

To further engage the cadCAD community, cadCAD contributors have been working on a bounty program that will disperse donations raised through Gitcoin grants to fund further education and cadCAD model development. Stay tuned for an update on forthcoming bounty processes, and how you can get paid to contribute to the future of #OpenModeling!

cadCAD is also in the process of registering to become a 501c3 non-profit organization and is looking for contributors to support ongoing operations and community management.

cadCAD supporters are eager to continue improving the cadCAD codebase, build on the model library, and grow the community of data scientists, complex system modelers, educators, communicators and community builders who can document, maintain communication channels and nurture the growth of the community.

Join Our Next Community Call

Community calls are every first Wednesday of the month and alternate between Europe and Asia time zones. 🤖 Add the full cadCAD calendar to yours.

Weekly on Tuesdays 5pm-6pm UTC

Bi-weekly on Wednesdays at 6pm-7pm UTC

Read More About the History of cadCAD

Introducing Complex Adaptive Dynamics Computer-Aided Design (cadCAD) June, 3 2019

cadCAD: Filling a Critical Gap in Open-Source Data Science June 12, 2019

cadCAD Community Update March 23, 2020

cadCAD Gets a New Github Org June 22, 2020

🕸Site | 👥 Discord | 🐦Twitter | 🗺️ Intro to cadCAD | 👩‍🎓 Beginner Course | 🎥 YouTube | 🤖 Github | 📚 Forum | ⌨ Telegram

This article was written by Jessica Zartler, synthesized from input by — and with special thanks to — Dr. Michael Zargham, Jeff Emmett, Tyler Mace, Chris Catoya, Chris Frazier, Peter Hacker, Kelsie Nabben, and Burrrata.

You've successfully subscribed to BlockScience Blog
You have successfully subscribed to the BlockScience Blog
Welcome back! You've successfully signed in.
Unable to sign you in. Please try again.
Success! Your account is fully activated, you now have access to all content.
Error! Stripe checkout failed.
Success! Your billing info is updated.
Error! Billing info update failed.