Code Generation

Using software that makes software is like having super powers

These videos are intended for software developers, engineers, analysts, shell-scripters, and data engineers to gain an understanding of code generation and it's impact across the software space, and presents high-level ideas on places it can be used today.

There is a lot of theory and ideas in these videos, but they're short on demo, and there's no code.  

Available now - if you want to start using a powerful cli-code generator today: pip install hmd-cli-mickey. It's the same code generator the NeuronSphere platform uses, available under the Apache 2.0 license.  

1.0 - Overview and Brief History

  • Code Generation is everywhere in software
  • There is broad variety of code generators
  • Learning this will make you a better developer

 

1.1 - General Code Gen Structure

We'll introduce the example Person and Bike using "simple config" and talk through the logical flow and major elements in a code generating pipeline

1.2 Looking at a few high-level challenges

Switching to using structured text as an input, we develop more detailed examples of outputs.  Type systems and common challenges are introduced.

1.3 Reuse and Extensibility Considerations

Reuse and extensibility take on a few forms when considering the primary code generation use cases, which we explore here.

1.4 Reuse and Extensibility concerns

Is your code generator a specific saw or a swiss-army knife?  Can you add a new attachment later?

1.5 - GUIs, Visual modeling, and metadata extraction

They're so pretty, and easy to get started with.  Let's dig into considerations for visual modeling.  Closely related, we'll also cover 'metadata extractors'

1.6 SDLC, CI/(CDD), and Integration/Usage

How does code generation fit into the SDLC?  What if we're doing CI, or CD?

How many ways can you interface with or extend a code generator?

1.7 - SQL Models and SQL Generators

Relational structure generation is a complete subclass of tools.  Finally we'll talk about dbt, a little bit.