02 Jun 23
I wanted to expand my knowledge of assembly and by doing something fun and motivating. It all originated from the observation that so many program binaries today are very big, often over 30 Mib (!), and I asked myself: How small a binary can be for a (very simplistic) GUI? Well, it turns out, very little. Spoiler alert: around 1 KiB!
30 May 23
Dusk OS is designed to be maximally useful while being minimally complex. It builds from bare metal to a simple Forth-based operating system and C compiler in only a few thousand lines of code.
28 May 23
26 May 23
Martin Buber? He was an Austrian philosopher and Jewish mythicist, and he wrote a book called I and Thou. He conceptualized that most of the world is constructed of I-It, which is to say person and subject, this distance and disconnect. And that in the I-Thou construct, there’s a mutuality where the actual relationship is the thing.
Everything we’ve discussed today has mostly catered to the screen reader user experience. And while addressing issues for screen readers does help to remove barriers for other assistive technologies, such as keyboard-only and voice dictations users, it shouldn’t be the only focus.
23 May 23
This was not a fruitful conversation, I think we both felt like we weren’t valuing what the other cared about. When people talk about languages they like or dislike, I group the things people talk about into three broad categories, which I’ll call soil, surface, and atmosphere
21 May 23
Why is K Good?
Extremely fast. Usually faster than the corresponding C program, e.g. present value calculation. Almost always faster than Sybase or Oracle.Can do a lot and can do it easily (bulk data objects like tables, a passable graphical user interface, interprocess communication, web, and calculation).Working in a single language reduces errors, increases speed yet further, and is more fun because you can concentrate on the algorithm. (Note: Many errors and much overhead comes from integrating different languages, e.g. C/Perl/Sybase/GUI.)Interpreted so very fast debug cycle; no seg faults; upon error can query all variables in scope. Bad part: no declared types so get some type errors you wouldn’t otherwise get.
I am making a text based adventure game, for it to work I require a way to have an inventory. I want to be able to click a button on one card and have it update the grid on another card. How do I do that?
20 May 23
Syllabus here. Readings should be generally available on the web, unless otherwise indicated. If you’re having trouble accessing a resource, try the NYU Library Proxy (it’s very easy to set up). Please contact me ASAP if you have trouble accessing any of the readings.
18 May 23
miniKanren is a family of Domain Specific Languages for logic programming.The name kanren comes from a Japanese word (関連) meaning “relation”.The core miniKanren language is very simple, with only three logical operators and one interface operator.The core language, using Scheme as the host language, is described in this short, interactive tutorial.
16 May 23
This guidance is for web and digital professionals who want to make sure that their service is optimised for users who have anxiety or panic disorders.Anxiety is a feeling of unease, such as worry or fear, that can be mild or severe. Some people find it hard to control their worries. Their feelings of anxiety are more constant and can often affect their daily lives.
14 May 23
Denotational semantics is a methodology for giving precise meaning to a programming language. While the syntax of a language is always formally specified in a variant of BNF, the more important part of definining its semantics is mostly left to natural language. which is ambiguous and leaves many questions open. Especially to construct a compiler for this language, we need a much deeper understanding than can be provided by informal descriptions.
Broadly speaking, denotational semantics is concerned with finding mathematical objects called domains that represent what programs do.
When a condition is found to be TRUE, the engine executes the THEN clause, which results in new information being added to its dataset. In other words, the engine starts with a number of facts and applies rules to derive all possible conclusions from those facts. This is where the name “forward chaining” comes from – the fact that the inference engine starts with the data and reasons its way forward to the answer, as opposed to backward chaining, which works the other way around.How about backward chaining?In backward chaining, the system works from conclusions backwards towards the facts, an approach called goal driven. Compared to forward chaining, few data are asked, but many rules are searched. Backward-chaining rules engines are not suited for dynamic situations and are mostly only used as expert systems in decision making
K is the executable notation at the heart of a high performance programming platform. It is designed for analyzing massive amounts of real-time and historical data – ideal for financial modelling.
13 May 23
an archived introduction to Standard ML programming language. [mostly lost to the sands of time and bit rot]
The MLton docs include a directory of reference material. Useful links out to a number of Standard ML related stuff. Also some stuff on type theory more generally.
Standard ML is a programming language which combines the elegance of functional programming with the effectiveness of imperative programming. This tutorial introduces important concepts in the language, illustrating them with brief examples. The examples are suitable for cutting-and-pasting into an on-line session.
12 May 23
The topic of type theory is fundamental both in logic and computer science. We limit ourselves here to sketch some aspects that are important in logic. For the importance of types in computer science, we refer the reader for instance to Reynolds 1983 and 1985.