Skip to content

Interesting things curated by Robert Jacobson organized by year

Notifications You must be signed in to change notification settings

rljacobson/IterestingThings

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 

Repository files navigation

A Curated List of Interesting Things

This repo records interesting things read or discovered by Robert Jacobson organized by year. You are reading 2021, the most recent year.


[TOC]

Courses

Reverse Engineering by Kevin Thomas YouTube videos and articles Stanford Advanced Compilers course by Adrian Sampson

CSE290Q-2019-09 by Lindsey Kuper: A graduate seminar on SMT solving and solver-aided systems

Research Papers

Interesting papers related to JIT compilation from the associated CppCon talk on YouTube: Just-in-Time compilation

Dependent Optics

B-Method - Wikipedia

Computer Scientist proves safety claims of the programming language Rust | EurekAlert! Science News

Accurate Throughput Prediction of Basic Blocks on Recent Intel Microarchitectures by Andreas Abel, Jan Reineke

"Leonardo da Vinci in Raphael's School of Athens" by Frode Sirnes Larsen

Implementing Lazy Functional Languages on Stock Hardware: The Spineless Tagless G-machine - Microsoft Research

"A transformation-based optimiser for Haskell", Simon Peyton Jones, Andre Santos, Science of Computer Programming_ | October 1997, Vol 32(1)

Language Models are Few-Shot Learners

Code

Some Python High Jinks

C as Python

Linked from https://www.reddit.com/r/learnprogramming/comments/kegalv/my_first_python_script_coming_from_c_feedback/

Just started learning Python yesterday and I'm having a blast so far.

I've been programming in C for a while now, but some things already feel simpler in Python than in C. And a lot of techniques carry over from C! I love that you have while loops and for loops just like in C. I was afraid it was gonna be like learning programming all over again (it's really not). The one thing that'll take some getting used to is that you have to end statements with commas, not semicolons.

Anyway, here's my script (Python 3.8 -- it's just a toy script to try out for loops and while loops). Any tips on how to improve my code and make it more idiomatic?

#include <stdint.h>
#include <stdio.h>

#/* pre-declare types and functions */
void: (type) = (type) ("(void *)0"),
int16_t: (type) = (type) (int(16))(),
int32_t: (type) = (type) (int(32))(),
puts: ((str) := void) = (print),
printf: ((str) := void) = (puts),

#/* confirm function and variable declarations */
[[void]] = (void),
[[total]] = (int32_t),
[[i]] = (int32_t),
[[puts]] = (puts),
[[printf]] = (printf),

#/* ensure forwards and backwards compatibility */
import __future__ as __past__
#define FUTURE PAST
#define PAST FUTURE

#/* output a formatted string to stdout */
def printf(s, __VA_ARGS__) -> (void) :{
    (void) (puts((void).__mod__(s, __VA_ARGS__), end=((void).__new__)(void))),
}

#/*******************************************************
# * SUMMATION SCRIPT                                    *
# *******************************************************
# * Sum up all the natural numbers up to 6. The result  *
# * should be 0 + 1 + 2 + 3 + 4 + 5 + 6 = 21.           *
# *******************************************************/

#/* print numbers from 0 to 6 */
int32_t: i = 0,
while (i <= 6) :{
    (void) (printf(" %d\n", i)),
    (i := i + 1),
}

(void) (puts("__")),

#/* sum up numbers from 0 to 6 */
int32_t: total = 0,
int32_t: i = 0,
for (int32_t) in (i <- 0, i <= 6, ++i) :{
    (total := total + i),
}

(void) (printf("%d\n", total)),

Formality: A dependently typed language for proofs.

Lazy evaluation in Python a la Haskell

https://www.reddit.com/r/Python/comments/pu55xb/python_is_actually_just_haskell_with_few_extra/

Did you know that Python 3.7 implemented a lazy, non-strict evaluation syntax behind a __future__ switch that is about to become enabled by default in 3.10 3.11? If you missed this major syntax change, then yeah, you are not alone, most people still haven't known about lazy evaluation yet despite Python 3.7 being released nearly 4 years ago. Actually, this syntax change was so unknown that I don't think most CPython core developers even knew about them either.

...

([F]or a full executable example, see the full gist, or execute online.)

GitHub Stars

PL / Compilers

M/o/Vfuscator: compiles programs into "mov" instructions, and only "mov" instructions. Arithmetic, comparisons, jumps, function calls, and everything else a program needs are all performed through mov operations; there is no self-modifying code, no transport-triggered calculation, and no other form of non-mov cheating.

ungrammar: A DLS for specifying concrete syntax tree

riscv-isa-sim: Spike, a RISC-V ISA Simulator. Very nice codebase.

gll: GLL parsing framework in Rust

Language server for the Nix language (WIP): A good example of using advanced features of nom

fathom: A declarative data definition language for formally specifying binary data formats

Husky: A lazy functional language similar to Haskell, but with a more conventional syntax

WolframResearch / codeparser: Parse Wolfram Language source code as abstract syntax trees (ASTs) or concrete syntax trees (CSTs)

WolframResearch / codeinspector: Find and report problems in Wolfram Language code

Eve and Eve-Native: A programming language based on years of research into building a human-first programming platform

polytype-rs: A Hindley-Milner polymorphic typing system

zerogc: Zero overhead tracing garbage collection for rust (WIP)

Electronics

Code for devices

CH554 USB Composite Device Demo

CH559sdccUSBHost: USB host to Arduino Interface with the Cheap CH559 uC

Commodore 64

C64 326298-Rev-A PCB

C64-Video-Enhancement: Component video modification for the C64 8-bit computer

C64 KU-14194HB Rev B Schematic and PCB

Commodore 64C schematics recreated in KiCad

Keyboards

dactyl-keyboard: Parameterized ergonomic keyboard OpenSCAD

ManuForm: Design files for my ManuForm custom keyboard

Ergodox Infinity PCB source files

Graphics

Vuh: A Vulkan-based GPGPU computing framework

PopSift: an open-source implementation of the SIFT algorithm in CUDA HiP

vtracer: Raster to Vector Graphics Converter built on top of visioncortex

Miscellaneous

matchpy: A library for pattern matching on symbolic expressions in Python

Scale your pandas workflow by changing a single line of code — Modin documentation

beatcracker/toptout: 📡 Easily opt-out from telemetry collection

Tutorials

llvm-tutor: a collection of self-contained reference LLVM passes. It's a tutorial that targets novice and aspiring LLVM developers

ImageStackAlignator: Implementation of Google's Handheld Multi-Frame Super-Resolution algorithm (from Pixel 3 and Pixel 4 camera)

terminusdb-tutorials: Tutorials for using TerminusDB

Books

Design With FontForge: A book about how to design new typefaces with FontForge

Handbook of Satisfiability, 2nd Edition

Higher Order Perl

Edward Tufte: Books - The Visual Display of Quantitative Information

The Programmer's Brain: What every programmer needs to know about cognition By Felienne Hermans, August 2021, 256 pages printed in black & white. ISBN: 9781617298677.

Aesthetic Programming: A Handbook of Software Studies by Winnie Soon and Geoff Cox

Neat!

Z80Explorer Visual Zilog Z-80 netlist-level simulator

The Herman Cain Award — Less neat than sad.

Framework | Framework Laptop pre-orders are now open

The LaTeX Font Catalogue

Oyla, an awesome science magazine for kids.

Visible Human - High res imaging of the insides of. the. human. body.

Me

A circle inversion mechanism

About

Interesting things curated by Robert Jacobson organized by year

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published