8f85d51758e9f9bcf7673e58460242ae0685a1f5 — Prokop Randacek 5 months ago bdaf931
add projects tab
4 files changed, 85 insertions(+), 0 deletions(-)

A assets/alc.webp
A assets/whisper.webp
A assets/whisper_err.webp
A content/projects.md
A assets/alc.webp => assets/alc.webp +0 -0
A assets/whisper.webp => assets/whisper.webp +0 -0
A assets/whisper_err.webp => assets/whisper_err.webp +0 -0
A content/projects.md => content/projects.md +85 -0
@@ 0,0 1,85 @@
# Projects

## [asciilasers](https://git.sr.ht/~prokop/alc) (2023)

C++20, Meson, FTXUI, Catch2, clang-tidy, libFuzzer

Esoteric visual programming language. Includes a [language
specification](https://git.sr.ht/~prokop/asciiLasers-spec), [implementation and


## [Whisper](https://git.sr.ht/~prokop/whisper) (2022)

C, Meson, Bison, Flex, SPIR-V

I believe there is no way of linking compile time GLSL code with runtime
generated SPIR-V[^glsl]. Therefore I created the Whisper language and whc
compiler to provide similar (but lower level) experience to GLSL with this
additional feature. The compiler implements lexing, tokenizing, semantic
analysis of the AST, error reporting and code gen of unoptimized SPIRV.

![](/assets/whisper_err.webp) ![](/assets/whisper.webp)

## [FactorioFotograf](https://git.sr.ht/~prokop/FactorioFotograf) (2021)

C, Lua, Make, CI

Small and fast generator of web-viewable maps of Factorio saves. Unfortunately
Linux-only because of dependent libraries (libucw).

## [Pebble](https://git.sr.ht/~prokop/lua-pebble) (2023)

Tiny Lua package manager that injects itself into `require` and fetches/updates
dependencies on demand as they are `require`d. (Currently Linux-only but would
be trivial to port)

## [lua-fp](https://git.sr.ht/~prokop/lua-fp) (2022)

Small library with functional style of lazy iterators over Lua constructs.

# Yet Unfinished Experiments

## [Lebka](https://git.sr.ht/~prokop/lebka) (2023)

Rust, Lua

I think that Lua would make a great replacement of the entire HTML/CSS/JS stack.
Currently thinking about the best way to declare website layout in code.

## [lb](https://git.sr.ht/~prokop/lb) (2023)

Lua, C

There is no good general purpose build system. I think Lua would be a great fit.

## [lua-spreadsheet](https://git.sr.ht/~prokop/lua-spreadsheet) (2022)

Lua, SDL2

Minimalistic spreadsheet application with lua scripting.

## [beltwiz](https://git.sr.ht/~prokop/beltwiz) (2023)

Lua, Factorio

Autonomus hive mind that can play Factorio instead of me.

## [uzenatch](https://git.sr.ht/~prokop/uzenatch) (2022)


Toy chess engine.

# Open source contributions

- [Stockfish](https://github.com/official-stockfish/Stockfish/pull/3461)
- [SPIV-Headers](https://github.com/KhronosGroup/SPIRV-Headers/pull/261)
- [FTXUI](https://github.com/ArthurSonzogni/FTXUI/pull/660)
- [qoi](https://github.com/phoboslab/qoi/pull/256)
- [umka-lang](https://github.com/vtereshkov/umka-lang/pull/209)
- [umka-lang 2](https://github.com/vtereshkov/umka-lang/pull/126)
- [tup](https://github.com/gittup/tup/pull/477)

[^glsl]: The problem is that the [main glsl implementation](https://github.com/KhronosGroup/glslang) [does not allow function declarations without definitions](https://github.com/KhronosGroup/glslang/blob/main/glslang/MachineIndependent/linkValidate.cpp#L1484) and because of that you can't call code that does not exists at the time of compiling the GLSL code.