Clojure Gazette 136: Typed Clojure Core Annotations

Typed Clojure Core Annotations


Issue 136 - August 10, 2015


This week I had the great pleasure of interviewing Aravind K N. He's working on a Google Summer of Code project to type annotate existing Clojure namespaces.

Rock on!

PS Want to be more attractive? Subscribe !
PPS Want to advertise to smart, talented, attractive Clojure devs ?


Sponsor: Marcus Blankenship

Frustrated with balancing coding and managing?

You're a good programmer. You solve hard problems all the time. So why is it so hard to manage a team? Wouldn't it be nice if someone with experience guided you to become the leader you want to be? Marcus Blankenship has been through it. He was a programmer; now he manages multi-million dollar projects. And he has helped many others through the process. And he's into Clojure! Please support the Gazette by signing up for his mailing list . Signing up iss a no-brainer: it's free, honest (sometimes brutally so), practical advice to make you as good a manager as you are a programmer.

LispCast: How did you get into Clojure?

Aravind K N: How I got into Clojure is pure luck. Early 2014, I was doing a course on functional programming language in university. It was during these days that I got to know about Google Summer of Code through the FOSS club at college. I decided to check it out and visited its IRC channel. There I met many down to earth core developers. They explained to me in great detail about the ideologies behind the organization. I was a bit apprehensive since I was only familiar with C and C++, but they were extremely supportive. A few more sessions on IRC and there was no going back.

LC: Can you describe your project?

AKN: My project is Typed Clojure Core Annotations. It deals with annotating the various namespaces like clojure.string, clojure.test, etc. The project involves adding the expected input and output for the various functions in these namespaces and unit-testing them. It's tested locally using leiningen and then using maven.

It's a pretty simple project for someone starting off with Clojure but at the same time, we are able to learn the language and services it provides in great depth.

LC: What are the main challenges with your project?

AKN: One of the main challenges I faced during the initial phasing was with the testing technique. Initially I was testing using maven which took around 5 mins to finish. This caused a lot of wastage of time. It was later then my mentor suggested I test only the required files, instead of the whole lot. Yet another problem I faced was testing a few complex functions like a function that opens a browser and takes you to the url specified by it.Here, I learned the importance of using thunks and how much time was saved by using it. Other than that, the project period coincided with the recruitment drive at our university and it was a little hard to manage both. But, my mentors were understood my situation, and that situation was solved.

LC: What's the status of the project?

AKN: It's nearly in it's final phase. Just a few more namespaces to finish off. As I had mentioned, the recruitment drive at university is slowing down the pace.

LC: Where can people follow its progress? Can they contribute?

AKN: The project can be followed at my Github profile . I don't think Google would appreciate someone else doing my summer of code project ;) But there are many more namespaces in which they can work.

LC: Where can people follow you online?


LC: If you were going to be stranded on a desert island with one Clojure library, which library would it be?

AKN: This has to be the best question, hands down. And my answer clojure.test namespace. All the testings are possible just because of this namespace, other than that, this was the namespace that I took the maximum time to work on. My mentors must have lost their sense telling me what to do. ;) , so there is that sentimental attachement too. :)

LC: Thanks for a great interview!