Skip to content

Instantly share code, notes, and snippets.

@SethTisue
Last active August 29, 2015 14:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SethTisue/9f673d170cca1612424d to your computer and use it in GitHub Desktop.
Save SethTisue/9f673d170cca1612424d to your computer and use it in GitHub Desktop.

Scalawags #23: Lifting Antonio Salazar Cardozo

YouTube link: https://www.youtube.com/watch?v=-LG5qzGUVUE

Intro (0:00)

  • theme music by Dick Wall, human beatbox (don't quit your day job, Dick)
  • welcome Heather Miller, now an official Scalawag
  • we're aiming to do episodes more often, with a rotating crew of whoever's available
  • Daniel is busy tonight attempting to shrink his cat

Antonio, our guest (1:25)

  • Antonio Salazar Cardozo, Lift committer
  • Lift really helped Scala take off in the early days
  • Antonio came to Scala and Lift from Rails
    • "welcome, now forget everything you've learned from other frameworks"

What is Lift all about? (4:00)

  • Lift in three bullets:
    • secure by default
    • real-time stuff is freakishly easy (with actors)
    • leverages Scala's type system! (data, not strings)
  • the Lift way: site map
  • the Lift way: templates
  • functional transformations, ultimately resulting in a web page
    • CSS-y syntax for transforming things
  • Scala's XML support does a lot of the work

Scala and XML (13:30)

  • "99% of the time... writing XML into your Scala in Lift is a code smell"
  • Node, NodeSeq, SeqNode: triangle of doom, or circle of doom?
    • implicits defer the pain
  • Scala's perpetually unfixed XML support: do we even care anymore?
    • tl;dr answer: it's actually OK as long as you're using it just for HTML, not for general XML. "HTML is easier"
  • Foghorn Leghorn? what?
  • Daniel is ragged on for Anti-XML not having saved us
  • wizened old Josh reminisces about a version of Lift so old Antonio has no idea what Josh is even talking about.

Forms and sessions (24:40)

  • submit buttons on forms have associated continuation functions
    • Josh: "that was the real mind-bender"
  • resistance to replay attacks via GUIDs (globally unique identifiers)
  • stateful server; state is retained in-memory on the server
  • does that making scaling and load balancing hard?
    • you need sticky sessions, but relax, it's fine

Comet and WebSockets (32:30)

  • in pre-WebSockets days it was a big deal that Lift had great Comet support; does Lift support WebSockets now instead?
  • answer: no, but it's fine, Comet works great, the overhead WebSockets saves you is small, and WebSockets have issues, e.g. w/ firewalls
  • Josh gives Dick free lessons on SSE (Server-Sent Events)
    • SSE and SBT are the same thing because they both use blank lines to separate things
  • Daniel's cat's fur turned black and it lives with Antonio now
    • and contributes to Lift, but its PRs are never accepted

Web containers (41:40)

  • Lift runs inside a web container (usually), other frameworks these days don't?
  • Josh not only remembers JBoss, but knows what it was renamed to to make it sound cooler
  • Lift typically runs on Jetty
    • StackMob has it running on Netty
  • Lift is conservative and stable. people run milestones in production.
    • "we wait out" new technologies

Open source development process (48:30)

  • Lift work happens in committers' spare time
  • David Pollak (Lift creator and ex-BDFL) is also a lawyer, concerned with making Lift legally bulletproof
    • as a result there are only invited committers, not drive-by contributors
    • regardless, development process is very open and public
  • currently most active committers: Antonio, Diego Medina, Matt Farmer

Learning Lift (56:00)

  • Antonio aspires to be the Heather of Lift
  • there are several books, all "slightly outdated"
  • Simply Lift is "probably the closest"
  • Antonio is writing a new tutorial
  • in future episodes, Josh will be fined $50 every time he brings up LOLcode

Lift 3.0 (59:55)

  • what breaking changes are coming?
  • form binding is being reworked
  • CSS selector transforms

JavaScript and Lift (1:02:30)

  • Lift and JavaScript, are they at odds?
  • Knockout yea, React hmm, Angular nay
  • separation of concerns: HTML, CSS, JavaScript. Lift is the fourth column.
  • Lift has a whole AST-like typed API for writing JavaScript in Scala
  • Antonio was hardwired in childhood for separation of concerns between languages
  • Josh: is there a move in web development to more state in the client?
    • stateful-server architectures are fairly rare (Seaside, GWT)
  • Antonio: Lift's facilities for stateless operation as actually very good. you decide where your application lives on the continuum
  • incredibly, more than a full hour passed before someone made a joke about being kicked off the Lift mailing list

We heart PHP? (1:14:40)

  • many fine people have walked through the valley of the shadow of PHP
  • Antonio: "there is nothing out there that's better" than PHP for getting started with web development. "sometimes the only thing that matters is to get started"
  • Seth: if we, who think we know better, aren't beating PHP at its own game, if we don't have something to offer its audience that works as well for them for their goals, then the fault is ours, not PHP's
  • Josh: "focusing on the copy/paste use case is actually a great way to improve adoption" of anything
  • Antonio: "at the end of the day, everything we do is about people"

Conclusion (1:19:35)

  • the cat approves
@Shadowfiend
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment