Hi Jarmo,

1. I want to tangle to the default filename (derived from name of org
   file and programming language). However, the :tangle header argument
   only takes either "yes" or "filename." If the value is "yes", then
   the filename is deduced automatically. How can I specify a tangling
   directory and still have the default filename?

   There was a related question on stack exchange, but it did not use
   the default filename:
   https://emacs.stackexchange.com/questions/41806/org-babel-set-root-dir-for-tangled-files

You can specify a full path as the value of :tangle, but I don't know of a way to specify only the directory.

As a workaround, you can also use emacs-lisp code as the value for :tangle, so you could do something like this:

 :tangle (concat "/some/dir/" (file-name-base (file-name-sans-extension (buffer-file-name))) ".ext")

3. Is it possible to tangle automatically on (every) export? I always
   export, but I might forget to tangle, in which case export and tangle
   would be out of sync.

I use the following hook to tangle on every save. I find it indispensable :)

  (add-hook 'org-mode-hook (lambda () (add-hook 'after-save-hook 'org-babel-tangle
                                   'run-at-end 'only-in-org-mode)))

Also, check out my free book "Literate Config", where I discuss some more tips about Literate Programming: https://leanpub.com/lit-config/read
 
Hope this helps,
--Diego