Why Sponsor Oils? | oilshell.org
See the blog index for a chronological list of posts.
Link to directly to a tag #FOO with tags.html#FOO.
#ASDL
| 2016-12-05 | Type Checking vs. Metaprogramming; ML vs. Lisp | 
| 2016-12-11 | What is Zephyr ASDL? | 
| 2016-12-16 | Analogies for ASDL | 
| 2017-01-04 | Success with ASDL | 
| 2017-01-06 | ASDL Implementation and Use Cases | 
| 2017-01-09 | What is oheap? | 
| 2017-01-21 | Pretty Printing ASTs with ASDL, and Metaprogramming | 
| 2017-01-26 | The Thinner Waist of the Interpreter | 
| 2019-02-07 | How to Parse Shell Like a Programming Language | 
| 2019-02-18 | OSH 0.6.pre15 Does Not Crave Chaos and Destruction | 
| 2019-12-09 | Oil 0.7.pre9 and a Fast Shell Parser | 
| 2020-04-19 | Oil 0.8.pre4 - The Biggest Shell Programs in the World | 
| 2020-05-25 | Oil 0.8.pre5 - Progress in C++ | 
| 2023-03-16 | Oil 0.14.2 - Interactive Shell, and Conceding to autoconf | 
| 2023-03-25 | Oils Roadmap: What We Can Use Help With | 
| 2024-05-14 | Notes for Houston Functional Programmers Talk | 
#awk
| 2016-11-13 | Shell, Awk, and Make Should Be Combined | 
| 2016-11-14 | Example Code in Shell, Awk, and Make | 
| 2017-10-25 | Comments About Shell, Awk, and Make | 
| 2020-11-08 | More Changes to Oil's Syntax | 
| 2023-06-11 | Sketches of YSH Features | 
#bernstein-chaining
| 2017-01-13 | Shell Has a Forth-like Quality | 
| 2017-01-31 | Bernstein Chaining of ssh and su | 
#blog-meta
#blog-topics
#boil
| 2017-05-05 | Rewriting Python's Build System From Scratch | 
| 2017-05-31 | Post-Vacation Update and Build System Observations | 
#book-reviews
| 2018-11-30 | What Is a Data Frame? (In Python, R, and SQL) | 
#cloud
| 2021-04-11 | Comments About Build Systems and CI Services | 
| 2021-07-19 | Blog Review: Distributed Systems | 
#comic
| 2018-04-26 | oil-dev is moving to Zulip | 
| 2020-01-14 | The Simplest Explanation of Oil | 
| 2020-04-02 | Three Comics For Understanding Unix Shell | 
#comments
#computer-science
| 2016-10-20 | Parsing Bash is Undecidable | 
| 2016-11-01 | Pratt Parsing and Precedence Climbing Are the Same Algorithm | 
| 2016-11-03 | Pratt Parsing Without Prototypal Inheritance, Global Variables, Virtual Dispatch, or Java | 
| 2016-12-05 | Type Checking vs. Metaprogramming; ML vs. Lisp | 
| 2017-02-11 | From AST to Lossless Syntax Tree | 
| 2017-03-31 | Pratt Parsing Index and Updates | 
| 2017-04-22 | Code for the Shunting Yard Algorithm, and More | 
| 2019-02-07 | How to Parse Shell Like a Programming Language | 
| 2020-07-21 | Comments on Eggex and Regular Languages | 
| 2020-07-22 | Regular Languages, Part 2: Ideas and Questions | 
| 2020-12-23 | Three Great Videos About Regex Derivatives | 
| 2024-05-14 | Notes for Houston Functional Programmers Talk | 
#containers
| 2021-07-19 | Blog Review: Distributed Systems | 
| 2021-12-31 | Retrospective: Software Architecture | 
| 2022-01-30 | January Release Notes and Themes | 
#coprocess
| 2018-12-05 | Dev Log #8: Shell Protocol Designs | 
| 2021-04-13 | Release of Oil 0.8.9 | 
#correction
| 2017-11-28 | Correction: How to Parse Here Documents | 
#data-structures
| 2016-11-29 | Status Update: the Backbone of the Interpreter | 
| 2017-02-11 | From AST to Lossless Syntax Tree | 
#distributed-systems
| 2017-01-19 | On the Wiki: Project Goals and Related Projects | 
| 2019-01-18 | BayLISA Presentation Materials | 
| 2020-11-23 | Fixes and Updates to Oil Benchmarks | 
| 2021-04-11 | Comments About Build Systems and CI Services | 
| 2021-07-09 | Summer Blog Backlog: Distributed Systems | 
| 2021-07-19 | Blog Review: Distributed Systems | 
| 2021-12-31 | Retrospective: Software Architecture | 
| 2022-02-26 | The Internet Was Designed With a Narrow Waist | 
| 2022-03-12 | A Sketch of the Biggest Idea in Software Architecture | 
#donations
| 2022-03-31 | Oil Is Being Implemented "Middle Out" | 
#eggex
| 2019-12-22 | Eggex Example: Recognizing Python Integer Literals | 
| 2020-07-21 | Comments on Eggex and Regular Languages | 
| 2020-07-22 | Regular Languages, Part 2: Ideas and Questions | 
| 2020-11-08 | More Changes to Oil's Syntax | 
| 2020-11-09 | Proposed Changes to Oil's Syntax | 
| 2020-12-23 | Three Great Videos About Regex Derivatives | 
| 2022-08-24 | Oil 0.12.4 - User Feedback | 
| 2024-02-21 | Oils 0.20.0 - Eggex, JSON, and Android | 
#escaping-quoting
| 2017-01-31 | Bernstein Chaining of ssh and su | 
| 2017-08-31 | Problems With the test Builtin: What Does -a Mean? | 
| 2017-09-19 | How to Quickly and Correctly* Generate a Git Log in HTML | 
| 2017-09-29 | Git Log in HTML: A Harder Problem and A Safe Solution | 
| 2018-02-14 | CommonMark is a Useful, High-Quality Project | 
| 2020-02-27 | Oil Doesn't Confuse Flags and Files (Code and Data) | 
| 2020-10-31 | Big Changes to the Oil Language | 
| 2024-05-14 | Notes for Houston Functional Programmers Talk | 
#event
| 2019-01-14 | I'm Speaking About the Oil Shell this Thursday in San Jose, California | 
| 2019-01-18 | BayLISA Presentation Materials | 
| 2021-06-05 | Notes on the HotOS Unix Shell Panel | 
| 2024-05-14 | Notes for Houston Functional Programmers Talk | 
#FAQ
| 2018-01-28 | Why Create a New Unix Shell? | 
| 2018-03-04 | Building Oil with the OPy Bytecode Compiler | 
| 2019-06-17 | Frequently Asked Questions (2019) | 
| 2021-01-26 | Unix Shell: Philosophy, Design, and FAQs | 
| 2021-01-27 | Why Create a New Unix Shell? (2021) | 
| 2021-02-11 | Updates to the Oil FAQ | 
| 2021-12-02 | Backlog: Explaining the Oil Project | 
| 2021-12-07 | Backlog: Rough Progress Assessments | 
| 2021-12-20 | Backlog: Language FAQs | 
| 2022-03-31 | Oil Is Being Implemented "Middle Out" | 
| 2022-05-10 | Brief Descriptions of a Python to C++ Translator | 
| 2023-03-26 | Oils 2023 FAQ | 
| 2023-03-31 | Reasons for the Big Renaming to Oils, OSH, and YSH | 
| 2023-06-20 | Oils Is Exterior-First (Code, Text, and Structured Data) | 
#hay
| 2022-07-28 | Oil 0.11.0 - Big Features and Project Changes | 
| 2024-12-17 | Why Should a Unix Shell Have Objects? | 
#headless
| 2021-06-05 | Notes on the HotOS Unix Shell Panel | 
| 2023-05-13 | Oils 0.15.0 - Big Contributions and More Concessions | 
| 2023-06-24 | Oils 0.16.0 - Breaking Renames and YSH | 
| 2023-09-17 | Oils 0.18.0 - Progress on All Fronts | 
| 2023-12-21 | Interactive Shell Screencasts | 
#interactive-shell
| 2018-10-10 | Running Bash Completion Scripts with OSH | 
| 2018-10-11 | Release of OSH 0.6.pre5 | 
| 2018-12-05 | Dev Log #8: Shell Protocol Designs | 
| 2018-12-16 | Dev Log #9: Progress on Oil Subprojects | 
| 2019-02-05 | Success With the Interactive Shell | 
| 2020-01-17 | Oil Uses Its Parser For History And Completion | 
| 2020-01-18 | Oil's Parser Doesn't Worry About Aliases and Prompts | 
| 2022-01-30 | January Release Notes and Themes | 
| 2023-03-16 | Oil 0.14.2 - Interactive Shell, and Conceding to autoconf | 
| 2023-06-24 | Oils 0.16.0 - Breaking Renames and YSH | 
| 2023-09-17 | Oils 0.18.0 - Progress on All Fronts | 
| 2023-12-21 | Interactive Shell Screencasts | 
#j8-notation
| 2023-06-11 | Sketches of YSH Features | 
| 2023-06-15 | How to Create a UTF-16 Surrogate Pair by Hand, with Python | 
| 2023-06-20 | Oils Is Exterior-First (Code, Text, and Structured Data) | 
| 2024-02-21 | Oils 0.20.0 - Eggex, JSON, and Android | 
| 2024-03-21 | Oils 0.21.0 - Flags, Integers, Starship Bug, and Speed | 
| 2024-06-19 | Oils 0.22.0 - Docs, Pretty Printing, Nix, and Zsh | 
#lexing
| 2016-10-19 | How OSH Uses Lexer Modes | 
| 2017-12-15 | The Oil Lexer: Introduction and Recap | 
| 2017-12-17 | When Are Lexer Modes Useful? | 
| 2019-02-07 | How to Parse Shell Like a Programming Language | 
| 2019-12-22 | Eggex Example: Recognizing Python Integer Literals | 
| 2020-04-19 | Oil 0.8.pre4 - The Biggest Shell Programs in the World | 
| 2020-07-22 | Regular Languages, Part 2: Ideas and Questions | 
| 2020-12-23 | Three Great Videos About Regex Derivatives | 
| 2021-04-10 | find and test: How To Read And Write Them | 
#linux-distro
| 2016-10-11 | Oil Can Parse Real Shell Programs | 
| 2018-01-15 | Success with Aboriginal, Alpine, and Debian Linux | 
| 2020-01-22 | Ambitions for a Unix Shell | 
#make
| 2016-11-13 | Shell, Awk, and Make Should Be Combined | 
| 2016-11-14 | Example Code in Shell, Awk, and Make | 
| 2017-05-05 | Rewriting Python's Build System From Scratch | 
| 2017-05-31 | Post-Vacation Update and Build System Observations | 
| 2017-10-25 | Comments About Shell, Awk, and Make | 
| 2021-04-11 | Comments About Build Systems and CI Services | 
| 2023-06-11 | Sketches of YSH Features | 
#metaprogramming
| 2016-11-30 | A Problem with Type Checking | 
| 2016-12-05 | Type Checking vs. Metaprogramming; ML vs. Lisp | 
| 2017-01-21 | Pretty Printing ASTs with ASDL, and Metaprogramming | 
| 2024-05-14 | Notes for Houston Functional Programmers Talk | 
#metrics
| 2016-10-10 | What Oil Looks Like, and a Plan for This Blog | 
| 2017-01-26 | The Thinner Waist of the Interpreter | 
| 2017-03-23 | Measuring Progress with Tests | 
| 2017-06-02 | Project Metrics | 
| 2017-09-09 | Please Try the OSH 0.1 Release | 
| 2020-01-16 | Oil's Parser is 160x to 200x Faster Than It Was 2 Years Ago | 
| 2020-03-08 | Metrics for Oil 0.8.pre2 | 
| 2020-05-25 | Oil 0.8.pre5 - Progress in C++ | 
| 2020-08-12 | A Plan for Oil 0.8 and 0.9 | 
| 2020-11-07 | Metrics for Oil 0.8.4 | 
| 2020-11-23 | Fixes and Updates to Oil Benchmarks | 
| 2021-03-19 | Release of Oil 0.8.8 | 
| 2022-03-31 | Oil Is Being Implemented "Middle Out" | 
#misc
| 2016-12-23 | A Math Problem: Function-Directed Enum Labeling | 
| 2016-12-26 | Four Functions and Enum Labelings | 
| 2016-12-27 | Bespoke Superoptimization | 
| 2016-12-30 | Questions about Superoptimization | 
#mycpp
| 2019-06-13 | What's Happened Since February? | 
| 2020-03-05 | March Recap / Link Dump | 
| 2021-03-19 | Release of Oil 0.8.8 | 
| 2022-03-31 | Oil Is Being Implemented "Middle Out" | 
| 2022-05-10 | Brief Descriptions of a Python to C++ Translator | 
| 2022-05-29 | A Garbage-Collected Heap in C++, Shaped Like Typed Python | 
| 2022-10-20 | Oil 0.12.7 - Garbage Collector Problems | 
| 2023-01-11 | Pictures of a Working Garbage Collector | 
| 2023-03-16 | Oil 0.14.2 - Interactive Shell, and Conceding to autoconf | 
| 2023-03-25 | Oils Roadmap: What We Can Use Help With | 
| 2024-03-21 | Oils 0.21.0 - Flags, Integers, Starship Bug, and Speed | 
| 2024-06-19 | Oils 0.22.0 - Docs, Pretty Printing, Nix, and Zsh | 
| 2024-09-13 | A Retrospective on the Oils Project | 
#oheap
| 2017-01-09 | What is oheap? | 
| 2017-12-22 | OSH 0.3 - Optimization, Benchmarks, and Bug Fixes | 
| 2018-08-19 | Release of OSH 0.6.pre2 | 
| 2018-12-16 | Dev Log #9: Progress on Oil Subprojects | 
#oil-dev
| 2016-11-19 | Oil is on Github | 
| 2017-01-26 | The Thinner Waist of the Interpreter | 
| 2017-03-04 | If you have Debian/Ubuntu, and Five Minutes | 
| 2017-03-09 | Oil-dev is Alive! | 
| 2017-03-23 | Measuring Progress with Tests | 
| 2017-06-22 | How I Use Tests | 
| 2017-06-24 | How I Plan to Use Tests: Transforming OSH | 
| 2018-04-26 | oil-dev is moving to Zulip | 
| 2019-06-13 | What's Happened Since February? | 
| 2019-12-09 | Oil 0.7.pre9 and a Fast Shell Parser | 
| 2020-03-05 | March Recap / Link Dump | 
| 2020-07-19 | Summer 2020 Blog Roadmap | 
| 2024-02-21 | Oils 0.20.0 - Eggex, JSON, and Android | 
#oil-language
#oil-release
#opy
| 2017-04-09 | An Unexpected Solution: Cobbling Together a Python Interpreter | 
| 2017-04-23 | The OPy Front End is Working | 
| 2017-06-24 | How I Plan to Use Tests: Transforming OSH | 
| 2018-03-04 | Building Oil with the OPy Bytecode Compiler | 
| 2018-03-27 | Addendum: Two Recurse Center Projects That Explain CPython | 
| 2018-12-16 | Dev Log #9: Progress on Oil Subprojects | 
| 2019-12-09 | Oil 0.7.pre9 and a Fast Shell Parser | 
#osh-language
| 2020-10-22 | Four Features That Justify a New Unix Shell | 
| 2021-11-30 | Winter Blog Backlog: Recent Progress | 
| 2021-12-01 | Appendix: The Journey of Extended Globs | 
| 2021-12-20 | Backlog: Language FAQs | 
| 2023-03-16 | Oil 0.14.2 - Interactive Shell, and Conceding to autoconf | 
| 2023-03-25 | Oils Roadmap: What We Can Use Help With | 
| 2023-03-26 | Oils 2023 FAQ | 
| 2023-09-17 | Oils 0.18.0 - Progress on All Fronts | 
#osh-to-oil
| 2017-02-05 | Translating Shell to Oil | 
| 2017-02-06 | Translating Shell to Oil, Part Two | 
#OVM
| 2017-04-09 | An Unexpected Solution: Cobbling Together a Python Interpreter | 
| 2017-04-25 | OVM will be a Slice of the CPython VM | 
| 2017-05-05 | Rewriting Python's Build System From Scratch | 
| 2017-06-24 | How I Plan to Use Tests: Transforming OSH | 
| 2018-03-04 | Building Oil with the OPy Bytecode Compiler | 
| 2018-11-15 | Dev Log #7: Hollowing Out the Python Interpreter | 
| 2018-12-16 | Dev Log #9: Progress on Oil Subprojects | 
#parsing
| 2016-10-20 | Parsing Bash is Undecidable | 
| 2016-10-22 | New Terminology: Static Parsing vs. Dynamic Parsing | 
| 2016-11-01 | Pratt Parsing and Precedence Climbing Are the Same Algorithm | 
| 2016-11-02 | Review of Pratt/TDOP Parsing Tutorials | 
| 2016-11-03 | Pratt Parsing Without Prototypal Inheritance, Global Variables, Virtual Dispatch, or Java | 
| 2016-11-05 | Pratt Parsers Can Be Statically Typed | 
| 2016-11-17 | OSH Can Be Parsed With Two Tokens of Lookahead | 
| 2017-02-11 | From AST to Lossless Syntax Tree | 
| 2017-03-30 | Precedence Climbing is Widely Used | 
| 2017-03-31 | Pratt Parsing Index and Updates | 
| 2017-04-22 | Code for the Shunting Yard Algorithm, and More | 
| 2021-01-06 | Comments About Parsing: Theory vs. Practice | 
#parsing-shell
#performance
| 2016-12-27 | Bespoke Superoptimization | 
| 2016-12-30 | Questions about Superoptimization | 
| 2019-12-09 | Oil 0.7.pre9 and a Fast Shell Parser | 
| 2020-01-16 | Oil's Parser is 160x to 200x Faster Than It Was 2 Years Ago | 
| 2020-07-21 | Comments on Eggex and Regular Languages | 
| 2020-08-12 | A Plan for Oil 0.8 and 0.9 | 
| 2020-11-23 | Fixes and Updates to Oil Benchmarks | 
| 2024-01-16 | Oils 0.19.0 - Dicts, Procs, Funcs, and Places | 
| 2024-03-21 | Oils 0.21.0 - Flags, Integers, Starship Bug, and Speed | 
| 2024-06-19 | Oils 0.22.0 - Docs, Pretty Printing, Nix, and Zsh | 
| 2024-09-13 | A Retrospective on the Oils Project | 
#praise
| 2018-02-14 | CommonMark is a Useful, High-Quality Project | 
| 2018-03-27 | Addendum: Two Recurse Center Projects That Explain CPython | 
| 2018-11-15 | Dev Log #7: Hollowing Out the Python Interpreter | 
| 2021-07-22 | Classic Blog Posts by Joel Spolsky | 
#project-roadmap
| 2016-10-15 | Blog Roadmap, and Project Roadmap | 
| 2016-10-23 | Roadmap #2 | 
| 2016-11-21 | Roadmap #3: Two Top Priorities | 
| 2016-11-25 | Roadmap #3 Continued | 
| 2017-02-27 | Review of Roadmap #3 | 
| 2017-03-01 | Project Roadmap #4 | 
| 2017-07-29 | Review of Roadmap #4 (abridged) | 
| 2017-10-06 | Roadmap #5: Why Oil, and Why OSH? | 
| 2018-01-15 | Success with Aboriginal, Alpine, and Debian Linux | 
| 2018-08-15 | Summer Vacation is Over! | 
| 2018-11-15 | Dev Log #7: Hollowing Out the Python Interpreter | 
| 2020-08-12 | A Plan for Oil 0.8 and 0.9 | 
| 2020-08-17 | Technical Issues And Risks | 
| 2023-03-25 | Oils Roadmap: What We Can Use Help With | 
#project-updates
#python
| 2017-04-08 | The Riskiest Part of the Project | 
| 2017-04-09 | An Unexpected Solution: Cobbling Together a Python Interpreter | 
| 2017-04-23 | The OPy Front End is Working | 
| 2017-04-25 | OVM will be a Slice of the CPython VM | 
| 2017-05-05 | Rewriting Python's Build System From Scratch | 
| 2018-03-04 | Building Oil with the OPy Bytecode Compiler | 
| 2018-03-27 | Addendum: Two Recurse Center Projects That Explain CPython | 
| 2018-11-15 | Dev Log #7: Hollowing Out the Python Interpreter | 
| 2019-06-17 | Frequently Asked Questions (2019) | 
| 2020-01-22 | Ambitions for a Unix Shell | 
| 2022-03-31 | Oil Is Being Implemented "Middle Out" | 
| 2022-05-10 | Brief Descriptions of a Python to C++ Translator | 
| 2022-05-29 | A Garbage-Collected Heap in C++, Shaped Like Typed Python | 
| 2024-06-17 | Comments on Scripting, CGI, and FastCGI | 
#r-language
| 2018-11-15 | Dev Log #7: Hollowing Out the Python Interpreter | 
| 2018-11-30 | What Is a Data Frame? (In Python, R, and SQL) | 
#real-problems
| 2019-02-18 | OSH 0.6.pre15 Does Not Crave Chaos and Destruction | 
| 2019-08-16 | Oil's Stricter Semantics Solve Real Problems | 
| 2020-02-20 | February Recap / Brain Dump | 
| 2020-02-27 | Oil Doesn't Confuse Flags and Files (Code and Data) | 
| 2020-10-22 | Four Features That Justify a New Unix Shell | 
| 2021-04-09 | Oil Doesn't Require Quoting Everywhere | 
| 2021-06-08 | Recent Progress on the Oil Language | 
| 2021-09-19 | Oil Has Multi-line Commands and String Literals | 
| 2022-05-05 | Oil 0.10.0 - Can Unix Shell Error Handling Be Fixed Once and For All? | 
| 2023-05-13 | Oils 0.15.0 - Big Contributions and More Concessions | 
| 2023-06-24 | Oils 0.16.0 - Breaking Renames and YSH | 
#recurse-center
| 2018-03-25 | I'm Attending Recurse Center this Summer | 
| 2018-03-27 | Addendum: Two Recurse Center Projects That Explain CPython | 
| 2018-07-21 | Summer Status Update | 
| 2018-07-22 | Summer Blog Topics | 
| 2018-07-23 | OSH 0.5 - A Release with Many Contributors | 
| 2018-08-15 | Summer Vacation is Over! | 
| 2021-01-25 | Shell Scripts, Audio, Images, and 3D Graphics | 
#sample-code
| 2016-10-20 | Parsing Bash is Undecidable | 
| 2016-11-03 | Pratt Parsing Without Prototypal Inheritance, Global Variables, Virtual Dispatch, or Java | 
| 2016-11-06 | Thirteen Incorrect Ways and Two Awkward Ways to Use Arrays | 
| 2016-11-14 | Example Code in Shell, Awk, and Make | 
| 2016-12-26 | Four Functions and Enum Labelings | 
| 2017-01-13 | Shell Has a Forth-like Quality | 
| 2017-01-15 | Pipelines Support Vectorized, Point-Free, and Imperative Style | 
| 2017-01-31 | Bernstein Chaining of ssh and su | 
| 2017-04-22 | Code for the Shunting Yard Algorithm, and More | 
| 2017-08-12 | Avoid Directly Manipulating File Descriptors in Shell | 
| 2017-09-19 | How to Quickly and Correctly* Generate a Git Log in HTML | 
| 2017-09-29 | Git Log in HTML: A Harder Problem and A Safe Solution | 
| 2018-11-30 | What Is a Data Frame? (In Python, R, and SQL) | 
| 2019-12-22 | Eggex Example: Recognizing Python Integer Literals | 
| 2020-07-21 | Comments on Eggex and Regular Languages | 
| 2021-08-21 | An Opinionated Guide to xargs | 
#security
| 2019-01-18 | BayLISA Presentation Materials | 
#shell-runtime
| 2016-10-18 | Shells Use Temp Files to Implement Here Documents | 
| 2017-02-26 | Status Update and Blog Backlog | 
| 2017-07-02 | OSH Runs Real Shell Programs | 
| 2017-07-28 | The Long Slog Through the Shell (abridged) | 
| 2019-08-16 | Oil's Stricter Semantics Solve Real Problems | 
| 2020-04-02 | Three Comics For Understanding Unix Shell | 
| 2020-11-10 | Changes to Shell Runtime Semantics | 
| 2021-11-20 | Oil 0.9.4 - User Feedback | 
| 2022-01-30 | January Release Notes and Themes | 
| 2024-03-21 | Oils 0.21.0 - Flags, Integers, Starship Bug, and Speed | 
| 2024-11-13 | Oils 0.23.0 - Writing YSH Code, User Feedback, and Bug Bounty | 
#shell-style-guideline
| 2017-08-12 | Avoid Directly Manipulating File Descriptors in Shell | 
| 2017-08-31 | Problems With the test Builtin: What Does -a Mean? | 
#shell-the-bad-parts
| 2016-10-20 | Parsing Bash is Undecidable | 
| 2016-10-28 | The Five Meanings of #. And What Does ${####} Mean? | 
| 2016-10-29 | Four Slashes and Three Meanings | 
| 2016-11-06 | Thirteen Incorrect Ways and Two Awkward Ways to Use Arrays | 
| 2016-11-07 | Contrived Example Found in the Wild | 
| 2016-11-18 | Problems With $(( | 
| 2017-08-12 | Avoid Directly Manipulating File Descriptors in Shell | 
| 2017-08-31 | Problems With the test Builtin: What Does -a Mean? | 
| 2018-08-19 | Release of OSH 0.6.pre2 | 
| 2018-10-10 | Running Bash Completion Scripts with OSH | 
| 2018-12-16 | Dev Log #9: Progress on Oil Subprojects | 
| 2020-02-27 | Oil Doesn't Confuse Flags and Files (Code and Data) | 
| 2020-04-19 | Oil 0.8.pre4 - The Biggest Shell Programs in the World | 
| 2021-12-01 | Appendix: The Journey of Extended Globs | 
#shell-the-good-parts
| 2017-01-13 | Shell Has a Forth-like Quality | 
| 2017-01-15 | Pipelines Support Vectorized, Point-Free, and Imperative Style | 
| 2020-02-19 | Four More Posts in "Shell: The Good Parts" | 
| 2020-03-25 | Oil 0.8.pre3 - A Line Editor and a Continuous Build | 
| 2020-07-21 | Comments on Eggex and Regular Languages | 
| 2021-01-24 | Shell Scripts Are Executable Documentation | 
| 2021-01-25 | Shell Scripts, Audio, Images, and 3D Graphics | 
| 2021-01-26 | Unix Shell: Philosophy, Design, and FAQs | 
| 2021-07-08 | Summer Blog Backlog: Understanding and Using Shell | 
| 2021-07-22 | Classic Blog Posts by Joel Spolsky | 
| 2021-08-21 | An Opinionated Guide to xargs | 
| 2021-12-07 | Backlog: Rough Progress Assessments | 
| 2023-06-17 | Narrow Waists Can Be Interior or Exterior: PyObject vs. Unix Files | 
| 2023-06-20 | Oils Is Exterior-First (Code, Text, and Structured Data) | 
#software-architecture
| 2021-01-25 | Shell Scripts, Audio, Images, and 3D Graphics | 
| 2021-01-26 | Unix Shell: Philosophy, Design, and FAQs | 
| 2021-04-11 | Comments About Build Systems and CI Services | 
| 2021-07-08 | Summer Blog Backlog: Understanding and Using Shell | 
| 2021-07-09 | Summer Blog Backlog: Distributed Systems | 
| 2021-07-19 | Blog Review: Distributed Systems | 
| 2021-08-06 | Unix Shell: History and Trivia | 
| 2021-12-31 | Retrospective: Software Architecture | 
| 2022-02-26 | The Internet Was Designed With a Narrow Waist | 
| 2022-03-12 | A Sketch of the Biggest Idea in Software Architecture | 
| 2023-06-17 | Narrow Waists Can Be Interior or Exterior: PyObject vs. Unix Files | 
| 2023-06-20 | Oils Is Exterior-First (Code, Text, and Structured Data) | 
#soil
| 2022-07-28 | Oil 0.11.0 - Big Features and Project Changes | 
| 2023-05-13 | Oils 0.15.0 - Big Contributions and More Concessions | 
| 2023-06-11 | Sketches of YSH Features | 
| 2024-01-16 | Oils 0.19.0 - Dicts, Procs, Funcs, and Places | 
| 2024-02-21 | Oils 0.20.0 - Eggex, JSON, and Android | 
| 2024-05-14 | Notes for Houston Functional Programmers Talk | 
#string-hygiene
| 2021-08-21 | An Opinionated Guide to xargs | 
#task-files
| 2020-02-19 | Four More Posts in "Shell: The Good Parts" | 
| 2021-01-24 | Shell Scripts Are Executable Documentation | 
| 2024-11-13 | Oils 0.23.0 - Writing YSH Code, User Feedback, and Bug Bounty | 
#testing
| 2017-03-04 | If you have Debian/Ubuntu, and Five Minutes | 
| 2017-03-23 | Measuring Progress with Tests | 
| 2017-06-22 | How I Use Tests | 
| 2017-06-24 | How I Plan to Use Tests: Transforming OSH | 
| 2017-11-10 | OSH 0.2 - Parsing One Million Lines of Shell | 
#toil
| 2020-03-25 | Oil 0.8.pre3 - A Line Editor and a Continuous Build | 
| 2020-11-23 | Fixes and Updates to Oil Benchmarks | 
#translated-post
| 2017-01-13 | Shell Has a Forth-like Quality | 
| 2018-01-15 | Success with Aboriginal, Alpine, and Debian Linux | 
#tweet
| 2018-04-26 | oil-dev is moving to Zulip | 
| 2019-08-16 | Oil's Stricter Semantics Solve Real Problems | 
| 2020-01-14 | The Simplest Explanation of Oil | 
| 2021-07-08 | Summer Blog Backlog: Understanding and Using Shell | 
| 2021-07-09 | Summer Blog Backlog: Distributed Systems | 
| 2021-07-19 | Blog Review: Distributed Systems | 
#type-checking
| 2016-11-30 | A Problem with Type Checking | 
| 2016-12-05 | Type Checking vs. Metaprogramming; ML vs. Lisp | 
| 2022-05-10 | Brief Descriptions of a Python to C++ Translator | 
#unicode
| 2023-06-15 | How to Create a UTF-16 Surrogate Pair by Hand, with Python | 
#unix-tools
| 2017-01-31 | Bernstein Chaining of ssh and su | 
| 2017-09-29 | Git Log in HTML: A Harder Problem and A Safe Solution | 
#usage-tips
| 2017-01-31 | Bernstein Chaining of ssh and su | 
| 2017-09-19 | How to Quickly and Correctly* Generate a Git Log in HTML | 
| 2017-09-29 | Git Log in HTML: A Harder Problem and A Safe Solution | 
| 2017-10-25 | Comments About Shell, Awk, and Make | 
| 2018-02-14 | CommonMark is a Useful, High-Quality Project | 
| 2020-02-19 | Four More Posts in "Shell: The Good Parts" | 
| 2021-01-24 | Shell Scripts Are Executable Documentation | 
| 2021-04-10 | find and test: How To Read And Write Them | 
| 2021-08-21 | An Opinionated Guide to xargs | 
#utf8
| 2017-09-29 | Git Log in HTML: A Harder Problem and A Safe Solution | 
| 2018-02-14 | CommonMark is a Useful, High-Quality Project | 
| 2018-08-19 | Release of OSH 0.6.pre2 | 
| 2021-04-13 | Release of Oil 0.8.9 | 
| 2023-06-11 | Sketches of YSH Features | 
| 2023-06-15 | How to Create a UTF-16 Surrogate Pair by Hand, with Python | 
| 2023-06-20 | Oils Is Exterior-First (Code, Text, and Structured Data) | 
| 2024-02-21 | Oils 0.20.0 - Eggex, JSON, and Android | 
#why-a-new-shell
| 2017-01-19 | On the Wiki: Project Goals and Related Projects | 
| 2017-10-06 | Roadmap #5: Why Oil, and Why OSH? | 
| 2018-01-28 | Why Create a New Unix Shell? | 
| 2018-07-22 | Summer Blog Topics | 
| 2019-01-18 | BayLISA Presentation Materials | 
| 2019-08-16 | Oil's Stricter Semantics Solve Real Problems | 
| 2020-01-14 | The Simplest Explanation of Oil | 
| 2020-01-22 | Ambitions for a Unix Shell | 
| 2020-02-19 | Four More Posts in "Shell: The Good Parts" | 
| 2020-10-22 | Four Features That Justify a New Unix Shell | 
| 2021-01-27 | Why Create a New Unix Shell? (2021) | 
| 2021-12-02 | Backlog: Explaining the Oil Project | 
#ysh
| 2023-06-08 | Reviewing YSH | 
| 2023-06-11 | Sketches of YSH Features | 
| 2023-06-15 | How to Create a UTF-16 Surrogate Pair by Hand, with Python | 
| 2023-06-20 | Oils Is Exterior-First (Code, Text, and Structured Data) | 
| 2023-06-24 | Oils 0.16.0 - Breaking Renames and YSH | 
| 2023-08-02 | Oils 0.17.0 - YSH Is Becoming Real | 
| 2023-09-17 | Oils 0.18.0 - Progress on All Fronts | 
| 2023-11-30 | Winter Status Update | 
| 2023-12-21 | Interactive Shell Screencasts | 
| 2024-02-21 | Oils 0.20.0 - Eggex, JSON, and Android | 
| 2024-03-21 | Oils 0.21.0 - Flags, Integers, Starship Bug, and Speed | 
| 2024-06-19 | Oils 0.22.0 - Docs, Pretty Printing, Nix, and Zsh | 
| 2024-09-09 | What Oils Looks Like in 2024 | 
| 2024-09-11 | Garbage Collection Makes YSH Different | 
| 2024-09-13 | A Retrospective on the Oils Project | 
| 2024-11-13 | Oils 0.23.0 - Writing YSH Code, User Feedback, and Bug Bounty | 
| 2024-12-17 | Why Should a Unix Shell Have Objects? | 
| 2025-01-04 | Oils 0.24.0 - Closures, Objects, and Namespaces | 
#zephyr-asdl
| 2024-01-16 | Oils 0.19.0 - Dicts, Procs, Funcs, and Places | 
#zulip-links
Back to the blog index.