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
Vibecoding 101 @ Esade
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Nicolas Grenié
January 22, 2026
Technology
0
33
Vibecoding 101 @ Esade
Vibecoding masterclass given at Esade on Jan 21 2026 with Esade Entrepreneurship club
Nicolas Grenié
January 22, 2026
Tweet
Share
More Decks by Nicolas Grenié
See All by Nicolas Grenié
How we turned PMs into vibecoders
picsoung
0
31
Developers are the new buyers: why developer experience matters
picsoung
0
100
The GPT Odyssey: When Code becomes Conversations
picsoung
0
43
Desarrolla un GPT: Lecciones y Aprendizajes
picsoung
0
17
Empowering Customer Success Operations With No-code Flows
picsoung
0
79
How developer relations can boost your partnerships program
picsoung
0
50
Developers love webhooks, you should too
picsoung
0
130
Duct tape of entrepreneurs
picsoung
0
85
API 101, What, Where, When
picsoung
0
70
Other Decks in Technology
See All in Technology
[CV勉強会@関東 World Model 読み会] Orbis: Overcoming Challenges of Long-Horizon Prediction in Driving World Models (Mousakhan+, NeurIPS 2025)
abemii
0
130
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
2
240
茨城の思い出を振り返る ~CDKのセキュリティを添えて~ / 20260201 Mitsutoshi Matsuo
shift_evolve
PRO
1
250
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
180
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
220
クレジットカード決済基盤を支えるSRE - 厳格な監査とSRE運用の両立 (SRE Kaigi 2026)
capytan
6
2.7k
Context Engineeringの取り組み
nutslove
0
340
データ民主化のための LLM 活用状況と課題紹介(IVRy の場合)
wxyzzz
2
700
セキュリティについて学ぶ会 / 2026 01 25 Takamatsu WordPress Meetup
rocketmartue
1
300
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
68k
Amazon S3 Vectorsを使って資格勉強用AIエージェントを構築してみた
usanchuu
3
450
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
How to Think Like a Performance Engineer
csswizardry
28
2.4k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
0
110
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.1k
New Earth Scene 8
popppiees
1
1.5k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
130
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
64
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
53
Speed Design
sergeychernyshev
33
1.5k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
54
Transcript
Vibecoding 101 ESADE Jan. 2026 Nicolas Grenié Developer
Advocate @picsoung
Nicolas Grenié Developer Advocate SLNG.ai @picsoung
None
40k+ icons 15k users #2 ProductHunt Top 5 Lovable
Shipped 2000$ of revenue
Other projects Contractiontrack.com imsometal.com my-bingo-card.com
Goal: Jump in the world of building Remove jargon
How does an app work?
It’s has to be written in code Different programming languages
for different things
None
None
None
Client Server Applications
Client Server Applications
Client Server Applications
You first develop locally Then you deploy for the world
to see
Application Programming Interface @picsoung @picsoung
@picsoung @picsoung UI
UI @picsoung @picsoung
What is going to happen? @picsoung @picsoung
@picsoung @picsoung
👋 You have GIF? @picsoung @picsoung
👍 Sure, here @picsoung @picsoung
That was an API 🎉 @picsoung @picsoung
@picsoung @picsoung APIs Are servers Talking to other servers
@picsoung
Examples @picsoung
@picsoung
@picsoung
@picsoung
Programming is like ordering at Chipotle @picsoung
There is an API for that! @picsoung
Let’s Call Some APIs @picsoung
https://api.imgflip.com Memes API! @picsoung
Memes API! @picsoung
Step 1: Read documentation @picsoung
Step 2: Call the API In the browser In the
terminal Using an App
🎁 Debug APIs outside of your code
JSON data format @picsoung { "success": true, "data": { "memes":
[ { "id": "61579", "name": "One Does Not Simply", "url": "https://i.imgflip.com/1bij.jpg", "width": 568, "height": 335, "box_count": 2 }, { "id": "101470", "name": "Ancient Aliens", "url": "https://i.imgflip.com/26am.jpg", "width": 500, "height": 437, "box_count": 2 } ] } }
@picsoung response = { "success": true, "data": { "memes": [
{ "id": "61579", "name": "One Does Not Simply", "url": "https://i.imgflip.com/1bij.jpg", "width": 568, "height": 335, "box_count": 2 }, { "id": "101470", "name": "Ancient Aliens", "url": "https://i.imgflip.com/26am.jpg", "width": 500, "height": 437, "box_count": 2 } ] } } JSON data format
@picsoung response.success { "success": true, "data": { "memes": [ {
"id": "61579", "name": "One Does Not Simply", "url": "https://i.imgflip.com/1bij.jpg", "width": 568, "height": 335, "box_count": 2 }, { "id": "101470", "name": "Ancient Aliens", "url": "https://i.imgflip.com/26am.jpg", "width": 500, "height": 437, "box_count": 2 } ] } } JSON data format
@picsoung response.data { "success": true, "data": { "memes": [ {
"id": "61579", "name": "One Does Not Simply", "url": "https://i.imgflip.com/1bij.jpg", "width": 568, "height": 335, "box_count": 2 }, { "id": "101470", "name": "Ancient Aliens", "url": "https://i.imgflip.com/26am.jpg", "width": 500, "height": 437, "box_count": 2 } ] } } JSON data format
@picsoung response.data.memes { "success": true, "data": { "memes": [ {
"id": "61579", "name": "One Does Not Simply", "url": "https://i.imgflip.com/1bij.jpg", "width": 568, "height": 335, "box_count": 2 }, { "id": "101470", "name": "Ancient Aliens", "url": "https://i.imgflip.com/26am.jpg", "width": 500, "height": 437, "box_count": 2 } ] } } JSON data format
@picsoung response.data.memes[0] { "success": true, "data": { "memes": [ {
"id": "61579", "name": "One Does Not Simply", "url": "https://i.imgflip.com/1bij.jpg", "width": 568, "height": 335, "box_count": 2 }, { "id": "101470", "name": "Ancient Aliens", "url": "https://i.imgflip.com/26am.jpg", "width": 500, "height": 437, "box_count": 2 } ] } } JSON data format
@picsoung response.data.memes[0].url { "success": true, "data": { "memes": [ {
"id": "61579", "name": "One Does Not Simply", "url": "https://i.imgflip.com/1bij.jpg", "width": 568, "height": 335, "box_count": 2 }, { "id": "101470", "name": "Ancient Aliens", "url": "https://i.imgflip.com/26am.jpg", "width": 500, "height": 437, "box_count": 2 } ] } } JSON data format
Security? @picsoung
@picsoung API Key oAuth
Advantage for API provider @picsoung Who is calling the API
Charging for API usage Turn off bad users Restrict access to your own data
Let’s try @picsoung Boilerplate Solution
oAuth @picsoung
Oauth Scopes @picsoung
Webhook @picsoung
Webhook @picsoung Ping me when something happens
Vibecoding vs. AI assisted coding? @picsoung
@picsoung vibecode
@picsoung
@picsoung
@picsoung Describe the app and its features
@picsoung One stop prompt Iterative process
@picsoung Use ChatGPT to write the PRD (Product Requirements Document)
@picsoung Or images
@picsoung
@picsoung
@picsoung
@picsoung
@picsoung
@picsoung look at the current UI for the prompt enhancer,
It feels cramped. Help me simplify it, remove clutter.
@picsoung
Share documentation and code snippets @picsoung
AI is an intern Treat it as such @picsoung
Challenges @picsoung
SEO @picsoung
SEO @picsoung Ask to create sitemap.xml robots.txt Llms.txt Opengraph tags
Backend @picsoung
@picsoung 100 credits ($25 worth) Code: ESADE