What's everybody working on? (July Edition)

I’m polishing a pattern-matching against types mechanism, in the context of developping a module for composable type constraints. I’m a hobbyist and experimenting with comptime like it’s an esolang. I’m having fun.

I’ve been writing an app, mostly for learning purposes, which involves a polylith-based deployment. It’s a 4-part system with an orchestrator, an API gateway, the core-logic process and an administrative post-processor.
Each part is supposed to be replaceable by the orchestrator. All apps integrate to a shared epoll-based event loop. The API gateway takes HTTP requests, checks API key, rate limiting, schema, etc. and if everything checks up, proxies the request to the core process through a multiplexed Unix Socket. The post-processor reads request logs through some shared memory for (potential) billing and metrics. The orchestrator monitors the services and ensures they’re drained before starting new versions. The idea (that I want to prove with this setup) is that I can build a highly efficient service with moderate hardware by cutting abstraction layer like kubernetes, docker, etc., while learning about linux primitives and the capabilities they provide.

1 Like

Earlier this week I got started on a terminal-based music player.
It’s still in the pre-initial commit phase (I haven’t even decided on a name yet!) but I’m definitely gonna be posting updates on future “What’s everybody working on?” posts. Currently I have flac playback, progress drawing, and pausing implemented, but I’m hoping to make it into a full-fledged music player eventually.

Also, because of this project I’m pretty sure that I became one of the first ever users of this library. :​)

6 Likes

It’s looking beautiful! Academia typically doesn’t recognize this as measurable work, but thought-out and pretty diagrams increase the information density and clarity a lot IMHO.

3 Likes

I am using vulkan compute shaders to calculate iteration count in square storage buffers, and I place them onto a large computed storage buffer that gets remapped when zooming by a factor of 2 or more (or panning by a full block size or more). The large buffer is colored in a fragment shader that renders to the entire screen, with a zoom / position offset to enable smooth movement without remapping the computed buffer constantly. I am intending to change the storage buffers to texel buffers or storage images in the future.

If you want to learn more about fractal rendering in general, I highly recommend checking out this webpage, this blog, and afterwards the Fractal Forums Two.

6 Likes

Do share updates and, if possible, the text. It’s looking like a nice read.

1 Like

That’s great! I really love to hear that. :smiley:

I’ve been working on a programming language to learn more about compilers and language design. Thus far I’ve implemented type checking, global analysis, variables, loops, conditionals and some other stuff that I’m forgetting. Up next is functions, garbage collections, closures, structs, and some QOL features.
This project has been really fun and Zig’s been an absolute joy to use.

5 Likes

I’m working through the Khronos Vulkan Tutorial but writing the shaders in zig and doing bindless rendering and vertex pulling. I’m really excited about the spirv stuff that’s happening right now but on latest master the shader that I had written before all the spirv fixes no longer works so I’m blocked on that right now. But otherwise I’m enjoying doing graphics stuff in zig

6 Likes

Still working on Nano Dash (Boulder Dash action puzzler game). I almost finished the Editor now and working on the story content. The story will expand six different worlds with six bosses to fight and power ups to gain.

3 Likes

I managed to upgrade my radio player [1] to version 0.16.

It was straightforward, and the new IO interface made it more elegant.

Unfortunately, the metadata webpage now uses HTTP/2, but Zig standard HTTP client doesn’t support it. So, I’m using curl to update the titles and artists. I also switched from libvaxis to mibu to make the UI logic simpler.

Currently, I’m working on a game server that manages connections, usernames, remote messages, rankings, lobbies, etc. The goal is to bring the card game Parade [2] to a multiplayer game. I think I will use dvui for the UI.

When I’m feeling it, I solve one puzzle from Advent Of Code [3]

[1] https://codeberg.org/Adau/zignight
[2] https://boardgamegeek.com/boardgame/56692/parade
[3] https://codeberg.org/Adau/aoc

3 Likes

As mentioned in different other of those threads, Im mainly working on two main things:

  • my sole hobby project: a tui filemanager which is kind of a interactive version of ls -lah command called lui. Its relativley polished now and its my daily driver for fast file system movement and actions.
  • while Im no professional programmer, I still can build some stuff for my core working area (admin object storage server): as a co-maintainer of the S3 client lib z3 I try to implement more and more API calls of the S3 protocol; plus Im building kind of a cli frontend for that lib, similar to tools like aws s3 or mc. But thats pre-alpha and, thus, the repo is still private (but will be made public ofc, as soon as its kind of usable)
2 Likes

I’ve been using zig with Python for my day job (financial markets stuff).

It’s been an absolute joy. Translate-C chews up the Python.h header no problem, and I can read the CPython documentation and just write in zig whilst barely having to think about it. I find if I’m reading a C++ tutorial or something else I have to think hard about translating, but you can read information aimed at C and just write Zig without really thinking. The interop is great. I initially expected to have to use a library for interop (like PyO3 for rust) but it’s been very little work to understand CPython directly.

And yeah, everything we’re using it for is orders of magnitude faster. And way less magic than previous attempts with Cython, Numba, JAX, etc…

I’ve been meaning to write a hello world zig CPython module repo at some point to hopefully help others who want that interop.

6 Likes

I updated zig-vulkan-triangle example to zig 0.17.0-dev.1249+358c43939 in case it helps. I dropped the GLSL dependency in favor of zig spirv backend.

8 Likes

Please do!

1 Like

I just wanted to geek out and say how magical it feels that we can write shaders in Zig.
It doesn’t even feel real.

6 Likes

I’m exploring the design space of things like Nix, Guix, Brioche, etc. I’m calling this project tater, and each part of it will have a potato-themed name, because I’m the boss of me and I say I’m allowed to do that.

The first part is the language, spud. I’m going through Crafting Interpreters now because I’ve never written a programming language before. I’m thinking that the language will be close to Zig/Ziggy in syntax because (1) types are nice, and (2) tagged union literals are also nice.

I came up with the name Deep Friar the other day, but I’m not sure which part of the ecosystem I’d use this as the mascot for :sweat_smile: Some kind of boogeyman? The equivalent of Rust’s crater? The build farm? I don’t know, I just know that in my head the Deep Friar is essentially Davey Jones from Pirates of the Caribbean or Cthulu wearing a monk’s habit. The pun is simply too good not to use.

Thank you for listening to my Ted Talk.

6 Likes

10 Likes

My diary has leaked

3 Likes

New Zig user (how would I call myself? a zinger?), mostly use C and C++. Currently working on a “Hashi Bridges” implementation to both make something cool while learning Zig. Hopefully this will compile okay for the web like my other projects have using “emscripten”.


As you can see, I’ve still gotta fix the disconnected island. (For note, all nodes must connect to each other, no loops are allows, and some bridges can be doubled)

Also compiling a note of initial thoughts about the language that I might post here.

7 Likes