Manifesto
https://guitarvydas.github.io/2021/09/23/Manifesto.html
Newer Blogs
Articles written after Sept. 17, 2021 appear at https://guitarvydas.github.io
Table of Contents Sept. 20, 2021
Diagram
Links
Recursive Design
Recursive Design
Divide and conquer
Divide and conquer
Divide and conquer is recursive design
Divide and conquer is recursive design
Recursive design knowns and unknowns
Recursive design knowns and unknowns
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)
Takeaways
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
Functional programming vs parsing
Functional programming vs parsing
First Class Functions - Takeaways
First Class Functions - Takeaways
Dataless Language
Dataless Language
Functional Programming - Takeaways
Functional Programming - 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
Takeaways
Takeaways
(Programming - The Good Parts)
Data Design vs Control Flow Design
Data Design vs Control Flow Design
Business Takeaways
Business Takeaways
Agile Takeaways
Agile Takeaways
Construction Industry Takeaways
Construction Industry Takeaways
Waterfall Takeaways
Waterfall Takeaways
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
Compiler Technology Takeaways 2
Compiler Technology Takeaways 2
Software Components 101
Software components 101
Software components 101
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
Connecting Layers
Connecting Layers
Software Components
Software Components
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
Aynchronous Components Design Note
Aynchronous Components Design Note
The Atomic API
The Atomic API
Flows
Flows
ASC (Working Paper)
ASC (Working Paper)
Flows (Abridged)
Flows (Abridged)
Functions Are Not ASCs
Functions Are Not ASCs
Message Loops vs. Recursion
Message Loops vs. Recursion
The Bare Essence
The Bare Essence
Communicating State Machines
Communicating State Machines
Software Components - A Language For Distributed Processing
Software Components - A Language For Distributed Processing
Plug-Together Software Components
Plug-Together Software Components
Programming
Programming
Programming
Programming
The Big Red Button
The Big Red Button
META
META
Introduction
Introduction
Table of Contents May 24
Table of Contents May 24
Table of Conents May 13
Table of Conents May 13
DI - Design Intent
DI - Design Intent
Di design intent
Di design intent
DI - Design Intent
DI - Design Intent
Elements of DI (WIP)
Elements of DI (WIP)
Elements of a DI Drawing (WIP)
Elements of a DI Drawing (WIP)
Design Intent Lanuguage
Design Intent Lanuguage
DaS
DaS
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 - Bounding Boxes
Parsing Diagrams - Bounding Boxes
Parsing Diagrams - Containment
Parsing Diagrams - Containment
Parsing Diagrams - Ports
Parsing Diagrams - Ports
Parsing Diagrams - Connections
Parsing Diagrams - Connections
Diagrams To Code - Inferencing
Diagrams To Code - Inferencing
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 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 - DaS Workbench 6 Sort
Parsing Diagrams - DaS Workbench 6 Sort
Parsing Diagrams - Design Rules
Parsing Diagrams - Design Rules
Transpiling diagrams overview
Transpiling diagrams overview
Restricted thinking programming editors
Restricted thinking programming editors
Parsing and compiling diagrams
Parsing and compiling diagrams
Editor for gratoms
Editor for gratoms
Transpiling diagrams to code 101
Transpiling diagrams to code 101
Box And Arrow dsl for concurrency
Box And Arrow dsl for concurrency
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
Programmers’ UX
Programmers’ UX
Structured Design as Diagrams
Structured Design as Diagrams
Diagrams As Syntax Is Not Visual Programming
Diagrams As Syntax Is Not Visual Programming
PT Notes for TORLISP - Language Jam
PT Notes for TORLISP - Language Jam
Transpiling Diagrams to Bash
Transpiling Diagrams to Bash
Visual Programming
Visual Programming
Arrowgrams
Arrowgrams
Curse of the editor
Curse of the editor
Hello Wold As Diagrams (Working Paper)
Hello Wold As Diagrams (Working Paper)
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
Multitasking Faking
Multitasking Faking
Asynchronous Thinking
Asynchronous Thinking
CALL RETURN
CALL RETURN
Call return spaghetti
Call return spaghetti
Conflation of Parameter Delivery and Scheduling
Conflation of Parameter Delivery and Scheduling
CALL Violates Structured Progamming
CALL Violates Structured Progamming
Sequencing
Sequencing
Sequencing
Sequencing
Complexity
Complexity
Complexity
Complexity
Complexity ii
Complexity ii
Simplicity vs complexity
Simplicity vs complexity
Complexity vs. Simplicity
Complexity vs. Simplicity
Complexity, Causing Complexity
Complexity, Causing Complexity
Operating System in One Page
Operating System in One Page
ALGOL Bottleneck
ALGOL Bottleneck
The algol bottleneck
The algol bottleneck
Computing
Computing
What Is A Program?
What Is A Program?
Computing then and now
Computing then and now
Computing then and now ii
Computing then and now ii
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
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
Transpilation 101
Transpilation 101
Grok Workbench
Grok Workbench
PEG
PEG
Peg
Peg
Ohminsmallsteps
Ohminsmallsteps
Ohm-JS
Ohm-JS
PEG vs Lisp Macros
PEG vs Lisp Macros
Parsing vs regexing
Parsing vs regexing
Racket peg
Racket peg
Peg cheat sheet
Peg cheat sheet
Regex vs peg
Regex vs peg
Peg vs. other pattern matchers
Peg vs. other pattern matchers
Efficiency
Efficiency
Efficiency
Efficiency
Everything is an interpreter
Everything is an interpreter
Compile Time vs Run Time
Compile Time vs Run Time
Dlls
Dlls
Compile time and runtime
Compile time and runtime
SCN - Solution Centric Notation
SCN - Solution Centric Notation
Notation
Notation
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
No Code
No Code
No Code
No Code
Fbp is no Code for banking apps
Fbp is no Code for banking apps
Html is nocode
Html is nocode
FBP
FBP
Fbp v actors v erlang
Fbp v actors v erlang
The case for fanout
The case for fanout
Actors
Actors
Actors
Actors
Actors
Actors
Erlang v actors
Erlang v actors
Inspiration
Inspiration
S/SL - Syntax Semantic Language
S/SL - Syntax Semantic Language
Inspiration
Inspiration
Mathematics
Mathematics
Mathematics is not reality
Mathematics is not reality
Induction vs recursion
Induction vs recursion
Apl
Apl
Kill math
Kill math
Mathematics redux
Mathematics redux
Crass simplifications
Crass simplifications
Dependent Types
Dependent Types
Mathematics vs. Physical Reality
Mathematics vs. Physical Reality
Typing
Typing
Two stacks for every type
Two stacks for every type
Type stacks
Type stacks
Hierarchical Types
Hierarchical Types
PLs (Programming Languages)
PLs (Programming Languages)
Programming language design
Programming language design
Programming languages are skins
Programming languages are skins
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
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)
The Trouble With UNIX
The Trouble With UNIX
Uncomplicated Programming Languages
Uncomplicated Programming Languages
RY (Repeat Yourself)
RY (Repeat Yourself)
RY - Repeat Yourself as a Programming Language primitive
RY - Repeat Yourself as a Programming Language primitive
Git could do more
Git could do more
Ry vs dry
Ry vs dry
Software Architecture
Software Architecture
Comments
Comments
Reuse
Reuse
Architectural archaelogy
Architectural archaelogy
Details kill
Details kill
Architecting, engineering and implementing software
Architecting, engineering and implementing software
Data Cleaving
Data Cleaving
Code is Cheap
Code is Cheap
Wish List for Software Architecture
Wish List for Software Architecture
Dependencies & Scalability
Dependencies & Scalability
Scalability
Scalability
Scalability ii
Scalability ii
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
Scalability
Scalability
Software Components (Abridged from Flows)
Software Components (Abridged from Flows)
References
References
References
References
Shuhari
Shuhari
Shuhari
Shuhari
State Machines
State Machines
State machine for javascript
State machine for javascript
State machines to javascript
State machines to javascript
StateCharts
StateCharts
Statecharts
Statecharts
Statecharts (again)
Statecharts (again)
Software Development
Software Development
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
Holy Grail of Software Development
Holy Grail of Software Development
What if making a compiler was easy?
What if making a compiler was easy?
Superposition
Superposition
The Stack
The Stack
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)
Layered Design
Layered Design
Superposition
Superposition
Superposition 2
Superposition 2
Fractal design
Fractal design
Dataless programming language
Dataless programming language
Nesting and Scoping
Nesting and Scoping
FB - Factbases
FB - Factbases
Factbases
Factbases
Factbases 101
Factbases 101
Triples
Triples
Triples
Triples
Universal datatype
Universal datatype
Testing
Testing
Examples
Examples
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
ABC Glue
ABC Glue
Small Example of Interpreting and Compiling
Small Example of Interpreting and Compiling
Techniques
Techniques
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
Projectional Editing
Projectional Editing
Projectional editing
Projectional editing
Tools
Tools
Glue Tool
Glue Tool
Grasem Tool
Grasem Tool
Ohm Editor
Ohm Editor
Youtube Playlists
Youtube Playlists
Various Playlists
Various Playlists
FDD - Failure Driven Design
FDD - Failure Driven Design
Failure Driven Design
Failure Driven Design
Fdd example workflow
Fdd example workflow
Subdividing problems
Subdividing problems
Lisp
Lisp
Happy Path (Part 1)
Happy Path (Part 1)
Paradigms
Paradigms
First class functions
First class functions
Clojure
Clojure
Backtracking, mathematics, reversability, garbage collection, time Sharing
Backtracking, mathematics, reversability, garbage collection, time Sharing
Common Lisp
Common Lisp
Common lisp complexities
Common lisp complexities
Relational Programming
Relational Programming
Exhaustive search
Exhaustive search
Prolog vs kanren
Prolog vs kanren
Observation why relational programming works
Observation why relational programming works
Pattern Matching
Pattern Matching
Mutable variables and flags
Mutable variables and flags
Parsing vs fp pattern matching
Parsing vs fp pattern matching
Isolation
Isolation
Tokenizing
Tokenizing
Isolation II
Isolation II
Isolation III
Isolation III
Isolation IV
Isolation IV
Anecdotes
Anecdotes
Anecdote secretary vs. synchrony
Anecdote secretary vs. synchrony
Building a Language
Building a Language
The f**k program
The f**k program
The rain god
The rain god
Anecdote language learning
Anecdote language learning
Random Anecdotes
Random Anecdotes
Relative namespaces
Relative namespaces
Hierarchical Namedpaces
Hierarchical Namedpaces
Namespaces
Namespaces
Namespaces Working Paper
Namespaces Working Paper
Lisp (Frits van der Wateren)
Lisp (Frits van der Wateren)
Lisp 1.5 Memory
Lisp 1.5 Memory
PLUS Atom Lsip
PLUS Atom Lsip
FP (Functional Programming)
FP (Functional Programming)
Immutability
Immutability
Type DSL
Type DSL
Type Descriptors (Working Paper
Type Descriptors (Working Paper
Case Study - A Language of Types
Case Study - A Language of Types
Type DSL (SCN)
Type DSL (SCN)
miscellaneous
miscellaneous
Status
Status
Structured Editing
Structured Editing
TORLISP (Toronto Lisp Users Group)
TORLISP (Toronto Lisp Users Group)
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)
machine readability
machine readability
Readbility
Readbility
Relations
Relations
ASON
ASON
ASON: Tokenizing
ASON: Tokenizing
Markdown for Code
Markdown for Code
Indentation to Braces (Case Study)
Indentation to Braces (Case Study)
Flipping Code
Flipping Code
Markdown To Code
Markdown To Code
Code Makdown to Structured Pseudocode
Code Makdown to Structured Pseudocode
Markdown for Design and Implementation (WIP)
Markdown for Design and Implementation (WIP)
Code Markdown to Bash
Code Markdown to Bash
ASTs
ASTs
AST Tree
AST Tree
Creativity
Creativity
Software Creativity
Software Creativity
Brainstorming
Brainstorming
Software Brainstorming
Software Brainstorming
Debugging
Debugging
Are Dynamically-Typed Languages Better For Debugging?
Are Dynamically-Typed Languages Better For Debugging?
Jetbrains MPS
Jetbrains MPS
Jetbrains MPS - Before I Look At It
Jetbrains MPS - Before I Look At It
JetBrains MPS - First Impressions
JetBrains MPS - First Impressions
Compilation
Compilation
Compilation Is An Optimization
Compilation Is An Optimization
Static Typing Is An Optimization
Static Typing Is An Optimization
Happy Path
Happy Path
Happy Path Culture
Happy Path Culture
Basics
Basics
Basic Circuits
Basic Circuits
Addressing
Addressing
Compilers vs. Interpreters
Compilers vs. Interpreters
Everything Is Digital
Everything Is Digital
Expressiveness
Expressiveness
How All This Stuff Ties Together
How All This Stuff Ties Together
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