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
Vibecoding 101 @ Esade
Search
Nicolas Grenié
January 22, 2026
Technology
64
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Vibecoding 101 @ Esade
Vibecoding masterclass given at Esade on Jan 21 2026 with Esade Entrepreneurship club
Nicolas Grenié
January 22, 2026
More Decks by Nicolas Grenié
See All by Nicolas Grenié
How we turned PMs into vibecoders
picsoung
0
80
Developers are the new buyers: why developer experience matters
picsoung
0
140
The GPT Odyssey: When Code becomes Conversations
picsoung
0
110
Desarrolla un GPT: Lecciones y Aprendizajes
picsoung
0
59
Empowering Customer Success Operations With No-code Flows
picsoung
0
110
How developer relations can boost your partnerships program
picsoung
0
80
Developers love webhooks, you should too
picsoung
0
170
Duct tape of entrepreneurs
picsoung
0
100
API 101, What, Where, When
picsoung
0
120
Other Decks in Technology
See All in Technology
10年後、Engineering 行為を剥奪されるとして、わたしたちは、どう、何を創ればいいだろうか。 / If Engineering Is Taken Away in 10 Years, How and What Should We Create?
bitkey
PRO
1
210
freeeにおけるSoftware Factory
freee
PRO
0
110
Webの常識が通じないHTMLメールのダークモード
teamlab
PRO
0
140
Persisting Massive Data with Rails ~Designing for 60 billion rows, and fighting the bottlenecks~ Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
740
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
1k
データエンジニアの次の戦場は "プロセスエンジニアリング"
sansantech
PRO
1
120
コンテナ運用におけるネットワーク・コンテナコストの削減方法/How to Reduce Network and Container Costs in Container Operations
masakiokuda
2
320
LLM-as-a-Judgeは本当に信頼できるのか――評価器を評価する話
taka_aki
1
560
Code for Security プロジェクト紹介 2026年10月
yu23ki14
0
110
大型犬好きによるPugの紹介
yamanoku
1
160
日本語に強いオープンな大規模言語モデル「LLM-jp」
odashi
5
1.2k
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
1
200
Featured
See All Featured
Facilitating Awesome Meetings
lara
57
7.2k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Balancing Empowerment & Direction
lara
6
1.3k
Making Projects Easy
brettharned
120
6.8k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
37k
Prompt Engineering for Job Search
mfonobong
0
520
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.4k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
360
We Have a Design System, Now What?
morganepeng
55
8.4k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
480
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
Marketing to machines
jonoalderson
1
5.9k
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