Live data from Hacker News

Challenging projects every programmer should try (2019)

austinhenley.com

71–80 of 346 posts

Re: Challenging projects every programmer should try (2019)

#71
post #59

Earlier quoted context omitted.

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 algorit…

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

Gluing a few libraries together will certainly produce a complex system.

Re: Challenging projects every programmer should try (2019)

#72
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…

I don’t really see how one could have any hope of performing engineering with any sort of rigor while throwing away big-O.

Then again, big-O is useless in many cases because real computers have too many arbitrary performance thresholds.

I suspect software engineering is impossible, or at least, nobody has made the model required to do it.

Re: Challenging projects every programmer should try (2019)

#73
post #62
post #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.

And the most challenging part is making a text editor that actually works well from a usability perspective. Which has almost nothing to do with data structures and optimization. I've used dozens of text editors. I have never once thought "man, that thing is slow". But I have thought "man, that thing is a bug-ridden, unintuitive piece of garbage" many, many times.

You must not have used Eclipse back in the day

Re: Challenging projects every programmer should try (2019)

#74
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…

Notice it said programmer, not software engineer.

Speaking for myself, software engineering is something I do because I have bills to pay. Programming is something I started doing because it’s fun. The projects in this article are the types of projects I would do for fun if I had the time.

Re: Challenging projects every programmer should try (2019)

#75

I would add in a security or network related project. Overflow attack, (sql) injection attack, and maybe something like using wireshark to see what a http request actually looks like. I took two capture the flag classes which changed how I look at some of my day to day dev work.

Interesting, I will look into this for learning, thanks for the inspiration

Re: Challenging projects every programmer should try (2019)

#76
Discussed at the time:

Challenging projects every programmer should try - https://news.ycombinator.com/item?id=21790779 - Dec 2019 (297 comments)

Also related:

More challenging projects every programmer should try - https://news.ycombinator.com/item?id=25489879 - Dec 2020 (223 comments)

Re: Challenging projects every programmer should try (2019)

#77
post #63

Earlier quoted context omitted.

That is in the sequel! “More challenging projects every programmer should try” https://austinhenley.com/blog/morechallengingprojects.html

Hey, putting a ray tracer and a web browser in the same category of "more challenging projects" seems a bit weird. A ray tracer is a weekend project. A web browser is a multiple man-years project, unless you use a third-party HTML+CSS engine and a third-party JS engine.

Their definition of web browser is basically the UI and renderer for a text based browser.

Re: Challenging projects every programmer should try (2019)

#78
post #39

Earlier quoted context omitted.

What if we don't want to be "software engineers"? I'm still not totally convinced that "software engineer" is even a thing , frankly.

Who do you think puts systems like a web search engine together? It's certainly not people who are lost in details like string matching or how ACID is implemented in distributed databases. Of course you need all these things in order for the search engine to work – but if you write them yourself, even if you think about them excessively, you will never finish. Software engineering is knowing that you don't need to kn…

> Who do you think puts systems like a web search engine together?

A really good programmer who is free from the tyranny of software “engineering”.

Re: Challenging projects every programmer should try (2019)

#79
post #63

Earlier quoted context omitted.

That is in the sequel! “More challenging projects every programmer should try” https://austinhenley.com/blog/morechallengingprojects.html

Hey, putting a ray tracer and a web browser in the same category of "more challenging projects" seems a bit weird. A ray tracer is a weekend project. A web browser is a multiple man-years project, unless you use a third-party HTML+CSS engine and a third-party JS engine.

depends on the ray tracer. You can make "a" ray tracer in a weekend. You can spend months making a mid-scoped tracer if you decide to pick up PBRT (which is online for completely free now!): https://pbr-book.org/4ed/contents

If you want to upgrade your "weekend" ray tracer to a 2-4 week project, I'd suggest:

1. have it take input a scene/model file (FBX is the industry standard but also a pain in the butt because Autodesk. I'd suggest looking at gltf or blender scenes). This may or may not mean supporting triangles/quads if you only focused on spheres and planes.

2. texture support. Which sounds easy and then you enter the wonderful world of sampling. you can dive as shallow or as deep as you want there.

3. acceleration structures to improve runtime.

for a small start.

Re: Challenging projects every programmer should try (2019)

#80
post #39

Earlier quoted context omitted.

What if we don't want to be "software engineers"? I'm still not totally convinced that "software engineer" is even a thing , frankly.

Who do you think puts systems like a web search engine together? It's certainly not people who are lost in details like string matching or how ACID is implemented in distributed databases. Of course you need all these things in order for the search engine to work – but if you write them yourself, even if you think about them excessively, you will never finish. Software engineering is knowing that you don't need to kn…

I find your comment quite ironic considering the engineers that built Google search did it by developing novel software systems, to great success. The Google codebase is basically the definition of NIH syndrome.
Post reply on HN