this post was submitted on 22 Nov 2023
55 points (96.6% liked)

Programming

17354 readers
392 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 1 year ago
MODERATORS
top 37 comments
sorted by: hot top controversial new old
[–] [email protected] 27 points 11 months ago* (last edited 11 months ago) (2 children)

My favorite was this project because it really shouldn't be possible, it requires some unusual problem solving (kinda like code golf), but the best part is seeing people's horrified expression when they realize

  1. The monstrosity works
  2. There's no real alternative

(I'm working on a video that explains it, but until then the readme and stack overflow post will have to do.)

[–] [email protected] 5 points 11 months ago

That is an abomination. I will probably use it in a not-so-distant future.

[–] [email protected] 5 points 11 months ago

That's horrendous, I love it.

[–] [email protected] 25 points 11 months ago (1 children)

A decade ago I reverse engineered the Macventure game engine, allowing you to play Shadowgate and Deja Vu etc on modern oses. The current copyright holder then paid me to iron out the rough edges and create the official ports currently on steam.

[–] [email protected] 7 points 11 months ago

That's baller

[–] [email protected] 18 points 11 months ago (2 children)

I wrote a a masturbation tracker app to measure how frequently I fapped to my waifu

[–] [email protected] 5 points 11 months ago

These are the kinds of comments I come here for.

[–] [email protected] 2 points 11 months ago
[–] [email protected] 9 points 11 months ago (1 children)

I wrote a DNS server that did global software load balancing. Essentially it just has a health checking component and a sort and uses that to determine the closest healthy endpoint to return.

Mostly used for cluster failover or in cloud terms it can keep traffic within a zone if possible, otherwise within a region, otherwise closest region.

The reason it was my favorite project is because I was unqualified, but nobody else on my team was a DNS expert. So I got to drink from the firehose and learn. I had a really good testing feedback pipeline where basically visitors to our website did a couple extra background requests on their first page load and we used the web performance timing API to track DNS lookup times and TCP/HTTP times. So I every time I made a change I had millions of performance reports. I could see the impact of my changes in about 60 seconds in grafana.

Between learning something totally new and tying it to a short feedback loop with beautiful graphs I had a great time. Plus that product literally allowed my company to start using the cloud and build multi cloud systems.

[–] [email protected] 3 points 11 months ago

This sounds like an interesting project, what programming language did you use? Was the endpoint relative to the person making the query, how was the data stored?

[–] [email protected] 9 points 11 months ago (2 children)

I built a ruobo workbench for hand tool and other general woodworking tasks. Was made with all mortise and tenon joints and no fasteners, so I got to learn and practice lots of techniques (hand saw and chisel cuts, router flattening, lamination, etc).

[–] [email protected] 8 points 11 months ago (1 children)

All roads lead to woodworking

[–] [email protected] 1 points 11 months ago* (last edited 11 months ago)

Refreshing to know that some people enjoy non screen time

[–] [email protected] 3 points 11 months ago

Excellent! I'm working on my own workbench. I'm still at the design and layout stage, because, like pretty much every client I've ever had, I've fooled myself into thinking I have special requirements that can't be met with an existing, proven design.

[–] [email protected] 9 points 11 months ago* (last edited 11 months ago) (2 children)

Usually the one(s) I'm working on right at the moment.

But if I were to look back and decide which ones I still remember enjoying, a few come to mind.

For my day job, I've written two different (more or less) ORMs in my career. (For two different companies and in two different languages.) Pretty interesting stuff, that. The kind of project that you can sink your teeth into.

Neither one was a "I think I'll write an ORM" kind of situation. They were more like "oh, given these requirements, I think probably I'll need something that will work like X, Y, Z... oh, that's an ORM. Ok then, let's do this."

Side-projects-wise, most of the side projects I'd talk about are here. (Yes, AntiMS is me even though different username.) "hydrogen_proxy" got way less fun when I got stuck for like a year on how to make HTTPS work. But aside from that it was a lot of fun to work on. "codecomic" is quite interesting to work on as well.

And the project I've been working on most recently is a very configurable framework written in a combination of Go and OpenSCAD for creating bespoke, 3d-printable mechanical keyboards including keycaps.

Here's a preview of kindof roughly where I am with that mechanical keyboard project at the moment:

A rendering of a unique-looking mechanical keyboard. The keycaps in particular are all unique and odd shapes.

[–] [email protected] 2 points 11 months ago (1 children)

Damn, you're a busy dude...

AntiMS = no github?

[–] [email protected] 3 points 11 months ago

Lol! Yes! I'd never made the connection, but yes "AntiMS" was a name I chose originally to mean "anti-Microsoft." And I used Github until the day I heard that Microsoft was buying Github. (Actually, my Github is still out there. I just force-pushed to overwrite all the history of all my Github repos with a single readme file that says "I moved to Gitlab.")

I started using that username back before I realized all corporations were evil. I thought it was just Microsoft back then. Simpler times.

[–] [email protected] 2 points 11 months ago

I like the basic premise of GoVTT, that you trust the players to not cheat. I've got a project on the back burner to allow people to play online games the same way they play in person: rules are agreed upon and enforced collectively instead of imposed and enforced programmatically. I figure to start with ordinary playing cards, then build up from there.

[–] [email protected] 8 points 11 months ago (1 children)

Work related project was a library for curves representation (polynomial, bezier, and a lot of other types) in C++. I liked working on it for several reasons. First one is that I could finally start something from scratch after years of working on legacy code. No dependency on strange old library from the team, only mainstream libraries.

But mostly it was because I learned a lot on this project. I had to mix template programming, heavy use of polymorphism, python bindings of the c++ and serialization together. I had experience in all of this stuff already, but mixing everything together bring a lot of new troubles and you have to understand how it works more in deep to be able to solve them.

I'm not making "famous" open source package with thousands of download and used everywhere, but seeing this package still in use in several other projects (and not only in my initial team) even after I left the initial team feels good. One day someone from my new company recommended to use "my" library as dependency to solve one of our problem, without knowing that I was the author, saying that it was a good well written lib. That's a nice ego boost!

[–] [email protected] 3 points 11 months ago

One day someone from my new company recommended to use “my” library as dependency to solve one of our problem, without knowing that I was the author, saying that it was a good well written lib. That’s a nice ego boost!

Now that's a career highlight! 👏

[–] [email protected] 6 points 11 months ago

A while ago I wrote an extensible dummy data generator for Java.

I needed to fake some scientific data for a project at work and wasn't satisfied with how closed for modification existing data generation solutions were, so I decided to tackle writing a library on my own.

It was my first major contribution to open source and had some architectural challenges which were fun to solve, not to mention the learning experience :)

