28 puan yazan GN⁺ 2024-01-06 | 7 yorum | WhatsApp'ta paylaş

"Paper" metin editörünün solo geliştiricisinin 9 yılı

  • 2015'te sıradan bir full-stack web geliştiricisiydi ve Apple geliştirme dünyasından uzaktı.
  • Mac kullanırken bağımsız geliştiricilerin uygulamalarına ilgi duymaya başladı; basit ve zarif bir Markdown editörü olan iA Writer'dan ilham alarak benzer bir uygulama yapmaya karar verdi.
  • Mac için yerel bir metin editörü geliştirmek amacıyla Xcode, AppKit, Objective-C gibi yeni bir teknoloji yığınını öğrenmeye başladı.
  • Uygulamaya Paper adını verdi ve aşırı minimalizmi hedefleyerek editörü sade bir dikdörtgen olarak tasarladı.
  • 2017'de Mac uygulamasını Mac App Store'da yayımladı, 2019'da ise iOS uygulamasını çıkardı.

Yerel uygulamayı seçme nedeni

  • Electron uygulaması yerine yerel uygulamayı seçmesinin nedeni, en iyi kullanıcı deneyimini sunmayı hedeflemesiydi.
  • Yerel uygulamalar hafif ve hızlıdır; ayrıca metinle ilgili özgün işlevleri hayata geçirmek için daha fazla yöntem sunar.

Objective-C'yi seçme nedeni

  • 2015'te Swift henüz erken aşamadayken, Objective-C ve Swift ile ayrı ayrı boş Xcode projeleri derleyip ortaya çıkan .app paketlerini karşılaştırdı.
  • Swift uygulaması Swift runtime'ını içerdiği için yaklaşık 5MB'tı; Objective-C uygulaması ise yaklaşık 100KB ile son derece hafifti.
  • Daha hafif, dağıtılabilir bir uygulama istediği için Objective-C'yi seçti.

Üçüncü taraf bağımlılıkları

  • Paper'ın hiçbir üçüncü taraf bağımlılığı yok.
  • Her şeyi kendisi inşa ederek rakiplerine karşı küçük bir avantaj elde etti.
  • Örneğin, Paper'ın Markdown ayrıştırma motoru özelleştirilmiş durumda ve geleneksel Markdown editörlerine kıyasla daha az Markdown sözdizimini destekliyor.

Vizyon

  • Paper'ın ilk vizyonu, iA Writer'ın temel işlevlerini taşıyan ama daha zarif ve daha minimalist bir pakette sunulan bir ürün oluşturmaktı.
  • Kullanıcının dikkatini dağıtan unsurları en aza indirerek odaklanmayı artırmaya odaklandı.
  • Zamanla Paper, minimalizmini korurken kademeli olarak özellik ekleyerek pazardaki yerini buldu.

Mimari

  • Paper'ın kodu iki scope'tan oluşuyor: uygulama kapsamı ve belge kapsamı.
  • Her kapsam için, görünümleri ve widget'ları tanımlayan ve kapsam içindeki modülleri birleştiren bir storyboard tanımlandı.
  • Modüller, uygulama içindeki işlevlerin bir bölümünden sorumlu Objective-C sınıflarıdır; işlevleri belirli özelliklerle ilişkili tek bir yerde toplar.

Çapraz platform kodu

  • AppKit ve UIKit benzer görünse de birçok açıdan farklıdır.
  • Bu farkları çözmek için Objective-C'nin macro ve category özelliklerini kullandı.

Hata ayıklama

  • Apple framework'lerinde kod yerine dokümantasyonu okumak gerekir; ayrıca breakpoint kullanarak derlenmiş stack trace'i analiz eder.

Ücretli özellikler

  • 2015-17 döneminde abonelikler henüz yaygın değildi ve uygulama mağazalarında tek seferlik ödeme olağandı.
  • Ücretli özellikleri kullanıcı dostu bir şekilde sunmak istediği için, işlevsel değil yalnızca kozmetik yükseltmeleri ücretli yaptı.

Fiyatlandırma

  • İlk başta iki ayrı Pro özellik seti için ayrı ayrı 5 dolarlık tek seferlik ödeme ile başladı.
  • Şu anda fiyatlandırma, aylık 10 dolar veya ömür boyu 100 dolar olan tek bir paket şeklinde.
  • Fiyat deneyleri sayesinde, kullanıcıların tanınmayan bir geliştiricinin uygulamasına 100 dolara kadar ödeme yapmaya istekli olabileceğini keşfetti.

Zorlu kısımlar

  • Metin editörleri karmaşıktır ve her OS güncellemesiyle birlikte metin ekleme, güncelleme ve etkileşim için yeni yöntemler eklenir.

Gimmick'ler

  • Things uygulamasından ilham alan pencere yeniden boyutlandırma sekmesi gibi keyifli özellikler ekledi.

GN⁺ görüşü:

  1. Yenilikçi yaklaşım: Geliştiricinin, yerel uygulama geliştirme konusunda deneyimi olmamasına rağmen kullanıcı deneyimini en öncelikli unsur olarak görerek Paper'ı geliştirmiş olması etkileyici. Bu, yazılım geliştirmede kullanıcı merkezli tasarımın ne kadar önemli olduğunu gösteriyor.
  2. Öğrenme ve büyüme: Yeni bir teknoloji yığını öğrenip bunun üzerinden bir ürün ortaya çıkarması, başlangıç seviyesindeki yazılım mühendisleri için de ilham verici olabilir. Bu, sürekli öğrenmenin ve meydan okumanın geliştirici olarak büyümek için ne kadar kritik olduğunu vurguluyor.
  3. Kullanıcı deneyiminin önemi: Paper'ın başarılı unsurlarından biri, kullanıcı deneyimine gösterilen özen ve minimalizme olan güçlü odak. Bu da kullanıcıların gerçekten ne istediğini anlayıp bunu ürüne yansıtmanın ne kadar önemli olduğunu ortaya koyuyor.

