Caleb Meredith @calebmer.com · 12/03/2026We've seen people work on some pretty big things in Alpine. So we built a first class feature for your most ambitious projects 000 0
Caleb Meredith @calebmer.com · 26/02/2026I think Alpine is great, but don't take it from me. Learn what it's like when you use Alpine for a year: 010 1
Caleb Meredith @calebmer.com · 23/02/2026NYC blizzard today: Mamdani has closed the roads but there's one thing bringing new yorkers out to meet mother nature… The dog has to pee Cute dog snow photos is a good excuse to show just how easy it is to create a beautiful image gallery in Alpine: 010 1
Caleb Meredith @calebmer.com · 12/02/2026We care a lot about quality. Because these small wins add up to a delightful experience Try Alpine and let me know what other small wins we need: alpine.incalpine.incAlpineYour docs, tasks, chat, and AI in one app that organizes itself for you. So you can stop managing tools and do your best work. 000 0
Caleb Meredith @calebmer.com · 12/02/2026(4/n) Our Cursor integration now lets you add a personal Cloud Agents API key so the agents you create are tied to your account 100 1
Caleb Meredith @calebmer.com · 12/02/2026(3/n) Alpine doesn't have slash commands, everything is in one "@" menu (simple) This wasn't discoverable enough so we added a placeholder telling people to use "@" and we added support for "/" to open the same menu to preserve peoples muscle memory 100 1
Caleb Meredith @calebmer.com · 12/02/2026Small wins this week: @ menu automatically selects the first result when you press enter (1/n) 100 1
Caleb Meredith @calebmer.com · 11/02/2026Just one more link bro. I swear bro its behind just one more link, I swear ^ Me in Zoom meetings You know what's better than a link? Having the information you need right in front of you That's why everything in Alpine (the all-in-one work app) has rich previews: 000 0
Caleb Meredith @calebmer.com · 02/02/2026How many browser tabs do you have open right now? Too many! You're losing time context switching We solve this in Alpine (a new all-in-one work suite) by opening a mobile phone sized window you can use without breaking your flow state Check it out: 120 2
Caleb Meredith @calebmer.com · 20/01/2026Slack + Notion's search are woefully primitive Excuse me for getting technical, this is what Alpine search uses: > LLM embeddings in a vector db > NLP for searches like "my posts from last month" > Affinity score to boost the most relevant stuff > BM25 keyword matching 000 0
Caleb Meredith @calebmer.com · 16/01/2026I have a problem. I'm obsessed with craft. Alpine took 3 years to launch because I cared (too deeply?) about every pixel You can see this in tables. I played with many tables while building ours and we have the slickest implementation I've seen. Check it out: 130 3
Caleb Meredith @calebmer.com · 15/01/2026If you want to chat more about your use case, I’m happy to hop on a call: alpine.inc/meet-caleb 100 1
Caleb Meredith @calebmer.com · 15/01/2026We also want a folder-like feature (near the top of our roadmap) So “no folder” isn’t 100% accurate. We want to optimize for quick capture and letting the system organize itself but if there’s structure you want, we should let you create that structure! 110 1
Caleb Meredith @calebmer.com · 13/01/2026Yes. We definitely want deep integrations with all the tools we currently use! You shouldn't need to migrate anything to get value from Alpine 010 1
Caleb Meredith @calebmer.com · 13/01/2026I was asked "how does Alpine reduce context switching" on ProductHunt. The answer so obvious you'll never look at your Slack + Notion setup the same way again To mention a doc in Alpine you hit @, type a bit, select and get a little in app preview That's it that's the post 000 0
Caleb Meredith @calebmer.com · 12/01/2026Introducing Alpine Your docs, tasks, chat, and AI finally in one app alpine.inc 5263 26
Caleb Meredith @calebmer.com · 22/08/2025slack violates a fundamental principle of design: fitt's law the amount of time it takes your eye to move from one bit of the screen to another is based on how far apart they are the time i wasted reorienting after opening a thread, sheesh glad i’m not using slack anymore 110 1
Caleb Meredith @calebmer.com · 15/08/2025if you liked this, check out another demo: bsky.app/profile/cale... 000 0
Caleb Meredith @calebmer.com · 15/08/2025apple notes is where i kept all my tasks for years even at companies that used jira! or linear! that's why in our task tracker app we made it as easy to create a task as it is to create an apple note. ZERO friction 220 2
Caleb Meredith @calebmer.com · 07/08/2025if you liked this, check out another demo: bsky.app/profile/cale... 000 0
Caleb Meredith @calebmer.com · 07/08/2025notion is so buggy the new oss openai model likes tables, let's see what it's like trying to create a table in notion… 110 1
Caleb Meredith @calebmer.com · 07/08/2025if you liked this, check out another demo: bsky.app/profile/cale... 000 0
Caleb Meredith @calebmer.com · 07/08/2025if you liked this, check out another demo: bsky.app/profile/cale... 000 0
Caleb Meredith @calebmer.com · 24/07/2025this is only possible thanks to ai that organizes your work for you 000 0
Caleb Meredith @calebmer.com · 24/07/2025gen-z doesn't know how the file system works so we're building the no-folders work app 410 4
Caleb Meredith @calebmer.com · 22/07/2025finally, we use an svg mask to only render a border around the element 000 0
Caleb Meredith @calebmer.com · 22/07/2025you'll notice the conic gradient didn't cover the entire menu item. that's because the animation ends up looking really bad on very wide elements (like this one) if you don't stretch out the gradient! we apply a css transform to make sure the gradient covers the entire element 100 1
Caleb Meredith @calebmer.com · 22/07/2025next, you need a conic gradient annoyingly, html supports conic gradients but svg doesn't. so we need to use svg's <foreignObject> element to embed a <div> with a conic gradient in the svg 100 1
Caleb Meredith @calebmer.com · 22/07/2025this technique is hard to build/maintain so accessibility engineers usually take the easy road of a css outline. but imo absolutely positioning your focus rings is critical if you want them to look great in all the weird edge cases your app has to offer discord.com/blog/how-dis... 100 1
Caleb Meredith @calebmer.com · 22/07/2025absolutely positioning focus rings in a generic way is hard! i read a blog post by discord 5 years ago which inspired me to reimplement their system in our app 100 1
Caleb Meredith @calebmer.com · 22/07/2025we need to use svg to create the glowy effect. we can't use a css border or outline so we have to start with an absolutely positioned <svg> element that renders on top of whatever we're trying to focus 100 1
Caleb Meredith @calebmer.com · 22/07/2025how we built glowy selectors for our docs app and we did it with a technique from Discord that terrifies accessibility engineers everywhere 🧵 100 1
Caleb Meredith @calebmer.com · 14/07/2025not sure if i should ship, needs a little more polish, but i'm really liking it right now thanks nintendo (btw, this is what the feature looks like on the switch 2) 000 0
Caleb Meredith @calebmer.com · 14/07/2025after getting absolutely wrecked by my friend in mario kart this weekend… i added the Switch 2 glowy focus rings to my docs app work should be fun :) 210 2
Caleb Meredith @calebmer.com · 09/07/2025our image gallery's constraints are: 1. the width of three images in a row MUST sum to document width 2. all images in a row MUST have the same height 3. images SHOULD maintain their aspect ratio cassowary then finds the right width/height for the images in our gallery! 000 0
Caleb Meredith @calebmer.com · 09/07/2025the way you use cassowary is you give it a set of simple constraints and cassowary will find numbers that satisfy those constraints. if it can't satisfy a constraint it'll try to product a number as close as possible to the constraint 100 1
Caleb Meredith @calebmer.com · 09/07/2025we used a 20 year old obscure research paper to build this beautiful image gallery feature in alpine.inc the paper is called "The Cassowary Linear Arithmetic Constraint Solving Algorithm" it's the underpinning of apple's ios auto layout framework (more implementation details in thread) 100 1
Caleb Meredith @calebmer.com · 08/07/2025alpine2journal.substack.com/p/write-your...alpine2journal.substack.comWrite your own database clientsFor the tired JavaScript developer who just has too many options 010 1
Caleb Meredith @calebmer.com · 08/07/2025my friend texted me a question and i responded with a blog post for the node.js devs out there: write your own database clients (link in the reply) 220 2
Caleb Meredith @calebmer.com · 07/07/2025here's all the illustrations we're currently working with: 010 1
Caleb Meredith @calebmer.com · 07/07/2025emojis are out they're boring. everyone knows the ten good ones. they aren't expressions of your personality anymore for alpine.inc we've commissioned custom illustrations you'll use instead to react on posts, chats, and more with a radial picker inspired by video games: 110 1
Caleb Meredith @calebmer.com · 02/07/2025tired of ruining your document every time you try to move an image? Alpine's got you follow for more product demo videos 320 3
Caleb Meredith @calebmer.com · 01/07/2025here's the marked up version from the designer, i won't share all their notes but a lot of it is systems thinking tricks an engineer can understand/apply next time. e.g. - intentional typography based on hierarchy - make sure everything is edge aligned 020 2
Caleb Meredith @calebmer.com · 01/07/2025engineers always make a first pass at the design of the features they're responsible for then, our designers clean it up with detailed notes to help the engineer learn here's an example, left is first pass from eng. right is the cleaned up version from a designer 120 2
Caleb Meredith @calebmer.com · 01/07/2025it's easy for a great engineer to become a good ui designer good ui design starts with systems thinking. how does this new element create harmony with everything else on screen? at alpine.inc we're training our engineers to be designers too (example in reply) 130 3
Caleb Meredith @calebmer.com · 29/06/2025to find the exact color we want, we use the cassowary constraint solver npmjs.com/@lume… 000 0