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
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
930
Getting to know Elm
avdgaag
0
180
Beating Impostor Syndrome (NordicRuby 2016)
avdgaag
0
98
Hanami: because sometimes, you need to re-invent the wheel
avdgaag
2
610
Use your database for… Validations! Caching! Logic!
avdgaag
0
120
Web development that hurts even less: taking lessons from Rails
avdgaag
1
380
Ruby acting up: A look at how Celluloid implements the actor model for concurrency in Ruby.
avdgaag
0
330
Ecto: a database wrapper and language integrated query for Elixir
avdgaag
0
490
Using Awk: An old-school text processing tool with surprising versatility
avdgaag
1
440
Other Decks in Programming
See All in Programming
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
2
430
My Marp Sample
sinoue0108
0
110
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
1
1.9k
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
240
Webエンジニアなのにブラウザの仕組みがわからないので、Pythonで自作してみた
tatsuki12
4
1k
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
2
370
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
370
不幸な GC
chencmd
0
700
Cloudflare is Agents
chimame
0
180
片田舎のおっさん、 Swift Buildのダイアモンド問題解決の不具合修正PRを出すが、解決方法がキャッシュをしないようにすることであり、ビルド時間が伸びると言われてマージされないので高速化もする/swiftbuild
yimajo
0
270
いまどきの Codex で開発する visionOS アプリの開発スタイルについて
karad
0
160
承認済みなのに差戻しできてしまうバグ、型で潰せます
shinchit
0
110
Featured
See All Featured
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
280
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
690
Crafting Experiences
bethany
1
260
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
360
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
400
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
210
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
480
So, you think you're a good person
axbom
PRO
2
2.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