{"id":32516281,"url":"https://github.com/mnikander/lab","last_synced_at":"2026-07-11T07:31:53.239Z","repository":{"id":318815766,"uuid":"1076566257","full_name":"mnikander/lab","owner":"mnikander","description":"Questions, experiments, and prototypes for various topics","archived":false,"fork":false,"pushed_at":"2026-06-05T20:29:07.000Z","size":356,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-05T22:14:21.110Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mnikander.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-15T03:36:17.000Z","updated_at":"2026-06-05T20:29:12.000Z","dependencies_parsed_at":"2025-10-16T08:30:34.800Z","dependency_job_id":"30aae59f-7805-42fa-9604-cc7fa1c67d32","html_url":"https://github.com/mnikander/lab","commit_stats":null,"previous_names":["mnikander/lab"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mnikander/lab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mnikander%2Flab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mnikander%2Flab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mnikander%2Flab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mnikander%2Flab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mnikander","download_url":"https://codeload.github.com/mnikander/lab/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mnikander%2Flab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35355110,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-11T02:00:05.354Z","response_time":104,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-28T01:29:31.327Z","updated_at":"2026-07-11T07:31:53.227Z","avatar_url":"https://github.com/mnikander.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Lab\n\nThis is a collection of coding exercises and experiments.\nSome basic configs such as the and git-related settings are shared across labs.\nMost labs use TypeScript and Deno, but other programming langauges and tools are used as well.\nEach lab has its own directory which is like a standalone mini-repository.\nThere are no code dependencies between labs.\n\nEach lab is phrased as a question.\nThe tables below provide an overview of those questions.\n**Open** questions are sorted by priority (highest at the top).\n**Resolved** questions are sorted by their resolution date (most recent at the top).\nIf a question is marked with ~~strikethrough~~ it was either aborted or done as part of a another lab.\n\n## Open\n\n| Num  | Parent | Created    | Tags                 | Question |\n| ---  | ---    | ---        | ---                  | ---      |\n|      |        | 2026-0- | | |\n\n## Resolved\n\n| Num  | Parent | Created    | Tags                 | Question |\n| ---  | ---    | ---        | ---                  | ---      |\n| 0023 |        | 2026-05-15 | memory               | Can ownership be modelled within functions and across function boundaries with a small DSL? |\n| 0022 |        | 2026-05-14 | web                  | How can the content and structure of an HTML page be edited in place? |\n| 0014 |        | 2026-02-20 | ssa, graphs          | ~~How can an iterative fixed-point solver compute the availabilty of SSA variables?~~ |\n| 0021 |        | 2026-05-13 | capability, io       | How can a side-effect capabilities be injected into modules? |\n| 0020 |        | 2026-05-06 | ssa, memory          | Can a dataflow analysis check lifetimes of SSA variables in a function? |\n| 0019 |        | 2026-05-05 | ssa, graphs          | How can a control flow graph be constructed from SSA code? |\n| 0018 |        | 2026-05-03 | memory               | Can variable lifetimes be verified with a domain specific language (DSL)? |\n| 0017 |        | 2026-05-02 | ast, grammar         | Can an ANF-inspired grammar be relaxed to support nested expressions like Scheme? |\n| 0015 |        | 2026-03-16 | backend              | How can Hono be used to accept GET and POST requests? |\n| 0016 |        | 2026-03-21 | types                | How can a simple type system be defined and checked? |\n| 0013 |        | 2026-01-03 | graphs               | What is a lightweight way to implement reachability on directed graphs in Typescript? |\n| 0012 |        | 2026-01-02 | datalog, ssa         | How can non-dominance of CFG nodes be expressed using positive Datalog? |\n| 0011 |        | 2025-12-28 | datalog, types       | Can cons-cells be used to type-check multi-argument functions using Datalog? |\n|      | 0011   | 2025-12-27 | datalog, types       | How can multi-argument functions be type-checked using Datalog? |\n| 0009 |        | 2025-12-22 | datalog, types       | How can a basic type-checker be implemented in Datalog? |\n| 0010 |        | 2025-12-28 | datalog              | How can the equality of lists, constructed of cons-cells, be tested in Datalog? |\n| 0008 |        | 2025-12-19 | datalog              | How can I solve logic problems using Datalog? |\n| 0007 |        | 2025-12-18 | datalog              | How can Datalog be used to verify properties on graphs? | \n| 0006 |        | 2025-10-15 | memory               | How can cons cells be implemented? |\n| 0005 |        | 2025-10-25 | vm                   | How can an **evaluator for 3-address code** be implemented? |\n|      |  0005  | 2025-10-15 | vm, lowering         | ~~What is a simple set of **linear instructions** which can be used for programming?~~ |\n|      |  0005  | 2025-10-15 | vm, evaluation       | ~~How can an **evaluator using a program counter** on simple instructions be implemented?~~ |\n|      |  0005  | 2025-10-15 | vm, evaluation       | ~~How can **stack frames** be implemented?~~ |\n| 0004 |        | 2025-10-15 | ast, passes          | How can a function call node in an AST be split into two nodes, for currying? |\n|      |  0004  | 2025-10-15 | typescript, deno     | ~~How can a package be imported in a deno project?~~ |\n|      |  0004  | 2025-10-15 | syntax, ast          | ~~How can currying be implemented for function application?~~ |\n|      |  0004  | 2025-10-16 | ast                  | ~~Which simple AST representations are useful for analysis, optimization, and lowering prototypes?~~ |\n|      |        | 2025-10-18 | control-flow         | ~~How can recursion be implemented for anonymous functions, using 'fix'?~~ |\n| 0003 |        | 2025-10-05 | parsing              | How can the language of balanced parentheses be verified by a table-driven parser? |\n| 0002 |        | 2025-06-08 | evaluation           | How can de Bruijn levels be used to evaluate unary lambda calculus? |\n| 0001 |        | 2025-10-15 | typescript, deno     | How can Deno be used to prototype a function and a test in typescript? |\n| 0000 |        | 2025-10-15 | learning             | Can a questions repo, with compact code snippets and notes, speed up learning and implementation? |\n\n---\n**Copyright (c) 2025 Marco Nikander**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmnikander%2Flab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmnikander%2Flab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmnikander%2Flab/lists"}