cho.sh
2,244 notes
Liked on XI made a mistake. When Jack and I decided to organize this $100K Hackathon, my biggest concern was cheating. Unlike a regular hackathon, everyone participates from home. And because the winner is whoever makes the most PROFIT (not revenue), there are so many ways to manipulate the numbers. So I added a $99 entry fee. One thing I’ve learned from building businesses is that people tend to be more committed when they pay for something. I thought it would filter out spam, attract serious builders, and make the competition fairer for everyone. But I completely missed the other side. 3 years ago, I was a living with my apps. Today, I’m financially free. My life changed so much that somewhere along the way, I lost perspective on what $99 means to someone else. For someone in India, someone struggling to pay their bills, or someone trying to make their first dollar online, $99 can be a lot of money. And those are exactly the people I want to help! I’ve spent years sharing what I’ve learned, reviewing random people’s landing pages, and organizing free meetups around the world. Not because there’s money to make, but because I genuinely love seeing people build things and succeed. And somehow, I was so focused on keeping cheaters out that I didn’t realize I was also keeping genuine builders out. That’s my mistake. So I’ve decided to make the $100K Hackathon completely FREE :) Everyone who already paid got a full refund. I’m still worried about cheating. That problem hasn’t disappeared, and Jack and I will have to figure out better ways to verify profits and keep the leaderboard fair. But that’s our problem to solve. Thank you to everyone who shared their thoughts. Sometimes you need people to remind you of things you’ve forgotten. I genuinely hope this hackathon changes someone’s life. ❤️Liked on XIt’s time to bring back Cafe CursorPosted on Xyo @pendev i can't live share edit a .pen file? it's the most needed featurePosted on XI'm coining a word "Agentsplaining" Agents condescendingly assuming the user don't know fuck and repeating the obviousReplied on X@jayhxmo @raycast Hard to explain. It's the small detailsPosted on X@raycast iOS keyboard is insanely good. Might resub Raycast pro just cuz of thisReplied on X@ishuagra02 I saw a theory that F5.2 is a post train of 5.1, but O5.5 is a distillation of F5.5(unreleased new pretrain) and thats why O5.5 > F5.2Liked on X@anaclumos don't know what is actually improved 👀Posted on Xam i the only one underimpressed with 5.2 fableReplied on X@bvvst great minds think alike https://t.co/YRFWhb1mcOLiked on XClaude Fable 5.2 is out and it's the perfect time to run this god-level prompt on your codebase: "I want you to audit our codebase, is anything here unnecessary, overly complicated in our current setup, or based on weak assumptions? Challenge them. - What can be deleted entirely? - What can be simplified now that unnecessary pieces are gone? Then make the changes. Prefer deleting over simplifying, simplifying over optimizing, and optimizing over automating. This product is being used by thousands of customers, do not cut any corners." This prompt is one I run often and leads to the best results.Replied on X@akshayadinesh19 @bot can we please BYOM for botsLiked on XTo be fair, the Chinese models have a much lower refusal rateLiked on XF*CK IT, im creating a library of AI slop indicators. my feed is full of taste larpers. stay tuned https://t.co/5Muv8nQRm3Liked on XJENSEN! THATS NOT WHAT WE MEANT BY CHINESE MODELS!!!!!!!Liked on Xmy parents had to declare bankruptcy when I was a kid, so they had every reason to pressure me towards a more stable career path instead, they were so patient with me, even as i failed startup after startup for years so getting to tell my mom that everything turned out okay was a really special moment :) for those who can't read Korean, her first message roughly translates to: "Really!!! Congratulations my son. So much :') Thank you God!" i know I've been posting about my exit for like a week now, but it really is a big deal for me and my family! i'll share more about how this all happened and some tactical advice later this week, but for now i'm just riding out all the emotions to quote my mom, thank you God!!!!Liked on X@thefarmers_Dog it stands for Egg GzampleLiked on X🦍 Introducing Memorilla: memory as a modality for LLMs Memorilla turns everything a frozen LLM needs to remember into just 16 memory embeddings ⚡ It uses up to 4,212× fewer tokens and is 27× faster than full context inference while more accurate 🎯 Pushes the Pareto frontier over RAG and agentic memory in personalization, long-document and knowledge QA A thread 🧵:Liked on XThere's a huge product opportunity downstream of Tailscale etc too. At @tldraw we've started designing for "high trust networks" and it's been a beautiful thing. 1. Features that would be a nightmare on the internet are okay on my computer and mostly okay on private networks. Websites that execute user-generated scripts, control production systems, allow for users to send desktop notifications, spend tokens, or directly prompt my agent. Crazy stuff that would only make sense if everyone was in a committed polycule. 2. When everyone on the server can be trusted to have _external_ reasons for good behavior (eg keeping their job, or maintaining friends, family, church, mafia org), the software can be designed in a default social way. Most apps default to isolation, low horizontal visibility, highly restricted collaboration. Makes sense if the social contracts are inside of the app, but if you can trust that they live outside of the app then you can get wild. Example being small group chat names as an emergent comedy phenomenon because anyone in the group can change the name. 3. This can work for commercial products, too, not just internal stuff. Security matters more than ever but the way we've seen that manifest is that more companies are more confident in their own solutions than anything we could provide, to the point where owning data and access is a better value proposition than having it managed. Always has been true for big companies but now even small companies can get a good secure network set up pretty easily, and the hooks we need to build are easy enough. tldraw offline got us started down this road (and shout out to @pendev for first introducing me to the idea of desktop + mcp). We've been bringing that product to private networks and it's been exciting to see how much we can get away with. Keep an eye outReplied on X@saradu birds eye viewLiked on XApplications close in 2 days!! If you have a cool bio idea, and $5-10k will go a long way for you, please apply!!! https://t.co/NCvmrNC53cLiked on XWe've been early adopters of Rust since 2018 and a lot of our infra, voice tech, and even some of the current client is already Rust, the holy grail was getting the whole client there. That means Electron goes away, and so does React Native, mobile keeps native UI but shares app code with desktop via Rust. We hope to get it into testing with users soon™. (And it's not Tauri, it's GPUI, so good guess everyone.) Alright, back to staring at the WoW Forever login screen.Reposted on XOh boy. https://t.co/X7SSskGuGvLiked on XRIP .si domain squatters
배달의민족 FE 개발자가 일하는 법 발표

배달의민족 FE 개발자가 일하는 법 발표

Warning

Over a year old. May be outdated

2020년 7월 15일 배달의민족 김민태 개발자님께서 발표해주신 내용 전부를 그대로 받아 적어 정리하였다. H2 태그는 새로운 슬라이드를 의미한다.

(이하 발표 내용)

  • 김민태 개발자님의 개인적 목표는 100세 코딩이다.

Immutable & mutable

프론트엔드 개발자들 사이에서는 다양한 내용들이 자주 화두로 나타난다. 이런 주제들은 모양만 바뀔 뿐 계속 반복된다.

웹 프론트엔드 개발 그룹

여기 계신 모든 분들이 우아한형제들에 입사하시겠다는 목표를 가지고 계셨으면 좋겠다. 물론 경험을 위해서 온 사람도 있겠지만, 상황이 잘 맞아서 입사를 하셨으면 좋겠다. 프론트엔드 개발자로 입사를 하시게 되면 웹 프론트 개발 그룹에 속하게 된다.

개발자를 구하기 힘들다. 그렇지만 기준치가 있어 아무나 뽑을 수는 없다. 더 많은 사람들이 필요하긴 하다.

What

내부에 있는 개발자도 웹 프론트 쪽이 아니라면, 그리고 일반 유저 대상 개발자라면, 대부분의 서비스가 앱으로 퍼블리싱 되고 있기 때문에 웹을 어디에 사용하는지 잘 모른다. (참고: 배민에서 개발되는 소프트웨어는 크게 일반 유저 대상으로 한 소프트웨어와 사장님 유저 대상으로 한 소프트웨어로 나뉜다.)

