4 ms·
If anyone has any other good ideas, please let me know. I'll make a list of them at the end of the article and provide credit.
by azhenley 7y ago
If anyone has any other good ideas, please let me know. I'll make a list of them at the end of the article and provide credit.
- deleted 7y ago[deleted]
- wefarrell 7y agoMS paint clone.
- azhenley 7y agoI've never tried but I can see that being really fun. Someone else sent me an email suggesting a vector graphics editor. I'll add both, thanks!
- chupa-chups 7y agoYou'll have to establish an MVP program on top of the clone: https://weblogs.asp.net/alex_papadimoulis/430478 https://weblogs.asp.net/alex_papadimoulis/430478 </fun>
- dfox 7y agoMy suggestions: Implement basic widget toolkit, making something that essentially works is simple (regardless whether you implement in on top of dumb framebuffer, existing display server like X11/WinAPI or even on top of HTML). But there are lots of nuanced details that you will probably learn along the way, some of them overlap the text editor problem, then there are things like not opening windows/popup menus outside the display area (there are widely used toolkits that get this wrong even for the simplest “select box on bottom of the screen” case), clipping, handling scrolling (both detecting if something is too large and should be scrollable and actually implementing scrolling efficiently) and last but not least designing the API to be both powerful and simple to use. Simple transactional database that really has ACID semantics. Locking, BTrees, journaling, isolation levels, how to actually store all that in files. Toy unix block filesystem (there can be some overlap with previous point and for journaling design it might be better to start with the FS case). Recommended reading: https://news.ycombinator.com/item?id=12309686 https://news.ycombinator.com/item?id=12309686 And, which is maybe somehow motivated by doing this mostly pointless thing as long abandoned pet project, and thus maybe slightly nonsencial: implement AFS-like “distributed” filesystem. The interesting part there lies in RPC and authentication mechanisms, not in doing some kind of distributed consensus (thats why “AFS-like”, as AFS has single master server for each volume) And at last, although the theme is somewhat different: Implement a tool that given a path to unix file prints a list of users who have access to the file and what kind of access they have. This sounds like simple tool, but is surprisingly non-trivial even without takong ACLs into account. (This is not from me, but I read this in some similar list ~15 years ago, IIRC by Andrew Tridgell)
- umvi 7y agoIt's fun trying to recreate GNU coreutils. Stuff like grep.
- lawn 7y agoAn emulator of something is a pretty good idea I think.
- evmar 7y agoMy goto project is a terminal emulator, for reasons I went into here: http://neugierig.org/software/blog/2016/07/terminal-emulators.html http://neugierig.org/software/blog/2016/07/terminal-emulator... (summary: it touches a surprising breadth of details!)
- stevewilhelm 7y ago- A load balancer module that accepts generic worker functions. - A service that can take a real-time timestamped data and generate an internalized time series. For example returns a first, last, high, low, and average value at fifteen second intervals. - A mechanism for serializing structured data. Something like Google Protobuf. - A chart widget optimized to display and navigate date based content.
- bhl 7y agoA lightweight clone of git: implement basic commands such as log, merge, commit, fork.
- pvg 7y agoAre you familiar with Etudes for Programmers? There's a bit of overlap with your list and it's also an interesting look back at what someone thought programmers ought to try their hands at a few decades ago.
- akamoonknight 7y agoOne professional project that really changed some of the ways that I thought about programming was writing a PCIe Linux driver. Learning how the kernel lays out data structures and how they provide callbacks and passing data back to the 'user' was really just different than I had thought about things before. Definitely a lot of pitfalls, but lots of learning.
- deleted 7y ago[deleted]
- OrgNet 7y agoa simple paint program in assembly
- bwiggs 7y agoPort Scanner/nmap clone - This project is much simpler than the others, but is more approachable. It's a great project to implement when picking up a new language. If it's your first time writing one, it forces you to learn a bit about networking and concurrency if you want it to scan quickly.