Vey.ie

Eoin Davey.
- MSc. Mathematics @ Universiteit van Amsterdam.
- Former SRE @ Google.
- Éireannach.

HackMIT 2019

Last weekend myself and 2 friends flew out to Boston to compete in HackMIT 2019, I had previously won us the entry by placing in the top 50 of the entry competition.

HackMIT is an annual student run hackathon in MIT, Cambridge, Massachusetts. It’s a highly attended and highly competitive 24 hour event, this year the theme was Hack for a reason. There was a heavy emphasis on creating projects for social good, with tracks including assistive tech, health tech, education and social good.

Arriving

After a long day of travel we all met up at South Station in downtown Boston, We wandered around the downtown area and visited Harvard before we ventured in to the MIT campus.

South Station

First thing on our schedule was to check in at the student center, we picked up our lanyards and feasted on some free subway. MIT provided accommodation for the night, we were each matched with students and given an airbed to sleep on. We needed to get a good sleep because breakfast was at 8am, and then the 24 hour drag would begin.

Competition Time

At breakfast the next morning we picked up our bag of free stuff, including a hoodie, hat, bottle and some other accoutrement.

The opening ceremony consisted of some keynote speakers, including Guy Steele, creator of scheme and a co-author of the Java Language Specification, and a performance from a student a cappella group called the Logarythms.

Guy Steele

At 11:15am we were moved to the contest hall and the hackathon began, and would not end until 11:15am the next day.

Contest Hall

The first hour or two however is taken over by a frenzy of gathering up as much free stuff from the corporate sponsors present in the hall as possible. T-shirts, socks, stickers, stress balls, mobile chargers etc. were all present in vast amounts. All the major tech firms were there, Google, Facebook, Amazon, Facebook etc.

Here’s some of my own haul from the first hour or so.

Haul

When the chaos had receded, work began on the projects. My team had already come up with our project idea prior to the event so we began work immediately.

Our Project

Here is the description of our project we provided for the judges.

Our project provides an environment for people with visual impairments to learn core computer science concepts.

Our project contains a fully featured online editor which uses text to speech technologies to make text editing accessible by speaking the code the user is interacting with back to them in an intuitive way.

The editor allows users to program in a novel, innovative language designed specifically to provide an excellent learning experience, with no setup required. With this language users can use a fun, intuitive and beginner-friendly API to create all manner of sounds and music. This language brings the instant feedback used in visual beginner languages, such as Scratch, to the domain of audio.

Users can write code in their browser, and our custom interpreter and audio engine will compile and play whatever sounds and music their hearts desire.

The project consisted of three main parts

  1. A front-end editor
  2. A language parser/interpreter
  3. A music/audio generation engine

I worked on the language parser/interpreter and Ian and Dara worked on the audio engine and the front-end editor. Each of these components kept the four of us busy throughout the whole 24 hours.

The Language

At the center of our project was a new language we wrote for the user to write programs in. It’s a high level language for creating music and sound. This brings the instant feedback approach of languages like scratch to the visually impaired.

The language was designed to sound nice and be understandable when read out loud by the text to speech engine. To do this the syntax relied very little on special characters, and read more like natural language.

Here is some example syntax, this code creates a simple four beat drum melody and then repeats it four times.

melody main start
    play (repeat drums 4)
end

melody drums start
    play Snare
    play Snare
    play Clap
    wait 1
end

Which sounds like

The language is built around user defined melodies. Melodies can be made from built in melodies like Snare and Clap, and more complex melodies like Piano. Melodies can take arguments, which can in themselves be other melodies. For example here is code that plays a piano C4 key every second beat.

melody main start
    play (everyTwo (Piano C4))
end

melody everyTwo x start
    for i from 1 to 10
        if i % 2 == 0 then
            play x
        else
            wait 1
        end
    end
end

Which sounds like

You can very easily create more complex songs from simple components

Towards the end

At the half way point, numbers had dwindled severely.

Half Way

Also, a cold I had picked up on the plane had worsened, and I was deep into some off shelf self medication.

Halls

Numbers began to pick up again as dawn approached, the room was permeated with people clambering to finish up the final pieces, ourselves included. It was only at 23 and half hours that we finally pieced together all the parts into one working project. We quickly fired up some demo programs showing off some features and waited for the judging to begin.

The judges seemed impressed with our project, and gave us some very high praise. Unfortunately for us, not impressed enough for us to win however.

Recovery

32 hours after we began we found struggled back to our AirBnB for the night, we threw on some TV, ordered and devoured some Chinese food, and then I promptly passed out on the couch for 13 hours.

The next day we took a last opportunity to explore more of Boston before catching our red-eye flight abháile.

Overall it was a great experience that I wish I was eligible to repeat next year, but unfortunately the event is limited to undergrads and I will be (hopefully) graduating this year.

You can see the code for the project here, and our project submission here. I’m hoping to host the project as-is somewhere, I will add a link here if I do.