Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Lotus: because sometimes you need to reinvent t...
Search
Arjan van der Gaag
July 08, 2015
Programming
290
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
940
Getting to know Elm
avdgaag
0
180
Beating Impostor Syndrome (NordicRuby 2016)
avdgaag
0
100
Hanami: because sometimes, you need to re-invent the wheel
avdgaag
2
630
Use your database for… Validations! Caching! Logic!
avdgaag
0
130
Web development that hurts even less: taking lessons from Rails
avdgaag
1
390
Ruby acting up: A look at how Celluloid implements the actor model for concurrency in Ruby.
avdgaag
0
350
Ecto: a database wrapper and language integrated query for Elixir
avdgaag
0
500
Using Awk: An old-school text processing tool with surprising versatility
avdgaag
1
470
Other Decks in Programming
See All in Programming
sbt 2.0: takeoff
eed3si9n
0
160
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
290
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
690
dotNET_vulnclicker_intro.pdf
deka_morita
0
150
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
440
R8 の設定見直しでアプリサイズ削減
andpad
0
220
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
AmebaブログはKMPから卒業します
kmars0605
0
210
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
1.7k
Verilogで学ぶCPU自作入門
uyuki234
8
4.2k
IBM Bob でAI駆動開発『QC-Playbook』
ichirokano2
0
120
Featured
See All Featured
Amusing Abliteration
ianozsvald
1
350
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
640
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
790
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
500
30 Presentation Tips
portentint
PRO
1
430
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
Are puppies a ranking factor?
jonoalderson
2
4.1k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
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