5 ms·
Ask HN: Computing Side Project Ideas?
This year, I have been striving toward one of my long-term goals: to build a programming language. This has been a great way to exercise my technical muscles.
I wonder what other "computing"-type side project ideas are out there in which one would refine their programming skills (as opposed to interest-based projects like an app to do X or projects with monetization potential).
Examples off the top of my head:
- Make a programming language
- Build a database or query language
- Build a kernel module
- Implement a protocol (TCP, HTTP, UDP)
- Write code in a functional language
- Implement Git
What other ideas fall into this category?
- zerojames 3y agoSome more ideas in the "programming languages" category: - Build a package manager - Create a linter - Build a static code analyzer / function call graph generation tool
- hcfman 3y agoHow apart a gunshot/impulse sound detector to match my sound localization platform that is almost ready for release (Within a month - https://github.com/hcfman/sbts-aru https://github.com/hcfman/sbts-aru) The idea is to write a pipeline that can determine the start time of an impulse sound, typically gunshot, that can be carried out on a raspberry pi platform. The sounds recording and highly accurate registration part is done with my platform. If this next part is done then the final stage would be to send this time to a central server to align with 3x other devices and which if also received then calculates the co-ordinates from where the gunshot came from and mails out alerts/map links. This is then used to counter poaching.
- CableNinja 3y agoAfaik something like this exists in some cities to target illegal fireworks and gunfire incidents.
- mikewarot 3y agoI suspect once the poachers become aware of the sensors, they'll disable them first. Of course, if you monitor them for a heartbeat, and they disappear, this can be a sign of poachers... ;-) Then they'll likely figure out how to disable the sound without killing the device, so then you'll figure out how to tell if that has happened... and things continue.
- TrustPatches 3y agoI always thought it would be cool to build an entire toy “stack”. Maybe start with a language, DB, and web server. You could start out simple, for example building a language that transpiles to JS, and overtime replace parts with lower level implementations
- markus_zhang 3y agoIt can go a lot deeper: take the Tokyo University CPU project as an inspiration: You need to use FPGA board to build a machine that runs an OS ported to this architecture, which has a high level language with a proper tool chain, all built by yourself. Then you use the language to build DB, Webserver and such.
- markus_zhang 3y agoAn accurate emulator of a physical (not fantasy) 8-bit console is non trivial. Actually, I think it's more interesting to focus on one and dig deeper.
- Kamek404 3y agoHave you ever thought about combining coding and social networking? You might want to explore websites like http://val.town/ http://val.town/, which hosts a Reddit-style community where users can share web components. Since coding can be a solitary pursuit, adding a social element could be a fascinating concept.
- sircastor 3y agoFor my senior project in University I wrote an NES game. It was a wild departure from modern programming languages and techniques. I learned a lot of about efficiencies and program design. If you’ve never done anything in Assembly, I recommend it. It’s worth seeing what life is like “down there”
- mattpallissard 3y ago> - Write code in a functional language This is a great place start. The ML family of languages are excellent for tokenizing and lexing, which is what you'll be doing when you get to your compiler project. For getting your feet wet I'd highly recommend working through the first few chapters of Okasaki's 'Purely Functional Data structures'. It's SML, which is really close to OCaml syntactically. Once you're done with that you could jump to an OCaml project, say converting sexepressions to an AST of sorts, and practice the fundamentals of lexing/tokenizing. And then the OCaml ecosystem has a parser generator, menhir, which is like yacc but better. Anyway, this is the path I took and had a blast. I haven't written my own language but have dabbled with some of this stuff in a practical way now including adding new syntax to the multicore fork of Merlin (IDE syntax). It's now obsolete because multi core is mainline. But reading through and modifying code written by experts that walks an AST was an excellent learning experience; seeing what state needs to be carried forward, what sort of errors can be recovered from, those recovery strategies. No matter what path you choose I'm sure you'll find it interesting.
- mikewarot 3y agoI'm trying to figure out a new computing architecture, and the infrastructure to make it all go. A full new stack is required, and there are many puzzles to solve. I think it is possible to do Petaflop computing using a BitGrid[1]. I'm fairly confident I can get the VHDL or Verilog written to actually make the chip. After all, it's just a huge grid of Static RAM cells hooked to some 16:1 multiplexers and latches, and 2 phase clock distribution. The tricky bit is the programming. I'm at the stage where I have to figure out how to compile an expression into set of binary logical equations, then route it into LUTS in the chip. I also need to find out how much energy a single stage will consume in one cycle, to then figure out if this actually would be worth the effort or not. I estimate the odds 50/50 at this time. [1] https://esolangs.org/wiki/Bitgrid https://esolangs.org/wiki/Bitgrid