Live data from Hacker News

Challenging projects every programmer should try (2019)

austinhenley.com

61–70 of 346 posts

Re: Challenging projects every programmer should try (2019)

#61
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 agree with this, only working on a project with certain expectations of delivery can make you a better software engineer.

Re: Challenging projects every programmer should try (2019)

#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.

Re: Challenging projects every programmer should try (2019)

#63

I think a little toy raytracer is another great thing to try out. Just something that outputs bitmap graphics of spheres and does diffuse and specular reflection, couple light sources. Should be a relatively self-limited project if you don't go too crazy with it.

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.

Re: Challenging projects every programmer should try (2019)

#64
+1 for mini operating system.

Us, application developers, rely on many OS features: memory management, filesystem, etc. I'm sure eventually we'll ask "how such things are done behind the scene?"

That's why I tinker with xv6 (https://github.com/mit-pdos/xv6-public) during sparetime. Learning various process scheduling algorithms from textbook is a thing. Implementing it is another thing. I learn a lot. And it's definitely fun, even though there's almost zero chance the knowledge gained is relevant for my job (I'm a mobile app dev).

Re: Challenging projects every programmer should try (2019)

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

Gentlemen, you can't hack in here; this is Hacker News.

Re: Challenging projects every programmer should try (2019)

#66
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.

A fully featured, commercial ray tracer takes many years, much like a fully featured, commercial web browser.

Re: Challenging projects every programmer should try (2019)

#67
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 think those who deal with OS kernel, compiler etc on daily basis also understand those points. They use various tools to make code review, time management etc easier.

Not all hackers are overly obsessed with the most efficient Big O and various low level (sorry pun intended) details.

Re: Challenging projects every programmer should try (2019)

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

Do you have any good resources for what you mentioned?

Re: Challenging projects every programmer should try (2019)

#69
post #49

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.

Maybe the *term" "software engineer" is not an established thing. But these points raised by GP... are basically self-evident. > - Deciding what to write yourself and what to take from a library > - Identifying high-quality libraries and frameworks that meet your project needs > - Deciding where optimization is worth the effort and where it is not > - Writing code that will still be readable to you (and others) a few…

I do that shit every day at my job. When I’m just coding for fun at home I want to implement crazy data structures, otherwise what’s the point?

Re: Challenging projects every programmer should try (2019)

#70
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 figured that was the point here. It's nice to follow tutorials for a new language or framework or whatnot, but to really stress and test what you absorbed, you want some non-trivial project with minimal dependencies. the game section exemplies this the best:

>The idea here is to implement a well-defined game from start to finish without getting bogged down on the other fun stuff (e.g., game design and art). Also, it is best if you use a barebones 2D graphics library (e.g., SDL, SFML, PyGame), not a big game engine that'll hide all of the interesting bits from you.

This kind of game won't go on sale nor even be a portfolio piece for a non-junior engineer, but it's a good enough idea for someone like me who say, wanted to really wanted to solidify their Rust skills and show what my and the language's weaknesses are.

After I can get that done, I may feel confident enough to move on to work on a toy renderer based on what I figured out in the game. And then later contributing to a proper engine that already has a lot of groundwork figured out. I'd just be getting in the way if I jumped straight into trying to throw anything but the simplest PRs into Bevy.

Post reply on HN