Manifesto

https://guitarvydas.github.io/2021/09/23/Manifesto.html


Newer Blogs

Articles written after Dec. 01, 2021 appear at https://guitarvydas.github.io


TOC Diagram

Image

TOC URLs

Manifesto

Manifesto

Manifesto

Manifesto

Free Your Mind

Free Your Mind

Disclaimer

Disclaimer

META

META

Introduction 

Introduction 

Table of Contents May 24

Table of Contents May 24

Table of Conents May  13

Table of Conents May  13

Takeaways

Takeaways

(Programming - The Good Parts and The Bad Parts)

Compiler Technology Takeaways 2

Compiler Technology Takeaways 2

API Takeaways

API Takeaways

Thinking is Hard, Coding is Easy

Thinking is Hard, Coding is Easy

WASM Transpiler Example

WASM Transpiler Example

Compiler Technology Takeaways 3

Compiler Technology Takeaways 3

Diagram Conventions

Diagram Conventions

DRY vs. RY

DRY vs. RY

Refactoring

Refactoring

Compiler Technology Takeaways

Compiler Technology Takeaways

Data Descriptors Takeaways

Data Descriptors Takeaways

First Class Functions - Takeaways

First Class Functions - Takeaways

Denotational Semantics Takeaways

Denotational Semantics Takeaways

Java Takeaways

Java Takeaways

Diagram Notation

Diagram Notation

Less Code

Less Code

Layers

Layers

Lisp Takeaways

Lisp Takeaways

Normalization

Normalization

Object Oriented Takeaways

Object Oriented Takeaways

Pattern Matching Takeaways

Pattern Matching Takeaways

Relational Programming Takeaways

Relational Programming Takeaways

Ssl takeaways

Ssl takeaways

Scalability 2

Scalability 2

Scalability Takeaways

Scalability Takeaways

Structured Programming Takeaways

Structured Programming Takeaways

UNIX Takeaways 2

UNIX Takeaways 2

UNIX Takeaways

UNIX Takeaways

Componentization: Measuring Success

Componentization: Measuring Success

Functional programming vs parsing

Functional programming vs parsing

Business Takeaways

Business Takeaways

Functional Programming - Takeaways

Functional Programming - Takeaways

Agile Takeaways

Agile Takeaways

Construction Industry Takeaways

Construction Industry Takeaways

Waterfall Takeaways

Waterfall Takeaways

Whiteboard Takeaways

Whiteboard Takeaways

Tricky Uses of Paradigms - Takeaways

Tricky Uses of Paradigms - Takeaways

Writing Less Code

Writing Less Code

Dataless Language

Dataless Language

Data Design vs Control Flow Design

Data Design vs Control Flow Design

Software Components 101

Software Components 101

Software components 101 

Software components 001 

Software components 101 connection queries 

Software components 101 connection queries 

Software components 101 engine development (part 1) 

Software components 101 engine development (part 1) 

Software components 101 engine part 2 diagram to text 

Software components 101 engine part 2 diagram to text 

Software components 101 engine part 3 factbase 

Software components 101 engine part 3 factbase 

Software Components 101 - Engine Part 4 Review 

Software Components 101 - Engine Part 4 Review 

Software Components 101 - Engine Part 5 Queries 

Software Components 101 - Engine Part 5 Queries 

Software Components 101 Part 6 Recap

Software Components 101 Part 6 Recap

Software Components 101 Part 7 - Visual Inspection

Software Components 101 Part 7 - Visual Inspection

Software Components 101 Part 8 - Ports

Software Components 101 Part 8 - Ports

Software Components 101 - Part 9 - What's Next?

Software Components 101 - Part 9 - What's Next?

Software Components 101 - Part 10 Tweaking the Grammar to Provide More Information

Software Components 101 - Part 10 Tweaking the Grammar to Provide More Information

Software Components 101 - Part 11 Starting Over

Software Components 101 - Part 11 Starting Over

Software Components 101 Part 12 Converting Indentation to Nesting

Software Components 101 Part 12 Converting Indentation to Nesting

Software Components 101 - Part 13 Identify Grsmmar Before Creating Factbase

Software Components 101 - Part 13 Identify Grsmmar Before Creating Factbase

Software Components 101 - Part 14 Checking the Rewrite

