Live data from Hacker News

Challenging projects every programmer should try (2019)

austinhenley.com

301–310 of 346 posts

Re: Challenging projects every programmer should try (2019)

#301
post #3

I’m surprised an emulator (especially Game Boy) is considered harder than a little operating system. I guess that would make sense if you’re not familiar with ASM but an OS will force you to learn that too.

I did a gameboy emulator one week, when I had time from things like waiting for planes to arrive. I set the goal of playing the logo animation and sound. I achieved that goal within the time I allowed, and then I stopped. I have a good background in game development on Z80-based game systems, so what I learned had more to do with the original GameBoy than with how to write a game.

Re: Challenging projects every programmer should try (2019)

#302
post #30

For a fun challenge, implement space invaders in Verilog (i.e. purely in hardware)

Fun fact: The original Pong had no CPU and had all the logic built into the hardware

Ironically, some EEs called that design paradigm “random logic”.

Re: Challenging projects every programmer should try (2019)

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

It really depends on your goals. Why would someone want to become a better software engineer? To me, the things you listed aren't fun, so I wouldn't do them in my spare time unless I see the benefit in it.

If we are talking making more money at a job, I'd say that for most people I worked with and me included there are more important things to concentrate on. Like, soft skills, communicating clearly, understanding politics at work.

Myself, I'm okay with learning things you listed from more senior colleagues, on the job, and just having fun in my spare time.

Re: Challenging projects every programmer should try (2019)

#304

Earlier quoted context omitted.

Having checked off most of the list, I would agree the Game Boy emulator is far easier than the OS. I guess with the emulator it depends how much you want to do. You'd be foolish to write a console emulator and not import someone else's CPU code. When I wrote a Game Gear emulator 26 years ago I used off-the-shelf CPU code and just mapped all the in/out and did the graphics bits. Took me and a friend a single evening…

> You'd be foolish to write a console emulator and not import someone else's CPU code. Why? It's part of the learning and it's not particularly complex.

That part has been done to death and optimized to hell, that was my main thought. Plus it's a ton of research on the opcodes etc.

Re: Challenging projects every programmer should try (2019)

#305
post #276

Earlier quoted context omitted.

Having checked off most of the list, I would agree the Game Boy emulator is far easier than the OS. I guess with the emulator it depends how much you want to do. You'd be foolish to write a console emulator and not import someone else's CPU code. When I wrote a Game Gear emulator 26 years ago I used off-the-shelf CPU code and just mapped all the in/out and did the graphics bits. Took me and a friend a single evening…

Wait what? Cpu instructions are literally the easiest part of writing an emulator there is.

That part has been done to death and optimized to hell, that was my main thought. Plus it's a ton of research on the opcodes etc.

Re: Challenging projects every programmer should try (2019)

#306
post #107

Earlier quoted context omitted.

> Literally all of the listed projects, text editors, compilers, operating systems, and ray tracers, can exercise the exact same activities. In the linked article, these projects are all explicitly described as opportunities to learn about low-level stuff like how to efficiently store editable text. The difference with a web search engine is that nobody today can build such a thing completely from scratch, therefore…

If you want to build a compiler from scratch, you must first invent the universe. Peeling back abstractions to see how things could or should work is perfectly fine, even for professionals. Case in point, I've spent a year excising bloated frameworks from my stack at work and replacing the few corners we needed from those frameworks with, e.g. 50 lines of curl calls. The C compiles instantly and is tailored for our t…

Genuine question: what value was added by getting rid of the frameworks?

Re: Challenging projects every programmer should try (2019)

#307
post #306

Earlier quoted context omitted.

If you want to build a compiler from scratch, you must first invent the universe. Peeling back abstractions to see how things could or should work is perfectly fine, even for professionals. Case in point, I've spent a year excising bloated frameworks from my stack at work and replacing the few corners we needed from those frameworks with, e.g. 50 lines of curl calls. The C compiles instantly and is tailored for our t…

Genuine question: what value was added by getting rid of the frameworks?

20,000 fewer lines of code, faster compile / deploy times, significantly less interfacing / translation between "their" types and "their" apis, and a much better control over types and structure across our codebase b/c we didn't need "their" types and structure anywhere. It had crept everywhere.

It's just faster, cleaner, and easier in a few cases to do precisely what you need right now, rather than anticipate a million things you might need and refactor your code to adopt a given "solution".

Re: Challenging projects every programmer should try (2019)

#308
post #153

Earlier quoted context omitted.

If you're interested to learn more about aerodynamics I would highly suggest learning a bit of classical aerodynamics. It will not be software oriented, since most of the theory deals with approximating very complicated behavior with simple analytical models. It could be interesting to do a comparison with finite volume methods to see when/how those approximations break down.

Totally newbie question - 'approximating very complicated behavior' - this seems like a perfect problem for ML to me. Is this something that's used or explored ?

It's absolutely being explored. There is a lot of active research into using ML to learn solutions of PDEs (Navier-Stokes in this case). It's not my field so I don't know much about the specifics.

The works that I've read train an NN on numerical solutions for different geometries and boundary conditions. Then they try to infer the solutions for configurations outside the training set, which should be much faster than recomputing the numerical solution.

Post reply on HN