cho.sh
노트 2,244개
X에서 좋아요I 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. ❤️X에서 좋아요It’s time to bring back Cafe CursorX에서 게시yo @pendev i can't live share edit a .pen file? it's the most needed featureX에서 게시I'm coining a word "Agentsplaining" Agents condescendingly assuming the user don't know fuck and repeating the obviousX에서 답글@jayhxmo @raycast Hard to explain. It's the small detailsX에서 게시@raycast iOS keyboard is insanely good. Might resub Raycast pro just cuz of thisX에서 답글@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.2X에서 좋아요@anaclumos don't know what is actually improved 👀X에서 게시am i the only one underimpressed with 5.2 fableX에서 답글@bvvst great minds think alike https://t.co/YRFWhb1mcOX에서 좋아요Claude 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.X에서 답글@akshayadinesh19 @bot can we please BYOM for botsX에서 좋아요To be fair, the Chinese models have a much lower refusal rateX에서 좋아요F*CK IT, im creating a library of AI slop indicators. my feed is full of taste larpers. stay tuned https://t.co/5Muv8nQRm3X에서 좋아요JENSEN! THATS NOT WHAT WE MEANT BY CHINESE MODELS!!!!!!!X에서 좋아요my 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!!!!X에서 좋아요@thefarmers_Dog it stands for Egg GzampleX에서 좋아요🦍 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 🧵:X에서 좋아요There'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 outX에서 답글@saradu birds eye viewX에서 좋아요Applications 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/NCvmrNC53cX에서 좋아요We'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.X에서 재게시Oh boy. https://t.co/X7SSskGuGvX에서 좋아요RIP .si domain squatters
Project Ganymede

Project Ganymede

주의

1년 넘은 글이라 오래됐을 수 있습니다

  • Added text placeholders. It was surprisingly hard to do it in UITextView and I'm surprised there's no easy way of doing this.
  • Tried to modify ProgressBar but failed
  • Completed Read View.

287818

Wrote a simple read view. Added timer for sending action. The send screen is done. All we need to do is the read screen.

Also, AI-gile could be another programming pattern. Gen Z does not know file directories. The gist is that we don't need to "organize" files as semantic search improves because whatever we search will pop up automatically. Just have a giant file-pile and semantic search when you need something. These searches have now become so smart that they search for synonyms and deeply nested contexts and text inside images.

  • Added LogTail to Europa
  • Implemented Encryption and Attaching

7681FE

Rewriting Callisto with UIKit. Primarily because of the extensive jumble mess with .

Restored server with

Server Crashed. migrating to Fly.io... Because I wanted a Vercel-like experience for backends. However migrating is a pain... because originally I wrote everything as functions. Such a stress, app is getting delayed and delayed

9A391C

485E0B

F47E19

  • There was a property in MSMessage of shouldExpire. The problem is that the recipient can override to keep the message, which we don't want.
  • Implemented Message Reading Functionality
  • I implemented proper loading view features, with fade-in and fade-out.

5D373F

  • Refactored a lot of files
text
Callisto
├── Assets.xcassets
│   ├── Contents.json
│   └── iMessage App Icon.stickersiconset
│       └── Contents.json
├── Base.lproj
│   └── MainInterface.storyboard
├── Callisto.entitlements
├── CallistoLoadingView.swift
├── CallistoMessageReadingView.swift
├── CallistoMessageWritingView.swift
├── CallistoService.swift
├── CallistoView.swift
├── Info.plist
└── MessagesViewController.swift

  • Linked the client side to
    • request server
    • pack it as MSMessage
    • send the message
    • dismiss the keyboard & request a compact presentation style
  • Pink Bubble?

CD9A62

231113

  • Implemented Vitest on Prisma and Cloudflare Workers
    • It would be boring to name tests like "A texts B, then C tries to read it" or so, right?

B9D4E6

  • Implemented CI on GitHub Actions, so that
    • If the Vitest passes, deploy it to Cloudflare Workers

When Test Fails

  • Refuses to Deploy

661CA2

When Test Passes

  • Deploys

92533C

Used Prisma, Prisma Accelerate, , and Cloudflare Workers to create a simple server for the . Prisma layer makes three requests to the DB per 1 request to the server, albeit it probably would hit the Prisma Accelerate Layer, we can later optimize it with this document.

Composing Messages with 3 People Group Chat (Writer, Reader 1, Reader 2)

677F5A

When the Writer Tries to Read (Invalid)

3C6D29

When the Reader Tries to Read (Valid)

10F013

When the Reader Re-requests to Read (Invalid)

8CB950

When Another Reader Requests to Read (Valid)

A08F59

When an Unauthorized User Requests to Read (Invalid)

D54DB2

Also

  • Finished reading the Apple Sign-In UUID from the iMessage App side: had to use App Groups and UserDefaults

DF7DE6

  • It is possible to limit iMessage forwarding for iMessage Extensions
  • It is possible to mark the iMessage with LocalParticipantIdentifier
  • LocalParticipantIdentifier is different on all devices
  • The most straightforward way would be marking:
    • Set LocalParticipantIdentifier to true on reading (on the server)
    • Reject if LocalParticipantIdentifier is already true.
  • Problem: If the user deletes and reinstalls the app, LocalParticipantIdentifier changes. So the user can read unlimited times if the uninstall & reinstall
  • Mitigation: Assign UUID for each message. Each message will have LocalParticipantIdentifier + RemoteParticipantIdentifiers count as the maxRead. This will at least 'limit' the max read count.
  • Problem: on a Group Chat setting, a user can read unlimited times instead of another participant.
  • Solution: Sign in with Apple?!

I can attach many images

A6A88D

SwiftUI Metal Shader Effects - iOS 17 - WWDC 2023
Burn Paper with a Single Shader | Blender Tutorial

4A19CD

7637E1

3185EF

In iOS 17, can send messages without confirmation. Can we use this for or Ganymede?

  • Read notifications
  • Screenshot notifications
  • Broadcast
  • App Clip + Apple Login?
  • Therefore, we name it Ganymede. You can NEVER win Apple. It is the most massive system, just like Jupiter. Therefore, we choose to become a moon. The moon of Jupiter. And a moon can be bigger than planets. Ganymede is bigger than Mercury.

I finished some working prototypes. Some concerns: It seems like the transcript MSMessage is an immutable object. We might consider server approaches, such as KV storage.

4425A0

I don't want to store any encrypted or decrypted messages on the server. So we can consider something as:

  • When sending a message
    • encrypt message
    • generate UUID
    • write to KV storage as UUID → DecryptKey
    • send UUID and encrypted message to iMessage
  • When reading the message
    • extract UUID and encrypted message
    • read KV with UUID and delete the DecryptKey if any necessary condition is met
    • once it expires, the user cannot read the message again

Considerations

  • How do you store different strategies (After 5 seconds? 10 seconds? 15 seconds?)
  • Group chats
  • Photo / Video Payload
  • Screenshot detections and notifications

  • . Disappearing message for iMessage.
  • every message self-destructs in 10 seconds
백링크28