Software Components 101 - Part 14 Checking the Rewrite

Software Components 101- Part 15 Joining Components

Software Components 101- Part 15 Joining Components

Software Components

Software Components

LEGO® Software

LEGO® Software

Connecting Layers

Connecting Layers

5 whys of software components 

5 whys of software components 

Filereader 

Filereader 

Html components arrowgrams 

Html components arrowgrams 

Components (again) 

Components (again) 

Indirect calls 

Indirect calls 

Component diagrams 

Component diagrams 

Need to know 

Need to know 

Patterns 

Patterns 

Functions Are Not ASCs

Functions Are Not ASCs

Flows

Flows

ASC (Working Paper)

ASC (Working Paper)

Flows (Abridged)

Flows (Abridged)

The Atomic API

The Atomic API

Aynchronous Components Design Note

Aynchronous Components Design Note

Message Loops vs. Recursion

Message Loops vs. Recursion

The Bare Essence

The Bare Essence

Communicating State Machines

Communicating State Machines

Plug-Together Software Components

Plug-Together Software Components

Software Components - A Language For Distributed Processing

Software Components - A Language For Distributed Processing

Programming

Programming

Programming 

Programming 

The Big Red Button

The Big Red Button

Recursive Design

Recursive Design

Divide and conquer is recursive design 

Divide and conquer is recursive design 

Recursive design knowns and unknowns 

Recursive design knowns and unknowns 

Divide and conquer 

Divide and conquer 

Recursive Design, Iterative Design By Example 

Recursive Design, Iterative Design By Example 

Recursive design, iterative design by example (2) 

Recursive design, iterative design by example (2) 

DI - Design Intent

DI - Design Intent

DI - Design Intent 

DI - Design Intent 

Di design intent 

Di design intent 

Design Intent Lanuguage

Design Intent Lanuguage

Elements of DI (WIP)

Elements of DI (WIP)

Elements of a DI Drawing (WIP)

Elements of a DI Drawing (WIP)

Visual Programming

Visual Programming

Arrowgrams

Arrowgrams

Hello Wold As Diagrams (Working Paper)

Hello Wold As Diagrams (Working Paper)

Curse of the editor 

Curse of the editor 

DaS

DaS

Restricted thinking programming editors 

Restricted thinking programming editors 

Transpiling diagrams overview 

Transpiling diagrams overview 

Parsing and compiling diagrams 

Parsing and compiling diagrams 

Editor for gratoms 

Editor for gratoms 

Transpiling diagrams to code 101 

Transpiling diagrams to code 101 

Processes are state machines 

Processes are state machines 

Compiling diagrams 2 

Compiling diagrams 2 

Breaking free of the cell paradigm 

Breaking free of the cell paradigm 

Syntax Primitives 

Syntax Primitives 

Compiling Diagrams 

Compiling Diagrams 

Diagram based languages 

Diagram based languages 

Box And Arrow dsl for concurrency 

Box And Arrow dsl for concurrency 

Transpiling diagrams to code 101 

Transpiling diagrams to code 101 

DaS II

DaS II

Programmers’ UX

Programmers’ UX

PT Notes for TORLISP - Language Jam

PT Notes for TORLISP - Language Jam

Transpiling Diagrams to Bash

Transpiling Diagrams to Bash

On Diagram Notation

On Diagram Notation

Parsing Diagrams

Parsing Diagrams

Compiling Diagrams To Code

Compiling Diagrams To Code

Diagrams To Code

Diagrams To Code

Diagrams To Code Drawio To Triples

Diagrams To Code Drawio To Triples

Parsing Diagrams - DaS Workbench Overview

Parsing Diagrams - DaS Workbench Overview

Parsing Diagrams - Containment

Parsing Diagrams - Containment

Parsing Diagrams - Ports

Parsing Diagrams - Ports

Parsing Diagrams - Connections

Parsing Diagrams - Connections

Parsing Diagrams - DaS Workbench 1 Decoding Phase

Parsing Diagrams - DaS Workbench 1 Decoding Phase

Parsing Diagrams - DaS Workbench 2 Style Expander Phase

Parsing Diagrams - DaS Workbench 2 Style Expander Phase

Parsing Diagrams - DaS Workrench 3 Attribute Edider Phase

