top | item 40039885

(no title)

throw1234651234 | 1 year ago

Yea! And for the same amount of effort and difficulty I can recommend a couple as well!

- build your own kit car. Maybe start with something easy like a Ford GT with a V8 from a donor Mustang!

- build a kit airplane! Make it a jet for a little bit of extra challenge!

- make a rotary engine from scratch! Make your own materials!

- now a figure 8 propeller piston engine!

- create your own chip fab facility!

These articles are weird, delusional flexes.

discuss

order

Bjartr|1 year ago

As far as writing an interpreter or compiler are concerned, what you're describing is more like making one for an existing production grade language that's compatible with it's wider ecosystem.

These exercises are more like building a rubber band powered toy car. Useless (but not worthless), fun to build (if building things is something you enjoy), and something you can learn fundamentals of the domain from.

Also, I wish I could take a swing at any of what you mentioned for as little up front investment in money or space as giving these software exercises a shot, it'd be an incredible learning experience and awesome fun!

throw1234651234|1 year ago

Well, my previous trolling aside, you can build an internal combustion (or electric!) go-kart type deal on a mid software developer budget. There are plenty of university students doing so for under a couple of thousand USD. You can also experiment with RC planes.

I do realize how relative money is - it's "nothing" to a FAANG dev (though they probably don't have the time), it's potentially years of savings for someone working in the the 2nd / 3rd world.

bosch_mind|1 year ago

It might sound humorous, but I’m not 10x programmer. An educational lexer and interpreter is something you can study and implement in 2 weekends. Assemblers are very very small amounts of code that spit out predefined binary from already made instructions (chip—8 is good for this). I think there should be MORE resources around simplifying what people think is incredibly complex. Production grade compiler tools like LLVM are incredibly complicated, but learning how the systems work isnt. While your comment is humorous, it’s toxic for those who actually want to understand fundamentals well

sureglymop|1 year ago

I agree with you bosch_mind. Building an interpreter is not hard, building a well optimized interpreter definitely is.

But that is not needed for an educational project. I encourage people to do things out of curiosity. Just ask yourself, what else is there that I could do that I haven't yet tried? (if you have the time)

It's not a flex or resume building or whatever (who cares about that?), it's a learning opportunity. I do think that sometimes there is a collective "this is hard" stance for things that we haven't had to do in a while because maybe they have been abstracted away or good solutions already exist. But the "this is hard" stance is actually harmful if it scares one away even though things turn out to be totally doable once one overcomes that mental hurdle.

sevagh|1 year ago

So if you're not 10x, what's the point of you having built a mediocre educational lexer and interpreter?

eatonphil|1 year ago

Flexes, maybe. Delusional? Not at all.

Here's a few stuff I've worked on for my own education over the years:

- Raft: https://github.com/eatonphil/raft-rs

- BTree: https://github.com/eatonphil/btree-rs

- A little Lua VM: https://github.com/eatonphil/lust

- A little Postgres clone: https://github.com/eatonphil/gosql

- A little Elastic clone: https://github.com/eatonphil/docdb

- A little amd64 emulator: https://github.com/eatonphil/go-amd64-emulator

nomemory|1 year ago

I've never considered myself the "flexer" type, but maybe the tone of the blog post was a little misinterpreted.

PS: Great stuff you've shared. I remember in the past I've spoke with you about b-trees.

superb_dev|1 year ago

All of these ideas sound really fun