@jaukia, I've been thinking about this problem a little, today, and I have an idea. The blocks in Blockly all have a default textual representation. You could build a blockly plugin that allows the user to type, but everything is auto-completed to the text representation of the blocks that are currently available, so you can't type anything that doesn't generate blocks. new line creates a new block in the current stack, increasing and decreasing the indent moves the cursor in and out of stacks and fields. You could also allow the blocks to define their own alternative name for use in the auto-complete field, so you could type "rule", and you would auto-complete to "when we know _ we also know ___". Whatever you have currently entered shows up on a scratch-pad. Hit enter twice in a row, and whatever you currently have (including spaces you haven't filled in the text version) gets dropped onto the workspace for you. Targetting is hard, so to start I would say put the first one in the middle of the workspace, and if the user continues to type without scrolling, put subsequent entries below that one. I think that could work, and I think it could be written in such a way that it would work for anyone using Blockly, not just for a particular block set, as long as the blocks all have text on them. But it might be a good idea to add details to the block definitions for how the text version should read, since internal inputs and fields can be named pretty arcanely. I think it would be a really smart way to combat the "visual programming is not for experts" nonsense.