Skip to content

Instantly share code, notes, and snippets.

we are building a landing page for a course on building apps with AI coding with tools liek Cursor, Claude, and Gemini help me brainstorm and plan the design of landing page section
Our key value:
- Deeply understand your product context, design system & brand
- Ability to explore multiple versions of design fast
- Output production quality UI
Plan the design, specifically regarding:
the first screenshot is my landing page for an AI coding class (ignore the very top bar that mentions "webplay_gallery" and "full screen", its just a gallery preview feature). the next two screenshots are some reference inspiration. we are building course signup page for a class teaches AI coding agents like Claude Code, Cursor and using image models like nano banana to improve UI/UX. using, help me brainstorm and plan the design of landing page section (using our logo and branding)
Our key value:
Deeply understand your product context, design system & brand
Ability to explore multiple versions of design fast
Output production quality UI
Plan the design, specifically regarding:
Ratio of the section
Layout, spacing, and white space
Texture and backgrounds
Animations
@waprin
waprin / gist:fc007ddfb4dc2ca8fc9e81e98ffff1f4
Created December 17, 2025 23:27
design thinking system prompt
<design_thinking>
Before output design, understand the context adn commit to a CREATIVE direction.
- **Purpose**: What problem does this interface solve? What is the key JTBD?
- **Content hierarchy** What's the epic-center of the interface/ Which ones should be subtle?
- **Differentiation** What makes this UNFORGETTABLE & UNIQUE? What's the one thing someone will remember?
- * Interaction & animation ** : Interaction animation plays pivotal role to amazing product design, think through key interactions that make the experience fun
</design_thinking>
<theme>
@waprin
waprin / gist:bc47b9f9e19adc424434032bc462ca91
Created May 28, 2025 20:38
firebase MCP changes for firebase count
// this is where we tell the AI what the tool does
// in setRequestHandler(ListToolsRequestSchema)
{
name: 'firestore_count_documents',
description: 'Count the number of documents in a Firestore collection, with optional filters',
inputSchema: {
type: 'object',
properties: {
collection: {
type: 'string',
@waprin
waprin / gist:a5eae8a90c1847c6bdfad914a934e286
Created March 1, 2024 18:43
hacky live poker "spaced rep"
function shuffleArray(array) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]]; // swap elements
}
}
function getRandomQuestions(questions, num=20) {
Processed 387 Errors 11
Liquid won 258 of the games.
Found 47 out of 387 games where Liquid picked Io.
Io was banned in {} matches. 239
Wisp lost in 13 of the games.
------------Opponents---------------------
Hero Tiny has won 3 out of 3 games against Liquid IO for a win percent of 1.0 (matches [3796359654, 3796268587, 3766915400])
Hero Razor has won 1 out of 1 games against Liquid IO for a win percent of 1.0 (matches [3698342712])
Hero Brewmaster has won 1 out of 1 games against Liquid IO for a win percent of 1.0 (matches [3595326728])
Hero Leshrac has won 1 out of 1 games against Liquid IO for a win percent of 1.0 (matches [3595326728])
@waprin
waprin / analyze.py
Created August 13, 2018 16:32
analyze opponents
print('------------Opponents---------------------')
hero_wins = collections.defaultdict(int)
hero_totals = collections.defaultdict(int)
hero_matches = collections.defaultdict(list)
for match in wisp_matches:
for hero in match.opponent_picks:
hero_totals[hero] += 1
if not match.liquid_win:
hero_wins[hero] += 1
hero_matches[hero].append(match.match)
@waprin
waprin / analyze.py
Last active August 13, 2018 16:31
Create match class
class Match:
def __init__(self, match, liquid_win):
self.match = match
self.liquid_win=liquid_win
self.liquid_picks = []
self.liquid_bans = []
self.opponent_picks = []
self.opponent_bans = []
@waprin
waprin / analyze.py
Created August 13, 2018 16:28
High level stats
won_matches = list(filter(lambda m : m.liquid_win, processed_matches))
print('Liquid won {} of the games.'.format(len(won_matches)))
wisp_banned = list(filter(lambda m: 'Io'in m.opponent_bans, processed_matches))
wisp_matches = list(filter(lambda m: 'Io' in m.liquid_picks, processed_matches))
print('Found {} out of {} games where Liquid picked Io.'.format(len(wisp_matches), len(processed_matches)))
print('Io was banned in {} matches.', len(wisp_banned))
@waprin
waprin / analyze.py
Created August 12, 2018 23:27
process the liquid matches
class Match:
def __init__(self, match, liquid_win):
self.match = match
self.liquid_win=liquid_win
self.liquid_picks = []
self.liquid_bans = []
self.opponent_picks = []
self.opponent_bans = []