866 points by hakanderyal 10 days ago
I was expecting build your own XWindows Server.
I expected the same and was gladly surprised with this interesting collection. That being said, there's a link under "uncategorized" regarding the X window system :)
Likewise. I just listened to a BSD Now podcast on building the FreeBSD graphics stack. They went into X and its history a bit so I had X on the brain.
But this list from OP is even more interesting! That list is a wonderful (mine?)field of rabbit holes! Bookmarked and thank you.
I was doing this and gave up shortly after realizing the network protocol supports endian negotiation and also some messages are still arbitrary endian
Was also expecting this but was very pleasantly surprised at what was there. It's a pretty awesome list of intermediate to advanced programming projects covering a nice variety of things.
Same here and I was thinking it would be a detailed guide to compiling from source.
me too! i was ready for a dark, spooky, deep dive here....
Is it just me or does all these great educational content out there lead to analysis paralysis? I mean if I wanted to just learn something new and I chanced upon this web page I'd be stumped on where to start.
I've worked through a couple of these lists and a few of the projects. My take on them is that many of the tutorials are not vetted for quality or even completeness. I have several projects where the author of the guide essentially 'gives up' 60-80% of the way through, usually in the most difficult stage of the process, in what can be described as a 'rest of the fkn owl' result.
Also as someone who easily succumbs to analysis paralysis, this has made it quite difficult to motivate myself to start another one.
I agree. I’d pay for a "course" that assembled a massive list of practical learning projects like this into something that plots real skill/knowledge growth from beginner to advanced in a structured way.
Maybe you're interested in a platform I've built for this kind of thing - https://readpaths.com. It lets people collaborate to build something like what you describe. People can add links and other people can add connections between these links, resulting in a dependency graph.
Pick the one that seems most mysterious and scary.
Alternatively, pick the one that seems just a bit too mysterious and scary to be able to do yourself.
It hasn't for me. If I didn't have any direction, sure. But if there's something I actually want to learn, it's easy to find a good source and then hold my nose to the grindstone.
Roll a few dice.
Too much choice can be paralyzing, yes.
This is a great resource. There were also some other useful links in the comments last time: https://news.ycombinator.com/item?id=17054419
Is there really no option for build your own Dropbox? ;)
For a Linux user, you can build such a system yourself quite trivially by getting an FTP account, mounting it locally with curlftpfs, and then using SVN or CVS on the mounted filesystem. From Windows or Mac, this FTP account could be accessed through built-in software.
What I find interesting that many think before dropbox the only other option was FTP, while in fact there were other cloud based storage providers with good integration on the desktop such as virtual disk drive on Windows, even in late 90s. Dropbox won with PR/marketing I believe. Can anyone list what differentiated them compared to exiting solutions, besides marketing?
Ease of use, UX, network effects, positioning (the fact that it isn’t called Virtual Hard Disk)
Even if you could get the above working yourself, good luck trying to get someone else to so you can collaborate on a project.
Developers often dismiss ‘marketing’ as though it is just a fluffy icon or slick website, but how a product is positioned (in Dropbox case for ease of use and the fact that the project is engineered to ‘feel like a folder’) is absolutely marketing and critical to its success.
I meant there were (and still are?) consumer products with simple installers (next > next) which were integrated on Windows as an extra disk - no need to create it manually. Syncing was just that - drag & drop to that disk/folder.
From what I have heard on "How to Draw a Startup"  Illustration was vital for Dropbox to differentiate themselves.
It just worked, I tried most of the other solutions at the time and they were terrible.
It's so funny, I remember reading that.
What I should have thought: "Wow this guy is an idiot, no consumer will ever do that."
What I did think: "Wow I'm an idiot, I need to learn linux better."
I’m glad someone got the reference...
Does anybody know about something like this for hardware?
Clocks, motors, stuff like that?
Different than your examples. But I just finished making my own "Mostly Printed 3D Printer". I'm a software dev but had basically no experience with Arduino or anything else related to the project. It made me feel like when I was a kid on Christmas with a new large Lego set. One of the most educational and fulfilling projects I've done in recent memory.
It was good timing too because the motherboard on my 3d printer just shorted out. I didn't want to pay the full price ($115) for a replacement board. So I bought an open source board similar to the one I used for my MPCNC. Since I had just put that togheter I knew what I was doing even though there was limited help in converting my particular printer available online.
Do you have a blog/YouTube channel or something with more details?
I don't. But the linked site has great, detailed instructions
For industrial-type things, there's Open Source Ecology (https://www.opensourceecology.org/)
That is a weird website!
For something that has "open source" in the title, it was remarkably hard to find the actual plans -- there are many blank and broken pages; even the info page for "CEB press" (which seems the first machine they did) is spread over 3 different websites and has many empty/broken pages.
The only thing that is clear form the website is that they are happy to sell you workshops.
A guy named Ben Eater is in the process of putting together a fantastic video series about building your own 6502, which was an extremely popular microprocessor that was used in dozens of popular electronics back in the 80s. You can buy a kit that contains all of the parts you need. Not quite the same format as the tutorials linked in this post but educational nonetheless.
Do you mean building clocks, motors, etc or using them in a hardware project along side e.g. an arduino?
I’m interested in your hardware project resources.
youtube has a few engineers and makers, far from precise but still inspiring
Mostly off-topic: anyone know how to set the github.com cookie to never expire? All I want, usually, is to star a project. But all that gets me, usually, is a sign-in screen. And I never seem to have my U2F key handy.
Get a password manager?
But he mentioned 2FA?
Add the 2FA to your password manager! At least 1Password supports this.
Although, you might not want to do this, depending on your threat model. Take care if you do (now both password + 2FA can be obtained by having your password manager compromised, but at least your protected if only your password leaks from some dump)
I don't use OTP 2FA if U2F is available. Adding a physical token to a password manager is not an option.
Part of the problem is that GitHub is both a source code repository frontend (calling for tighter security) and a social network (calling for minimal security). So the cookie expiration policy makes sense for the former case but not the latter. A compromise might be letting the user mark a specific browser instance as trusted, so that the site can either set a longer expiration or else not ask for the second factor from that instance.
Anyway, was hoping someone had figured out which cookie held GitHub's token and knew a browser extension that could extend its lifetime. Not really looking to learn about password managers, which I already use.
Ah yes, I see.
I already use a password manager. U2F can't be cloned, by design.
A good reading on why you should understand your building blocks:
I read your article, and it's about reasoning in regard to design requirements. I'm curious to hear what you have to say. Would you please provide some explanation as to why programmers should understand building blocks?
Happy to see nand2tetris on there, one of the most interesting projects I've done in a long time!
Is there any pointers on how to write your own DNS server? Google does not seem to help much as it shows up mostly hosting your own bind server.
Have a look at https://jameshfisher.com/2017/08/04/golang-dns-server/
DNS is actually pretty simple if you don't want to implement DNSSEC.
Very cool! Does anyone know of something similar for a secure network stack, like a "build your own TLS" but very barebones?
Very neat link. It is true that if you cannot create it, you are simply borrowing someone else's idea and treating it like your own.
> if you cannot create it, you are simply borrowing someone else's idea and treating it like your own.
With the understanding, of course, that this isn't necessarily a bad thing! Understanding is certainly useful, but if it works, then it works, regardless of who built it. Reimplementing, say, a standard library will make you a better programmer, but if just including libraries to do the heavy lifting produces a working system, then that has value too. There are only so many hour in the day; there's value in knowing when to just hand-wave the giants whose shoulders you stand on.
.. at least until the abstraction "leaks".
I believe all abstracts leak at least a little. It all comes down to trade-offs between what risks you want to take.
shameless plug: practical/real world applications step by step https://github.com/xmonader/nimdays
Adding "Web Crawler" would be helpful
I searched for Xwindow way too long
There is an X Window related post at the bottom of the page under Uncategorised.
This is dope. thanks for sharing
Really nice. I was hoping to find some Smalltalk examples
This is some great content. Build you own X helps you understand the internals of X.