-Just Write Math
Domain Name: patrickstarcandomath.com (propagating)
The little funny logic behind our domain name "patrickstarcandomath" is, even the dumbest cartoon character Patrick Star can easily do math using our "EasyTeX".
On one hand we have Microsoft word where we go through in-numerous menu to write math/scientific formulas and on the other hand we have latex which is high quality but has to be compiled. LaTeX, a free software is a high-quality typesetting system mainly used for the production of technical and scientific documentation. It's not easy and user-friendly to work with for note taking and causalities. It has major drawbacks. One of it is "Visual noise". It uses markup language, spending more focus on syntax to avoid errors rather than being more precise on what we are communicating /take notes. To overcome all the above, we have come with a solution "EasyTeX". As the name says, it makes taking notes in math easy.
How we built it
We built EasyTeX using Elm; a domain-specific purely functional programming language for declaratively creating web-based graphical user interfaces. Elm places emphasis on simplicity, performance, and refactorability by relying heavily on an advanced typed system, strongly influenced by the ML languages, especially Haskell. It takes the functional nature of React several steps further, and bolsters it with theoretical underpinnings in type theory and lambda calculus. We used css for styling, a mininum amount of html to set up the document, and github for version control.
Challenges we ran into
Coming into the hackital 2017, none of us ever used Elm before, and only one of us had every done functional programming. We met each other here for the first time, but made good progress initially. However difficult the theory of functional programming is, it is mind-bending in practice. Being a purely function programming language, the stateful nature of UI developement requires a novel approach. So, Elm uses a Virtual DOM (an abstract tree of nodes and children) to efficiently transform declarative code into stateful effects. Elm is a very young language, and still lacks stability in some areas. We but up against this in our effort to use a contenteditable div as our editor container. Elm has difficulty synchronizing with the contents of the div, which may change while Elm is computing pure functions, forcing decisions to be made about which content to keep We tried to solve this issue using moveable invisible input fields, library modifications to perform low level dom manipulation, and other hacky solutions.
However, a mentor, Garret Meier, stopped by and gave us the idea to imitate the functionality of a contenteditable div explicitly. We built a custom, blinking, false cursor, and used an invisible div to capture input. Separating the stateful input div from the declarative display div allowed elm to run smoothly, and call the Katex library without issue.
Accomplishments that we're proud of
We learned a new language the follows a completely new paradigm. We have resolved major drawback found in technical/scientific documentation software. We don't have to be precis
What we learned
We learnt Elm programming language, functional programming, better programming practices, coding, styling, better understanding of user experience.
What's next for EasyTeX
We are going to implement local storage API. If time would have permitted this would have been shown in the hackital2017. But would definitely implement it in future. Also will try to make user-experience better.