Ifaz Kabir

Ohai there fellow entity. This is my personal webpage. Beyond this page you may also find a short bio of me at Uwaterloo Programming Languages Group.

Research Interests

The overall research area that I'm (currently) interested in is Programming Languages (PL). There is a wide range of things in this area I find interesting, most of them centering around type systems.

I currently work on Object-Oriented languages. Particularly, I work with the DOT calculus, a formal model of the Scala Programming Language. DOT stands for Depenent Object Types and research with DOT explores the benefits of having objects with type members. Much of my current work involves extending DOT with features from Scala and proving them safe.

I really like Hindley-Milner-Damas style type inference systems. I think it is an elegant design. One of favourite (least-hated?) programming language is OCaml, which uses a Hindley-Milner type system. Extending these systems are surprisingly difficult, but I think this also makes this an interesting problem!

Another area that I am interested in is extending type systems for interacting with external services. In particular I am interested in making type systems easier to use with Databases and Filesystems. This stems from an overall annoyance with how awkward it is to interact with external services in typed languages. For example, when we query a database although the columns are completely typed, database libraries will provide you with either a discriminated union or a C-style union for the columns. I do not have plans to work on this area in the near future but do see this as a possibility for the far future!

Non-Research Interests

I have some amount of background in logic, and I sometimes think about type theory (as opposed to type systems). Some of this is related to Coq, a tool that I currently use on a regular basis and I have a desire to understand this system in more detail than I currently do.

I use Linux as my daily driver and I have some amount of weird love for it. Often my love of Linux means I am more willing to put up with the pains of using it!

I also have some background in eating and hanging out with friends! I'm vegetarian with cheat days: usually for special occations or when I want to experience a new kind of food!

Programming Language preferences and other thoughts

My favourite programming language paradigms are: typed, strictly evaluating, impure, and functional. Examples of languages that satisfy all of these paradigms include Scala and OCaml. When I don't feel like using a type checker I also use Lisp - Racket if I can, Elisp otherwise. One weird thing I care about while programming: tail calls!


I like camels. In fact I tried out OCaml because it had Caml in the name! Here are a group of baby camels. May their ever smiling faces bring you happiness and joy!

Camels in Dubai 2