About:

The website focuses on programming, math, and other topics that are considered nerdy. It is a platform for sharing insights and discussions related to these subjects.

Website:

Specializations:

Outgoing Links:

Richard Hanania
Subscribe to RSS:
The author discusses the challenges faced in the development of PolySubML, a programming language based on Algebraic Subtyping, particularly focusing on the flaws discovered in its type system. Key points include the nature of rec...
This post is part 6 of a series discussing advanced features of pattern matching in the programming language X, a successor to PolySubML. It covers match guards, or patterns, constant patterns, and alias patterns, explaining their...
This post discusses the implementation of pattern matching in the programming language X, which is a successor to PolySubML. It covers the basics of pattern matching, including type checking and exhaustiveness checking, and compar...
This post discusses Generalized Algebraic Data Types (GADTs) in the context of the programming language X, comparing them to ordinary algebraic data types and explaining their functionality, particularly in relation to type witnes...
This blog post discusses the complexities of implementing parameterized types in the programming language X, which is a successor to PolySubML. It explains the concept of parameterized types, their necessity for generic programmin...
This blog post is the second in a series discussing the design of a new programming language, referred to as X, which aims to extend the features of PolySubML by incorporating OCaml's capabilities. The post focuses on nominal type...
The post discusses the design and implementation of a new programming language, referred to as X, which aims to unify the module and value systems of OCaml. It highlights the challenges and features of OCaml modules, such as their...
The text discusses the importance of subtyping in programming languages, explaining what subtyping is and why it is essential. It provides examples of subtyping in high and low-level languages, and discusses the need for subtyping...
The text discusses the problems with type aliases in programming languages, comparing them to newtypes. It explains how type aliases lead to poor error messages and slow compile times, and suggests that new languages should only s...
The text discusses the reputation of type inference for causing unhelpful error messages from the compiler when there is a type error. It explains how to design type inference for high quality type errors and the pitfalls that oft...
The author discusses four limitations of Rust's borrow checker, including issues with match and return, async functionality, FnMut, and the Send checker. The author provides examples and workarounds for each limitation.
The text discusses the limitations of Rust programming language and how to support self-borrows and async functions in a hypothetical alternate or future version of Rust. It covers the changes needed from a high level type system ...
The text discusses Generalized Algebraic Data Types (GADTs) and their compatibility with type inference. It explains the difference between GADTs and regular ADTs, and provides examples of GADTs in Rust and OCaml. It also discusse...
The author encountered a memory usage problem while working on a Rust project. After extensive debugging, they discovered that the collect::<Vec<_>>() method was reusing allocations, resulting in Vecs with large excess capacity. T...
The text is a detailed account of the author's experience participating in a prediction market tournament at the Salem Center. The author initially had no experience with prediction markets but managed to place second out of nearl...
The text describes the author's experience participating in a prediction market tournament despite having no prior experience. It explains how the tournament worked, the lessons learned, and the strategies used to place second out...
The text discusses the Thundering Herd Problem in Rust service using Tokio, and the unexpected async bug encountered. It explains the bug, the change made to future-proof the code, and the solution to the problem.