Hi friends!
It’s been a little over a year since the Lamdera Open Alpha announcement! Things have progressed a lot in the last year, and people have built some really amazing things on Lamdera.
Over 350 people signed up for the Alpha with almost 200 apps created and more than 1000 deployments!
With the latest Lamdera v1.0.0 release, I thought I’d give a summary of what’s been happening.
New features
A lot of work has gone into all aspects, but here are the big takeaways;
lamdera live
now provides a full-stack local-development environment, it works right out of the box with no config or extra dependencies. It will also live reload on code changes and work across multiple browsers.- Application config; a type-safe alternative to
ENV
vars, including compiler-guaranteed “backend only” secret values. - Client connect/disconnect tracking subscriptions are now a core feature.
- Major wire improvements with payload sizes that are as much as 90% smaller than JSON encodings – and type safe!
- Tooling support; Lamdera now works with Elm IDE tooling and tools like elm-test, elm-review and elm-spa!
- Major rewrite to the 0.19.1 Elm Compiler codebase including a 2x improvement to compilation speed bringing things almost inline with Elm.
- A large swathe of bug fixes, performance improvements and enhancements from user feedback.
- Public documentation including conversion guides.
If you’d like to see the details, you can check out the list of release notes.
Moving to v1.0.0
The Alpha has been primarily about experimenting. Some things had to be broken a lot initially.
Things are now at a stage where the core API design makes sense and isn’t churning greatly.
More importantly, Lamdera now has some baseline data guarantees:
- A full-state backend data snapshot mechanism
- Realtime
BackendMsg
persistence (allowing for point-in-time data restoration between backups) - New infrastructure features allowing apps to self-upgrade for future major version or wire data format changes
In addition to all the new features, this brings a level of stability and recoverability that was not available in the early Alpha releases.
From here on the alpha
releases will stop, and we’ll continue with semver versioning.
So, if you’ve passed on Lamdera before, you might like to re-evaluate the reasons to not use Lamdera again!
Paid plans
The https://lamdera.com/ website is now live!
There are now three new paid tiers:
- Hobby, for personal apps
- Pro, for professional apps
- Enterprise for companies with teams
You can check out the full set of features on the new Pricing page.
A frequently recurring theme across the last couple years has been people asking about when Lamdera can be used for business/commercial apps. This also includes concerns like resourcing, backups, support, custom domains, self-hosting and source code access.
This release signals a readyness for early business usage.
If you’re a professional or business using Elm today, and yearning for a simpler life where your time is spent building value instead of glue, please give Lamdera a try and get in touch!
Note: You can still try Lamdera out for free with the “Play” tier, which runs for up to 16h a day before having a good nights rest.
Carbon mission
It’s difficult to continue ignoring our planet’s environmental situation.
A goal I’ve had for Lamdera was for apps to not just be neutral, but carbon negative. And not just for production runtime, but also for the personal time/energy developers spend building apps – truly “net zero”.
As a result Lamdera’s pricing is structured with offsets provided by Ecologi, who plant trees & fund the world’s best climate crisis solutions.
Lamdera has planted over 1500 trees and offset over 50 tonnes of Carbon so far. While no environmental offset strategy is perfect, Ecologi have a great FAQs section for some of the common questions.
For more details on how the Lamdera offsets are calculated, check out the Lamdera Environmental page.
Let’s strive to build apps that don’t harm our future!
PS: If you’re interested in becoming more climate positive in your personal life, you might consider starting with a personal Ecologi subscription. There are also Ecologi subscriptions for Businesses. If you use our referral link, we’ll both get an extra 30 trees!
Project Highlights
People continue to build awesome full-stack Elm projects with Lamdera.
Here are a few new ones, which are all open source!
NuAshworld
Source: https://github.com/Janiczek/nu-ashworld
NuAshworld is a source-available multiplayer turn-based browser game set in the universe of Fallout 2, written by Martin Janiczek.
You can play it here, follow on Twitter, checkout the public roadmap on Trello, join the Discord, and checkout the Wiki!
Here’s what Martin has to say about his experience building NuAshworld with Lamdera:
For me, Lamdera definitively lives up to its promise of removing glue from the full-stack development and lowering “barriers to entry.” Not to mention that writing Elm on both FE and BE is a bliss!
At an impressive 27,206 LOC at time of writing, NuAshworld is one of the largest apps built on Lamdera today!
Meetdown
Website: https://meetdown.app/
Source: https://github.com/MartinSStewart/meetdown
Meetdown is a clone of Meetup built by (another/different) Martin.
You can check out his announcement of it here if you haven’t seen it already: https://discourse.elm-lang.org/t/i-made-a-meetup-com-clone/7480
Martin also built a pretty cool full-stack testing framework along the way. He spoke about it recently at the Elm Online Meetup (now hosted on Meetdown!), you can check out the recording here:
Here’s what Martin has to say about his experience building Meetdown with Lamdera:
It feels liberating that the only thing between me and a finished app is just writing the business logic. The many hours spent searching stack overflow, trial and error to set up the backend, writing glue code and deploy scripts, it’s all gone.
Lamdera Realworld
Website: https://realworld.lamdera.app
Source: https://github.com/supermario/lamdera-realworld
Inspired by Ryan’s wonderful work on elm-spa and elm-spa-realworld, I worked on extending his frontend-only Elm implementation to include an Elm backend on Lamdera.
You can take a look at how the conversion progressed in two PRs:
- #1 Porting all HTTP API calls to
Lamdera.sendToBackend
and removing all JSON encoders/decoders - #2 Implementing the full Realworld backend functionality in Elm
It’s often difficult to concretely talk about glue code. I hoped this exercise would give some better visibility as to what it is, and how much of it we write “normally”.
So what was the outcome of adding a backend implementation?
About negative 350 lines compared to the original frontend-only implementation.
In other words, after migrating to Lamdera, the entire backend implementation comfortably fits in the hole left by removing all the glue code, with room to spare.
While lines of code is not the greatest metric, it does provide some insight: considering the entire project is relatively small (2926 LOC) the -1228 removed lines are proportionally quite significant.
Tests for glue
Some of this code reduction comes from dropping the tests in elm-spa-realworld (about 200 lines).
Interestingly, all of Ryan’s tests are entirely testing glue code (HTTP request decoders) that disappeared in the conversion, and got replaced by compiler type-check guarantees in Lamdera.
Without having spoken to Ryan about it, I’d hazard a guess he wrote these tests for the parts of the app he felt least confident about: the glue code.
How much more glue code would a much larger app be carrying? How many tests are you writing for things that could be compiler checked?
The road ahead
Here are some things that I’m planning to work on in the future:
- Platform support for elm-pkg-js, “A standard for shipping simple JS with Elm Packages”
- Direct HTTP query support via an RPC style API
- Automatic UI for type-safe CRUD of the BackendModel in production
- Real-time debugging of production Msg flows and effects
Got questions about something in Lamdera’s future? You’re welcome to discuss it in one of the community channels!
Supporting further work
I need your help to make my work on Lamdera (and the open source projects that shake out of it) sustainable.
Here are the ways in which you can support further work:
- Signing up for a Hobby or Professional tier app
- Supporting me via Github sponsors (also helps support the Elm online meetups!)
- Building a Lamdera app!
- Providing feedback; we have a lovely community growing on Discord, as well as #lamdera in Elm-lang slack
- Getting in touch if you’re a company (or know of a company) using Elm who might be interested in trying it in a wider domain
All your support is greatly appreciated!
Laurie the Lamdera Llama.
Phew! This was a long update. Thanks for your interest - I wish you happy and glue-free coding!