addressalign-toparrow-leftarrow-rightbackbellblockcalendarcameraccwcheckchevron-downchevron-leftchevron-rightchevron-small-downchevron-small-leftchevron-small-rightchevron-small-upchevron-upcircle-with-checkcircle-with-crosscircle-with-pluscontroller-playcrossdots-three-verticaleditemptyheartexporteye-with-lineeyefacebookfolderfullheartglobegmailgooglegroupshelp-with-circleimageimagesinstagramFill 1light-bulblinklocation-pinm-swarmSearchmailmessagesminusmoremuplabelShape 3 + Rectangle 1ShapeoutlookpersonJoin Group on CardStartprice-ribbonprintShapeShapeShapeShapeImported LayersImported LayersImported Layersshieldstartickettrashtriangle-downtriangle-uptwitteruserwarningyahoo

Tree Derivations, and Dynamic, Interactive Web Applications that Scale Forever

We have two talks this month, highlighted by a talk from Gershom Bazerman, who organizes NY-Haskell.

7:15-7:30: Bob Grudem - Tree Derivations

I will derive a Haskell program to draw a tree modeled in 3D starting from a stick figure by way of a series of transformations that demonstrate what I like about Haskell. Time permitting, I can describe another derivation of the stick figure to an L-system interpreter. The programs are short and we'll look at every line.

7:30-8:45: Gershom Bazerman - Dynamic, Interactive Web Applications that Scale Forever and Upgrade Seamlessly

The hardest part of writing interactive web applications is keeping track of state, making sure the client and server agree on the state, and deciding where to store what bits of state. On top of this, the moment a server tracks the a single bit of state, then one has to worry about making sure users know _what_ server to hit, get routed to the correct server, and soforth. Furthermore, the moment we want to build genuinely dynamic applications with complex interactive features, this problem only gets worse. As an extreme example, the "continuation capturing" approach popularized by Seaside, Oscigen, and Weblocks is well known to be pleasant to code with, but face extreme problems with scaling out.

This talk presents the Panels component of JMacro-RPC [1], which solves this problem entirely. It will discuss how we can create fully interactive, ajax-based web-applications as an embedded DSL in Haskell with a declarative, compositional syntax and absolutely _no_ server-side state, nor any special need for client-side session or cookies. Web applications written with this approach scale indefinitely, and this approach _also_ provides the foundations for a seamless hot-upgrade path. State is hard. This talk will show why a language like Haskell, where we can treat it as first-class is essential in taming it.



Pizzas, salad and soda


If you can, please plan on arriving between 6:45pm and 7pm, but there will be someone in the lobby to greet stragglers.


If you'd like to stick around, a number of us tend to head down to the CBC or another pub afterwards to socialize. If you would like to give a talk or if you have any questions or concerns, please feel free to follow up here or email one of the organizers.

Join or login to comment.

  • Greg H.

    Bob's talk, up on youtube, finally! Sorry for the delay - had to do some work to make the slides legible.

    1 · July 21, 2014

  • Praveen

    Hi, any chance a video of the presentations will be available afterwards? Thanks.

    June 18, 2014

    • Edward K.

      I was able to record Gershom's talk, but I unfortunately arrived to late to capture Bob's.

      July 5, 2014

    • Praveen

      Thanks for recording the video. :-)

      July 6, 2014

  • Bob G.

    Cabal Hell—The Details: I had constrained the version of diagrams to 1.1. This was fine until I added the LSystems*.hs files (not part of the presentation, but looking forward). Those depend also on aeson. The conflict arose because diagrams 1.1 constrained aeson to version[masked] which didn't build. Aeson was fixed in[masked] (and has since moved on), but cabal picks versions of packages (not necessarily the latest) such that *all* dependencies are satisfied. I had forgotten that I had cloned and patched it, not something I would have wanted to discuss in an introductory talk.

    June 25, 2014

  • Bob G.

    It was fun giving that talk--the preparation and the performance. The title was emphatically not "Introduction to Cabal Hell", but I just discovered that that's the fate of anyone following my instructions at I have commented out the offending parts in the .cabal file and the dependencies can now be installed. I apologize for any frustration that has caused.

    The lesson is that the cabal sandbox does not protect you from version conflicts, it just gives you more control.

    June 25, 2014

  • Joseph A.

    Sorry I couldn't make it out to the bar afterward. Interesting talks and excited to meet more of the community.

    June 18, 2014

  • JT P.

    Isn't the PHP Hack presentation happening the same night?

    June 6, 2014

    • JT P.

      Thanks for the corrections Gershom.

      June 7, 2014

    • JT P.

      Josh, thanks for the videos. That will help.

      June 7, 2014

  • Mihai M.

    I'm out of state this month. Will look on the slides after the talks.

    June 6, 2014

55 went

People in this
Meetup are also in:

Sign up

Meetup members, Log in

By clicking "Sign up" or "Sign up using Facebook", you confirm that you accept our Terms of Service & Privacy Policy