Skip to content

Commit

Permalink
wrote something
Browse files Browse the repository at this point in the history
  • Loading branch information
anaclumos committed Nov 14, 2023
1 parent ae763be commit 922755c
Show file tree
Hide file tree
Showing 22 changed files with 405 additions and 43 deletions.
18 changes: 9 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,19 +26,19 @@ everything I know! [Dive down the rabbit hole now](https://cho.sh/random)!

## Last updated

Sun Nov 12 18:38:15 PST 2023
Tue Nov 14 02:38:45 PST 2023

## Stats

```
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
Language Files Lines Blanks Comments Code Complexity
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
Markdown 2230 56908 14814 0 42094 0
Markdown 2240 57174 14874 0 42300 0
CSS 70 20359 792 36 19531 0
TypeScript 59 18411 178 49 18184 165
TypeScript 59 18497 178 49 18270 165
JSON 16 1632 0 0 1632 0
YAML 10 117 0 3 114 0
YAML 11 147 0 3 144 0
SVG 9 9 0 0 9 0
Python 7 864 51 28 785 83
Plain Text 3 103 18 0 85 0
Expand All @@ -47,13 +47,13 @@ TypeScript Typings 2 15 1 4 10 0
gitignore 2 296 69 69 158 0
JavaScript 1 19 3 12 4 0
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
Total 2411 98741 15927 203 82611 248
Total 2422 99123 15987 203 82933 248
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
Estimated Cost to Develop (organic) $2,782,819
Estimated Schedule Effort (organic) 20.29 months
Estimated People Required (organic) 12.18
Estimated Cost to Develop (organic) $2,794,210
Estimated Schedule Effort (organic) 20.32 months
Estimated People Required (organic) 12.21
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
Processed 4895523 bytes, 4.896 megabytes (SI)
Processed 4911559 bytes, 4.912 megabytes (SI)
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
```
Binary file added Research/assets/656236.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Research/assets/C53193.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Research/assets/FCAC15.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion Research/journals/2022-07-05.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ slug: '/2022-07-05'

### [Delayed Messages on iOS](http://caleb.software/posts/ios-delayed-messages.html)

- Clever workaround for sending delayed messages in iOS with [[Shortcuts]] and [[Automation]].
- Clever workaround for sending delayed [[Text Message|messages]] in iOS with [[Shortcuts]] and [[Automation]].

## Interesting Webs

Expand Down
16 changes: 16 additions & 0 deletions Research/journals/2023-11-14.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
date: '2023-11-14'
lang: 'en'
slug: '/2023-11-14'
---

- [[Sequential GitHub Action Jobs]]
- [[Try Running Terminal Command If Exists]]
- [[Project Ganymede]]
- [[Cloudflare Worker]]
- [[Vitest]]
- [[Prisma]]
- [[Prisma Accelerate]]
- [[PlanetScale]]
- [[iMessage App]]
- [[Sign in with Apple]]
27 changes: 27 additions & 0 deletions Research/pages/Cloudflare Worker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
lang: 'en'
slug: '/5D7C1C'
aliases: ['Cloudflare Workers']
---

- [Cloudflare Workersยฎ](https://workers.cloudflare.com/)

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

<Tabs groupId='lang' queryString>
<TabItem value='en' label='English ๐Ÿ‡บ๐Ÿ‡ธ' lang='en-US' default>
<div lang='en-US'>

[[Cloudflare]] Worker is a [[serverless]] execution environment that allows users to create and deploy [[JavaScript]] or [[WebAssembly]] code at the [[edge network]] of [[Cloudflare]]'s global network for high-performance, low-latency applications, and dynamic content delivery.

</div>
</TabItem>
<TabItem value='ko' label='ํ•œ๊ตญ์–ด ๐Ÿ‡ฐ๐Ÿ‡ท' lang='ko-KR'>
<div lang='ko-KR'>

[[Cloudflare]] Worker๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ณ ์„ฑ๋Šฅ, ์ €์ง€์—ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ๋™์  ์ฝ˜ํ…์ธ  ์ „์†ก์„ ์œ„ํ•ด [[Cloudflare]]์˜ ๊ธ€๋กœ๋ฒŒ ๋„คํŠธ์›Œํฌ ์—ฃ์ง€์—์„œ [[JavaScript]] ๋˜๋Š” [[WebAssembly]] ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑ ๋ฐ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” [[Serverless|์„œ๋ฒ„๋ฆฌ์Šค]] ์‹คํ–‰ ํ™˜๊ฒฝ์ด๋‹ค.

</div>
</TabItem>
</Tabs>
24 changes: 24 additions & 0 deletions Research/pages/PlanetScale.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
lang: 'en'
slug: '/E00466'
---

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

<Tabs groupId='lang' queryString>
<TabItem value='en' label='English ๐Ÿ‡บ๐Ÿ‡ธ' lang='en-US' default>
<div lang='en-US'>

PlanetScale is a scalable, serverless database platform built on the open-source MySQL compatible [[Vitess]] framework, designed to handle the demands of large-scale applications with features like branch-based development, non-blocking schema migrations, and automatic sharding.

</div>
</TabItem>
<TabItem value='ko' label='ํ•œ๊ตญ์–ด ๐Ÿ‡ฐ๐Ÿ‡ท' lang='ko-KR'>
<div lang='ko-KR'>

PlanetScale์€ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์„œ๋ฒ„๋ฆฌ์Šค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”Œ๋žซํผ์œผ๋กœ, ์˜คํ”ˆ ์†Œ์Šค MySQL ํ˜ธํ™˜ [[Vitess]] ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋˜์—ˆ์œผ๋ฉฐ, ๋ธŒ๋žœ์น˜ ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ, ๋น„์ฐจ๋‹จ ์Šคํ‚ค๋งˆ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜, ์ž๋™ ์ƒค๋”ฉ ๋“ฑ์˜ ๊ธฐ๋Šฅ์œผ๋กœ ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค.

</div>
</TabItem>
</Tabs>
24 changes: 24 additions & 0 deletions Research/pages/Prisma Accelerate.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
lang: 'en'
slug: '/42D743'
---

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

<Tabs groupId='lang' queryString>
<TabItem value='en' label='English ๐Ÿ‡บ๐Ÿ‡ธ' lang='en-US' default>
<div lang='en-US'>

[[Prisma]] Accelerate is a feature of the [[Prisma]] Data Platform that provides a global [[database]] cache across over 280 locations, significantly enhancing [[database]] query speeds by up to 1000 times. It reduces [[database]] query latency to as low as 5ms while decreasing the load on your [[database]] and offers a fully managed connection pool for scalable application deployment.

</div>
</TabItem>
<TabItem value='ko' label='ํ•œ๊ตญ์–ด ๐Ÿ‡ฐ๐Ÿ‡ท' lang='ko-KR'>
<div lang='ko-KR'>

[[Prisma]] Accelerate๋Š” 280๊ฐœ ์ด์ƒ์˜ ์œ„์น˜์— ๊ธ€๋กœ๋ฒŒ [[Database|๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค]] ์บ์‹œ๋ฅผ ์ œ๊ณตํ•˜์—ฌ [[Database|๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค]] ์ฟผ๋ฆฌ ์†๋„๋ฅผ ์ตœ๋Œ€ 1000๋ฐฐ๊นŒ์ง€ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ค๋Š” [[Prisma]] ๋ฐ์ดํ„ฐ ํ”Œ๋žซํผ์˜ ๊ธฐ๋Šฅ์ด๋‹ค. [[Database|๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค]] ์ฟผ๋ฆฌ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ 5ms๊นŒ์ง€ ๋‹จ์ถ•ํ•˜๋Š” ๋™์‹œ์— [[Database|๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค]] ๋ถ€ํ•˜๋ฅผ ์ค„์ด๊ณ , ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ์™„์ „ํžˆ ๊ด€๋ฆฌ๋˜๋Š” ์—ฐ๊ฒฐ ํ’€์„ ์ œ๊ณตํ•œ๋‹ค.

</div>
</TabItem>
</Tabs>
5 changes: 3 additions & 2 deletions Research/pages/Prisma.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@ lang: 'en'
slug: '/2880B0'
---

Prisma is an open-source [[database]] toolkit developed to make it easier to work with databases in modern applications. It includes three primary tools:
Prisma is an open-source [[database]] toolkit developed to make it easier to work with databases in modern applications.

1. Prisma Client: An auto-generated and type-safe query builder for Node.js & [[TypeScript]].
2. Prisma Migrate: A declarative data modeling & migration system.
3. Prisma Studio: A modern [[database]] IDE where you can view and edit data in your [[database]].
4. [[Prisma Accelerate]]

ORM stands for Object-Relational Mapping. This programming technique allows developers to manage a [[database]] like JavaScript objects, making it easier to interact with the [[database]].
ORM stands for Object-Relational Mapping. This programming technique allows developers to manage a [[database]] like [[JavaScript]] objects, making interacting with the [[database]] easier.
62 changes: 43 additions & 19 deletions Research/pages/Project Ganymede.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,39 @@
---
lang: 'en'
slug: /9C24C1
aliases: ['Ganymede']
---

- [[The Paradoxical Moon Philosophy]]
- [[Send Separately]]
- Callisto is the code name for MessagesExtension
- Europa is the code name for Encryption Key Exchange Server

## [[2023-11-13]]

- Implemented [[Vitest]] on [[Prisma]] and [[Cloudflare Worker|Cloudflare Workers]]
- It would be boring to name tests like "A [[Text Message|texts]] B, then C tries to read it" or so, right?

![[FCAC15.png]]

- Implemented CI on [[GitHub Actions]], so that
- If the [[Vitest]] passes, deploy it to [[Cloudflare Worker|Cloudflare Workers]]

### When Test Fails

- Refuses to Deploy

![[656236.png]]

### When Test Passes

- Deploys

![[C53193.png]]

## [[2023-11-11]]

Used Prisma, Prisma Accelerate, PlanetScale, and Cloudflare Workers to create a simple server for the [[Ganymede Table Structure]]. Prisma layer makes 3 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.](https://planetscale.com/blog/integrate-cloudflare-workers-with-planetscale)
Used [[Prisma]], [[Prisma Accelerate]], [[PlanetScale]], and [[Cloudflare Worker|Cloudflare Workers]] to create a simple server for the [[Ganymede Table Structure]]. [[Prisma]] layer makes 3 requests to the [[Database|DB]] per 1 request to the server, albeit it probably would hit the [[Prisma Accelerate]] Layer, we can later optimize it with [this document.](https://planetscale.com/blog/integrate-cloudflare-workers-with-planetscale)

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

Expand Down Expand Up @@ -38,15 +62,15 @@ Used Prisma, Prisma Accelerate, PlanetScale, and Cloudflare Workers to create a
### Also

- [[PhotoPicker]]
- Finished reading the Apple Sign-In UUID from the iMessage Extension side: had to use App Groups and UserDefaults
- Finished reading the Apple Sign-In [[UUID]] from the [[iMessage App]] side: had to use App Groups and UserDefaults

## [[2023-11-10]]

- ![[2229DC.gif]]

## [[2023-11-08]]

- It is **possible** to limit iMessage forwarding for iMessage Extensions
- It is **possible** to limit [[iMessage]] forwarding for [[iMessage App|iMessage Extensions]]
- It is **possible** to mark the iMessage with `LocalParticipantIdentifier`
- `LocalParticipantIdentifier` is different on all devices
- The simplest way would be marking:
Expand All @@ -55,7 +79,7 @@ Used Prisma, Prisma Accelerate, PlanetScale, and Cloudflare Workers to create a
- 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?!
- Solution: [[Sign in with Apple]]?!

## [[2023-10-20]]

Expand All @@ -78,42 +102,42 @@ Can attach many images

## [[2023-10-13]]

I figured out that in iOS 17, Shortcuts can send messages without confirmation. Can we use this for [[Send Separately]] or Ganymede?
I figured out that in iOS 17, [[Shortcuts]] can send [[Text Message|messages]] without confirmation. Can we use this for [[Send Separately]] or Ganymede?

## [[2023-10-12]]

- Read notifications
- Screenshot notifications
- Broadcast
- App Clip + Apple Login?
- Therefore, we name it Project 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.
- App Clip + [[Sign in with Apple|Apple Login]]?
- Therefore, we name it [[Project]] 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.

## [[2023-10-09]]

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.

![[B89B94.gif]]

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

- When sending a message
- encrypt message
- generate UUID
- When sending a [[Text Message|message]]
- encrypt [[Text Message|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 expired, the user cannot read the message again
- send [[UUID]] and encrypted [[Text Message|message]] to [[iMessage]]
- When reading the [[Text Message|message]]
- extract [[UUID]] and encrypted [[Text Message|message]]
- read KV with [[UUID]] and delete the `DecryptKey` if any necessary condition is met
- once it expired, the user cannot read the [[Text Message|message]] again

### Considerations

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

## [[Prehistoric]]

- [[Project]]. Disappearing message for [[iMessage]].
- every message self-destructs in 10 seconds
- [[Project]]. Disappearing [[Text Message|message]] for [[iMessage]].
- every [[Text Message|message]] self-destructs in 10 seconds
2 changes: 1 addition & 1 deletion Research/pages/Redwood.js.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ yarn redwood generate page about
yarn redwood g layout blog
```

## Using Prisma
## Using [[Prisma]]

### Opening Prisma Studio

Expand Down
40 changes: 40 additions & 0 deletions Research/pages/Sequential GitHub Action Jobs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---
lang: 'en'
slug: '/1C1B7E'
---

```diff
name: CI
on: push
jobs:
test:
name: Run Tests
runs-on: ubuntu-latest
steps:
- name: Check out repository code
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
- name: Setup pnpm
run: npm install -g pnpm
- name: Test Server
run: cd server && pnpm install && pnpm run test
deploy:
+ needs: test
runs-on: ubuntu-latest
name: Deploy
steps:
- name: Check out repository code
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
- name: Setup pnpm
run: npm install -g pnpm
- name: Deploy
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
workingDirectory: "server"


```
25 changes: 25 additions & 0 deletions Research/pages/Sign in with Apple.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
lang: 'en'
slug: '/C97E38'
aliases: ['Apple Login', '์• ํ”Œ ๋กœ๊ทธ์ธ', 'Apple ๋กœ๊ทธ์ธ', 'Apple ID Login', 'Apple๋กœ ๋กœ๊ทธ์ธ']
---

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

<Tabs groupId='lang' queryString>
<TabItem value='en' label='English ๐Ÿ‡บ๐Ÿ‡ธ' lang='en-US' default>
<div lang='en-US'>

"Sign in with [[Apple]]" is a privacy-focused login feature provided by [[Apple]], allowing users to securely sign in to apps and websites using their [[Apple]] ID, with the option to share minimal personal information and the ability to hide their [[Mail|email]] addresses.

</div>
</TabItem>
<TabItem value='ko' label='ํ•œ๊ตญ์–ด ๐Ÿ‡ฐ๐Ÿ‡ท' lang='ko-KR'>
<div lang='ko-KR'>

'[[Apple]]๋กœ ๋กœ๊ทธ์ธ'์€ [[Apple]]์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ์— ์ค‘์ ์„ ๋‘” ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์œผ๋กœ, ์‚ฌ์šฉ์ž๋Š” ์ตœ์†Œํ•œ์˜ ๊ฐœ์ธ ์ •๋ณด ๊ณต์œ  ์˜ต์…˜๊ณผ [[Mail|์ด๋ฉ”์ผ]] ์ฃผ์†Œ๋ฅผ ์ˆจ๊ธธ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด [[Apple]] ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ๊ณผ ์›น์‚ฌ์ดํŠธ์— ์•ˆ์ „ํ•˜๊ฒŒ ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

</div>
</TabItem>
</Tabs>
3 changes: 2 additions & 1 deletion Research/pages/Text Message.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
---
lang: 'en'
slug: '/10DC63'
aliases: ['SMS', 'Texts', '๋ฌธ์ž', '๋ฌธ์ž ๋ฉ”์‹œ์ง€', '๋ฉ”์‹œ์ง€', '๋ฌธ์ž๋ฉ”์‹œ์ง€', '๋ฌธ์ž ๋ฉ”์„ธ์ง€', '๋ฉ”์„ธ์ง€,']
aliases:
['SMS', 'Texts', '๋ฌธ์ž', '๋ฌธ์ž ๋ฉ”์‹œ์ง€', '๋ฉ”์‹œ์ง€', '๋ฌธ์ž๋ฉ”์‹œ์ง€', '๋ฌธ์ž ๋ฉ”์„ธ์ง€', '๋ฉ”์„ธ์ง€,', 'Messages', 'Message']
---

A text message is an electronic message sent from one cell phone to another over a cellular network.
6 changes: 3 additions & 3 deletions Research/pages/The Paradoxical Moon Philosophy.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,15 @@ import TabItem from '@theme/TabItem';
<TabItem value='en' label='English ๐Ÿ‡บ๐Ÿ‡ธ' lang='en-US' default>
<div lang='en-US'>

I am building Project Ganymede. It's a social app, but we will build it purely on Apple's iMessage ecosystem. It may sound counterintuitive. Why risk yourself by becoming so platform-dependent?
I am building [[Project Ganymede]]. It's a social app, but we will build it purely on Apple's iMessage ecosystem. It may sound counterintuitive. Why risk yourself by becoming so platform-dependent?

Apple is Jupiter. You can NEVER win Apple. All attempts to overthrow iMessage failed. iMessage is Apple's moat to gather more customers, and therefore iMessage social network system is getting more and more powerful. However, iMessage lacks so many features. They literally took 10 years to add "edit messages". So I think I can have an edge.

iMessage is a massive system, just like Jupiter. Compared to that, Snapchat, Messenger, and Instagram are Mars, Mercury, or... any other planet... small.

Therefore, I choose to become a moon. I will ride on top of Apple. I will be the moon of Jupiter. I will harness the best of the best of Apple. And a moon can grow to a huge scale, just like Ganymede is bigger than Mercury. That is, I can easily outsize mediocre social networks by harnessing the most out of Apple's ecosystem.
Therefore, I choose to become a moon. I will ride on top of Apple. I will be the moon of Jupiter. I will harness the best of the best of Apple. And a moon can grow to a huge scale, just like [[Project Ganymede|Ganymede]] is bigger than Mercury. That is, I can easily outsize mediocre social networks by harnessing the most out of Apple's ecosystem.

We could've named it Project **Remora**, but I think Ganymede is more [[Aesthete|aesthetic]]. Maybe Remora was more straightforward to understand. But hey, you finished reading the manifesto even though I named it Ganymede, right? So it worked ๐Ÿ˜
We could've named it Project **Remora**, but I think [[Project Ganymede|Ganymede]] is more [[Aesthete|aesthetic]]. Maybe Remora was more straightforward to understand. But hey, you finished reading the manifesto even though I named it [[Project Ganymede|Ganymede]], right? So it worked ๐Ÿ˜

</div>
</TabItem>
Expand Down
Loading

0 comments on commit 922755c

Please sign in to comment.