Tripping Cyril
If you’ve been paying attention to my github page lately you’ll probably have seen me working on a project I called Tripping Cyril. As the description of this suggests it’s a public rewrite of an internal framework I wrote. First of all, this name is totally made up. I suck at coming up with names, when creating a new project on github these days it simply suggests a name and I went with the first suggestion. Now as I previously mentioned this is a rewrite of an internal framework. Yes a rewrite, not just a copy of it. My internal version wasn’t even a framework really, it are/were mostly just a couple of applications using a very similar base. With all a few minor differences which were getting kind of annoying. So I decided to make it a proper framework that I myself and as it is public also others can simply clone and start hacking on it. So what exactly is it and what can it do? Well it’s a framework so it doesn’t actually do anything. But it’ll allow you to write virtually any internet and database connected event driven software. For example, I have a couple of crawlers. But the push server for Twoons is also powered by a similar framework (I say similar because I haven’t migrated this one yet). Now this isn’t even best part of this framework, the actual functional code that does stuff is supposed to be written in modules that will be compiled into shared libraries, which will be loaded on runtime. And yes loading them on runtime means we can also unload them on runtime of course. You can basically upgrade 1 module without taking the entire process down, which is pretty powerful. Now that doesn’t stop just there, as this is C++ we can have some pretty nasty crashes, this framework is actually able to ‘catch’ these crashes and unload the module that caused it. Now I’m not going to lie, this system is still pretty experimental and has some requirements, you’ll have to tell the module it has to run on a seperate thread for example. But I’m working on improving this of course. Personally I’d say if you want to learn some C++ this is probably a good starting point seeing how I originally started doing some C++ by writing znc modules.