Getting involved
Would you somehow like to be part of this project? Well, you can. There are plenty of things to do in all sorts of areas, no matter what your skill is, I’m sure there will be some way to fit it in. Whether it is testing, designing tests, writing, doing graphical work, automating tasks, coding or something else, your contribution will be appreciated. Just get in touch with me and I’ll help you get started.
Testing
Applications can always use more testing. There are lots of different areas that can use some scrutiny. Things like the user interface, the different pattern parsers, if all the instructions are behaving as expected, can the imports handle all types of variations, how about big loads and different hardware architectures. Then there are the different AI algorithms. The list can go on and on.
Designing tests
As already mentioned, testing can be done on different levels. Sometimes, tests need to be ‘created’ or can be automated. For instance, the designer itself provides test-cases for checking the validity of the pattern definitions. Sikuli is also an interesting tool which can be used to automate UI testing.
I must admit, at the time of writing, the project is lacking in the area of automated testing. There are a couple of test-cases, but not that many. There are also a couple of sikuli scripts, but these are currently used to automated certain repetitive tasks (like updating all the demo projects).
Documentation
Writing skills are always very useful. There is of course always the story of documentation, which can never be complete. There already is quite a lot of it, but much of the writings are scattered around different websites, help files and source code. So a compilation in some easy to understand order can always be useful. And a second explanation from a different point of view can also be a helpful thing to have.
Translation
The application is currently only in English. If you are native to another language, you could help in the translation work. This can be done through csv files (which can be imported into excel or something similar), so you don’t need to touch any code.
Graphical work
I can’t draw strait lines if my life depended on it. All the graphical work you see in the application either comes from default icon sets or work that other people did for me. So if you have a bit of an artist’s streak in you, your help would be appreciated.
Coding
Are you a coder? Is C# an open book for you or do you know WPF like the back of your hand, then perhaps you would like to get involved with the core application itself. I’ve already created a small list of open tasks that could reasonably easy be done by new-comers. I tried to add something from different categories: GUI stuff (WPF), engine, linux related, data related,…
AI related
There is more then enough room to participate directly in the field of AI as well, whether you are a neuroscientist or not. Perhaps you would like to contribute some of your topics or thesaurus data that you created (it doesn’t have to be all in English, in fact, it would be kind of cool to have similar topics in multiple languages, or topics that perform translations perhaps). And then there is also plenty of older AIML stuff you could play with as well…
Or maybe you have created a cool random forest, decision tree, n-gram set or other kind of machine learning data-set/prediction model that you would like to share. And perhaps you designed your own AI algorithms that you would like to contribute to the community, everything is possible.
In any case, if you think this is something for you, feel free to contact me and I’ll help you set things up and perhaps give some more explanation, you know, help you get started.
read more
Technical details
- Translating to other languages Translating the application to other languages are basically 2 separate tasks: translating the interface and making certain that the bot knows everything it needs to know about the language (which type of verb conjugations there are & it also needs to...
- Architectural overview of NND In this article I’d like to explain a little more about the structure of the neural network project as it relates to source code. Basically, it’s a description of the different libraries, what they are for, how everything relates to each other and some cr...
- Objects and assets: abstract and concrete Today, I’d like to write a little bit about some of the internal data structures used by aici. More specifically, how it stores abstract and concrete knowledge or in other words, the structures used to make a difference between general understanding and c...
- NNL language specification The EBNF specification for NNL
- Instruction list Contains all the instructions currently available in NNL. (generated by the designer application)
- Path bindings Path bindings are used in NNL to let the compiler know how it needs to handle paths that start with a ^, $, #, ~ or @. The compiler uses this information to convert these paths that can be defined in the code sections, output patterns and conditionals int...