Earlier quoted context omitted.
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 %.
Challenging projects every programmer should try (2019)
311–320 of 346 posts
Re: Challenging projects every programmer should try (2019)
#312Earlier quoted context omitted.
> an orchestra conductor doesn't need to play [...] any instrument! in order to make music Ok, this is clearly a side-topic AND at the risk of being pedantic: Is this actually true? Like, I can see how theoretically one could learn to sight-read music well enough to be able to direct an orchestra of individual musicians, then do enough ear-training to identify enough notes to keep tabs on everyone (especially if you'…
I guess it depends what you mean by "play an instrument" - almost all proficient conductors have proficiency in at least one orchestral instrument. There is at least one (so I'm speculating he's not the only one, but it is likely to be rare) proficient conductor (Leopold Stokowski) who had no real proficiency with any instrument but he did have some very rudimentary piano training... and then pretty much taught himse…
"He studied at the Royal College of Music, where he first enrolled in 1896 at the age of thirteen, making him one of the youngest students to do so. In his later life in the United States, Stokowski would perform six of the nine symphonies composed by his fellow organ student Ralph Vaughan Williams. Stokowski sang in the choir of the St Marylebone Parish Church, and later he became the assistant organist to Sir Walford Davies at The Temple Church. By age 16, Stokowski was elected to membership of the Royal College of Organists. In 1900, he formed the choir of St. Mary's Church, Charing Cross Road, where he trained the choirboys and played the organ. In 1902, he was appointed the organist and choir director of St. James's Church, Piccadilly. He also attended The Queen's College, Oxford, where he earned a Bachelor of Music degree in 1903" [1]
That sounds like a bit more than rudimentary piano training to me :)
[1] https://en.wikipedia.org/wiki/Leopold_Stokowski#Early_life
Re: Challenging projects every programmer should try (2019)
#313I will also add a CAS, computer algebra system to the list.
I've never seen an explanation of Gröbner bases that's accessible enough to the average non-mathematician developer to make that practical. Any pointers?
Re: Challenging projects every programmer should try (2019)
#314On the text editor one: > The biggest challenge is figuring out how to store the text document in memory. My first thought was to use an array, but that has horrible performance if the user inserts text anywhere other than the end of the document. I guess this is only an issue in low level languages, as I just used a JavaScript string and I don't think it's been a perf issue in 2+ years using my editor full time. Ple…
Re: Challenging projects every programmer should try (2019)
#315For a fun challenge, implement space invaders in Verilog (i.e. purely in hardware)
How would you suggest going about the display? Driving an LCD or generating an NTSC/PAL signal? Or maybe a giant array of LEDs? Is there a good tool to simulate Verilog so you can test without hardware?
Re: Challenging projects every programmer should try (2019)
#316While 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 understand why you think a search engine requires the use of "real engineering skills" like picking and choosing libraries and identifying which opportunities will yield fruitful optimization. Literally all of the listed projects, text editors, compilers, operating systems, and ray tracers, can exercise the exact same activities. I'm more inclined to think that your comment is really more revealing about what…
Re: Challenging projects every programmer should try (2019)
#317Earlier quoted context omitted.
I don't understand why you think a search engine requires the use of "real engineering skills" like picking and choosing libraries and identifying which opportunities will yield fruitful optimization. Literally all of the listed projects, text editors, compilers, operating systems, and ray tracers, can exercise the exact same activities. I'm more inclined to think that your comment is really more revealing about what…
> 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…
Re: Challenging projects every programmer should try (2019)
#318Earlier quoted context omitted.
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.
Try re-indenting a large xml file, or something else that will result in a very large number of small deletions and insertions throughout a file. Even on a modern computer the underlying data structures will make the difference between something near instantaneous and the user giving up in despair after a few minutes. A simple array does not cut it.
The formatting is often difficult enough that it will need a separate data structure anyways.
Re: Challenging projects every programmer should try (2019)
#319Earlier quoted context omitted.
Assuming you get the TCP/IP stack for free, you still need to build fully-featured HTTPS and a "webscale" multi-server database for document storage from scratch. The crawler is easy and so is something like PageRank, but then building the sharded keyword text search engine itself that operates at webscale is a whole other project... The point is that it's too much work for a single person to build all the parts them…
Simple methods of search like exact matching are very fast using textbook algorithms. There are well known algorithm like suffix tree which could search in millions of documents in milliseconds.
That's not a textbook algorithm.
Re: Challenging projects every programmer should try (2019)
#320Earlier quoted context omitted.
Simple methods of search like exact matching are very fast using textbook algorithms. There are well known algorithm like suffix tree which could search in millions of documents in milliseconds.
That's not enough. It needs to be sharded and handle things like 10 search terms, each of which match a million documents and you're trying to find the intersection. Across shared results from 20 servers. Quickly. That's not a textbook algorithm.
The problem space is embarassingly parallel, so sharding is no problem. Although, realistically, you probably only need 1 server to cope with the load and storage needs. This isn't 2004. Servers are big and fast now, as long as you don't try to use cloud compute.