7 yorum

 
woung717 2024-01-06

Apple geliştirici belgelerinin çoğu pek kullanıcı dostu değil; bu yüzden belgeleri iyice didiklemek gerekiyor... bir de bilgi yetmezse SDK arayüzlerini kurcalamanız gereken durumlar çok oluyor... bu açıdan bakınca da saygı uyandırıyor.

 
ndrgrd 2024-01-06

"Makyaj niteliğinde yükseltme"nin ne olduğunu merak etmiştim; meğer özgün metinde visual changes yazıyormuş.
"Makyaj niteliğinde" diye bir ifade kullanılıyor mu? Ben bunu ilk kez gördüm.

 
geeker 2024-01-08

neo bir AI bot olduğu için çeviri mekanik olmuş galiba haha

 
apkas 2024-01-07

Orijinali biraz kozmetik bir yükseltme gibi duruyor.

 
cosine20 2024-01-08

O zaman estetik bir yükseltme gibi bir şey daha iyi görünüyor...

 
ragingwind 2024-01-06

Gerçekten rol model olabilecek bir geliştirici.

 
GN⁺ 2024-01-06
Hacker News yorumları
  • "Asıl sihir, kenarda köşede kalan incelikli detaylarda"

    • Kullanıcılar başlangıçta uygulamanın ince ayrıntılarını fark etmeyebilir, ancak zamanla bu detayları keşfeder.
    • Bu tür özenli ek özellikler, kullanıcının uygulamayı sadece beğenmesinden çıkıp sevmesine yol açan unsurlar olur.
    • Geliştiricinin kullanıcıyı anladığı ve ürünün iyi bakıldığını hissettirir.
    • Procreate uygulaması örnek verilerek, kullanıcı arayüzünü (UI) sade tutarken aynı zamanda keşfedilebilir pek çok gizli özellik barındırması övülür.
  • "iOS uygulama geliştiricisi olarak 15 yıllık deneyime dayanan harika bir yazı"

    • Native geliştirmede ısrar etmesi, üçüncü taraf bağımlılıklardan kaçınması ve Objective-C kullanma kararlarının isabetli olduğu belirtilir.
    • Swift'e geçilmiş olsa da zaman zaman Objective-C'nin avantajlarının özlendiği söylenir.
    • Uygulamanın indirilip denendiği ve menü çubuğundaki küçük ipuçlarının beğenildiği ifade edilir.
  • "Apple platformlarında düşük/sıfır bağımlılıkla geliştirme yapabilme imkânı"

    • AppKit/UIKit'in zenginliği ve derinliği sayesinde üçüncü taraf bileşenler olmadan da cilalı uygulamalar üretmenin pratik olduğu belirtilir.
    • Qt gibi diğer framework'lerle karşılaştırıldığında da Apple'ın framework'lerinin rekabetçi olduğu söylenir.
  • "Swift'in ilerleyişi ve platforma gömülü olma ya da binary optimizasyonlarına dair tahminler"

    • Swift 5 ile ABI (Application Binary Interface) kararlılığı sağlanmıştır.
    • 2014'ten beri yalnızca Swift kullanma kararının iyi sonuç verdiği belirtilir.
    • SwiftUI'nin ise hâlâ UIKit/AppKit'in yerini alacak kadar olgunlaşması için kat etmesi gereken çok yol olduğu düşünülür.
  • "Bağımlılık seçimine yönelik güvensizlik ve öğrenmenin önemi"

    • Kod yazmaya başlamadan önce dış paketler ve kütüphaneler eklemeye karşı bir tepki dile getirilir.
    • Yazarın Apple ekosisteminin dezavantajlarını olumlu bir öğrenme deneyimine dönüştürme yaklaşımı takdir edilir.
  • "AppKit ve Mac geliştirme için öğrenme kaynakları ve tavsiye isteği"

    • Mac geliştirme hakkında bilgi bulmakta zorlanıldığı belirtilir.
    • Apple'ın güncel dokümantasyonunun yetersiz olduğu, eski belgelerin de Swift için güncellenmemiş olması nedeniyle Xcode otomatik tamamlamaya bel bağlamak zorunda kalındığı anlatılır.
  • "Detaylara gösterilen özen ve ustalığa duyulan saygı"

    • Yazarın ince işçiliği ve ustalığı takdir edilir; yazının güzel ve ilham verici olduğu söylenir.
  • "Çevirerek geri alma jestine dair ilginç bir gönderme"

    • Bunun, "Doctor Strange" filmindeki kahramanın zamanı geri ve ileri sardığı sahneleri hatırlatan bir jest olduğu söylenir.
  • "Blogun ve uygulamanın minimalizmine övgü"

    • Kendi yaptığı uygulamayı kullanırken duyduğu keyfi dile getirir; vim-motions veya Neovim kullanırken de benzer bir his yaşadığını söyler.
  • "Apple geliştirme ekosisteminde SDK koduna erişim eksikliğine duyulan şaşkınlık"

    • Assembly koduna doğrudan bakmak zorunda olunmasına şaşırıldığını ifade eder ve bunun doğrulanmasını ister.