Parsing Diagrams - DaS Workrench 3 Attribute Edider Phase

Parsing Diagrams - DaS Workbench 6 Sort

Parsing Diagrams - DaS Workbench 6 Sort

Parsing Diagrams - Design Rules

Parsing Diagrams - Design Rules

Diagrams To Code - Inferencing

Diagrams To Code - Inferencing

Structure Design as Diagrams

Structure Design as Diagrams

Diagrams As Syntax Is Not Visual Programming

Diagrams As Syntax Is Not Visual Programming

Parsing Diagrams - DaS Workbench 4 Factbase Name Collector

Parsing Diagrams - DaS Workbench 4 Factbase Name Collector

Parsing Diagrams - DaS Workbench 5 Factbase Emitter

Parsing Diagrams - DaS Workbench 5 Factbase Emitter

Parsing Diagrams - Bounding Boxes

Parsing Diagrams - Bounding Boxes

Concurrency

Concurrency

Concurrency is not parallelism 

Concurrency is not parallelism 

Box And Arrow dsl for concurrency 

Box And Arrow dsl for concurrency 

Call return spaghetti 

Call return spaghetti 

Concurrency is a paradigm 

Concurrency is a paradigm 

Javascript concurrency 

Javascript concurrency 

Multitasking is easy 

Multitasking is easy 

5 whys of full preemption 

5 whys of full preemption 

5 whys of multiprocessing 

5 whys of multiprocessing 

Sequencing 

Sequencing 

Concurrency bare bones 

Concurrency bare bones 

Html components handling callback logic explicitly 

Html components handling callback logic explicitly 

The problem 

The problem 

Blocking 

Blocking 

Breaking out of synchronous thinking 

Breaking out of synchronous thinking 

Breaking long running loops 

Breaking long running loops 

Asynchronous Thinking

Asynchronous Thinking

Multitasking Faking

Multitasking Faking

Concurrency

Concurrency

CALL RETURN

CALL RETURN

Call return spaghetti 

Call return spaghetti 

CALL Violates Structured Progamming

CALL Violates Structured Progamming

Conflation of Parameter Delivery and Scheduling

Conflation of Parameter Delivery and Scheduling

Sequencing

Sequencing

Sequencing 

Sequencing 

Complexity

Complexity

Complexity ii 

Complexity ii 

Complexity 

Complexity 

Simplicity vs complexity 

Simplicity vs complexity 

Operating System in One Page

Operating System in One Page

Complexity vs. Simplicity

Complexity vs. Simplicity

Complexity, Causing Complexity

Complexity, Causing Complexity

Complexity vs Simplicity II

Complexity vs Simplicity II

On Building Compilers Multiple Views and Complexity

On Building Compilers Multiple Views and Complexity

ALGOL Bottleneck

ALGOL Bottleneck

The algol bottleneck 

The algol bottleneck 

Computing

Computing

Computing then and now ii 

Computing then and now ii 

Computing then and now 

Computing then and now 

New Breed hlls 

New Breed hlls 

Programmers vs humans 

Programmers vs humans 

The primary issue 

The primary issue 

Twenty milliseconds the magic number 

Twenty milliseconds the magic number 

Programming redux 

Programming redux 

What Is A Program?

What Is A Program?

IoT

IoT

PROLOG

PROLOG

Scheme to javascript 

Scheme to javascript 

Transpilers

Transpilers

Dsl manifesto 

Dsl manifesto 

Scanning and parsing overview 

Scanning and parsing overview 

Toolbox languages 

Toolbox languages 

Svg grammar 

Svg grammar 

Learning about compilers quickly 

Learning about compilers quickly 

Scls little languages playlist 

Scls little languages playlist 

Toolbox languages (2) 

Toolbox languages (2) 

Transpilation

Transpilation

Grok Workbench

Grok Workbench

Transpilation 101

Transpilation 101

On Transpilation

On Transpilation

Peg 

Peg 

Peg vs. other pattern matchers 

Peg vs. other pattern matchers 

Regex vs peg 

Regex vs peg 

Peg cheat sheet 

Peg cheat sheet 

Racket peg 

Racket peg 

Parsing vs regexing 

Parsing vs regexing 

Ohminsmallsteps 

Ohminsmallsteps 

PEG

PEG

Ohm-JS

Ohm-JS

PEG vs Lisp Macros

PEG vs Lisp Macros

Dlls 

Dlls 

Compile time and runtime 

Compile time and runtime 

Compile Time vs Run Time

Compile Time vs Run Time

Dsl in a day 

Dsl in a day 

How to design an scl 

How to design an scl 

Little language 

Little language 

SCN 

SCN 

Notation vs. DSLs and PLs 

Notation vs. DSLs and PLs 

SCN - Solution Centric Notation

SCN - Solution Centric Notation

Notation

Notation

Fbp is no Code for banking apps 

Fbp is no Code for banking apps 

Html is nocode 

Html is nocode 

No Code 

No Code 

No Code

No Code

Fbp v actors v erlang 

Fbp v actors v erlang 

The case for fanout 

The case for fanout 

FBP

FBP

Inspiration 

Inspiration 

S/SL - Syntax Semantic Language 

S/SL - Syntax Semantic Language 

Inspiration

Inspiration

Erlang v actors 

Erlang v actors 

Actors 

Actors 

Actors

Actors

Actors

Actors

Mathematics is not reality 

Mathematics is not reality 

Mathematics

Mathematics

Dependent Types

Dependent Types

Mathematics vs. Physical Reality

Mathematics vs. Physical Reality

Induction vs recursion 

Induction vs recursion 

Apl 

Apl 

Kill math 

Kill math 

Mathematics redux 

Mathematics redux 

Crass simplifications 

Crass simplifications 

Two stacks for every type 

Two stacks for every type 

Typing

Typing

Type stacks 

Type stacks 

Hierarchical  Types

Hierarchical  Types

Programming languages are skins 

Programming languages are skins 

Programming language design 

Programming language design 

Variable names not needed 

Variable names not needed 

Divide and conquer in pls 

Divide and conquer in pls 

Asking the right questions 

Asking the right questions 

Two Syntaxes For Every Programming Language 

Two Syntaxes For Every Programming Language 

PLs (Programming Languages)

PLs (Programming Languages)

The Trouble With UNIX

The Trouble With UNIX

Two Syntaxes For Each GPL

Two Syntaxes For Each GPL

Two Syntaxes for Every Language

Two Syntaxes for Every Language

Variable names are not good enough 

Variable names are not good enough 

Txl 

Txl 

Breaking long running loops 

Breaking long running loops 

Tags instead of names 

Tags instead of names 

PLD vs PLF (notes)

PLD vs PLF (notes)

Uncomplicated Programming Languages

Uncomplicated Programming Languages

Control Flow is Orthogonal to Data Structuring

Control Flow is Orthogonal to Data Structuring

Ry vs dry 

Ry vs dry 

RY (Repeat Yourself)

RY (Repeat Yourself)

Git could do more 

Git could do more 

RY - Repeat Yourself as a Programming Language primitive

RY - Repeat Yourself as a Programming Language primitive

Reuse 

Reuse 

Architectural archaelogy 

Architectural archaelogy 

Details kill 

Details kill 

Architecting, engineering and implementing software 

Architecting, engineering and implementing software 

Software Architecture

Software Architecture

Comments

Comments

Data Cleaving

Data Cleaving

Code is Cheap

Code is Cheap

Wish List for Software Architecture

Wish List for Software Architecture

Scalability ii 

Scalability ii 

Dependencies & Scalability

Dependencies & Scalability

Scalability 

Scalability 

Scalability

Scalability

Trees and Crosstalk

Trees and Crosstalk

Dags and Snippability

Dags and Snippability

Calculators vs. Networks

Calculators vs. Networks

Functional Programming with Exceptions

Functional Programming with Exceptions

Software Components (Abridged from Flows)

Software Components (Abridged from Flows)

Shuhari 

Shuhari 

Shuhari

Shuhari

State machine for javascript 

State machine for javascript 

State Machines

State Machines

State machines to javascript 

State machines to javascript 

Statecharts (again) 

Statecharts (again) 

Statecharts 

Statecharts 

StateCharts

StateCharts

Software development roles 

Software development roles 

Refactoring 

Refactoring 

Software ceiling 

Software ceiling 

Apple® refunded my money because of a bug 

Apple® refunded my money because of a bug 

