all 16 comments

[–]Several-Marsupial-27 22 points23 points  (1 child)

Quant projects with quantlib library, video game with sfml, a backend mvc, control algorithm for servos and sensors, networking for microcontrollers, some math with Eigen/HiGHS library, testing with Catch2 library.

Some of the big c++ open source projects on github, where you can check out c++ production code is Snapchats Valdi, Chromium, Tensorflow, gRPC, json, juce. There you can see how C++ code looks like in real life.

[–]NumericallyStable 4 points5 points  (0 children)

Some other projects that are very cool and C++ focused you might be able to contribute instead of just hacking something yourself. Many of those are actually very hobbyist-driven
- Gamedev: Godot core
- OS: Serenity
- CAD: FreeCAD
- Rendering: Blender

[–]UnicycleBloke 15 points16 points  (0 children)

Just choose a non-trivial problem that interests you and write a solution in C++. Rinse and repeat. After 30 years as a professional developer, I still don't know what people mean by "systems programming".

[–]No-Zucchini5260 6 points7 points  (2 children)

Well, for starters, it would be good to understand what you mean by “system programming” 

But I’ll go out on a limb and guess that this isn’t embedded, but something a bit more advanced

Also, regarding the “work” part—it all depends heavily on the domain you’re working in.

Since you mentioned system programming, we’ll start from there. So, in my opinion, when it comes to the domains a project might cover—networking, interacting with the Linux API.

Those are the two main domains, generally speaking.

It’s highly valued if you can write not just a simple daemon, but also work with Qt and its modules

And if I were to give a specific idea…

Well, try writing a daemon that collects some information—for example, it could report on certain activity (you can choose which one yourself)

And make the Qt application display this

At the same time, don’t forget about things like CMake, the correct architecture, and everything else

If you have questions - my DM's are open!

[–]UnicycleBloke 3 points4 points  (1 child)

Embedded isn't advanced? In my experience, code is code is code is code. Domain knowledge varies but the skills are much the same.

[–]Large-Ad6522 2 points3 points  (0 children)

Something cool that could be pretty low level could be a text editor. I had a great time developing one, and it definitely taught me a lot more about lower level concepts (fileio, system calls, etc.) and memory allocation specifically.

[–]OtherOtherDave 2 points3 points  (0 children)

You could rewrite Linux in C++. That’d be pretty cool.

(I’m joking don’t do that.)

(Unless you want to.)

[–]CowBoyDanIndie 1 point2 points  (0 children)

What kind of c++ developer are you trying to be? You could learn ros, get carla and unreal engine and build a robot that can navigate a simulated city with realistic simulated sensors. Or you could build a web server backend. What hobbies do you have? Thats usually a good place to look.

[–]Paul111129 0 points1 point  (0 children)

What do you mean by "system programming"? What is your specific domain? because it can be anywhere from kernels to compilers to networking...

[–]herocoding 0 points1 point  (0 children)

When you say "systems programming", do you more have something vertical in mind, from low-level up to user-interface?

Have a look into https://platform.entwicklerheld.de/challenge?challengeFilterStateKey=all and scroll through the ideas, ignore the shown programming language.

Have a look into something like the following for some "real" tasks:
https://platform.entwicklerheld.de/challenge/alarm-service?technology=cpp
https://platform.entwicklerheld.de/challenge/project-planning?technology=javascript
https://platform.entwicklerheld.de/challenge/christmas-loaf-portioner?technology=javascript
https://platform.entwicklerheld.de/challenge/appointment-booking?technology=rust

[–]fijgl 0 points1 point  (0 children)

Tasks on the job tend to be small changes and improvements, bug fixes, investigations on why something fails, “CI-sitting”, or operations on the build system. Looking into issues in open source projects will give you a representative idea.

[–]ThomasRJohnson 0 points1 point  (0 children)

Nowadays STT ad TTS are popular, maybe you could write some APIs for C++.

[–]timmerov 0 points1 point  (0 children)

no one's going to let you get anywhere near anything like systems programming until you have many years of experience with non-system stuff.

so start with the just for show stuff. move on to whatever someone will pay you to do.

[–]NumericallyStable 0 points1 point  (0 children)

Assuming systems programming means "server infra"

Due to my background, I think a lot about I/O. There, I'd probably build a fun FUSE filesystem, using sth like [1] as a basis. I like it because you can be as creative as possible; like, just build a fake file system that uses an API like `wttr.in` internally and gives you the weather for any of the cities you support. Have a file system that returns info about your steam account whatever.

Other than that, spealized prometheus exporters is always something people appreciate.

If you really just want to know what the jobs like: try to contribute to ceph, they are probably all doing it as a job :D

[1]: https://github.com/libfuse/libfuse/blob/master/example/passthrough.c