Live data from Hacker News

Challenging projects every programmer should try (2019)

austinhenley.com

211–220 of 346 posts

Re: Challenging projects every programmer should try (2019)

#211
post #130

Earlier quoted context omitted.

> If you are only using ready-made building blocks, there is a lot of great software you just cannot write. And I think we all see that, because there isn't much great software around. I claim that the opposite is true: The reason there are so few software projects that are really great is because high-level skills, not low-level ones, are in short supply. Every CS graduate can implement Paxos. The number of people w…

> Every CS graduate can implement Paxos. I have lived evidence that not nearly every CS graduate even knows about the topic that Paxos addresses.

Where in the world can you get a computer science degree without hearing about consensus algorithms?

Re: Challenging projects every programmer should try (2019)

#212
Interesting list, I guess it depends on your personal inclinations and circumstances, but if you're looking for ideas, it's a good start.

I won't go to far as to tell what every programmer should try, just what were my personal choices.

Using the Sinclair ZX Spectrum:

- Music staff editor and tracker (very crude)

- 2D game - Space Invaders (only one invader)

That computer wasn't even mine. With my first computer (386):

- Huffman compressor

- B-Tree indexes (outperformed DBase/Clipper)

- OOP form generator

- Several DOS background programs, one of them was later used by a big company for installations

Years later:

- Email checker for dial-up

- Manual parser for syntax highlighting

- Spreadsheet (something like that, I'm on it now)

Sure I forget someting.

Re: Challenging projects every programmer should try (2019)

#213
post #211

Earlier quoted context omitted.

> Every CS graduate can implement Paxos. I have lived evidence that not nearly every CS graduate even knows about the topic that Paxos addresses.

Where in the world can you get a computer science degree without hearing about consensus algorithms?

Pretty much everywhere below country's top3, top5?

I've got masters degree and I don't think anyone even mentioned word "paxos" or "raft" during my 5 years there.

Fortunely internet is a thing and I could read something about this topic.

I know graduates from various public schools and people who heard about paxos (let alone can implement it) are tiny %.

Re: Challenging projects every programmer should try (2019)

#214
It's a great list. Would be a good to keep it as some live list so we can help evolve it over time.

I'd add two ideas:

Build lightweight memcached - it requires mixture of basic algorithms as well as good system design practices - it's a "simple" problem, but requires to think well from multiple angles - invalidation, concurrency, memory management...

Build your own docker - it's not as complex as it might sound - gives opportunity to understand basics of OS programming, which most engineers nowadays don't really use in day to day jobs

Re: Challenging projects every programmer should try (2019)

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

A simple search engine is certainly doable from scratch in a matter of weeks, complete with most things expected from a search engine. Similar to compilers or tiny OSes, one can go as hardcore as necessary, or just stick to basic stuff. Of all the typical personal challenge style projects, databases are probable the hardest to build, and even that is not impossible.

making a database is easy. making a fast database is what's hard.

Re: Challenging projects every programmer should try (2019)

#216
post #146

Earlier quoted context omitted.

Not sure what you guys think software engineering means, but it's definitely not the same as what I think it means.

Software engineering is whatever definition that allows me to procrastinate and sleep at night knowing I don’t need to learn more.

If you don't want to learn you chose the wrong profession.

Re: Challenging projects every programmer should try (2019)

#218

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.

"I took two capture the flag classes"

Can you share links for the same ?

Re: Challenging projects every programmer should try (2019)

#219

Earlier quoted context omitted.

>Not all hackers are overly obsessed with the most efficient Big O and various low level (sorry pun intended) details. A NAND gate is low level. Big O is just theory that anyone should know if he's worth something as a programmer.

Most of the time, big O is not relevant if you're not writing new algorithm. For the usual CRUD app? Not so much. Heck even for more involved work, you will not touch them because your solution will be called or will call some external tools. The good news is that, while still valuable, you won't have to lose time creating a new broken wheel. The bad news is that this part of CompSci is now mostly fundamental researc…

Understanding algorithm costs can be extremely important when building a simple CRUD app because it will help you reason how things will scale with the size of the data you’ll see in the real world.

It’s easy to make things that are accidentally quadratic but are fine until your big customer has 10 times the data and they suddenly aren’t fine anymore.

Doesn’t mean you need to optimise everything, but it doesn’t mean you shouldn’t think about this stuff.

Re: Challenging projects every programmer should try (2019)

#220
post #130

Earlier quoted context omitted.

> If you are only using ready-made building blocks, there is a lot of great software you just cannot write. And I think we all see that, because there isn't much great software around. I claim that the opposite is true: The reason there are so few software projects that are really great is because high-level skills, not low-level ones, are in short supply. Every CS graduate can implement Paxos. The number of people w…

I guess it all depends on your definition of low-level. High-level can also be low-level, just with different building blocks, if the building blocks are based on well-specified abstractions. I am actually currently writing a novel text editor, and I can guarantee you, my requirements mean that an AI cannot help me with that directly, because the underlying mechanisms I need don't exist yet. The AI is still helpful t…

Existing libraries for writing CRUD apps are anything but crap.

If we can’t create special libraries that work well for common tasks then as a species we are too dumb.

Post reply on HN