Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Lotus: because sometimes you need to reinvent t...
Search
Arjan van der Gaag
July 08, 2015
Programming
270
0
Share
Lotus: because sometimes you need to reinvent the wheel
Arjan van der Gaag
July 08, 2015
More Decks by Arjan van der Gaag
See All by Arjan van der Gaag
How to Lead a Team by Doing Nothing
avdgaag
8
920
Getting to know Elm
avdgaag
0
170
Beating Impostor Syndrome (NordicRuby 2016)
avdgaag
0
97
Hanami: because sometimes, you need to re-invent the wheel
avdgaag
2
600
Use your database for… Validations! Caching! Logic!
avdgaag
0
120
Web development that hurts even less: taking lessons from Rails
avdgaag
1
370
Ruby acting up: A look at how Celluloid implements the actor model for concurrency in Ruby.
avdgaag
0
320
Ecto: a database wrapper and language integrated query for Elixir
avdgaag
0
480
Using Awk: An old-school text processing tool with surprising versatility
avdgaag
1
420
Other Decks in Programming
See All in Programming
Oxlintはいかにしてtsgolintのlint ruleを呼び出しているのか
syumai
2
1k
プラグインで拡張される Context をtype-safe にする難しさと設計判断
kazupon
2
470
Oxlintのカスタムルールの現況
syumai
5
900
These Five Tricks Can Make Your Apps Greener, Cheaper, & Nicer
hollycummins
0
250
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
420
Zod v4 Codec でスキーマに型変換を埋め込む REST API 設計 #TSKaigi2026
ryutaro_yako
0
170
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
1.8k
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
180
ReactとSvelteのその先、Ripple-TS / Beyond React and Svelte: Ripple-TS
ssssota
3
1.8k
誰も頼んでない機能を出荷した話
zekutax
0
150
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
130
Inside Stream API
skrb
1
400
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
57
14k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
850
Agile that works and the tools we love
rasmusluckow
331
21k
So, you think you're a good person
axbom
PRO
2
2k
Producing Creativity
orderedlist
PRO
348
40k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
We Are The Robots
honzajavorek
0
230
How STYLIGHT went responsive
nonsquared
100
6.1k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
250
Paper Plane
katiecoart
PRO
1
50k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
Transcript
lotus sometimes you need to reinvent the wheel
Arjan van der Gaag @avdgaag brightin
Lotus is a Ruby MVC web framework comprised of many
micro-libraries. It has a simple, stable API, a minimal DSL, and prioritises the use of plain objects over magical, over- complicated classes with too much responsibility.
standalone frameworks
standalone frameworks to build full-stack applications
from small endpoints… require 'bundler/setup' require 'lotus/router' run Lotus::Router.new {
get '/', to: ->(env) { [200, {}, ['Hello, world'] } }
…to containers
some conventions
some conventions many objects
some conventions many objects no monkey patches
simplicity > convenience
testable class Show include Lotus::Action expose :book def initialize(repository: BookRepository)
@repository = repository end def call(params) @book = @repository.find params[:id] end end
focus on maintenance
writing Ruby is fun
Guides and docs at lotusrb.org
@avdgaag arjanvandergaag.nl