Live data from Hacker News

A list of practical projects that anyone can solve in any programming language

github.com

51–60 of 67 posts

Re: A list of practical projects that anyone can solve in any programming language

#51

Not only do I doubt that "anyone" can write these programs, most of them do not look particularly interesting or fun. Many if not all of the non-mathematical ones are simply replicating off-the-shelf utilities or tools; what is the point of reinventing the wheel? Even if you are looking to hone your skills in a new language, creating something genuinely new seems like it would be more useful and motivational.

I was writing a chess app a while back and a non-programmer friend mocked me for re-making something that already ships for free on every computer in the world. This took me by surprise! Why do people complete crossword puzzles that millions of people have also completed? Why do people learn to play songs on the piano that millions before them have learned? Why do people learn math proofs that have been known to othe…

When I'm working on a side project, I always prefer to do something that hasn't been done before, even if it's just a small improvement. I wouldn't criticize your chess app, and that sounds like a great learning experience. But even if the goal is to learn something new, I'd prefer to end up with a project that is useful or interesting, and might even make some money. In other words, I only want to build something if I can write a blog post about it and Hacker News might find it interesting. (And there's plenty of ways to make a chess app interesting - using a different programming paradigm, machine learning, AR, building a chess engine in VHDL for an FPGA, etc.)

> Why do people learn to play songs on the piano that millions before them have learned?

I honestly asked myself that same question when I was a teenager, and I decided to quit piano lessons. It felt like a waste of time and a useless skill now that we have MIDI and self-playing pianos. So I switched to jazz and improvisation, and tried to compose my own music (although I'm not very good.) But I enjoy the creativity a lot more than playing songs from sheet music.

Re: A list of practical projects that anyone can solve in any programming language

#52

Not only do I doubt that "anyone" can write these programs, most of them do not look particularly interesting or fun. Many if not all of the non-mathematical ones are simply replicating off-the-shelf utilities or tools; what is the point of reinventing the wheel? Even if you are looking to hone your skills in a new language, creating something genuinely new seems like it would be more useful and motivational.

"Why would you want to learn this stuff? We're never going to use it."

Re: A list of practical projects that anyone can solve in any programming language

#53

Earlier quoted context omitted.

There are fast algorithms for calculating the Nth digit of pi.

The entire 'fun' of this is implementing it with as much of your own code as possible. Using existing fast algorithms only leaves you with splitting the output to the nth digit, which is trivial and leaves you without having learned or achieved anything imo.

You can implement the algorithm yourself.

Re: A list of practical projects that anyone can solve in any programming language

#54

Fun enough list. I'm not sure the "any programming language" part holds up. Some of these programs require a GUI element. Others, you have to squint at to see how you would put into some languages due to the wording (cough, class and abstract class, cough). The web ones, it will be hard to avoid JavaScript.

> The web ones, it will be hard to avoid JavaScript.

I don't think any of the projects mentioned are incompatible with a server-side implementation. You could even use something like HTML's image ismap attribute to implement an online white board.

Re: A list of practical projects that anyone can solve in any programming language

#55

Not only do I doubt that "anyone" can write these programs, most of them do not look particularly interesting or fun. Many if not all of the non-mathematical ones are simply replicating off-the-shelf utilities or tools; what is the point of reinventing the wheel? Even if you are looking to hone your skills in a new language, creating something genuinely new seems like it would be more useful and motivational.

If people stopped 'reinventing the wheel', we'd still be using circular rocks (or whatever the first wheel was), no one would have cared to learn how to make it and then improve upon it.

Recreating existing tools is a perfectly valid way to 1) learn or become proficient in a language, 2) learn how the tool works, and 3) position yourself to improve the tool if you wanted

Re: A list of practical projects that anyone can solve in any programming language

#56

Not only do I doubt that "anyone" can write these programs, most of them do not look particularly interesting or fun. Many if not all of the non-mathematical ones are simply replicating off-the-shelf utilities or tools; what is the point of reinventing the wheel? Even if you are looking to hone your skills in a new language, creating something genuinely new seems like it would be more useful and motivational.

> what is the point of reinventing the wheel? For many of us (me included), it's not REinventing the wheel, it's inventing it. I've taken a quick look through here, and some of these are in the 'yeah, I can do that straight off' category, some are in the 'I -think- I could do that' and some are in the '...right.... I'm not sure how I'd approach that' category. Remember that not everyone is in the same boat as you, an…

