Skip to content

Instantly share code, notes, and snippets.

@juliaogris
Last active December 8, 2023 04:16
Show Gist options
  • Save juliaogris/05d459cbdb475c53cced8c06dde71072 to your computer and use it in GitHub Desktop.
Save juliaogris/05d459cbdb475c53cced8c06dde71072 to your computer and use it in GitHub Desktop.

Retired!

This little task list has been retired in favour of GitHub projects

Bugs 🐞🪲🐜

No known bugs 🎉

Goals Q3 2023

  • parser: keep scope in parser state as explicit stack
  • go: revisit .String() and .Format(), revisit fmt.Println(s1+s2) now that fmt.Printf works, also quoting.
  • Redo font command
  • Add grid command
  • evy: typeof anyval // "num[]" type reflection; anyval.(num[]) type assertion
  • Add cls command
  • Minor/major release automation via docs/release-notes/v.*.md new file check on merge to master for make release
  • Add exit command
  • Revise docs: add default value for any; remove append, prepand
  • allow whitespace inside parens of type assertions
  • Fix dot expression WS bug: Endless loop for m[0]. a = 3
  • Learn content fixes
  • Add builtin docs
  • Add late binding for array / map lit to potential []any or {}any - see font { size: 4 }
  • Add panic
  • Add late composite literal bindings to allow for evy native font {size:4} for param type {}any
  • Revise spec
  • Add README.md
  • Replace italics with bold in docs (more suited to tech terms)
  • Fix literals for []any and {}map
  • v0.1.0 release
  • learn: 2. Variables and types num, string, bool, Declaration (typed, inferred); read, cls
  • learn: 3. Flow control while, if, for
  • learn: 4. Operators num, string, bool, comparison, precedence

unplanned

  • parser: Fix function calls with indexed arguments (prev error: print {} [])
  • parser: Fix typing of array concatenation expressions (print (typeof []+[true]) -> [][]bool)
  • parser: Fix bad unreachable code error on comments
  • format: Fix misplaced NL before func decl
  • eval: Type empty array and map lit on assignment
  • docs: Add ToC and horizontal separators to builtins
  • parser: Remove tinygo v0.27.0 map hack
Longer term evy

