as the title suggests; what was your first working build and when did you start using the language? i’m fairly new to zig, from c. i’m curious about others’ first projects.
mine can be found here
Ytcli - youtube music TUI via innertube
as the title suggests; what was your first working build and when did you start using the language? i’m fairly new to zig, from c. i’m curious about others’ first projects.
mine can be found here
Ytcli - youtube music TUI via innertube
I started working on a Freetype bindings for mach in 2020 (2021?). I learned so much about low-level programming just from that one.
(It was a long ago so i may be lying about it being my first project lol)
I wrote some database speedup code in Zig for Python programs for one of my clients back in 2019, that was in use until a few months ago.
I distilled the binding and packaging part of that experience into the first release of setuptools-zig which was uploade to PyPI late 2020.
First got introduced to Zig at work many years ago.
They were in process of switching to the build system for cross compilation of C, not the language itself.
My first project (which i would call a project, not a language exploration), came about a year into me already using the build system. It was port of my really simple game i made in Unity before, and i made my own Raylib bindings for it.
Since then i used it for all my personal stuff, shit ton of networking, another game, some utility UI apps, and i made some parsers aswell (even used those at work, they were much faster than anything else we had).
I joined this forum about a 1,5 year ago and used Zig for years before that, if i remember correctly since 0.8 release (dont quote me on that tho xD).
Robert ![]()
I started switching to Zig about 8 months ago (from Rust, though, I’m not a real programmer at all who earns his living with it). But having watched the language since about two years.
My first project was a simple cli args lexer/parser, lexopts, for learning the language. I still use it for all of my projects, because I dont like the common struct driven arg parsing approaches which declare everything ahead of time.
Now, my first real project is my tui file manager called lui which is kind of an interactive version of ls -lah --group-directories-first, one of my most often used Linux commands ![]()
My first project was a simple program which fill template with contextual information. For example, to create a new C source file it will search for the corresponding template and replace, in the comment, the author name (base on the git config value), the date, etc.
My first project was an OS (no, really), two and a half years ago (2023). And to make it even worse: It was my first attempt at actually doing systems programming (before, I only did vanilla JS web stuff). Ziggit actually helped me a lot during that first months doing both systems and OS stuff for the first time; and I learned a lot!
And here I am, two and a half years later, and I’m still working on it (though a lot did change: I switched from x86_64 to riscv64, and the riscv64 stuff supports far more stuff).
It hasn’t quite gotten to the point where I’d like it to be, but I haven’t got myself enough time for programming…
Coming from rust, I started with a CLI to find words to form a pattern for any wordle word. Was kinda tough at times due to me never having used manual memory allocation before, but after like one return of a local variable, I figured it out. Was still using rust naming convention back then because I didn’t know any better haha.
Kinda just brute forced my way to knowing zig by that project and a few others, and it worked out! That was like half a year or so ago (maybe a tad bit more?), and still going strong ![]()
Now I’d say I know the language pretty well, I am quite active in InK’s discord server, so picked up a lot there by just talking with more experienced people, feels good to be the one helping others now sometimes
Currently working on a bit too much stuff, the main one is probably a compiler I’m working on.
A parser (parsed mathematical food expressions like “100-20g cereal * 10 + (2slice gouda / 2)”)
I had written the same thing in C++ and Rust and it was basically what I used to “audit” programming languages. And it convinced me that zig is the best language.
I highly recommend parsers as a first project for learning a language because you work with a lot of features from the language. (tagged unions, extracting the tag, reading/writing strings, etc).
If I ever learn a new language that’s probably what I would write. (Although tbh I don’t see myself using anything but zig in a serious project)
my first functional Zig program was a little ttrpg dice roller ~a year ago, which is my standard “quickly learn a new language” project. Read input, parse the expression, get random bytes, do a small amount of non-trivial math, write the output, make sure you handle all errors and have tests. It’s not an impressive project, but it touches a surprising amount of a language and only takes a few hours to have a complete working application with an obvious stopping point.
My next one was a little conformance checker for local json streams. It does it’s job well, and is the first one that wasn’t purely a learning exercise. That’s a problem domain I know forward and backward from previous work though, so getting the hang of Zig still ended up being the main focus.
I’m just picking up Zig as a language too, and got totally nerdsniped by the 1 billion row challenge from a few years back. I’m currently spending the month tinkering with it in Zig.
As someone who also came into Zig from a heavy C background (especially for the kinds of optimizations and tricks I’m reaching for right now), I’ve been thoroughly enjoying the level of explicitness and easiness Zig gives for some things that would sometimes look hairy in C and definitely wouldn’t be fun in higher-level languages.
Not sure what my first “real” project will be with it, but I’m definitely excited to have it in my toolbelt and will certainly try to use it in more places.
For me it was:
extern {
fn puts(s: *mut u8) -> i32;
fn exit(code: i32) -> unreachable;
}
fn _start() -> unreachable {
puts("Hello, world!");
exit(0);
}
Starting with zig 0.6, I made a crochet program to help me keep track of stitches and when to switch colors. I’d like to take some time to upgrade it to the latest version of SDL3, but I don’t have many crochet projects at the moment.
dang you just shot for the moon huh? lol i feel that, one of my first real projects in c was a vim like modal text editor i still use and work on.
would love to check it out.
my first zig program (if you don’t count ziglings) runs this cabinet, specifically an application that exposes the process data on an ethercat network to a pubsub protocol called zenoh. Started in 2024.
It was
What was your first programming language?
One of replies was:
Holy shit this forum is old AF.
2 years ago - 2024 (after Go and Php), I tried to start development on Rust.
Installed RustRover, but it had bug - scale did not work and i had no clue how to increase fonts size
As reasult - I installed CLion with ZigBrains and don’t regret it
So the first program ever written in zig then. A piece of history ![]()
Ahh, having my toy language for uni (long abandoned, but learned so much) finally successfully compile and run its first hello world is definitely one of my core programmer memories! Do you also cherish that memory of Zig doing it to this day?
Tbh that memory has been long squeezed out by all the WaniKani I’m trying to stuff in there
For me it was my editor, flow-control (and thespian, they were kind of the same thing in the beginning) which I started in November 2022. Self-hosted (flow is written entirely in flow) from around July 2023.