# What was the first functioning program you built with zig and when did you start?

**URL:** <https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170>\
**Category:** Showcase\
**Tags:** community\
**Created:** [June 14, 2026, 8:31pm UTC](https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170 "2026-06-14T20:31:56Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![Jan200101](https://ziggit.dev/user_avatar/ziggit.dev/jan200101/32/8236_2.png) [@Jan200101](https://ziggit.dev/u/Jan200101)\
**Post date:** [June 16, 2026, 9:06am UTC](https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170/21 "2026-06-16T09:06:55Z")

</div>

Despite having worked on and with zig for a long time before the first program _I_ built was zig-colors in 2021, a basic program that just printed ANSI Color escape sequences.

---

<div class="post-metadata">

**Author:** ![IbrahimOuhamou](https://ziggit.dev/user_avatar/ziggit.dev/ibrahimouhamou/32/2344_2.png) [@IbrahimOuhamou](https://ziggit.dev/u/IbrahimOuhamou)\
**Post date:** [June 16, 2026, 10:10am UTC](https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170/22 "2026-06-16T10:10:21Z")

</div>

tried making a task-manager with tasks as nodes in a graph/canvas with multiple parents & children and tried making the GUI with sdl, gtk then raylib. repo deleted (a habit of mine) but I still want a task manager in a tree-like structure. (thanks for reminding me to rebuild it)

I started with Zigling and Andrew’s talks about Zig, I basically dreamed of using C in prod but Zig sounds more reasonable. ngl, now I’m not satisfied with any other language anymore, Odin might get a pass if I learn it since I suppose it might be easier for teams or something

---

<div class="post-metadata">

**Author:** ![hvbargen](https://ziggit.dev/user_avatar/ziggit.dev/hvbargen/32/5696_2.png) [@hvbargen](https://ziggit.dev/u/hvbargen)\
**Post date:** [June 16, 2026, 4:08pm UTC](https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170/23 "2026-06-16T16:08:30Z")

</div>

Oracle SQL\*Plus does not allow uploading files as BLOBs to the DB, but I needed such a functionality. I decided to to work with base64 chunks and a few lines of PL/SQL on the DB side and just needed a Client-Side tool to generate such chunks from a given file, with no runtime dependencies, and small size of the executable.

I had experimented with V before, but our AV software didn’t like the compiled executable, so I tried Zig, with the “help” of AI, which generated a mixture of Zig and Rust that didn’t compile, but I was able to fix it within 2 hrs or so, and thought to myself: not bad given that the language is absolutely new to me. The AV didn’t bother, the executable was small and just worked.

Later we decided to not use this solution for other reasons, and now I have also seen the AV complain about Zig-generated executables, but this is just due to the fact that the AV just doesn’t know the new executables, and gives false alarms. I also had that with MSVC generated executables…

Anyway, I decided to learn Zig and use it for hobby projects.

---

<div class="post-metadata">

**Author:** ![PauSolerValades](https://ziggit.dev/user_avatar/ziggit.dev/pausolervalades/32/7429_2.png) [@PauSolerValades](https://ziggit.dev/u/PauSolerValades)\
**Post date:** [June 17, 2026, 10:14am UTC](https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170/24 "2026-06-17T10:14:29Z")

</div>

writing a parser as one of the best things to learn a language is very based, i totally agree!

---

<div class="post-metadata">

**Author:** ![bthompson](https://ziggit.dev/user_avatar/ziggit.dev/bthompson/32/6814_2.png) [@bthompson](https://ziggit.dev/u/bthompson)\
**Post date:** [June 17, 2026, 2:02pm UTC](https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170/25 "2026-06-17T14:02:38Z")

</div>

Mine was a solution to [Day 1 of Advent of Code 2023](https://adventofcode.com/2023/day/1), back on Dec 1 2023 (of course).

My memory when writing that first program was that it felt like the compiler was fighting with me just to get anything done… how things change! Now whenever the compiler picks up something that’s not a typo, it’s often catching a bug that many a C compiler would have allowed (well, at least without `-Wall`).

---

<div class="post-metadata">

**Author:** ![platypro](https://ziggit.dev/letter_avatar_proxy/v4/letter/p/db5fbb/32.png) [@platypro](https://ziggit.dev/u/platypro)\
**Post date:** [June 17, 2026, 2:07pm UTC](https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170/26 "2026-06-17T14:07:13Z")

</div>

I don’t even remember what my first working program was. I’ve cooked up so much zig since 2023 when I started. The earliest I can put my finger on was @mattnite 's synth workshop at SYCL 2023.

---

<div class="post-metadata">

**Author:** ![Southporter](https://ziggit.dev/user_avatar/ziggit.dev/southporter/32/2500_2.png) [@Southporter](https://ziggit.dev/u/Southporter)\
**Post date:** [June 17, 2026, 2:28pm UTC](https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170/27 "2026-06-17T14:28:36Z")

</div>

I learned Zig by following [Crafting Interpreters](https://craftinginterpreters.com/) and translating it from C to zig. My implementation is [here](https://github.com/Southporter/zlox).

I started using zig just as 0.10 was coming out. Thankfully I missed Allocgate.

---

<div class="post-metadata">

**Author:** ![QuaternionWake](https://ziggit.dev/user_avatar/ziggit.dev/quaternionwake/32/6355_2.png) [@QuaternionWake](https://ziggit.dev/u/QuaternionWake)\
**Post date:** [June 17, 2026, 5:30pm UTC](https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170/28 "2026-06-17T17:30:41Z")

</div>

My first ever Zig program was an implementation of [Conway’s game of life](https://github.com/QuaternionWake/game-of-life) for my undergrad thesis!

I was working on an implementation for some time in rust, but I ended up getting really bogged down in designing an interface to represent the game, so I decided it’d probably be easiest to just start all over, and I have been eyeing Zig for a month or two at that point and decided to go with it, and since then I’ve been working almost exclusively in Zig for my personal projects.

It was also the first graphical program I ever wrote (raylib + raygui)!

---

<div class="post-metadata">

**Author:** ![asibahi](https://ziggit.dev/user_avatar/ziggit.dev/asibahi/32/5416_2.png) [@asibahi](https://ziggit.dev/u/asibahi)\
**Post date:** [June 17, 2026, 10:21pm UTC](https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170/29 "2026-06-17T22:21:32Z")

</div>

To learn Zig, [I followed the Writing a Compiler book, by Nora Sandler](https://ar-ms.me/thoughts/c-compiler-1-zig/). Basically a small, working very incomplete C compiler .. so judging by the dates on those pages, May 2025?

The first piece of software I am actually using is [`3sl`](https://ziggit.dev/t/3sl-a-sweet-hex-viewer/14933). Which is a terminal based hexdump viewer.

---

<div class="post-metadata">

**Author:** ![elyfheim](https://ziggit.dev/user_avatar/ziggit.dev/elyfheim/32/9177_2.png) [@elyfheim](https://ziggit.dev/u/elyfheim)\
**Post date:** [June 18, 2026, 5:30am UTC](https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170/30 "2026-06-18T05:30:33Z")

</div>

I started writing zig last year when it was still 0.15.1 I believe, the first project I actually managed to finish (…sorta) was this CLI mini database program (kinda like a dumber, simpler SQLite).

I also tried to make a custom JS renderer but that did not go anywhere lol. I’m getting back into zig though after like 5 months of hiatus (work-related) and I plan on doing more of it because I really like the language!

---

<div class="post-metadata">

**Author:** ![GigaGrunch](https://ziggit.dev/user_avatar/ziggit.dev/gigagrunch/32/1823_2.png) [@GigaGrunch](https://ziggit.dev/u/GigaGrunch)\
**Post date:** [June 18, 2026, 10:07am UTC](https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170/31 "2026-06-18T10:07:46Z")

</div>

A friend of mine sent me a link to [https://ziglearn.org/](https://ziglearn.org/) in July 2020 and I started looking into it. In the beginning, I started several course-like things ([Advent of Code](https://adventofcode.com/), [Handmade Hero](https://guide.handmadehero.org/), [Write Yourself a Git](https://wyag.thb.lt/)), but the first actual program that I remember building was about a year later: a singleplayer command line version of the German card game [Doppelkopf](https://en.wikipedia.org/wiki/Doppelkopf).

---

<div class="post-metadata">

**Author:** ![Ziggurat](https://ziggit.dev/letter_avatar_proxy/v4/letter/z/67e7ee/32.png) [@Ziggurat](https://ziggit.dev/u/Ziggurat)\
**Post date:** [June 18, 2026, 2:09pm UTC](https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170/32 "2026-06-18T14:09:00Z")

</div>

After many attempts, my first functioning program, it is the implementation of the LZSS algorithm for data compression. I found a older Zig implementation and I used as a base and enhanced it with some improvements. The goal was and still is to use the topic I like (data compression) to learn the language.  
The community on the telegram channel [Telegram: View @ziglang\_en](http://t.me/ziglang_en) is a great help when I struggle with the syntax.

---

<div class="post-metadata">

**Author:** ![guidoschmidt](https://ziggit.dev/user_avatar/ziggit.dev/guidoschmidt/32/2317_2.png) [@guidoschmidt](https://ziggit.dev/u/guidoschmidt)\
**Post date:** [June 18, 2026, 6:37pm UTC](https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170/33 "2026-06-18T18:37:22Z")

</div>

First stumbled upon zig when I started digging more into using [thi.ng/umbrella](https://thi.ng/umbrella) for creative coding, about 3 years ago. Was keen to learn more about WebAssembly at that time in a hope for a more performant language — that I could also use to build native programs without the need for a JavaScript/TypeScript runtime. I dis some experiments with Rust (a game of life implementation) before but after all ended up using [thi.ng/wasm-api](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/wasm-api#readme) in combination with zig.

The first functional zig program for me therefore was an edge of chaos implementation with thi.ng/wasm-api.

---

<div class="post-metadata">

**Author:** ![samuel-fiedler](https://ziggit.dev/user_avatar/ziggit.dev/samuel-fiedler/32/2801_2.png) [@samuel-fiedler](https://ziggit.dev/u/samuel-fiedler)\
**Post date:** [June 21, 2026, 6:35pm UTC](https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170/34 "2026-06-21T18:35:24Z")

</div>

It’s at [https://codeberg.org/loup-os](https://codeberg.org/loup-os) (kernel is in [https://codeberg.org/loup-os/kernel](https://codeberg.org/loup-os/kernel)).  
Also, a very old x86\_64 part is there for people that want a bootloader that can load the “hello world” kernel: [https://codeberg.org/sfiedler/zig\_os](https://codeberg.org/sfiedler/zig_os) (I know, terrible naming).  
Do you have your vim like modal text editor somewhere? I’d love to try it!

---

<div class="post-metadata">

**Author:** ![pierrelgol](https://ziggit.dev/user_avatar/ziggit.dev/pierrelgol/32/10233_2.png) [@pierrelgol](https://ziggit.dev/u/pierrelgol)\
**Post date:** [June 21, 2026, 8:14pm UTC](https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170/35 "2026-06-21T20:14:24Z")

</div>

I’m not sure it was either a port of one of my school project which was a graphic project where you needed to implement a Cpu wireframe representation in 3d. Or a multithreaded lock-step multiplayer netcode both were trash by the way but very interesting to do.

---

<div class="post-metadata">

**Author:** ![ibd1279](https://ziggit.dev/user_avatar/ziggit.dev/ibd1279/32/6523_2.png) [@ibd1279](https://ziggit.dev/u/ibd1279)\
**Post date:** [June 22, 2026, 2:06pm UTC](https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170/36 "2026-06-22T14:06:18Z")

</div>

I’m not user if there was some other small experiments before hand, but I think [GitHub - ibd1279/zigdnsguide: Implementing a DNS server as a Zig tutorial. · GitHub](https://github.com/ibd1279/zigdnsguide), based on [EmilHernvall’s DNS server in rust](https://github.com/EmilHernvall/dnsguide) was my first. I was comparing rust and zig at the time.

I think my follow up was the abandoned [lazy tier streaming library](https://github.com/ibd1279/ziterstream) that I did to explore comptime.

---

<div class="post-metadata">

**Author:** ![dennypenta](https://ziggit.dev/user_avatar/ziggit.dev/dennypenta/32/8587_2.png) [@dennypenta](https://ziggit.dev/u/dennypenta)\
**Post date:** [June 22, 2026, 5:36pm UTC](https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170/37 "2026-06-22T17:36:44Z")

</div>

luckily enough my first zig program is the current one, a logging database Ochi:

> **[GitHub - ochi-team/ochi: Ochi is a fast, cost-effective, Loki compatible...](https://github.com/ochi-team/ochi)**
>
> Ochi is a fast, cost-effective, Loki compatible database for logs.

---

<div class="post-metadata">

**Author:** ![selectedambient](https://ziggit.dev/user_avatar/ziggit.dev/selectedambient/32/8835_2.png) [@selectedambient](https://ziggit.dev/u/selectedambient)\
**Post date:** [June 24, 2026, 6:34pm UTC](https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170/38 "2026-06-24T18:34:20Z")

</div>

parser, compiler, text editor for sure

---

<div class="post-metadata">

**Author:** ![selectedambient](https://ziggit.dev/user_avatar/ziggit.dev/selectedambient/32/8835_2.png) [@selectedambient](https://ziggit.dev/u/selectedambient)\
**Post date:** [June 24, 2026, 6:37pm UTC](https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170/39 "2026-06-24T18:37:45Z")

</div>

don’t have to explain wanting x86 compatibility to me my friend, i want my tools to work even on anything.

also 100% should be able to find hako edit on my github (profile is linked at the top for the zig project)

---

<div class="post-metadata">

**Author:** ![selectedambient](https://ziggit.dev/user_avatar/ziggit.dev/selectedambient/32/8835_2.png) [@selectedambient](https://ziggit.dev/u/selectedambient)\
**Post date:** [June 24, 2026, 6:39pm UTC](https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170/40 "2026-06-24T18:39:04Z")

</div>

love everyone sharing what they started with, been busy the past week or so and going to try and reply to as many of these as i can.

[Previous page](https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170.md?page=1)

[Next page](https://ziggit.dev/t/what-was-the-first-functioning-program-you-built-with-zig-and-when-did-you-start/16170.md?page=3)
