28 poin oleh GN⁺ 2024-01-06 | 7 komentar | Bagikan ke WhatsApp

9 tahun pengembang solo editor teks "Paper"

  • Pada 2015, ia adalah pengembang web full-stack umum yang cukup jauh dari dunia pengembangan Apple.
  • Saat menggunakan Mac, ia tertarik pada aplikasi buatan pengembang independen, lalu terinspirasi oleh iA Writer, editor Markdown yang sederhana dan elegan, untuk membuat aplikasi serupa.
  • Untuk mengembangkan editor teks native untuk Mac, ia mulai mempelajari tumpukan teknologi baru seperti Xcode, AppKit, dan Objective-C.
  • Ia menamai aplikasinya Paper dan mengejar minimalisme ekstrem dengan merancang editor sebagai persegi panjang sederhana.
  • Pada 2017, ia merilis aplikasi Mac di Mac App Store, lalu pada 2019 merilis aplikasi iOS.

Alasan memilih aplikasi native

  • Alasan memilih aplikasi native alih-alih aplikasi Electron adalah karena tujuannya memberikan pengalaman pengguna terbaik.
  • Aplikasi native ringan dan cepat, serta menawarkan lebih banyak cara untuk mewujudkan fitur unik yang berkaitan dengan teks.

Alasan memilih Objective-C

  • Pada 2015, ketika Swift masih berada di tahap awal, ia mengompilasi proyek Xcode kosong masing-masing dengan Objective-C dan Swift lalu membandingkan paket .app-nya.
  • Aplikasi Swift berukuran sekitar 5MB karena menyertakan Swift runtime, sedangkan aplikasi Objective-C sangat ringan, sekitar 100KB.
  • Karena menginginkan aplikasi yang lebih ringan untuk didistribusikan, ia memilih Objective-C.

Ketergantungan pihak ketiga

  • Paper tidak memiliki ketergantungan pihak ketiga.
  • Ia membangun semuanya sendiri untuk mendapatkan sedikit keunggulan dibanding para pesaing.
  • Sebagai contoh, mesin parsing Markdown Paper dibuat khusus dan mendukung lebih sedikit sintaks Markdown dibanding editor Markdown tradisional.

Visi

  • Visi awal Paper adalah menghadirkan fitur inti iA Writer dalam paket yang lebih elegan dan minimalis.
  • Fokusnya adalah meningkatkan konsentrasi dengan meminimalkan elemen yang dapat mengalihkan perhatian pengguna.
  • Seiring waktu, Paper menemukan posisinya di pasar dengan tetap mempertahankan minimalisme sambil menambahkan fitur secara bertahap.

Arsitektur

  • Kode Paper terdiri dari dua scope: application scope dan document scope.
  • Untuk setiap scope, ia mendefinisikan storyboard untuk menjelaskan view dan widget, lalu menggabungkan modul di dalam scope tersebut.
  • Modul adalah kelas Objective-C yang menangani sebagian fungsi di dalam aplikasi, dengan mengelompokkan fungsionalitas ke satu tempat yang terkait dengan fitur tertentu.

Kode lintas platform

  • AppKit dan UIKit mirip, tetapi juga berbeda dalam banyak hal.
  • Untuk mengatasi perbedaan itu, ia menggunakan fitur macro dan category di Objective-C.

Debugging

  • Untuk framework Apple, ia harus membaca dokumentasi alih-alih kode, dan menggunakan breakpoint untuk menganalisis stack trace hasil kompilasi.

Fitur berbayar

  • Pada 2015-17, langganan belum tersebar luas, dan pembayaran satu kali merupakan hal yang umum di app store.
  • Ia ingin menawarkan fitur berbayar dengan cara yang ramah pengguna, sehingga hanya upgrade kosmetik yang dijadikan berbayar, bukan fitur fungsional.

Penetapan harga

  • Awalnya, ia memulai dengan pembayaran satu kali sebesar $5 masing-masing untuk dua set fitur Pro.
  • Saat ini, harganya ditetapkan sebagai satu paket tunggal: $10 per bulan atau $100 seumur hidup.
  • Melalui eksperimen harga, ia menemukan bahwa pengguna bersedia membayar hingga $100 untuk aplikasi dari pengembang yang belum dikenal.

Bagian yang sulit

  • Editor teks itu kompleks, dan setiap pembaruan OS menambahkan cara baru untuk penyisipan, pembaruan, dan interaksi teks.

Gimmick

  • Ia menambahkan fitur menyenangkan seperti window resize bounce yang terinspirasi dari aplikasi Things.

Opini GN⁺:

  1. Pendekatan inovatif: Mengesankan bahwa sang pengembang membangun Paper dengan menempatkan pengalaman pengguna sebagai prioritas utama meski tidak punya pengalaman dalam pengembangan aplikasi native. Ini menunjukkan betapa pentingnya desain yang berpusat pada pengguna dalam pengembangan perangkat lunak.
  2. Pembelajaran dan pertumbuhan: Proses mempelajari tumpukan teknologi baru lalu membangun produk dengannya dapat menjadi inspirasi bahkan bagi software engineer pemula. Ini menegaskan bahwa pembelajaran berkelanjutan dan keberanian menghadapi tantangan sangat penting untuk bertumbuh sebagai pengembang.
  3. Pentingnya pengalaman pengguna: Salah satu faktor keberhasilan Paper adalah perhatian detail terhadap pengalaman pengguna dan fokus pada minimalisme. Ini menunjukkan betapa pentingnya memahami apa yang benar-benar diinginkan pengguna lalu mencerminkannya dalam produk.

