Labs · พื้นผิวด้าน App
แอปที่สร้างพอดีตัว และสร้างไว้ให้คงอยู่
ไม่ใช่ผลิตภัณฑ์สำเร็จที่ดัดแปลงให้ท่าน — แต่สร้างขึ้นเพื่อหน้างานจริงที่มันต้องทำงาน: การศึกษา อุตสาหกรรม หรือภาคธุรกิจใดก็ตามที่ท่านนำมา แกน Rust ที่ทำงานได้แม้ไม่มีสัญญาณแม้ขีดเดียว เป็น native บนทุกหน้าจอ และออกแบบให้ข้อมูลของท่านยังเป็นของท่าน
ไม่ใช่เทมเพลตที่เปลี่ยนสีให้ท่าน แต่เป็นซอฟต์แวร์ที่ขึ้นรูปตามงานที่มันมีไว้เพื่อทำจริง
ห้องเรียน สายการผลิต หรือทีมงานภาคสนาม — แอปถูกเขียนขึ้นตามวิธีที่งานนั้นเกิดขึ้นจริง ไม่ใช่เขียนไว้เพื่อการสาธิต ภาคธุรกิจเป็นผู้กำหนดรูปของแอป ไม่ใช่ทางกลับกัน
ชั้นใต้ดิน พื้นที่ห่างไกล หรือจุดที่สัญญาณตาย — งานไม่หยุด ตัวเครื่องเก็บรักษาความจริงไว้ และกระทบยอดกับ edge ทันทีที่สัญญาณกลับมา
ไม่มีบัญชีที่ท่านออกไม่ได้ ไม่มีข้อมูลที่ถูกจับเป็นตัวประกัน แกนกลางเป็นของท่าน บันทึกเป็นของท่าน และวิศวกรผู้สร้างคือผู้ที่รับผิดชอบตอบด้วยตัวเอง
สี่ตัวเลขจากแอปที่สร้างไว้ให้คงทน
ฝีมือของแอปที่จริงจังคือแกนกลางที่คอมไพเลอร์เฝ้าคุม ทำงานต่อได้แม้ไม่มีสัญญาณ และเดินได้บนทุกหน้างานจากแหล่งความจริงเพียงแหล่งเดียว
// the core of the app · typed, so a wrong state cannot be reached #[derive(Clone, Deserialize)] struct Job { id: Uuid, site: SiteId, state: State, // Scheduled → OnSite → Done — nothing else is legal readings: Vec<Reading>, synced: bool, // the device knows what the edge has not yet seen } impl Job { /// A job closes only once every required reading is in. fn can_close(&self) -> bool { matches!(self.state, State::OnSite) && self.readings.iter().all(Reading::valid) } }
// works at zero bars · the floor does not wait for a signal fn record(&mut self, r: Reading) { self.readings.push(r.clone()); self.queue.push(Op::Add(r)); // kept on the device, durable self.synced = false; } /// When the signal returns, the device reconciles — in order, idempotent. async fn reconcile(&mut self, edge: &Edge) -> Result<()> { for op in self.queue.drain(..) { edge.apply(op).await?; // the edge is the record; the device, the witness } self.synced = true; Ok(()) }
# one core, every floor it must run on [targets] ios = "aarch64-apple-ios" # a thin Swift shell over the Rust core android = "aarch64-linux-android" # a thin Kotlin shell over the same core desktop = "x86_64 · aarch64" # Windows · macOS · Linux # the logic is written once, in Rust. only the shell changes per floor. # Swift and Kotlin carry the screen; Rust carries the truth.
เหตุใดแอปที่สร้างเพื่อหน้างานของท่านจึงเหนือกว่าผลิตภัณฑ์สำเร็จที่ดัดแปลงให้พอใส่ได้
ผลิตภัณฑ์ที่ดัดแปลงมาไม่สามารถสร้างขึ้นเพื่อหน้างานของท่านได้ — เพราะมันถูกสร้างขึ้นก่อนที่ใครจะรู้จักหน้างานของท่าน แอปที่ต้องออนไลน์เท่านั้นไม่สามารถวางใจได้ในที่ที่สัญญาณตาย — เพราะการรอคอยถูกฝังอยู่ในตัวมันเอง นี่คือเหตุผลที่เราเขียนแกน Rust เพียงแกนเดียว ให้คอมไพเลอร์เฝ้าคุม และลงนามกำกับด้วยตัวเอง — และเป็นเหตุผลที่เราเสนอราคาตามที่วัดได้ ไม่ใช่ราคาติดชั้นวาง
ก่อนจะเขียนโค้ดบรรทัดแรก นี่คือวิธีที่เรารักษางานของท่าน ส่วนนี้ไม่มีการต่อรอง
ที่นี่ NDA เป็นค่าเริ่มต้น ไม่ใช่รายการขายเพิ่ม สิ่งที่ท่านส่งมามีวิศวกรเพียงคนเดียวได้อ่าน ไม่มีผู้อื่น — ไม่มีการขาย ไม่มีการแบ่งปัน และไม่มีการส่งต่อ
ข้อมูลรับรองและบันทึกทั้งหมดอยู่ในบ้านของท่าน ภายใต้สิทธิ์ขั้นต่ำที่จำเป็น เราไม่เก็บสำเนาที่ไม่จำเป็น และไม่มีสิ่งใดออกไปพ้นมือท่านโดยไม่มีคำอนุญาตของท่าน
สิ่งที่ทำงานอยู่ในบ้านของท่าน ท่านอ่านและตรวจสอบได้ — ไม่มีกล่องดำที่ต้องเชื่อโดยไม่ได้เห็น ห้องเครื่องยังเป็นของเรา สิ่งที่ท่านใช้งานเป็นของท่าน
สองบรรทัด — หน้างานที่มันต้องทำงาน และงานที่มันต้องรับไว้ เราอ่านด้วยตัวเอง และตอบด้วยตัวเอง
ข้อความอยู่บนหน้าจอในซูริกแล้ว — ไม่ใช่ในคิว ไม่ใช่ในระบบตั๋วงาน วิศวกรผู้จะสร้างงานนี้เป็นผู้อ่าน และเขียนตอบกลับด้วยตัวเอง
·