I was inspired by the use of command line utilities such as grep, vim, and git. I admire their ability to be easily changed into each other and thought it would be great to have something similar for Ion. I was also annoyed with current Ion apps not showing the location of activities you are signed up for.

What it does

It allows you to change signups, view signups, view emergency messages, and view activity locations.

How I built it

Isotope is built in Haskell. Command line arguments are parsed using optparse-applicative which allows for helpful error messages and detailed help commands. Requests are made using wreq to Ion's REST API. Requests are made concurrently at times to increase performance.

Challenges I ran into

Implement concurrency was a challenge at first, but Haskell's concurrency is very easy to use once you figure it out. Learning Haskell was also difficult as a beginner but it was a great experience.

Accomplishments that I'm proud of

Concurrent REST requests.

What I learned

Haskell. Concurrency in Haskell. Parsing command line arguments. More about REST APIs.

What's next for Isotope

I plan on adding some optional arguments to some of the commands such as date. I also currently do credentials via compiled in fields and would like to swap that to a config file.

Built With

  • async
  • cli
  • command-line
  • concurrency
  • functional
  • git
  • github
  • haskell
  • rest
Share this project: