Scalawags #23 - Lifting Antonio Salazar Cordozo

Archive this series
By Discovered by Player FM and our community — copyright is owned by the publisher, not Player FM, and audio streamed directly from their servers.
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

41 episodes available. A new episode about every 33 days averaging 63 mins duration .