Sofware kleenex® 

Sofware kleenex® 

Miscellaneous 

Miscellaneous 

Pure research vs applied research 

Pure research vs applied research 

What is programming 

What is programming 

One in how many out? 

One in how many out? 

How many inputs vs how many outputs? 

How many inputs vs how many outputs? 

Divide and conquer yagni 

Divide and conquer yagni 

Toe for software development 

Toe for software development 

Dynamic anything is bad 

Dynamic anything is bad 

Software Development

Software Development

Debuggers

Debuggers

Superposition 

Superposition 

What if making a compiler was easy? 

What if making a compiler was easy? 

Holy Grail of Software Development

Holy Grail of Software Development

The stack is a list 

The stack is a list 

The stack 2 

The stack 2 

The stack 

The stack 

The stack is a global variable (again) 

The stack is a global variable (again) 

The Stack

The Stack

Superposition 

Superposition 

Layered Design

Layered Design

Superposition 2 

Superposition 2 

Fractal design 

Fractal design 

Dataless programming language 

Dataless programming language 

Iterative Design

Iterative Design

Nesting and Scoping

Nesting and Scoping

Factbases 

Factbases 

Factbases 101 

Factbases 101 

FB - Factbases

FB - Factbases

Universal datatype 

Universal datatype 

Triples

Triples

Triples 

Triples 

Testing 

Testing 

Testing

Testing

Glue manual 

Glue manual 

Svg to code (1) 

Svg to code (1) 

Notation Example 

Notation Example 

ASON Notation Pipeline (building 7 passes) 

ASON Notation Pipeline (building 7 passes) 

Recursive design, iterative design by example (3) 

Recursive design, iterative design by example (3) 

Arithmetic Example in Ohm-JS and grasem 

Arithmetic Example in Ohm-JS and grasem 

Examples

Examples

ABC Glue

ABC Glue

Typed Packet

Typed Packet

Bootstrapping 

Bootstrapping 

Cps considered to be a goto 

Cps considered to be a goto 

Message passing 

Message passing 

State, analysis of 

State, analysis of 

Meta Programming 

Meta Programming 

Incompleteness 

Incompleteness 

Scoping static vs dynamic 

Scoping static vs dynamic 

Function or list? 

Function or list? 

Relational programming and the kitchen sink 

Relational programming and the kitchen sink 

Regex 

Regex 

Parsing Diagrams - Bounding Boxes

Parsing Diagrams - Bounding Boxes

Small Example of Interpreting and Compiling

Small Example of Interpreting and Compiling

Techniques

Techniques

Triples in PROLOG

Triples in PROLOG

Projectional Editing

Projectional Editing

Projectional editing 

Projectional editing 

Glue Tool 

Glue Tool 

Grasem Tool 

Grasem Tool 

Ohm Editor 

Ohm Editor 

Tools

Tools

PFR and PF

PFR and PF

Various Playlists 

Various Playlists 

Youtube Playlists

Youtube Playlists

Failure Driven Design 

Failure Driven Design 

FDD - Failure Driven Design

FDD - Failure Driven Design

Lisp

Lisp

Happy Path (Part 1)

Happy Path (Part 1)

Fdd example workflow 

Fdd example workflow 

Subdividing problems 

Subdividing problems 

Backtracking, mathematics, reversability, garbage collection, time Sharing 

Backtracking, mathematics, reversability, garbage collection, time Sharing 

Paradigms

Paradigms

First class functions 

First class functions 

Clojure 

Clojure 

Common Lisp

Common Lisp

Common lisp complexities 

Common lisp complexities 

Exhaustive search 

Exhaustive search 

Prolog vs kanren 

Prolog vs kanren 

Observation why relational programming works 

Observation why relational programming works 

Relational Programming

Relational Programming

Mutable variables and flags 

Mutable variables and flags 

Pattern Matching

Pattern Matching

Parsing vs fp pattern matching 

Parsing vs fp pattern matching 

Tokenizing 

Tokenizing 

Isolation

Isolation

Isolation  II

Isolation  II

Isolation III

Isolation III

Isolation IV

Isolation IV

The f**k program 

The f**k program 

The rain god 

The rain god 

Anecdote language learning

Anecdote language learning

Random Anecdotes 

Random Anecdotes 