서비스를 만드는 것은 빙산을 만드는 것이다. 사용자가 보는 것은 빙산의 일각이고, 그 아래 엄청난 기반 서비스들이 돌아가고 있다. 예를 들어 관리자 툴, 백오피스 같은 것들도 있다. 본 서비스보다도 더 규모가 클 수 있는 것들이다. 배달의민족에는 이런 것들이 수십 개가 있고, 그마다 API 서버와 프론트엔드도 다 있다. 그래서 서비스를 만드는 것은 빙산을 만드는 것이다.

일은 정말 차고 넘치고 많다. 그래서 이런 범용성을 갖출 수 있는 것은 웹 개발뿐이다. 서비스의 품질을 높이기는 위해선 웹 개발이 중요한 것이다.

How

  • Pair & Solo & Group Programming
  • Upsource & PR & Root
  • Slack & Jira & Confluence & Zeplin
  • Google, Line

다양한 도구를 사용하고 있다. 최근 10년간 버드 워드 (업계에서 회자되는 단어들)로 애자일, 워터폴 등을 들어보았을 것이다. 요즘에는 잘 안 쓰는 단어들. 2가지 측면이 있다. 애자일은 일하는 철학들과 프레임워크를 뜻한다. 실현하기 위한 다양한 기술이 있다. 한참 회자되던 시기에는 이런 업무 패턴을 도입하는 것이 도움이 될 거라 믿었는데, 요즘에는 애자일이 정착이 되어서 나름의 상황에 맞게 접목되기에 굳이 의미가 없어진 것이다. 즉 애자일이라는 의미론적 틀에 갇힐 필요가 없어진 것이다. 그래서 별로 쓸 일이 없는 단어가 되었다.

페어 프로그래밍 같은 경우도 상황에 따라 적용된다. 솔로 프로그래밍도 많고, 기능 단위가 작은 경우에는 혼자 하는 것이 더 적합한 경우도 있다. 혼자 하고 코드 리뷰를 받는 등의 방법을 사용하는 것이다.

개발자들의 근본적인 도구는 코드라는 물리적인 형상이다. 코드를 잘 만들고 구성하고 잘 짜는지 확인하는 것이 중요하다. 이를 위해 배달의민족에서는 3가지 방법을 사용한다. 물론 케이스 바이 케이스이다.

초기에는 루트 권한을 가지고 모두가 사용했다. 빠른 것 같고 좋은데, 장애를 겪고 나면 생각이 달라진다. 예전에는 GitHub를 사용하다가 요즘에는 비슷한 도구 (GitLab) 을 사용한다. 그래서 PR을 하고 올리면 코드 리뷰 등을 해준다. PR도 단점이 있다. 2년 정도 전부터 Upsource라는 코드 리뷰 전용 툴을 사용하기 시작했다. 코드를 리뷰하는 방식이나 라이프 사이클은 다 다르다. 그때그때 달라요

프론트 직군은 협업 라인이 가장 많다. 그래서 커뮤니케이션을 하는 방법이 중요하다. 메신저는 주로 슬랙을 사용하고, 일정을 플래닝하고 작업 단위를 설정하는 것은 지라를 사용한다. 이 안에 정리되는 문서는 컨플루언스를 사용하고, 디자이너와 협업할 때는 제플린을 사용한다. 내부에 포토샵을 사용하는 디자이너는 이제 사라졌고 스케치라는 벡터 디자인을 주로 사용한다. 그래서 제플린을 주로 사용한다. 가끔 라인 메신저도 사용한다. 메신저를 통일하려는 준비를 하고 있다. 창업 초기에는 라인 메신저를 주로 사용했다. 여전히 이 2가지는 병행해서 사용하고 있다. 코로나 때문에 더 많아졌다. 구글 행아웃, 줌 등을 사용한다. 온라인 중심 커뮤니케이션이 반강제로 주입되었기에 발빠르게 적응하고 있다.

