Live data from Hacker News

Challenging projects every programmer should try (2019)

austinhenley.com

51–60 of 346 posts

Re: Challenging projects every programmer should try (2019)

#51
post #37

Earlier quoted context omitted.

[flagged]

I strongly disagree. Software engineering is simply the next higher abstraction level above programming. Just like programming is the level of abstraction above writing machine code, and writing machine code is the level above hardware manipulation. Almost all "programming" problems have been solved. Today's software is laughably inefficient not because we need better implementations of data structures, but because p…

"The vast majority of ML/AI software that is published (which often implements revolutionary techniques!) is of incredibly poor quality from a software engineering standpoint. As a result, practical AI applications are orders of magnitude slower than they could be."

That's quite the claim. Why should anyone take your word for it?

Re: Challenging projects every programmer should try (2019)

#52
post #24

While writing a text editor, a compiler, an operating system, or a raytracer might make you a better programmer, it won't make you a better software engineer. In fact, it might make you worse at software engineering, because it embodies the disastrous "Not Invented Here" doctrine. Hackers like to obsess about Big-O, data structures, HoTT, and other high-theory stuff, yet the following skills, essential for software e…

>> Writing code that will still be readable to you (and others) a few years from now - This will be a wonderful feature for copilots, to allow for the human to provide a verbal narrative of the logic/process or even the environment and of others in the room commenting on why a such-and-such is being done, and the copilot elegantly documenting the narrative. Wait until we have "Thick Code" (where an app comes with an…

I suffered a fatal error because I expected a few end parentheses there.

Re: Challenging projects every programmer should try (2019)

#53
post #32

I would really love to try my hands on something much more physical, like a robot; or a drone with autopilot; maybe accurate simulation of flight dynamics of a spaceplane with programmable GNC parameters? I have a copy of "Fundamentals of Astrodynamics" by Bate, Mueller et al and I would love to do something with it this holiday season. I say simulation because all the rest of the stuff seems to cost a lot. I am real…

I feel the same way - almost all my personal projects have a hardware component. After spending all day on software I very much appreciate working towards a physical object.

Re: Challenging projects every programmer should try (2019)

#54
post #24

While writing a text editor, a compiler, an operating system, or a raytracer might make you a better programmer, it won't make you a better software engineer. In fact, it might make you worse at software engineering, because it embodies the disastrous "Not Invented Here" doctrine. Hackers like to obsess about Big-O, data structures, HoTT, and other high-theory stuff, yet the following skills, essential for software e…

If you want learn how things scale across a team and last years, read or contribute to open source code.

It takes years for a single person to get a project to the point where it's a good learning ground for scaling and maintenance.

Gluing a few libraries together is real software engineering but unless you're really invested in the outcome it's not that engaging and it's not that educational.

Re: Challenging projects every programmer should try (2019)

#55
post #24

While writing a text editor, a compiler, an operating system, or a raytracer might make you a better programmer, it won't make you a better software engineer. In fact, it might make you worse at software engineering, because it embodies the disastrous "Not Invented Here" doctrine. Hackers like to obsess about Big-O, data structures, HoTT, and other high-theory stuff, yet the following skills, essential for software e…

There is a need for both "solving complex problems alone" and "learning how to work as a team developing a complex project within a timeline". The Software Engineering part is best learnt in industry under a mentor.

Re: Challenging projects every programmer should try (2019)

#56
post #37

Earlier quoted context omitted.

I strongly disagree. Software engineering is simply the next higher abstraction level above programming. Just like programming is the level of abstraction above writing machine code, and writing machine code is the level above hardware manipulation. Almost all "programming" problems have been solved. Today's software is laughably inefficient not because we need better implementations of data structures, but because p…

"The vast majority of ML/AI software that is published (which often implements revolutionary techniques!) is of incredibly poor quality from a software engineering standpoint. As a result, practical AI applications are orders of magnitude slower than they could be." That's quite the claim. Why should anyone take your word for it?

There are literally performance breakthroughs being made every few weeks (most recently, PowerInfer, which can speed up LLM inference by 10x or more) where the main improvement amounts to the application of caching/preloading techniques.

If the "engineering" part of ML had kept up with the "science" part, I have no doubt that performance for typical use cases would be 100x-1000x higher than we are seeing today.

Re: Challenging projects every programmer should try (2019)

#57
A text editor can use an array as data structure. You only need it to be fast during the typing, where you are only changing one line. But for entering new lines, the extra latency needed for rebuilding the array after pressing enter is not noticeable for several million lines.

The more challenging part of a text editor is making sure you only render what the user sees.

Re: Challenging projects every programmer should try (2019)

#58
Doing some 2D game dev without an engine was the most humbling experience that showed me just how ridiculously fast computers have become. You do things that you swear are far too slow to work, and yet it works even on a Game Boy because it’ll do a million operations in a second and a million is apparently a big number.

“Wait… so I’m looking up and drawing every sprite every time? There’s no clever diffing happening to know which ones to change? There’s no second buffer to reference the previous frame and steal work from?!” And then you find the much more complex games that do start using these tricks and it’s ridiculous.

Re: Challenging projects every programmer should try (2019)

#59
post #24

While writing a text editor, a compiler, an operating system, or a raytracer might make you a better programmer, it won't make you a better software engineer. In fact, it might make you worse at software engineering, because it embodies the disastrous "Not Invented Here" doctrine. Hackers like to obsess about Big-O, data structures, HoTT, and other high-theory stuff, yet the following skills, essential for software e…

If you want learn how things scale across a team and last years, read or contribute to open source code. It takes years for a single person to get a project to the point where it's a good learning ground for scaling and maintenance. Gluing a few libraries together is real software engineering but unless you're really invested in the outcome it's not that engaging and it's not that educational.

> Gluing a few libraries together is real software engineering but unless you're really invested in the outcome it's not that engaging and it's not that educational.

That's only true if complex systems don't interest you.

Personally, I have always found the experience of "putting the pieces together" and orchestrating highly diverse systems into a coherent whole to be much more educational than learning about algorithmic details. I also generally find making things work well more interesting than making things work.

Re: Challenging projects every programmer should try (2019)

#60
Writing a tool that can do large template conversions are particularly fun. Like handling Jinja into markdown. You can use this for future projects to build out documents without relying on too much effort if the documentation for things you work on follows a formula.
Post reply on HN