fbpx
Image Image Image Image Image Image Image Image Image

Haskell Internship

Paid. Remote acceptable.

Heads up

The content on this page is out-of-date. We do have a Haskell internship and a Haskell bounty program, but they work very differently than what is described on this page.

Background

We’ve written code in Rails and AngularJS. Shitloads of it. And we’re really proud of what we’ve been able to build with it.

But as our code-base grows, we find ourselves looking for something better. Something that will allow us to refactor our core data models fearlessly. Something that doesn’t break when a new developer makes his/her first change. Something that doesn’t require us to maintain an 80%+ test coverage. Something that doesn’t result in “oh, that’s just a bug in the JS layer, but the API is correct”

We believe, that “something” could be Haskell.

The Project (It’s Open Source!)

Before we dive into Haskell head-first, we’re planning to first build a proof-of-concept (POC) webapp. We believe that a lot of questions need to be answered about building a large-scale webapp in Haskell. Answers to these questions aren’t readily available on the Internet. Questions like:

  • Which DB library to use? Persistent has the best documentation and seems to be easiest to use, but doesn’t deal with JOINs properly. Opaleye doesn’t have support for DB transactions natively. Neither deals with associations and eager-loading (like, in Rails).
  • Web framework? Servant seems to provide the most type-safety, but what about the auth story? How well does it work with HTML templates? Are Yesod’s Shakespearean templates easy to use for a large codebase (you can’t debug them easily)?
  • How many guarantees related to authentication & authorization can we extract statically (during compile-time)?
  • How mature is reflex-dom + GHCJS for UI development? What about Elm & Purescript? How do we ensure that the UI and the backend never go out of sync? Can we generate React/Angular data-models from Haskell code?
  • And many more…

We believe that the entire community stands to benefit if these answers can be documented properly in one place. Which is why, all of our code will be open-source. We would encourage people to write blog posts about sub-problems and how they approached the solution.

View the Github repo →

The Internship

Location: Remote


This is a remote internship. We are also more than happy to accept Indian candidates who would like to work out of our villa-office in Goa. Unfortunately, we will not be able to help international candidates relocate for this opportunity.

Our office →

Compensation: Adequate

icon5

This is a paid internship. The compensation will depend on how many hours you’re willing to devote and your skill level. We’re also open to offering bounties for working on specific parts of the project.

Duration: Flexible

icon4

The duration of the internship is flexible. If you already have experience with web-dev in Haskell, then even 1 month should be sufficient to work on a particular sub-problem. However, if you plan to first learn Haskell and then solve the problem at hand, something in the range of 3-6 months would be preferable.

Who will be a good fit

▸ Experience with functional languages of similar nature (if not Haskell directly) – ML, OCaml, Scala, etc.
▸ Experience with web-dev in other languages (if not Haskell directly).
▸ Good communication skills in English. At least written, if not verbal.

Apply now →