Skip to content
0:00 / 0:00

#skedge.me#cufp#grails

CUFP 2013: Ryan Trinkle: Enterprise Appointment Scheduling with Haskell

CUFP 2013

161 subscribers • 3 videos on Hallway

YouTube
  • Recommended by 2 people: 1 on Lobsters and 1 in engineering communities.
  • Presented by Ryan Trinkle
  • Linked in the descriptionSlides on cufp.org
  • May be out of date. Uploaded 12 years ago, in an area where tools change fast.

Intermediate. Assumes working knowledge.

4K views12 years ago2 recommendations

Programming languagesWeb developmentHaskellSoftware architectureInside tech companies

Ryan Trinkle discusses migrating skedge.me's backend architecture from Grails to Haskell to handle enterprise-scale scheduling.

skedge.me is an online scheduling platform that allows businesses to completely automate the process of making appointments, such as customer visits, job interviews, and tutoring sessions. Our clients include McDonald's, Sephora, the FBI, and Stanford University. Serving such a wide range of clients requires flexibility to implement business logic for a wide range of existing business processes, scalability to handle large transaction volumes, and accuracy so that our clients can be confident that when we make a scheduling commitment on their behalf, they'll be able to keep it. As skedge.me grew from the small business market into the enterprise space, our clients' needs began to outstrip the capabilities of our Grails-based back-end architecture. Eventually, we made the decision to replace it, and we went with Haskell. Using Haskell has presented some challenges. We've run into our fair share of issues with the difficult learning curve and occasional sparseness of the Haskell toolchain, but the biggest challenge for us has been the impedance mismatch between the relational database paradigm and the functional paradigm. In contrast to object-relational mapping, algebraic-datatype-relational mapping is relatively uncharted territory. Although some ORM-style libraries, such as Persistent, have been written for Haskell, their support for more complex functional datastructures, such as sum types, finite maps, and deeply nested datastructures, leaves much to be desired. This has forced us to make difficult trade-offs between structuring our data in a way that best suits the application layer and structuring it for the database layer. On the whole, however, Haskell has made our product - and our lives as developers - much better. Haskell's powerful type system and GHC's powerful optimizer has allowed us to make major architectural decisions that would simply be impossible in practically any imperative language. We use a stack of monad transformers to create application layers with increasing levels of safety – transaction, data integrity, security, and business logic - which allow us to separate these concerns and give us much greater confidence that layer invariants are not violated. Our security policies are implemented using multiparameter type classes, which allow us to implement detailed per-client security policies, omitting coverage of components a client doesn't use, while ensuring total coverage and consistency of the components the client does use. And, we've built our core calendaring code around a powerful library of custom immutable datastructures that allow us to easily parallelize large jobs while keeping code small, legible, and reusable. These advantages have enabled us to deliver a product that is more customizable, higher performance, and better quality than its predecessor, with only a fraction of the development effort. I've been working with Haskell for 8 years personally and 4 years professionally, ever since I switched from C

Why it's here

2 people recommend this

Moments people linked to

u/gallaisin r/haskell • Recommends

CUFP 2013: Ryan Trinkle: Enterprise Appointment Scheduling with Haskell

pushcxon Lobsters • Recommends

Enterprise Appointment Scheduling with Haskell

u/mightybytein r/haskell • Mentions

On “72 would-be commercial Haskell users: what Haskell success stories we need to see”

It doesn't seemed to get cited as much as it should, but Ryan Trinkle's CUFP presentation in 2013 is a great success story. The executive summary is that they rewrote a 43K line Groovy app in Haskell. It resulted in an 80% code reduction, ~64x performance improvement, and completely eliminated a number of major bugs with the Groovy system. Here's a link directly to the results portion of the talk: link to this video

u/mightybytein r/haskell • Mentions

On “Speed of writing programs in Haskell vs Language X and time needed to learn Haskell”

…amming. But hey, learning to think in new ways is good for you! The question of how long it takes to be useful is much less clear. I've seen a very large variation depending on the person. In my mind, it doesn't matter though. If the above mentioned advantages are really true, then it's worth spending whatever time is necessary to learn. 1 link to this video…
18View on Reddit

u/mightybytein r/haskell • Mentions

On “What exactly do companies use Haskell for?”

Commercial Haskell runs the gamut from web frontends to web backends to data analysis tools...many of the same things a company might use C# or Java for. Here's a talk about a commercial user of Haskell: link to this video

u/Mentioned_Videosin r/haskell • Mentions

On “What exactly do companies use Haskell for?”

Videos in this thread: Watch Playlist ▶ VIDEO|COMMENT -|- CUFP 2013: Ryan Trinkle: Enterprise Appointment Scheduling with Haskell|7 - Commercial Haskell runs the gamut from web frontends to web backends to data analysis tools...many of the same things a company might use C# or Java for. Here's a talk about a commercial user of Haskell: Haskell is Not For Production and Other Tales|7 - A talk about what Facebook uses Haskell for, as well as why: Dániel Vigovszky: Haskell at Prezi|1 - Haskell at Prezi presentation from Budapest Haskell Hackathon 2016. It explains what Prezi does with Haskell. :) I'm a bot working hard to help Redditors find related videos to watch. ***…

u/mightybytein r/haskell • Mentions

On “Has learning Haskell paid off for you?”

Absolutely! I've been using Haskell full-time professionally for the last 6 years. It is fantastic for building robust production systems. In the few places I've needed to work with non-Haskell code (usually Javascript) I frequently encounter bugs that I'm almost positive would have never happened with Haskell. I talked about one of them here, and I'm not the only one who has seen this. Dynamic languages are always a maintenance nightmare and dramatically increase the QA burden. And even if you don't find a job doing Haskell, the people that you meet in the Haskell community are fantastically mind expanding. IMO this factor by itself makes Haskell worth it.
6View on Reddit

u/qualiaqqin r/haskell • Mentions

On ““When Is Haskell More Useful Than R Or Python In Data Science?””

I went looking for the skedge.me thing because I was interested and here is the link to the time where he tells the story: link to this video
3View on Reddit