Goals Q4 2023

  • samples: Refactor tictactoe for text / graphic to use same game logic
  • frontend: embedable evy code snippet
  • frontend: embedable evy editor. Ctrl+f finds everythign 3 times with current solution :(
  • frontend: embedable playground / canvas
  • frontend: Auto-run, fullscreen, local edits in local storage (#local)?
  • backend: firebase snippets
  • backend: firebase snippets with user account / namespace
  • evy: Allow vertical whitespace within ()
  • evy: %d would be great instead of %.0f
  • evy: evy parse|format to disable "unused variable errors"
  • heads or tails, guess my colour, turtle draw, bricks, Mandelbrot
  • outreach: screen-cast / video - Evy Pitch.
  • learn: interactive drawing
Longer, loooonger term
  • samples: Color Voronoi, Brick Breaker
  • evy: curve (PR 117), img <URL>
  • evy: modules; test by mocking read/input
  • evy: compile to custom VM, compile to wasm
  • evy: explore llvm for micorprocessors (see tinygo)
  • evy: work with firebase HTTP api to make it replaceable.
  • evy: "coach" with cusotm trained self-hosted llm
  • tools: vscode / lsp Evy extension
  • tools: debugger
  • cli: png & ascii based graphics, see pkg image/png
May 2023

Goals May

  • Add tictactoe to games
  • rand 0: panic: invalid argument to Int31n
  • read with empty string panics
  • read with CLI captures "\n"
  • fix run button animation
  • remove yielder not implemented from CLI
  • water melon sample: click and drag outside of canvas watermelon keeps moving.
  • Move ellipse to animations and create simpler ellipse sample, add bounce
  • Find a way to write challenges for Mali
  • Wiki: https://github.com/foxygoat/evy/wiki disclaimer on numbering Q1.a Q1.b etc.
  • Wiki: short description on how stuff works for each section: print; drawing
  • missing evaluator errors
  • labels on drawing of bottom right corner wrong
  • click on link with content, then nav menu broken
  • Only eval RHS of and / or if needed
  • Add curves to canvas
April 2023

Goals April

  • canvas enhancements
  • send bouncing ball sample to Miles
  • Fix len array with array in outer scope
  • Fix "" string literal as func arg bug
  • Reset all error highlights on re-run
  • Find a way to write challenges for Mali

16 April

  • Fix "" string literal as func arg bug PR118
  • Fix len array with array in outer scope
  • Reset all error highlights on re-run
  • Split canvas enhancements PR117
  • Create single ellipse sampe with ellipse x y rX [rY [rot [start end]]] with arrows & space keys.
March 2023

Goals March

  • canvas enhancements
  • README.md & about page
  • Transition to ViteJS (& SvelteJS?)
  • Auto-run option fragment parameter
  • Fullscreen parameter
  • Save edits for #local in local storage
  • Share button
  • Error line highlighted in code
  • New design live
  • Create exercises as raw evy files
  • Dynamic input/output UI
  • wasm main arg via jsAction (format, initui, eval)
  • Syntax colouring
  • Use canvas.transform instead of calculating transfors in index.js (would transform text)

30 March

  • canvas enhancement
  • Start on: basic README, revise docs

24 March

  • merge: Error line highlighting PR114
  • start: sharing funcitonality
  • start on README / docs
  • start new tutorial things (exercises for Mali, explaining canvas)

23 March

  • rfr: Error line highlighting PR114
  • start on README / docs
  • start new tutorial things (exercises for Mali, explaining canvas)

21 March

  • start PR for error line highlighting
  • further explore ViteJS - postCSS, unbundle
  • start on README / docs
  • start new tutorial things (exercises for Mali, explaining canvas)

21 March

  • rework runtime as interfacae PR106
  • merge: jsAction (fmt, ui, eval) / dynamic input/output UI PR106
  • merge: Splash of Trig sample PR110
  • rfr: Syntax highlighting / yace editor PR111

18 March

  • rework runtime as interface PR106
  • merge: jsAction (fmt, ui, eval) / dynamic input/output UI PR106
  • merge: Splash of Trig sample PR110
  • create: Syntax highlighting / yace editor.
  • research: Rollup Vite

17 March

  • merge: jsAction (fmt, ui, eval) / dynamic input/output UI PR106
  • merge: improve events sample PR107
  • merge: add maths essentials PR108
  • start: Syntax highlighting / yace editor.

16 March

  • start: wasm main arg via jsAction (fmt, ui, eval) PR106
  • start: dynamic input/output UI PR106

15 March

  • Merge frontend housekeeping PR100
  • Refactor index.js: globals at top, section headers, focus on readability
  • Fix formatting bugs
  • Start on course
  • Start on action-JS and dynamic UI

14 March

  • email Christof, Jas, Kathi, Mantas
  • fix mobile run-button bug on sample change PR100
  • fix navigating "home" bug for #welcome PR100
February 2023

Goals February

  • Sleep & event handler (on up, down, move, key, animate; readlin)
  • _ ignore var. for range 10, nums(str), bools(str), printf, prints
  • New design live
  • README.md & about page

22 Feb

  • Investigate strange bug with print inside empty for loop
  • Finish first approach to formatting

18 Feb

  • Newline inside array and map definitions
  • Capture NL and comments in AST
  • Create evy format

17 Feb

  • Create PR on animate elapsed:num (milliseconds) (PR81)
  • Create PR rand and rand1 (PR82)
  • Use sleepingYielder in read and runtime.Sleep resetting count & start (PR81)
  • add modulo operator (PR83)
  • for range 10 // no decl
  • _ variable like go

16 Feb

  • evy: Merge PR78 builtin str2num and str2bool
  • evy: Merge PR79readline PR
  • evy: Create and merge PR80 on input val:string id:string
  • evy: Create on animate elapsed:num (milliseconds)
  • evy: for range 10 // no decl
  • evy: _ variable like go

15 Feb

  • evy: Merge PR70 on eventHandler parsing
  • evy: Merge PR73 on eventHandler eval (up, down, move, key)
  • evy: Merge PR77 builtin fprint
  • evy: Merge PR78 builtin str2num and str2bool
  • evy: Create readline PR
  • evy: Create on animate elapsed:num (milliseconds) PR
  • evy: Create on input val:string id:string PR
  • evy: for range 10 // no decl
  • evy: _ variable like go

14 Feb

  • evy: Merge PR70 on eventHandler parsing
  • evy: Merge PR73 on eventHandler eval (up, down, move, key)
  • evy: Create builtin fprint PR77
  • evy: Create builtin str2num and str2bool PR78
  • evy: Create readline PR
  • evy: Create on animate elapsed:num (milliseconds) PR
  • evy: Create on input val:string id:string PR
  • evy: for range 10 // no decl
  • evy: _ variable like go

13 Feb

  • evy: Merge PR76 finally fix mem corruption bug
  • evy: Clean-up and close stale PR mem corruption fix attempts: PR75, PR74

9 Feb

  • evy: Merge PR68 - evaluator error panic
  • evy: Create PR for on syntax in parser
  • evy: Create PR for on syntax signature and name checks for down like builtin funcs
  • evy: Rename all graphics function to avoid move name collision
  • evy: Add on up, on down, on move, on key and on animate handlers

8 Feb

  • evy: Merge PR67 Add Stop button and func
  • evy: Replace TODO in eval with return newError("internal error: unknown node type: " + node.Type().String())
  • evy: Add onmouse/onkey handlers, onsyntax (params?)
  • evy: Add readln
  • evy: Add requestAnimationFramex

Unplanned

  • evy: Parse prror on function redeclaration PR69

6 Feb

  • evy: Merge PR65 - Use main for evy wasm exec
  • evy: Merge PR66 Add sleep to evy
  • evy: Add cancel button and func
  • evy: Add onmouse/onkey handlers, onsyntax (params?)
  • evy: Add readln
  • evy: Add requestAnimationFrame

2 Feb

  • evy: Use main for evy
  • evy: Workout webworker as to not freeze browser tab with endless loop
January 2023

31 Jan

  • evy: Post message to #tinygo re sleep and reinstantiating
  • evy: Workout how tinygo playground does sleep
  • evy: Explore use of channels for UI events
  • css4jsdevs: First exercise

30 Jan

  • evy: Merge PR 63: refactor evaluator scope into state
  • boutiquemaths: Hand over GH pages website setup to Duana https://boutiquemaths.github.io/
  • evy: Workout webworker as to not freeze browser tab with endless loop
  • evy: Workout how tinygo playground does sleep
  • evy: Explore use of channels for UI events
  • 3d: build base layer of bamboo geodesic dome
  • css4jsdevs: First exercise
November 2022

15 Nov

  • orderer: CSV export in matrixify format
  • evy: Workout event-loop / wasm interface via Stop running program button
  • evy: Fix console output layout
  • 3d: print a hexabox

14 Nov

  • jul.run: Fix TLS issues with traefik/k8s on pi
  • orderer: Deploy OAuth demo on jul.run issuing token (in logs) for shopify dev store
  • orderer: CSV export in matrixify format
  • evy: Workout event-loop / wasm interface via Stop running program button
  • 3d: print a pullcopter
  • 3d: print a hexabox

9 Nov

  • orderer: Decrement inventory optionally with order
  • orderer: CSV export in matrixify format
  • orderer: Sort out auth flow for custom shopify app
  • evy: Merge Whitespace PR 32
  • evy: Merge Grphics PR 51
  • evy: Add sprint

8 Nov

  • orderer: Decrement inventory optionally with order
  • orderer: CSV export in matrixify format
  • orderer: Sort out auth flow for custom shopify app
  • evy: Merge Whitespace PR 32
  • evy: Add canvas to playground
  • evy: Add draggable splitter to playground
  • evy: Add first drawing primitives: Move, Line, Rect, Color, Linewidth
October 2022
  • negative step range broken: for n := range 50 28 -1 ...
  • off by one in docs arr := ["a" "b"]; print arr[1] // index: a

Longer term evy

  • for range
  • builtins: has, del
  • WS sensitivity
  • graphics library (move, line, square...)
  • map builtins: has, del
  • update docs with map iteration semantics

27 Oct

  • evy: merge docs rework PR 31
  • evy: restart ws PR rework PR 32
  • 3d: print white jellyfish tentacles
  • 3d: make a plan for tank slavation
  • 3d: start updating tinkercad deisgns for tank slavation
  • order: merge brew install orderer PR 5, PR 6, PR 7
  • order: merge get, list, delete and update commands PR 8

26 Oct

  • evy: merge map assign fix PR 46
  • evy: merge builtins has & del PR 45
  • orderer: get start on first PR creating an ORDER in shopify store
  • 3d: finish printing jellyfish

25 Oct

  • evy: get start on PR fixing map assignment bug for inexistent entries
  • evy: ptal builtins has & del PR 45
  • orderer: get start on first PR creating an ORDER in shopify store
  • 3d: start printing a jellyfish
  • 3d: start assemling assemble crawler

24 Oct

  • evy: Merge For-Range PR 43
  • evy: Get a start on indexing issue [1]
  • evy: Get a start on not set isUsed var issue [2]
  • evy: Get a start on tests for weird step ranges [3]

[1]: this doesn't seem to work:

a := [ ([1 2 3]) ([4 5 6]) ]
a[0][1] = 7

Also

(a[0])[1] = 7

although that doesn't really need to work if the former does (Thanks, @camh-)

[2]: You need to set v.IsUsed when used on the left-hand side in an array index. e.g:

a := [ ([1 2 3]) ([4 5 6]) ]
b := a[0]
b[1] = 7
print a

This prints the error that b is not used, but it is. (Again: Thanks, @camh-)

[3]:

for x := range 0 (-1) 1 -> no an issue. 0+1 > -1
for x := range 0 1 (-1) -> also not an issue i think: 0 + (-1) < 1

20 Oct

  • evy: Merge BasicType Expr evaluation PR 37
  • evy: Merge Array and Map literal evaluation PR 38
  • evy: Merge index and dot expr evaluation PR 39
  • evy: Merge index and dot expr evaluation PR 40
  • evy: Merge slice PR 41
  • evy: Merge wrapped any fix PR 42
  • evy: RFR Start For-Range
  • 3d: Print some crawler bits
  • 3d: Do a thing in Fusion 360

19 Oct

  • evy: Merge BasicType Expr evaluation PR 37
  • evy: Merge Array and Map literal evaluation PR 38
  • evy: Merge index and dot expr evaluation PR 39
  • evy: Merge index and dot expr evaluation PR 40
  • evy: RFR slice PR 41
  • evy: Start For-Range
  • 3d: Print something pink for Anika
  • 3d: Do a thing in Fusion 360

18 Oct

  • evy: Merge BasicType Expr evaluation PR 37
  • evy: Merge Array and Map literal evaluation PR 38
  • evy: Start index and dot expr evaluation PR 39
  • evy: Replace ErrorVal with panic in evaluator
  • 3d: Print a crocodile for Mali
  • 3d: Print more cogs & rods for new cog board, see if works with little motor
  • 3d: Do a thing in Fusion 360

Unplanned

  • evy: Evaluate Array concatenation PR 40

17 Oct

  • evy: Merge Pratt Expr parser PR 33
  • evy: Remove parser_type.go PR 34
  • evy: Invert types: num[] => []num PR 34
  • evy: Implement index-expr and dot-expr for left hand of assign PR 35
  • evy: Re-review Docs update PR 30
  • evy: Get a start on Expr evaluation PR 37
  • 3d: Print another gear board
  • 3d: Do something with fusion 360

Unplanned

  • evy: Rename PREFIX to UNARY in parser PR 36

14 Oct

  • evy: ready for review: Pratt expr parser PR 33
  • evy: ready for review: Docs update PR 31

13 Oct

  • evy: Add infix funcs index and dot to PR 33
  • evy: Add prefix funcs arrayLit and mapLit to PR 33
  • 3d: print hotdog

12 Oct

  • evy: Get a start on expression parsing with Pratt parser (whitespace insensitive)

11 Oct

  • 3d: Print something
  • triangulation: Respond to contracting proposal 😿 - took it
  • evy: Merge PR 30 - Break
  • evy: Get a start on white space sensitive docs - Parked PR 31

Unplanned

  • evy: Get a start on white space sensitive lexing - Parked PR 32

10 Oct

  • 3d: Callibrate Prusia
  • triangulation: Respond to contracting proposal
  • evy: Merge PR 30 - Break
  • evy: Get a start on white space sensitive - and [

7 Oct

  • evy: Merge PR 27 - Add PR comment with deployment URL
  • evy: get a start on next PR for break statements

Unplanned

  • evy: Merge PR 29 - Master/prod deploy fix

6 Oct

  • evy: merge PR 24 - unused variable error
  • evy: merge PR 25 - stricter linter settings
  • evy: get a start on next PR for break statements

Unplanned

  • evy: Merge PR 26 - Replace firebase-deployment action
  • evy: Merge PR 28 - Fix continuous deployment for master
  • evy: Merge PR 27 - Add PR comment with deployment URL

5 Oct

  • evy: merge PR 23 return errors
  • evy: get a start on next PR for break statements
  • 3d: get a start on setting up MK3s

Unplanned

  • evy: start on unused variable PR 24
  • evy: start on stricter linter settings PR 25

4 Oct

  • evy: merge PR 22: while
  • evy: get start on break statments

Unplanned

  • evy: Start on "unreachable code after return" and return type assertion
September 2022

16 Sep

  • evy: merge PR 21: if statements

Unplanned

  • evy: merge PR 20 docs: Enforce at least one statement in blocks

15 Sep

  • evy: merge PR 19: assignments
  • evy: get start on PR: if statements
  • 3d: calibrate printer
  • 3d: make a third another ullagami

14 Sep

  • evy: merge PR 16: return statements + evaluation
  • evy: get start on PR 19: assignment statements + evaluation
  • 3d: calibrate printer
  • 3d: make another ullagami

Unplanned

  • evy: merge PR 17 fix typos
  • evy: merge PR 18 refactor builtins (edited)

13 Sep

  • evy: updated PR 15 to include error message in tests
  • evy: ideally merge PR 15
  • evy: get start on PR 16: return statements + evaluation
  • evy: get start on PR: assignment statements + evaluation
  • pikates: get context back (edited) (not going to happen)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment