1) Expanding my programming capabilities. This is because it’s vital if I’m ever to develop one of my other big ideas. I can come up with algorithms and models pretty easily, but am not at the stage where I can put them into a user-friendly, non-command-line format, or build off of others’ code (which rarely comes with easy compiling instructions).
I’ve tried various frameworks, but they’re all hard to get started on—more so than the inherent difficulty of programming would suggest. I follow the instructions just to get it set up, but they always leave out something vital so that I have to get an expert to look at why it doesn’t set up right. I’ve tried Django+Python, the Android SDK, Matlab (incl. with Simulink), and .NET, becoming most proficient with the last two.
It’s not all gloomy, though. Some successes: completing a useful internal development project at work that involved setting up a GUI to allow for easy database lookup and clean presentation of data. In technical languages, I’ve set up something similar but for signal processing and automated generation of relevant plots. I was able to modify a Firefox extension so that I could deftly browse websites from the keyboard alone with one hand (no, not for “that”). Could only figure out how to do it on my Linux box though.
2) “Infiltrating” an anti-rationalist group by purporting to be “one of them”. I’m doing it to see what makes these people tick: to what extent they really believe this stuff, how well they achieve their goals (vs. failing in a roundabout way), what kind of useful signaling functions the group can serve, etc. (Obviously I can’t go into more detail here, but feel free to PM/email me.)
3) Learning about cryptography (by reading Schneier’s Applied Cryptography), hopefully to assimilate it at the 2+ Level. I find it important because it both has practical application, and bears directly on fundamental questions applicable to many circumstances: under what conditions you can make what inferences about a source or the meaning of something; where problem complexity/difficulty can originate, and how to increase or decrease it; what is randomness, etc.
It also trains you to truly understand and represent a system well enough to know its strong and weakest links. I’ve been impressed at seeing how people with experience in crypto are able to carry its concepts over to a fuzzy, real-world situation and justify counter-intuitive conclusions about why a given practice with actually increase or decrease vulnerability.
4) Experimenting with brain-machine interfaces (got an NIA and the Force trainer, don’t laugh). This is because I have an interest in improving interfaces, and want to see what the potential is for removing a major bottleneck in interacting with a computer, or overcoming difficulties. (One idea is to combine NIA with Dasher.) I think there is great potential, both for brain exercise, and for extending expressive capabilities, though a direct brain link.
I’m not sure Applied Crypto is a brilliant place to start. Practical Cryptography is in many ways a kind of apology for the sorts of mistakes that people make after reading Applied Cryptography. Though they do have a role, people don’t appreciate the extent to which we care a lot less about warm fuzzies than about what you can prove, whether that’s eg a security reduction or resistance to differential and linear cryptanalysis.
Some do, yes. Generally, anything that I’m going to want to make easily accessible to others for use will probably require it. I have lots of ideas I want to implement, but they mostly involve data-mining and machine learning, which would involve applying a routine to large datasets, and I want to be able to build off of others’ work. Basically, implementations of an inference engine.
(One “toy” program I wrote was a program that generates a Markov model of given body of text—i.e., for a given string length, collect all strings in the text of that length and find what characters are likely to come after instances of that text, and then randomly generate a new text from a given string. I know it’s not a new idea, etc., but that was just to get my feet wet. And I was limited to command line and reading in a local file.)
Also, I want to model control systems from an information-theoretic and thermodynamic perspective: what energy flows and entropy generation happen in order to keep a system stable, and perhaps replicate.
Being able to do more work with the brain signals requires more programming knowledge too.
Those things don’t really sound like they require a web interface, but just sharing of your code. I can easily imagine that building a web interface for a technical program involves several non-trivial steps (especially dealing with libraries), because that’s not that common of a combination. I suggest you stick with learning the programming part first and handle the sharing part second. After all, once you have something that works in one language, it’s not usually too difficult to translate it into a different language if something else seems more appropriate.
I personally think that Python works really well for technical computing (or for non-technical computing for that matter). NumPy (the array package) is much better designed than other packages in other languages. It’s also very easy to share your code (PyPi is the standard place to place your package). So toss the django for now.
I enjoy giving advice on this subject, so feel free to ask lots of questions (if you’re interested in the answers anyway).
1) Expanding my programming capabilities. This is because it’s vital if I’m ever to develop one of my other big ideas. I can come up with algorithms and models pretty easily, but am not at the stage where I can put them into a user-friendly, non-command-line format, or build off of others’ code (which rarely comes with easy compiling instructions).
I’ve tried various frameworks, but they’re all hard to get started on—more so than the inherent difficulty of programming would suggest. I follow the instructions just to get it set up, but they always leave out something vital so that I have to get an expert to look at why it doesn’t set up right. I’ve tried Django+Python, the Android SDK, Matlab (incl. with Simulink), and .NET, becoming most proficient with the last two.
It’s not all gloomy, though. Some successes: completing a useful internal development project at work that involved setting up a GUI to allow for easy database lookup and clean presentation of data. In technical languages, I’ve set up something similar but for signal processing and automated generation of relevant plots. I was able to modify a Firefox extension so that I could deftly browse websites from the keyboard alone with one hand (no, not for “that”). Could only figure out how to do it on my Linux box though.
2) “Infiltrating” an anti-rationalist group by purporting to be “one of them”. I’m doing it to see what makes these people tick: to what extent they really believe this stuff, how well they achieve their goals (vs. failing in a roundabout way), what kind of useful signaling functions the group can serve, etc. (Obviously I can’t go into more detail here, but feel free to PM/email me.)
3) Learning about cryptography (by reading Schneier’s Applied Cryptography), hopefully to assimilate it at the 2+ Level. I find it important because it both has practical application, and bears directly on fundamental questions applicable to many circumstances: under what conditions you can make what inferences about a source or the meaning of something; where problem complexity/difficulty can originate, and how to increase or decrease it; what is randomness, etc.
It also trains you to truly understand and represent a system well enough to know its strong and weakest links. I’ve been impressed at seeing how people with experience in crypto are able to carry its concepts over to a fuzzy, real-world situation and justify counter-intuitive conclusions about why a given practice with actually increase or decrease vulnerability.
4) Experimenting with brain-machine interfaces (got an NIA and the Force trainer, don’t laugh). This is because I have an interest in improving interfaces, and want to see what the potential is for removing a major bottleneck in interacting with a computer, or overcoming difficulties. (One idea is to combine NIA with Dasher.) I think there is great potential, both for brain exercise, and for extending expressive capabilities, though a direct brain link.
I’m not sure Applied Crypto is a brilliant place to start. Practical Cryptography is in many ways a kind of apology for the sorts of mistakes that people make after reading Applied Cryptography. Though they do have a role, people don’t appreciate the extent to which we care a lot less about warm fuzzies than about what you can prove, whether that’s eg a security reduction or resistance to differential and linear cryptanalysis.
Thanks for the pointer!
What are the projects that you want to do that require programming? It sounds like they require a web interface ?
Some do, yes. Generally, anything that I’m going to want to make easily accessible to others for use will probably require it. I have lots of ideas I want to implement, but they mostly involve data-mining and machine learning, which would involve applying a routine to large datasets, and I want to be able to build off of others’ work. Basically, implementations of an inference engine.
(One “toy” program I wrote was a program that generates a Markov model of given body of text—i.e., for a given string length, collect all strings in the text of that length and find what characters are likely to come after instances of that text, and then randomly generate a new text from a given string. I know it’s not a new idea, etc., but that was just to get my feet wet. And I was limited to command line and reading in a local file.)
Also, I want to model control systems from an information-theoretic and thermodynamic perspective: what energy flows and entropy generation happen in order to keep a system stable, and perhaps replicate.
Being able to do more work with the brain signals requires more programming knowledge too.
Those things don’t really sound like they require a web interface, but just sharing of your code. I can easily imagine that building a web interface for a technical program involves several non-trivial steps (especially dealing with libraries), because that’s not that common of a combination. I suggest you stick with learning the programming part first and handle the sharing part second. After all, once you have something that works in one language, it’s not usually too difficult to translate it into a different language if something else seems more appropriate.
I personally think that Python works really well for technical computing (or for non-technical computing for that matter). NumPy (the array package) is much better designed than other packages in other languages. It’s also very easy to share your code (PyPi is the standard place to place your package). So toss the django for now.
I enjoy giving advice on this subject, so feel free to ask lots of questions (if you’re interested in the answers anyway).