Tero Hasu

Software Developer


I'm a software creator based in Northern Europe. I like to program not only applications, but also purpose-built extensions for programming languages and editors, making Racket and Emacs my tools of choice. I enjoy exploring new programming language innovations, and until recently, I was on a sabbatical to study programming language theory at the Bergen Language Design Laboratory.


  • Programming Languages
  • Domain-Specific Languages
  • Syntactic Abstraction
  • Code Portability


  • PhD in Programming Languages, 2017

    University of Bergen

  • MSc (Tech) in Computer Science, 1999

    Helsinki University of Technology

Selected Software


A plain text note manager and local search engine for Emacs, with a Deft derived interface, and Xapian based full-text search. Somewhat specialized for notes in the Org format. I rely on this application to keep curated and relevant knowledge at my fingertips.


A generator for static Racket vocabulary dictionaries, to be used for example for Emacs-based symbol completion with Company or Auto-Complete. It is customary in Scheme and Racket to use rather long and specific top-level identifier names, making quick completion quite useful.

More software…

Selected Publications

Tero Hasu and Magne Haveraaen. Errors as data values. In Proceedings of the Norwegian Informatics Conference (NIK), Bergen, Norway, November 2016. [pdf] [abstract]

Tero Hasu and Matthew Flatt. Source-to-source compilation via submodules. In Proceedings of the 9th European Lisp Symposium (ELS 2016), Kraków, Poland, May 2016. [pdf] [abstract]

More publications…

Recent Posts

Transient Directories in NotDeft

Revised on
Created on

My NotDeft note manager has an optional notdeft-path feature to better support transient directories of notes. Also in the standard configuration, the notdeft-directories list may contain directories that do not have to always exist, as any non-existing directories are simply ignored; if and when they appear, they can be included in subsequent searches. Note, however, that the notdeft-directories variable is normally set only once, and if the initializer expression includes wildcards, the variable value may not contain directories that get mounted or copied over later.

Read more…

Org-Mode Export of Scheme-less Absolute Path Links

Written on

I sometimes turn Org format notes into blog posts (as in the case of this one), and when doing so it's good to be mindful of how Org links get translated on export. In some cases we want the output link to have the absolute path of the resource (for the site, not the file system), but no URL scheme or authority part. Emacs Org mode (as of version 9) interprets scheme-less links with an absolute path as file: links of the same path.

Read more…

More posts…


anyxporter api bldl bluetooth build-systems c c++ camera code-generation contacts emacs epresent fun gcce-4 gnupoc harmattan hiit icons ide installation keyword-arguments koog lisp lua macro-systems notdeft org pim platsec presentations programming-languages prototyping publications python qt racket ractionary rascal research ruby s60 scheme sdk sms-exporter sockets software source-to-source-translation symbian vcalendar vim xml


More details…