7 komentar

 
woung717 2024-01-06

Sebagian besar dokumentasi pengembangan Apple memang kurang ramah, jadi kita harus benar-benar mengubek-ubek dokumentasinya... lalu kalau informasinya masih kurang, sering juga ada situasi di mana kita harus membongkar interface SDK... dalam arti lain, ini juga terasa mengagumkan.

 
ndrgrd 2024-01-06

Saya penasaran apa yang dimaksud dengan upgrade yang bersifat kosmetik, ternyata di teks aslinya visual changes.
Apakah kata yang setara dengan "bersifat kosmetik" memang digunakan? Saya baru pertama kali melihatnya.

 
geeker 2024-01-08

Karena neo adalah bot AI, sepertinya terjemahannya jadi terasa mekanis wkwk

 
apkas 2024-01-07

Teks aslinya adalah cosmetic upgrade.

 
cosine20 2024-01-08

Kalau begitu, peningkatan dari sisi estetika tampaknya lebih bagus...

 
ragingwind 2024-01-06

Dia tampak seperti pengembang yang layak dijadikan panutan.

 
GN⁺ 2024-01-06
Komentar Hacker News
  • "Bagian-bagian kecil di pinggiran justru terasa seperti sihir"

    • Pengguna mungkin awalnya tidak menyadari detail-detail halus dalam aplikasi, tetapi seiring waktu mereka akan menemukannya.
    • Fitur tambahan yang dibuat dengan cermat seperti ini membuat pengguna beralih dari sekadar menyukai aplikasi menjadi mencintainya.
    • Ini memberi kesan bahwa pengembang memahami penggunanya, dan produknya dirawat dengan baik.
    • Ia memuji aplikasi Procreate sebagai contoh, karena antarmuka pengguna (UI)-nya tetap ringkas namun memiliki banyak fitur tersembunyi yang bisa ditemukan.
  • "Tulisan yang sangat bagus berdasarkan 15 tahun pengalaman sebagai pengembang aplikasi iOS"

    • Disebutkan bahwa keputusan untuk tetap berpegang pada pengembangan native, menghindari dependensi pihak ketiga, dan menggunakan Objective-C adalah keputusan yang baik.
    • Meski sudah beralih ke Swift, terkadang ia merindukan kelebihan Objective-C.
    • Ia mengatakan telah mengunduh dan mencoba aplikasinya, dan menyukai petunjuk kecil yang ada di menu bar.
  • "Kemungkinan pengembangan dengan sedikit/tanpa dependensi di platform Apple"

    • Berkat kekayaan dan kedalaman AppKit/UIKit, aplikasi matang dapat dibuat secara praktis tanpa elemen pihak ketiga.
    • Disebutkan juga bahwa framework Apple tetap kompetitif bahkan jika dibandingkan dengan framework lain seperti Qt.
  • "Perkembangan Swift dan spekulasi tentang optimasi bawaan platform atau biner"

    • Sejak Swift 5, ABI (Application Binary Interface) telah distabilkan.
    • Ia menyatakan bahwa keputusan untuk hanya menggunakan Swift sejak 2014 berjalan dengan baik.
    • Untuk SwiftUI, ia merasa masih banyak hal yang perlu berkembang sebelum bisa menggantikan UIKit/AppKit.
  • "Ketidakpercayaan terhadap pemilihan dependensi dan pentingnya belajar"

    • Ia mengungkapkan keengganan untuk menambahkan paket dan library eksternal sebelum menulis kode.
    • Pendekatan penulis yang mengubah kekurangan ekosistem Apple menjadi pengalaman belajar yang positif dinilai sangat baik.
  • "Permintaan materi belajar dan rekomendasi tentang AppKit dan pengembangan Mac"

    • Disebutkan bahwa ia kesulitan menemukan informasi tentang pengembangan Mac.
    • Ia menjelaskan bahwa dokumentasi terbaru Apple kurang memadai, sementara dokumentasi lama juga tidak diperbarui untuk Swift, sehingga ia harus bergantung pada autocomplete Xcode.
  • "Perhatian pada detail dan rasa hormat terhadap jiwa craftsmanship"

    • Ia sangat menghargai perhatian penulis terhadap detail dan jiwa craftsmanship, serta memuji tulisannya sebagai sesuatu yang indah dan menginspirasi.
  • "Penyebutan menarik tentang gesture memutar untuk undo"

    • Disebutkan bahwa gesture itu mengingatkannya pada adegan tokoh utama film "Doctor Strange" saat memutar balik dan memajukan waktu.
  • "Pujian atas minimalisme blog dan aplikasi"

    • Ia mengungkapkan kegembiraan saat menggunakan aplikasi yang ia buat, dan mengatakan merasakan emosi serupa saat menggunakan vim-motions atau Neovim.
  • "Keterkejutan atas kurangnya akses ke kode SDK dalam ekosistem pengembangan Apple"

    • Ia merasa heran dengan kenyataan bahwa orang harus melihat langsung kode assembly, dan meminta konfirmasi soal itu."