> I'm sure I'm way behind 99% of the people on HN

Two things about this:

First, I seriously doubt you're in the bottom 1% of HN users when it comes to programming ability. Not only is it statistically very unlikely, but there are many people who read and participate here who aren't programmers at all. While I realize you probably didn't mean that statement literally, in my experience being self-deprecating is something of a self-fulfilling prophesy. You're almost certainly more skilled than you believe yourself to be.

Second, speaking of skills as "ahead" or "behind" without context isn't very precise. I'm mostly a back-end web dev, but I have a little over a decade of experience. A brand new developer fresh out of a bootcamp that teaches modern React would be "ahead of me" if the task were to build a SPA front-end for an existent API. On the other hand, I would be far "ahead of them" if implementing the API itself was part of the task.

Re: A list of practical projects that anyone can solve in any programming language

#58

Not only do I doubt that "anyone" can write these programs, most of them do not look particularly interesting or fun. Many if not all of the non-mathematical ones are simply replicating off-the-shelf utilities or tools; what is the point of reinventing the wheel? Even if you are looking to hone your skills in a new language, creating something genuinely new seems like it would be more useful and motivational.

> Even in literature and art, no man who bothers about originality will ever be original: whereas if you simply try to tell the truth (without caring twopence how often it has been told before) you will, nine times out of ten, become original without ever having noticed it. -- C. S. Lewis Why wouldn't that hold for programming, at least if you make something you actually want and use? For me, it's about being able to…

Great quote, haven't ever heard it put that way! I remember David Friedman remarking that one of his most lauded essays was him just saying, what he felt, was how things always worked. (I think it was the one on evolution of private property as a Schelling point.)

My own experience with this phenomenon was when I virtually rolled my eyes at someone insisting that an evolved biological adaptation "wasn't designed", and explained what "designed" meant in that context, and someone praised it for being a good definition he hadn't seen before.

https://news.ycombinator.com/item?id=11121874

Re: A list of practical projects that anyone can solve in any programming language

#59
post #42

Not only do I doubt that "anyone" can write these programs, most of them do not look particularly interesting or fun. Many if not all of the non-mathematical ones are simply replicating off-the-shelf utilities or tools; what is the point of reinventing the wheel? Even if you are looking to hone your skills in a new language, creating something genuinely new seems like it would be more useful and motivational.

I think you're right for many people, especially those who haven't done much programming and aren't sure they really want to. But whenever I learn a new language (many times over many decades), I want to build lots of small projects of many different sorts in order to habituate myself to the new tools and patterns (using the tools in various combinations) as quickly as possible. My ideal is when I find a set of these…

I have a similar approach to learning a new language. The first thing I usually do is implement some sort of self-balancing binary search tree (usually AVL, Splay, or Red-Black). It's usually something that I can do in just a few hours in a new language, using just the core language features and maybe a couple of standard library functions. It's also just complex enough to force me to learn some of the language idioms so that the resulting code is sufficiently readable/elegant/small/performant.

Once I've done this I'm usually much more comfortable reading other code in the language and navigating the language documentation. From there it's much easier to do things where I want to use external libraries, frameworks, build tools etc.

Re: A list of practical projects that anyone can solve in any programming language

#60

Not only do I doubt that "anyone" can write these programs, most of them do not look particularly interesting or fun. Many if not all of the non-mathematical ones are simply replicating off-the-shelf utilities or tools; what is the point of reinventing the wheel? Even if you are looking to hone your skills in a new language, creating something genuinely new seems like it would be more useful and motivational.

I'm not sure others have said this specifically when I started writing this. The point of reinventing the wheel is that you understand the domain and are focusing on the language, framework, or alternative approach. This is at the core of the programming Kata. Code retreats focus around things like Conway's Game of Life which participants have probably programmed many times before, but it lets them focus energy on learning in a specific way.

To be fair, I think there can be some value to the approach where everything is new, but it probably shouldn't be the norm. Feeling out of control because you don't understand multiple elements can generate energy and growth at times, but it may require more time to progress.

For people looking to demonstrate their skills for a job, having examples like these can be useful. They don't take time to for an interviewer to understand so the focus can be on how the interviewee built the solution.

Post reply on HN