kutkloon7 wrote:I personally have a really broad interest
Likewise, really broad interest
kutkloon7 wrote:I've a tiny bit of experience with reverse engineering (finding out how a program works by looking at it's disassemblies)
Nothing's more time-consuming but rewarding. In the nineties I would sit around all day and write keygens, game trainers, exploits, cracks, viruses, and worms simply because it was elating to not only be able to read someone else's code, but to then take over someone else's code entirely. I never released anything though... just personal education.
kutkloon7 wrote:I've worked on a little simple stand-alone synthesizer for some days (it uses waveout, which is kind of outdated. I want to write a new one which uses WASAPI, but I'll have to look into that),
Windows person eh? Played with VST's/VSTi's? The interface is pretty straight forward and you immediately dive into waveform manipulation without worrying about the rest.
kutkloon7 wrote:I'm currently learning about compilers and interpreters (and of course, I want to build one to compile my own super-programming-language in the future

),
That's just as fun (or more in certain ways) as working on an OS. I've never finished any of my previous languages, but I have tons of fun every time I start a new one. If you want to build an actual compiler, I'd start with a basic assembler first and slowly refactor that back (start with something like stack frames/calling conventions and work out from there). If you want to build an interpreter, I'd start with memory management and variants, an work backward from there. When you want the two to meet (JIT or purely compiled at that point), take what you know from both.
kutkloon7 wrote:I want to get started with OpenCL, OpenGL (well, more with shaders actually) and I want to build a GUI library.
Start with the basics of OpenGL 1.0-2.0 (polygons, bindings, frame-buffers, etc) before you dive into shaders. OpenGL is an interface that can get very muddled the moment you extend past the basic tutorials if you're not careful to completely understand what you have bound and what you're doing with it. Shaders only complicate that. Just a recommendation.
As for me, outside of what I've already stated in inline response:
- Compression. I have spent 15+ years chasing compression. Am obsessed really. Entropy drives me mad at times. I always have a compression related project "idle" and on hand if not active.
- Large system analysis. Markets and what not (literally, I spend more time staring at NASDAQ data and trying to model it than I really should for my health). A lot of playing with simulation of large system behavior. Also, in general, an unhealthy obsession.
- Natural language processing. Linguistics is a passion outside of my interest in computing, so NLP plays a solid role in a lot of things that I do (where appropriate of course).
- Machine learning. I do a lot of experimentation with machine learning, heavily related to 1-3. No active personal projects for the time being, but I've got one going at work right now.
- Network "efficient" applications. I spend a lot of time working on concepts of high-volume I/O within a networked environment. Recent projects: CachedFS (note the "d"), a purposely inconsistent asynchronously updating file system proxy driver specifically for network based mounts where immediate consistency is not necessary but frequency of consistency is guaranteed; librenode: an asynchronous I/O library that facilitate higher level event tracking an prevents starvation; comparable to something like libaio but more flexible (with results just about comparable
).
- Distributed systems. From distributed computing to basic resource management, I really have a fascination with distributed environments. Decentralization, how to make it fail-over safely, generic node management, solving spit-brain, how to manage authorization in an environment where trust isn't implicit, etc. I have multiple projects related to this (one active, two idle). n-Bazaar/Renode are two parallel projects both in a semi-idle/semi-active state addressing some of these issues in a generic manner.
- Web applications (of all types) are my bread-and-butter. Not a huge fan actually, but I've been doing it forever now and that's what I get paid to do above all else. Occasionally that translates to personal projects (mostly in the form of frameworks) but I never bother to finish any of them because I usually don't care. I have one for nodejs I've got sitting idle currently, but that's about it.
Basically... lots of interests and lots of never-to-be-finished projects
