Projects for work that are opensource - w00t. I thus present to readers and solicit code comments on a very early (just made it past bare functionality) version of MetaVPN, a manager that creates and configures OpenVPN instances. This is intended for people who need the ability to manage multiple dynamic instances of OpenVPN, or otherwise need to frequently make and destroy instances but don't want to manually go through the configuration process.
- State of the code: Alpha. It works in a barebones-sense to create VPNs and bring them up, and it might work to bring them down too. Errorchecking is insufficient, some code cleanups need to be done, etc.
- Language: Perl
- Programming model: Small-ish. I use regular perl argument passing rather than structured argument passing, I don't pull in my regular debugging tools, I don't use perl function prototypes. It is otherwise structured like a midsized Perl or C program (rather than a script)
- Documentation: None yet, apart from the comments in the code
- Permissions: You will need to become root to launch the OpenVPN server itself, although you could configure it with MetaVPN and launch it yourself afterwards if you like
- Edit window width: Sorry, a bit broader than 80
- Indent style: Whitesmiths/tab (which is the one true indentation style for all programming languages past, present, and future *innocent looking eyes*)
- Customisation needed: Moderate. Hopefully all the things you'll want to change happen in the pre-run of the script before main() is invoked.
- License: GENI Public License, which is very similar to the BSD license (no advertising clause) in being very very permissive.
The code is here.
Interestingly, I don't think I was ever taught the Whitesmiths code formatting style (although it's hard for me to say for sure, as I learned C such a long time ago after learning BASIC, Assembly, and Logo) - there are a small number of simple/obvious indent styles possible, after which one gets deeply ideosyncratic (and the marginally customised versions generally tend to fall under the umbrella of a major style - my Whitesmiths style is coloured by the many languages I've learned). Are there great undiscovered families of code formatting that are still coherent and reasonably simple (and compatible with C-descendent languages)? I am amused that for me, language barriers are smaller than code formatting barriers - I am willing to learn, use and be inspired by new languages, but not if they prevent me from using Whitesmiths (and if they're too pushy about formatting, I lose interest in them regardless of their other merits).
I tend to take showers in the dark, closing the bathroom door and turning out the lights, as a way to relax, and also as a designated slice of time to think about more abstract things (not that I really need designation). I've been chewing (maybe written about this before) about programming in the abstract, and how one might make programming langugages or language representation for blind people. What are the essential features of programming (recursion, variable naming, methods, etc), and how visual a task is programming. Could auditory languages or auditory explorations of program structure be done? (we think of vision as a "precise sense" and hearing as a fuzzy one, but could we change how we hear in this regard? Visually, we might have a tough time telling the difference between two blocks of code because our eyes glide over it, but if we really manage our attention we can see it. Are there limits to that latter capability for hearing? I partly think about these things because I imagine people who enjoy programming really losing a lot by going blind, and partly because it helps one step back and understand the mental processes behind the stylised encoding of meaning that is programming.