[–] [email protected] 5 points 11 months ago

i spent weeks on this project, called the apple

[–] [email protected] 3 points 11 months ago

NES FPS.

Currently not doing much work on it, though. It needs the quicksave system to be compressed so the level editor is worth using. I got arithmetic coding kinda-sorta working (with an assumed Zipfian distribution to avoid building the tree on-hardware) but the decoder never worked right. I've been putting off another do-over on that. Which means the levels aren't getting made, since obviously I'd use that format to store them in ROM. Got portals working, though.

[–] [email protected] 3 points 11 months ago* (last edited 11 months ago)

My first discord bot written in discord.py. It had over 800 lines of code. I wrote it all in one main.py and hence the organization wasn't great. I also wasn't very good in Python at the time so I am now rewriting it with cogs and better practices.

[–] [email protected] 3 points 11 months ago (2 children)

6 years ago during university I participated in a Coding Challenge for Vehicle Routing Problems. I really like TSP and VRP related problems. I tinkered on my algorithm in the evenings to make it faster, consider more edge cases, produce better solutions etc. It was a really rewarding work because every time you change something you can run it and can see if your thinking was right and improved the result. The goal was to find the shortest time to serve all customers, so the result was basically a number indicating total time. Number goes down = win.

Unfortunately I haven't found anything in my professional career so far that I really liked :(

[–] [email protected] 2 points 11 months ago