Anecdotes

Anecdotes

Building a Language

Building a Language

Anecdote secretary vs. synchrony 

Anecdote secretary vs. synchrony 

Namespaces

Namespaces

Namespaces Working Paper

Namespaces Working Paper

Relative namespaces

Relative namespaces

Hierarchical Namedpaces

Hierarchical Namedpaces

Lisp 1.5 Memory

Lisp 1.5 Memory

Lisp (Frits van der Wateren)

Lisp (Frits van der Wateren)

PLUS Atom Lsip

PLUS Atom Lsip

FP (Functional Programming)

FP (Functional Programming)

Immutability

Immutability

Type Descriptors (Working Paper

Type Descriptors (Working Paper

Type DSL

Type DSL

Type DSL (SCN)

Type DSL (SCN)

Case Study - A Language of Types

Case Study - A Language of Types

Delegation is for Control Flow as Inheritance is for Data Construction (Working Paper)

Delegation is for Control Flow as Inheritance is for Data Construction (Working Paper)

miscellaneous

miscellaneous

Structured Editing

Structured Editing

TORLISP (Toronto Lisp Users Group)

TORLISP (Toronto Lisp Users Group)

Relations

Relations

machine readability

machine readability

Readbility

Readbility

ASON

ASON

ASON: Tokenizing

ASON: Tokenizing

Indentation to Braces (Case Study)

Indentation to Braces (Case Study)

Markdown for Code

Markdown for Code

Flipping Code

Flipping Code

Markdown To Code

Markdown To Code

Code Markdown to Bash

Code Markdown to Bash

Code Makdown to Structured Pseudocode

Code Makdown to Structured Pseudocode

Markdown for Design and Implementation (WIP)

Markdown for Design and Implementation (WIP)

ASTs

ASTs

AST Tree

AST Tree

Software Brainstorming

Software Brainstorming

Creativity

Creativity

Brainstorming

Brainstorming

Software Creativity

Software Creativity

Debugging

Debugging

Are Dynamically-Typed Languages Better For Debugging?

Are Dynamically-Typed Languages Better For Debugging?

Jetbrains MPS

Jetbrains MPS

JetBrains MPS - First Impressions

JetBrains MPS - First Impressions

Jetbrains MPS - Before I Look At It

Jetbrains MPS - Before I Look At It

Compilation

Compilation

Linkers

Linkers

VMs and JIT

VMs and JIT

Compilers Are Interpreters

Compilers Are Interpreters

Compilation Is An Optimization

Compilation Is An Optimization

Static Typing Is An Optimization

Static Typing Is An Optimization

White is Black Black is White

White is Black Black is White

Interpreters

Interpreters

Happy  Path

Happy  Path

Happy Path Culture

Happy Path Culture

Basics

Basics

Basic Circuits

Basic Circuits

Addressing

Addressing

Compilers vs. Interpreters

Compilers vs. Interpreters

Expressiveness

Expressiveness

How All This Stuff Ties Together

How All This Stuff Ties Together

Everything Is Digital

Everything Is Digital

Exercises

Exercises

Langjam Suggestion

Langjam Suggestion

SCN Development for Zodetrip

SCN Development for Zodetrip

Exercise Writing A Simple Interpreter

Exercise Writing A Simple Interpreter

Game Development

Game Development

Keying For Zodetrip

Keying For Zodetrip

Macros

Macros

Racket Macros

Racket Macros

Racket Macros (2)

Racket Macros (2)

Racket Switch Macro

Racket Switch Macro

Racket Peg Case Forms

Racket Peg Case Forms

PT Notes for TORLISP - PEG for Zodetrip

PT Notes for TORLISP - PEG for Zodetrip

The Software Atom

The Software Atom

The Software Atom

The Software Atom

Efficiency 

Efficiency 

Everything is an interpreter 

Everything is an interpreter 

Efficiency

Efficiency

Peformance

Peformance

Analysis

Analysis

Quote A

Quote A

On Designing a DSL

On Designing a DSL

Worlds (comments)

Worlds (comments)

Programming Languages and OSs Not Needed

Programming Languages and OSs Not Needed

Reinventing the Wheel

Reinventing the Wheel

Wheel Reinvention Jam

Wheel Reinvention Jam

References 

References 

References

References