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
260
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
900
Getting to know Elm
avdgaag
0
160
Beating Impostor Syndrome (NordicRuby 2016)
avdgaag
0
90
Hanami: because sometimes, you need to re-invent the wheel
avdgaag
2
590
Use your database for… Validations! Caching! Logic!
avdgaag
0
110
Web development that hurts even less: taking lessons from Rails
avdgaag
1
360
Ruby acting up: A look at how Celluloid implements the actor model for concurrency in Ruby.
avdgaag
0
300
Ecto: a database wrapper and language integrated query for Elixir
avdgaag
0
470
Using Awk: An old-school text processing tool with surprising versatility
avdgaag
1
410
Other Decks in Programming
See All in Programming
実用!Hono RPC2026
yodaka
2
190
2026_04_15_量子計算をパズルとして解く
hideakitakechi
0
100
Claude Codeをカスタムして自分だけのClaude Codeを作ろう
terisuke
0
130
感情を設計する
ichimichi
5
1.5k
実践CRDT
tamadeveloper
0
550
UIの境界線をデザインする | React Tokyo #15 メイントーク
sasagar
2
350
JOAI2026 1st solution - heron0519 -
heron0519
0
130
Liberating Ruby's Parser from Lexer Hacks
ydah
1
580
おれのAgentic Coding 2026/03
tsukasagr
1
140
ハンズオンで学ぶクラウドネイティブ
tatsukiminami
0
130
ハーネスエンジニアリングとは?
kinopeee
8
4.1k
t *testing.T は どこからやってくるの?
otakakot
0
520
Featured
See All Featured
Building the Perfect Custom Keyboard
takai
2
730
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.6k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
160
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
220
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
520
Music & Morning Musume
bryan
47
7.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
140
Between Models and Reality
mayunak
3
260
Optimising Largest Contentful Paint
csswizardry
37
3.6k
The agentic SEO stack - context over prompts
schlessera
0
740
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