Live data from Hacker News

The art of over-engineering your side projects

elsyms.com

221–230 of 272 posts

Re: The art of over-engineering your side projects

#221
post #185
post #176

The whole point of a side project is to over-engineer it! The thought of holding myself to deadlines and driving myself to "ship" is totally antithetical to the entire purpose of a hobby project. It's a welcome relief from the 9-to-5 constant necessity to cut corners and finish things without ever properly understanding them because there's no time. For my side projects, I actually want to go down rabbit holes. I wil…

HN is made up of two groups in ever constant warfare, the yin and yang, as it were- the group who thinks that programming should be fun, experimental and enjoyable, and the group that thinks that programming is a means to the end of getting a product to market and nothing more. Whenever a post from one group (such as the article) comes out, a post from the other (such as OP) will quickly appear. And everyone loves it…

[deleted]

Re: The art of over-engineering your side projects

#222

Earlier quoted context omitted.

Exactly. When I see a coworker start irrationally focusing on a new technology at work the first thing I think is "This person probably has no side projects to play with"

> "This person probably has no side projects to play with" Exploring new technologies that could be beneficial (or harmful) to the company shouldn't be a side project. Perhaps we can shift the thinking from "this person doesn't have time for side projects" to "how can we make exploring new technologies a part of the job?"

While I have a lot of freedom at work to explore side projects and random stuff and I spend a lot of time doing so, there is a part of me that feels like there's a reason software engineers, at least in the US, are paid so damn much. To me, it's kind of implied that I'm paid is because I'm going to be doing more than the 35-40whatever hours I spend at the office.

Part of that is support (though about half of the jobs I've had involved little to no on call duty), part of it is training one self, in addition to everything I have to do during the day.

Let's call it discretionary overtime baked in pay since we're usually salaried.

Re: The art of over-engineering your side projects

#223

Earlier quoted context omitted.

How do you prefer to store/ship logs?

That's completely dependent on the format of your infrastructure. There is no answer that will fit everybody, and asking around for advice of strangers may even bias you in a damaging way.

Of course it is. I am familiar with all the common methods, but I'd like to hear how other people solved it for their specific situation.

Re: The art of over-engineering your side projects

#224

Earlier quoted context omitted.

There are certainly multiple ways of doing it. I'm curious, do you remember if the specific quartic had a nice "trick" to the formulation? I played with it a little and couldn't see anything that would cancel in a nice way. I try to avoid using quadratic solutions in code because of numeric instability issues. Granted I never implemented the direct solution, but the number of opportunities for catastrophic cancellati…

I don't think there was any trick. One approach is to use the rational quadratic parametrization of the ellipse and substitute that into the squared distance function to get a quartic. >I try to avoid using quadratic solutions in code because of numeric instability issues. Sensible! Back then the quartic solver had been written already and extensively tested by someone else - probably for line X torus intersection.…

> substitute that into the squared distance function

How the heck did "" get in there?

> 5. solve the roots of the cubic numerically in the range 0 to 1: either Newton's or clipping or some other hybrid numerical method.

Is there a reason not to use the cubic formula in this situation?

Re: The art of over-engineering your side projects

#226
post #224

Earlier quoted context omitted.

I don't think there was any trick. One approach is to use the rational quadratic parametrization of the ellipse and substitute that into the squared distance function to get a quartic. >I try to avoid using quadratic solutions in code because of numeric instability issues. Sensible! Back then the quartic solver had been written already and extensively tested by someone else - probably for line X torus intersection.…

> substitute that into the squared distance function How the heck did "" get in there? > 5. solve the roots of the cubic numerically in the range 0 to 1: either Newton's or clipping or some other hybrid numerical method. Is there a reason not to use the cubic formula in this situation?

>How the heck did "" get in there?

Something like

   (E(t)-P).(E(t)-P)
where E is the ellipse and P is the point.

>Is there a reason not to use the cubic formula in this situation?

Numerical stability in edge cases, which will occur for code exercised as extensively as Parasolid's.

I guess you could a Bernstein version of the cubic formula, though I've not seen one derived in the wild. It would be nice to have as well as Bernstein quartic formula. The Bernstein quadratic is easy.

Re: The art of over-engineering your side projects

#227
post #176

The whole point of a side project is to over-engineer it! The thought of holding myself to deadlines and driving myself to "ship" is totally antithetical to the entire purpose of a hobby project. It's a welcome relief from the 9-to-5 constant necessity to cut corners and finish things without ever properly understanding them because there's no time. For my side projects, I actually want to go down rabbit holes. I wil…

Yes! My last hobby project (I explicitly point out "hobby" project instead of "side revenue", but the article mentions "hobby" in the first sentence as well) was exactly that.

Because it was a hobby project, I went completely mad on it. I built my own SPDIF interface, from scratch, using an FPGA. I let the hardware broadcast the sound frames over Ethernet. I also re-implemented Sony's proprietary consumer electronics control protocol, in hardware as well (a microcontroller could have easily done that instead). I greatly overengineered a circuit board, despite having a functional "test setup" already that did the job more than well enough. I wrote largely unnecessary client software, using language extensions I've never used before.

The task at hand could have been solved with buying a cheap USB sound adapter from eBay and some manual work instead. Had I gone down that route, I probably would have completed the task in a fraction of the time that building this project took.

But I had so much fun along the way and learned so much about electronics, FPGAs, SoCs, static typing for python etc., all because it was a project for me and nobody else.

One big lesson I've learned, though, is that having an actual task you want to solve greatly helps you in finishing your project. I ran out of steam a number of times and the project fell to the wayside, but because the underlying task was not fulfilled yet, I always went back to it and quickly got completely focused on it again. Projects that I only did for playing around and learning most often got abandoned.

Re: The art of over-engineering your side projects

#228
I feel like there should be a solution that covers 99% of online projects. out of the box it scales, deploys, upgrades, does continuous integration, testing, logging, supports all major logins, has an admin console, metric console, etc... maybe it starts with the traditional Todo app and you just start modding.

I find it incredibly frustrating that much of this isn't a solved problem that I can then just insert my side project into.

hacking is fun until I have to maintain it and then I start wishing for all of those features instead of having to spend days or weeks implementing each of them from scratch

Re: The art of over-engineering your side projects

#230
I have built projects with a friend in the past.

He so aggressively avoids overengineering that he goes the other way - if you make ANY effort to properly engineer something he gets really annoyed and says time is being wasted.

It's almost like he feels software MUST be engineered to NOT scale in order to be an "MVP".

It's strange because for me, thinking about how something is built means that it can be built right the first time, without extra effort, just by thinking it through.

Post reply on HN