변하지 않는 것과 변하는 것이 존재한다. 그중 변하는 것이 압도적으로 많다. 현실은 끊임없이 변한다. 중요도로 보면 또 다르겠지만.. 회사에 붙어있는 송파구에서 일 잘 하는 11가지 방법 정도가 변하지 않는 것이고, 나머지는 대부분 변한다. 무언가를 계속 동일하게 추구하면 집착이 생긴다. 그런 것들을 경계해야 한다.

2FBA8E

이제는 꽤 유명해진 송파구에서 일 잘하는 11가지 방법

일하는 방법을 소개하는 것도 그 시점에 정형화된 이야기일 뿐 일하는 방식도 끊임없이 바뀐다. 소프트웨어가 어려운 이유는 현실의 문제를 해결하는 솔루션인 소프트웨어도 발 빠르게 바뀌는 현실에 맞추어 끊임없이 바뀌어야 하기 때문이다. 이런 변화 안에서 바꾸기 어렵다면 개발하기 고통스러울 것이기에 futureproof 하게 만드는 것이다. 마치 별의 인생과 비슷하다. 별이 죽기 전에 점점 커지다가 비로소 죽음을 맞듯이, 코드도 점점 커지다 재개발의 순간이 오며 죽음을 맞는다.

모든 것들은 변화에 대한 적응을 연구하는 것이다. 대부분이 mutable 하고 그것을 인정해야 한다. 입사하고 나서 프로페셔널한 개발자가 된다면 당신의 역할은 무엇인가? 그것은 바로 AT라는 것이다.

AT: Appropriate Technology

적정 기술을 제안하고 판단하는 사람이 되어야 한다. 단순히 요즘 이 기술이 핫하고 좋대~라는 이유로 선택하면 안 된다. 적정 기술을 사용할 수 있는 사람이라면 이건 리액트가 아니라 바닐라 자바스크립트로 하는 것이 더 좋아요 같은 방식으로 이야기할 수 있다.

물론 시기에 따라 적정 기술은 바뀌겠지만, 엔지니어는 그 변화의 흐름 안에서도 적정 기술을 포착하고 제안할 수 있어야 한다. 그를 위해서 여러분들이 가져야 할 생각은 유연성이다. 편견 없이 집착하지 않는 기술. 멋진 기술이 나와도 그 기술 자체에 취하면 안 된다. 그게 다가 아니기 때문에. 본질이 무엇인지를 파악하는 기술이 중요하다. 6개월 전에는 적정 기술이 아니었던 기술이 6개월 후에는 적정 기술이 되는 일도 생긴다.

장기적으로 해결해야 하는 문제들이 있다. 어떤 부분들은 빠르게 개발해야 하고 어떤 부분들은 느리게 개발해야 한다. 그런 식으로 유연하게 대처해야 생명력이 길어진다. 그게 회사라고 하는 그룹의 존재 이유이다. 그런 의미에서 배민이 이런 고민을 하는 것이 꽤 성장했다고 생각한다.

발표 중간에 언급된 추가 정보

CBC

현업에 투입되면 가장 많이 듣고 가장 많이 하게 되는 단어 CBC = Case By Case. 입사하고 첫 몇 년은 이 말을 못 할 것이다. 너무 변화가 많기에 모든 것들은 케바케. 그만큼 상황이 복잡하고 미묘하다. 하지만 엔지니어라면 그 케바케를 여러 가지 근거를 설명할 수 있어야 한다. 그를 바탕으로 판단을 내려야 한다.

Application vs Document

둘의 가장 큰 차이점은 변화의 상태이다. 상태를 관리해야 하면 애플리케이션. 상태가 없으면 단순한 문서.

Backlinks3