Tero Hasu

Software Developer

Biography

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.

Interests

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

Education

  • PhD in Programming Languages, 2017

    University of Bergen

  • MSc (Tech) in Computer Science, 1999

    Helsinki University of Technology

Selected Software

NotDeft

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.

Ractionary

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

Org-Mode iCalendar Import with Conversion to Floating Times

Revised on
Created on

In an earlier blog post I wrote about using Emacs Org mode for calendaring, and exporting iCalendar files with TIMEZONE information (including “VTIMEZONE” definitions, as specified by RFC 5545). Another side of the picture is importing from iCalendar into Org, and in this post I introduce a little Ruby script I recently finished writing for that purpose. I don't think I'm the first person to have written a half-baked script for iCalendar-to-Org import, but the special requirement I had was that I wanted to be able to interpret “DATE WITH UTC TIME” values in a non-standard way, and convert them into “floating” times (without time zone information).

Read more…

Org-Mode iCalendar Export with Explicit Time Zones

Revised on
Created on

For several years I used Symbian phones for calendaring, and the biggest issue for me was the lack of support for time zones: there was neither a way to specify a “floating” time, nor could you select a specific time zone for an appointment. Times would be interpreted in the context of the currently selected system-wide local time zone, and shifted later when changing the time zone setting. Consequently, I avoided ever changing time zones to retain the times as entered.

Read more…

Fetching Web Pages into NotDeft

Written on

I'm increasingly using NotDeft not only for note taking, but also for capturing information from various sources. To some extent it already acts as a lightweight substitute for the likes of Evernote. As explained in the documentation, Org mode's built-in capture protocol can be used to send snippets of text from a page open in a web browser into one's NotDeft note collection. Sometimes, however, we already have a URL of an interesting page in our clipboard, and we would like to fetch the entire page's textual content into NotDeft with a single command.

Read more…

More posts…

Tags

anyxporter api bldl bluetooth build-systems c c++ calendar camera code-generation contacts emacs epresent fun gcce-4 gnupoc harmattan hiit icalendar 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 gate io sockets software source-to-source-translation symbian vcalendar vim xml

Contact

More details…