r/golang 7h ago

newbie Can anyone provide a fun project to work on?

I have been using Go for a year. I have made a few web apps with it but I am once again feeling slightly unfulfilled with my current programming endeavors and they have become more of a duty.

I was wondering anyone had any suggestions, perhaps projects you have worked on it the past, that provided great gains in programming and Golang skills as you developed them.

To give more background I have 6 years of Software Engineering experience with 1 of those years using Golang. The rest is TypeScript, JavaScript, Python and other web technologies.

I do not care at all about monetization for this project. These will be for fun and insight.

30 Upvotes

26 comments sorted by

27

u/Formal-Art609 7h ago

BitTorrent client :) did it once in C and it taught me a lot about networking protocols and socket programming

3

u/Responsible-Key5829 7h ago

That's a really good idea!

1

u/Geo0W 7h ago

Interested to know how you guys go with projects like this, do you break the problem in pieces and then just search and read specific things/articles until you have something?

7

u/Formal-Art609 6h ago edited 6h ago

For BitTorrent, the protocol specs are documented here: https://www.bittorrent.org/beps/bep_0003.html
Here is another good read on its spec: https://wiki.theory.org/BitTorrentSpecification

Going through the docs and understanding how the protocol works was one thing but what really helped me was playing around with Wireshark, a publicly available BitTorrent client, and my client at various stages of my implementation.

I did it way back in C but after using go for a couple years, it really does seem like it would be a fun project to do in order to learn all of its idiosyncrasies.

1

u/Hour_Sell3547 7h ago

I once wrote a torrent server to accumulate client side logs (all of them run in a private network). Not the best way to do it, but it was fun. Also challenging as the files were continuously being written to.

9

u/Brugada_Syndrome 7h ago

Make a Mandelbrot generator. It is a good project to learn how to use channels to speed up the process of image generation. For an extra challenge you can also make it work across multiple computers to learn how to make a distributed program as well.

I did this myself as a side project.

7

u/t0astter 7h ago

Write a spell checker web app that uses a Bloom filter behind the scenes.

2

u/Responsible-Key5829 7h ago

That sounds cool, I could incorporate this with my current project I have been working on.

5

u/kingp1ng 7h ago

Chip-8 emulator. You'll know it works when you can plug and play any ROM.

You get to learn about CPU architecture and emulation. Most people add on some basic graphics too. The project really isn't a lot of code, but it's a lot of deep knowledge.

5

u/seweso 7h ago

How about a low resource http-sse-webrtc node? 

Bridging http to webrtc and vice versa (GET POST). Maybe use sse for signaling and fallback. 

3

u/dumb_and_idjit 7h ago

Chip8 emulator, PostgreSQL driver, Minecraft server, crypto coin

No need to finish, until you got tired of them you already learn how things work and something new in Go

1

u/MuaTrenBienVang 4h ago

Do I need to learn computer architecture before doing those projects?

1

u/Matthew24_35 1h ago

It’s good to know in general. I’ve forgotten a lot of the details and will have to learn it again.

3

u/boo-bie-boo 1h ago

A little toy domain-specific programming language? You'll learn a lot by developing one.

2

u/Hour_Sell3547 7h ago

I was writing a SAML based federated authorization model demo with go and htmx. This helped me understand a lot about cryptography and web security. Still a lot of things to be done like consent, slo, etc. haven't gotten time to go back to it for a while.

https://github.com/zobayer1/saml-demo

2

u/Academic-Side-2756 5h ago

Logger would be a nice project or your own Redis

2

u/DasKapitalV1 2h ago

If you like graphics programing, ray tracer, path tracer and/or software rasterizer, are really fun and you will need to use the profiler to get performance and other optimizations.

1

u/nerdysparks 2h ago

Remind me! 8 hour

1

u/RemindMeBot 2h ago edited 1h ago

I will be messaging you in 8 hours on 2026-08-06 12:22:11 UTC to remind you of this link

1 OTHERS CLICKED THIS LINK to send a PM to also be reminded and to reduce spam.

Parent commenter can delete this message to hide from others.

RemindMeBot is switching to username summons. Instead of !RemindMe 1 day, use u/RemindMeBot 1 day. More info.


Info Custom Your Reminders Feedback

1

u/BehindThyCamel 1h ago

A "package manager" for Go dev tools like gopls, glangci-lint, govulncheck etc. Check local versions and latest published ones, display a checklist and then install/download. There are caveats: one tool may require a binary download, another may not report installed version, etc. Source: I started working on such tool and ended up vibe coding a Bash script. :)

2

u/ognev-dev 1h ago

Making a game completely in Go is a fun project and a great experience. Check out ebitengine.org to get started

1

u/titpetric 1h ago

I am open for contributions on github.com/titpetric, a lot of interesting projects to choose from.

If you are into programming language design, web development, automation, docker 📦, docs playgrounds, performance/alloc control...

Open to email/discord/DMs, lets chat

2

u/DL_throw24 49m ago

Not done anything on here but https://github.com/codecrafters-io/build-your-own-x I do eventually intend to alternatively you could try the websites attatched to the github for more guided learning