Your Programming Language Sucks If
I’ve worked on a number of failing systems long enough that I’d like to explore what a non-failing one would look like. These are my notes.
Most modern data processing systems are config driven.
usually dynamic (generally needs a full restart); code doesn’t change editable by non-technical folks doesn’t require much human/computer energy to parse/validate Cons:
a “programming model” is usually bolted on when anything more complex is needed, and it always is existing formats (YAML, TOML, JSON, etc) are not domain specific languages; their properties are too weak for one need to build a bridge between the code that does a function and the config, often needs parsing/validating Consider, this config to read batches from Apache Kafka 5 at a time:
My programming projects I’ve worked on over the years. Nothing special, but they’ve all met my needs at one point or another.
Name Description URL Notes adamantium Top Secret for now milena Haskell client for Apache Kafka https://github.com/adamflott/milena Tyler Holien did the initial work, I took over maintainership winobot A Perl based IRC bot built on AnyEvent::IRC https://github.
Programming papers I’ve read.
Note: 2016/1/1 is a place holder date as I don’t recall when I read it
Title Tags Date Read An Empirical Study on the Correctness ofFormally Verified Distributed Systems verification, distributed-systems 2019/3/3 Anna: A KVS For Any Scale big-data 2016/1/1 ApproxJoin: Approximate Distributed Joins distributed-systems, database-things 2018/12/25 Azure Data Lake Store: A Hyperscale Distributed File Service for Big Data Analytics big-data 2016/1/1 Big Data Technology Literature Review big-data 2016/1/1 Broom: sweeping out Garbage Collection from Big Data systems 2016/1/1 Build systems a la carte haskell, build-systems, spj 2018/6/14 Charon: Declarative Provisioning and Deployment nix, functional-programming 2016/1/1 City Data Fusion: Sensor Data Fusion in the Internet of Things 2016/1/1 Cloud Programming Simplified: A Berkeley View on Serverless Computing cloud 2019/6/29 Combining Deep and Shallow Embedding for EDSL haskell, dsl 2018/7/31 Concurrent multi-level arrays: Wait-free extensible hash maps 2016/1/1 Debugging Distributed Systems withWhy-Across-Time Provenance distributed-systems 2018/12/25 Dissecting Apple’s Meta-CDN during an iOS Update cdn 2019/1/10 Distributed Systems distributed-systems 2018/7/1 Domain-specific Languages and Code Synthesis Using Haskell haskell 2016/1/1 Dynamic Space Limits for Haskell haskell, ghc 2019/2/1 Engineering and Software Engineering general 2018/6/1 Everything You Always Wanted to Know About Synchronization but Were Afraid to Ask 2016/1/1 Fail-Slow at Scale: Evidence of Hardware Performance Faults in Large Production Systems 2016/1/1 Fault Tolerant Functional Reactive Programming (Functional Pearl) haskell 2018/10/5 Filter Before You Parse: Faster Analytics on Raw Data with Sparser big-data 2018/9/22 From monoids to near-semirings: the essence of MonadPlus and alternative haskell 2016/1/1 Future Psychohistory - Computation and Humanity 2016/1/1 Google’s MapReduce Programming Model — Revisited big-data 2016/1/1 Gorilla: A Fast, Scalable, In-Memory Time Series Database scaling, database 2019/4/4 Gray Failure: The Achilles’ Heel of Cloud-Scale Systems 2016/1/1 Hailstorm: Distributed Stream Processing with Exactly Once Semantics haskell 2016/1/1 Hokusai — Sketching Streams in Real Time 2016/1/1 How functional programming mattered 2016/1/1 Identifying impactful service system problems via log analysis analysis, logs 2018/12/25 In Search of an Understandable Consensus Algorithm (Extended Version) distributed-systems, raft, leader-election 2019/1/19 Jitsu: Just-In-Time Summoning of Unikernels 2016/1/1 MOV is Turing Complete low-level, assembly, x86 2019/4/15 MaRe: a MapReduce-Oriented Framework for Processing Big Data with Application Containers map/reduce, big-data, containers 2019/8/21 Monad Transformers Step by Step haskell 2016/1/1 Monadic Parser Combinators haskell, parsing, classic 2019/2/18 Monads for functional programming haskell 2018/6/30 NetChain: Scale-Free Sub-RTT Coordination 2016/1/1 Next-Paradigm Programming Languages: What Will They Look Like and What Changes Will They Bring?
Your Programming Language Sucks If
My checklist for what constitutes a bad programming language. A tongue-in-cheek look at what I need in a language to be productive, safe, and correct.
Your Programming Sucks If…
You don’t have REPL Coerce strings to numbers without being wrapped in an error type (or exception) Static type system with no generics 1 Can’t distribute a fully static binary Lacks a non-runtime syntax checker 2 Fails to compile due to unused imports 1 If “undefined behavior” appears anywhere in the specification 3 Has an unrestricted eval function Lacks a garbage collection or the ability to disable the GC Go… Sigh.