Unfortunately I haven’t found anything in my professional career so far that I really liked :(

ha ha ha ha *cries in corner*

Same. Web development is so boring.

[–] [email protected] 1 points 11 months ago* (last edited 11 months ago)

There are some jobs for agent planning using discrete / continuous (boundary value problem/mpc) / hybrid approaches, in autonomous driving and other related fields (e.g. drones). Sometimes single agent, but multi agent problems are also hot stuff

That'd be in academia mostly however. If you're interested you can always look for some papers and see whether the chairs of the authors are recruiting

[–] [email protected] 3 points 11 months ago

My favorite project was around 6 years ago when my former employer was looking to modernize the customer service automation experience with AI, it started with a round the US tour of going to the HQ's of 4 big tech companies in the space(IBM, Microsoft, Amazon, Google at the time) as part of an investigatory team. We were to select what we thought would be the best engine to run conversational AI in our applications, during that time we were also given greenfield to write a modern framework apart from our existing technology to leverage it. Over the course of a year and a half we went from ideation to the creation of an omni-channel conversational framework that netted me and the team a patent, and allowed me to flex architecture skillset that lead me to my current role as a solution architect working with some of the same people at another better company. Definitely the most fun, exciting and rewarding project of mine to date.

[–] [email protected] 2 points 11 months ago

I bought an old Speak and Spell a few summers ago as a circuit-bending project, and I want to build custom vocabulary ROMS. To this end, I have been working on a bitstream generator for the TMS5220, with the goal of being cross-platform, as the existing tools only run on Windows 3.0 and OSX...

My first mistake was doing it in C++, although I love the language, since I've had the royal displeasure of trying to compile it for Windows. Over the next few weeks, I'm going to throw in the towel and re-write the damned thing in Java. That being said, if you've got a Mac or Linux machine, you can check it out here. And if you've got a clue how to compile a Qt app for Windows, please submit a PR :')

[–] [email protected] 2 points 11 months ago* (last edited 11 months ago) (2 children)

Automatic differentiation in C++17, had to do it from scratch as they weren't open to 3rd-party libraries and it had to integrate with many symbolic calculations that are also done in the library (so even if you used a 3rd-party library you'd still have to rewrite parts of it to deal with the symbolic stuff). Succeeded in doing it and basically the performance was on par with what people in the industry would expect (all derivatives at once in around 3 times the evaluation time, sometimes much less if the calculation code has no dynamic parts and is differentiated entirely at compile-time).

It was pretty cool because it was a fun opportunity to really abuse template meta-programming and especially expression templates (you're basically sort of building expression trees at compile-time), compile-time lazy evaluation, static polymorphism and lots of SFINAE dark magic and play around with custom memory allocators.

Then you get scolded by the CI guys because your template nightmare makes the build times 3x slower, so the project then also becomes an occasion to try out a bunch of tricks to speed up compilation.

[–] [email protected] 4 points 11 months ago

Who cares about build times when execution speed is good?:

[–] [email protected] 3 points 11 months ago (1 children)

That's insane. You're basically talking about a custom implementation of pytorch autograd right? How long did it take?

[–] [email protected] 2 points 11 months ago* (last edited 11 months ago)

Roughly one year. No GPU code however for that project as the target library is CPU-only anyway so not really comparable to PyTorch (and PyTorch is more than just the autodiff), but there was lots of SIMD vectorization. Yeah you could train a neural network on CPU with it if you want, and the expression template stuff I talked about would be somewhat equivalent to PyTorch's operator fusion, but the target use is more quant finance code.

[–] [email protected] 2 points 11 months ago

Turning my web app for Burmese song lyrics with guitar chords into an open source PWA songbook app. I'll try to turn it into some kind of offline available song book that you can host on github pages.

[–] [email protected] 2 points 11 months ago* (last edited 11 months ago)

An OpenVPN profile generator with valid client certificate and the private key never leaves the client workstation.

  • Client browser logs in with their IPA creds + OTP.
  • Browser generates key pair and CSR (all stored in session storage)
  • Node requests certificate for user from IPA using CSR, returns cert to browser.
  • Browser combines new certificate with CA cert and the private key into the OpenVPN profile.
  • Browser downloads the OpenVPN profile file.
[–] [email protected] 1 points 11 months ago

I made an app for track my paints for mini painting. Making the ui was really fun.

[–] [email protected] 1 points 11 months ago

Wrote a basic primality checker library, it's not by far my most interesting or complex project but I like that I accomplished all my initial goals in a timely fashion.