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
0
220
Lotus: because sometimes you need to reinvent the wheel
Arjan van der Gaag
July 08, 2015
Tweet
Share
More Decks by Arjan van der Gaag
See All by Arjan van der Gaag
How to Lead a Team by Doing Nothing
avdgaag
8
840
Getting to know Elm
avdgaag
0
110
Beating Impostor Syndrome (NordicRuby 2016)
avdgaag
0
78
Hanami: because sometimes, you need to re-invent the wheel
avdgaag
2
520
Use your database for… Validations! Caching! Logic!
avdgaag
0
87
Web development that hurts even less: taking lessons from Rails
avdgaag
1
320
Ruby acting up: A look at how Celluloid implements the actor model for concurrency in Ruby.
avdgaag
0
240
Ecto: a database wrapper and language integrated query for Elixir
avdgaag
0
380
Using Awk: An old-school text processing tool with surprising versatility
avdgaag
1
360
Other Decks in Programming
See All in Programming
CursorとDevinが仲間!?AI駆動で新規プロダクト開発に挑んだ3ヶ月を振り返る / A Story of New Product Development with Cursor and Devin
rkaga
1
400
note の Elasticsearch 更新系を支える技術
tchov
9
3.6k
Lambda(Python)の リファクタリングが好きなんです
komakichi
5
270
Flutterでllama.cppをつかってローカルLLMを試してみた
sakuraidayo
0
140
今話題のMCPサーバーをFastAPIでサッと作ってみた
yuukis
0
130
ぽちぽち選択するだけでOSSを読めるVSCode拡張機能
ymbigo
14
6.2k
個人開発の学生アプリが企業譲渡されるまで
akidon0000
2
1.2k
M5UnitUnified 最新動向 2025/05
gob
0
140
カウシェで Four Keys の改善を試みた理由
ike002jp
1
130
20250429 - CNTUG Meetup #67 / DevOps Taiwan Meetup #69 - Deep Dive into Tetragon: Building Runtime Security and Observability with eBPF
tico88612
0
180
開発者フレンドリーで顧客も満足?Platformの秘密
algoartis
0
210
Cloudflare Workersで進めるリモートMCP活用
syumai
1
260
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
54
13k
It's Worth the Effort
3n
184
28k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
We Have a Design System, Now What?
morganepeng
52
7.6k
Speed Design
sergeychernyshev
29
930
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.7k
Product Roadmaps are Hard
iamctodd
PRO
53
11k
How GitHub (no longer) Works
holman
314
140k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Adopting Sorbet at Scale
ufuk
76
9.4k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Documentation Writing (for coders)
carmenintech
71
4.8k
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