2 puan yazan GN⁺ 2023-10-17 | 1 yorum | WhatsApp'ta paylaş
  • Stocketa, COVID karantinasının ilk günlerinde, Mart 2020’de Swift ve SwiftUI öğrenmek için kişisel bir proje olarak başladı; 2 yılı aşkın süre boyunca haftada 10–20 saat geliştirildi ancak App Store’da yayımlanmadı
  • Amaç, farklı aracı kurumlara ve finansal hizmetlere dağılmış varlıkları tek yerde görmek; işlem bazında kâr/zarar ile gerçekleşmiş ve gerçekleşmemiş kâr/zararı kontrol edebilen gündelik yatırımcılara yönelik bir portföy takip uygulaması yapmaktı
  • Uygulama, standart iOS bileşenlerinden çok özel tasarlanmış etkileşimlere odaklandı; pull-to-search, hisse kartları, özel sheet ve menüler, kaydırma aksiyonları, widget’lar, TSV içe aktarma gibi özellikler uygulandı
  • Yayının önündeki en büyük pratik engel finansal veri API’leriydi; IEX’in kalite ve kapsam sorunları, aylık 100 dolarlık sağlayıcının güvenilirliği ve aylık 2.000 doların üzerindeki ticari veri fiyatları bağımsız bir uygulamaya uymuyordu
  • LLC, Node/Express backend, yaklaşık 1.000 kişilik TestFlight ve binlerce kişilik bekleme listesine rağmen veri maliyetleri, müşteri desteği yükü ve zaman yetersizliği nedeniyle proje rafa kaldırıldı; SwiftUI öğrenme deneyimi ise daha sonra Rewind AI’daki çalışmalara doğrudan taşındı

Stocketa’nın çözmeye çalıştığı sorun

  • Stocketa, farklı yerlere dağılmış yatırım varlıklarını tek ekranda göstermeyi hedefleyen iyi tasarlanmış bir portföy takip uygulaması olmayı amaçladı
    • Kişisel olarak, farklı aracı kurumlara ve finansal hizmetlere dağılmış varlıkları kontrol etmenin zahmetli olması deneyiminden doğdu
    • Yalnızca fiyat kontrolü değil, kendi maliyet bazını yansıtan gerçek işlem bazlı kâr/zararı görmek isteniyordu
  • O dönemdeki seçenekler bu ihtiyaca uymuyordu
    • Apple Stocks gibi basit hisse uygulamaları grafik ve haber sunuyordu ama elde tutulan adetleri ve kâr/zararı takip etmiyordu
    • Robinhood gibi aracı kurum uygulamaları yalnızca o aracı kurumdaki varlıkları gösteriyordu
    • TradingView gibi gelişmiş servisler mobil odaklı değildi ya da istenen ölçüde zarif bir deneyim sunmuyordu
    • Personal Capital gibi yatırım danışmanlığı servislerinde hesap bağlama özelliği vardı ancak tekil varlıkları derinlemesine görmek zordu ve odak kendi danışmanlık hizmetlerini satmaktaydı
    • App Store’daki küçük ölçekli portföy takip uygulamalarının tasarımı ve UX’i tatmin edici değildi
  • Mevcut finans uygulamaları genellikle bilgi yoğunluğunu önceleyip kullanıcıyı listeden detay ekranlarına tekrar tekrar sokuyordu; Stocketa ise ilk ekrandaki kartların içinde daha fazla bilgi göstermeye çalıştı

Özel UI ile kurulan uygulama yapısı

  • Stocketa, tek bir feed ve hisse kartlarını merkeze alıp çevredeki UI kromunu en aza indirecek şekilde tasarlandı
    • Standart tab bar ya da navigasyon başlığı kullanmamaya çalışıldı
    • Özelliklerin çoğunu ana zaman akışındaki hisse kartlarının içine koyan bir yapıydı
  • Neredeyse tüm UI, SwiftUI tabanlı özel bileşenlerle yapıldı
    • pull-to-refresh yerine yeni sembol bulup eklemeye yarayan pull-to-search kullanıldı
    • Hisse kartları; grafik üzerinde scrub etme, kaydırma aksiyonları ve temel istatistikler gibi bilgilerin çoğunu satır içinde sunuyordu
    • Bir karta dokunulduğunda mevcut kart yerinde kalıyor, haberler ve portföy detay kartları animasyonla beliriyordu; çekirdek uygulamada overlayPreferenceValue ve anchorPreference kullanıldı
    • Özel sheet’lerde tarih seçici, bilgilendirme ekranı, yıldızların parladığı arka plan ve sürüklemeye bağlı arka plan saydamlığı interpolasyonu yer aldı
    • Özel uygulama menüsü, ücretli plan veya üyelik durumunu gösterecek alan sunuyor; dokunma ya da kaydırmayla kapatılabilecek şekilde tasarlandı
  • Kaydırma aksiyonları ve başlık da doğrudan uygulandı
    • Kaydırma mesafesine göre aksiyonlar hareket ediyor, belirli bir eşik aşılınca seçili duruma animasyonla geçiyordu
    • Başlık düğmesi sayfanın tepesinde kenarlıksız görünürken, kaydırma sırasında hafif bir düğmeye dönüşüyordu
    • Stocketa metni kaydırmaya bağlı olarak yukarı doğru kaybolacak şekilde interpole edildi

İşlem takibi ve uygulama özellikleri

  • İlk uygulama; hisse kartı scroll view’u, grafikler ve veritabanı kalıcılığıyla başladı
    • Başta Core Data kullanıldı, daha sonra Firebase’e geçildi
    • Finansal veri sağlayıcı çağrıları ve polling eklendi; ilk sağlayıcı olarak IEX kullanıldı
  • Stocketa yalnızca sembol başına elde tutulan hisse adedini saklamıyor, işlem birimi bazında takip uyguluyordu
    • Alım ve satım başına toplam kâr/zararın yanında işlem bazlı kâr/zararı da göstermeyi hedefledi
    • Satışta FIFO, LIFO gibi maliyet bazı yöntemlerinin bilinmesi ve hisselerin hangi geçmiş işlemden satıldığının hesaplanması gerekiyordu
    • Hisse bölünmelerinde geçmiş işlemleri basitçe değiştirmek yerine hem yeni bölünmelerin otomatik uygulanması hem de manuel uygulama desteklenmeliydi
  • Özellikler uygulama geneline yayıldı
    • Onboarding: Sıradan carousel yerine sayfaların z ekseni boyunca içeri itildiği bir akış kullanıldı ve hisse kartları gibi temel bileşenler tanıtıldı
    • TSV içe aktarma: Bir hesap tablosundan oluşturulan TSV dosyasıyla işlemler içe aktarılıyor, içe aktarma durumu tekrar TSV’ye yazılarak iCloud senkronizasyonundan sonra yeniden içe aktarma destekleniyordu
    • Alım girişi: Adet, fiyat ve tarih odaklı, hisseye özel bir form sunuluyor; tarih değiştiğinde o günün geçmiş fiyatı placeholder olarak değişiyordu
    • Satış girişi: FIFO, LIFO, Average cost, Highest cost, Lowest cost ve belirli lot desteği sunuldu
    • Abonelik ekranı: Parallax metin, kaydırmaya bağlı blur’un çözülmesi, hareket tabanlı özellik kartları ve en alta ulaşıldığında küçük bir fireworks efekti içeriyordu
    • Üyelik kartı: Aktif aboneliğe sahip hesabın durumu etkileşimli bir kart olarak gösteriliyor; arka plana starfield efekti ve shimmer efekti ekleniyordu
    • Hisse kartı görünüm ayarları: Birden fazla kart biçimi ve ayar sunuluyor, toggle sırasında mikro animasyonlar kullanılıyordu
    • Varlık durumu kartı: Ana kaydırmanın üst kısmında ayarlara dayalı toplulaştırılmış bilgileri gösteriyordu
    • Widget’lar: Tekil hisse, portföy ve basit portföy olmak üzere üç tür sunuluyor; performansa göre büyük gradyan rengi değişiyordu
    • Face ID tolerans süresi: Finansal varlıklarla çalışan bir uygulama için gerekli görülerek, uygulama geçişleri sırasında tekrar kilitlenmeden önceki tolerans süresinin ayarlanması sağlandı
    • Piyasa tatili sheet’i: Hisse tutulan hesaplarda kapalı piyasa günleri gösteriliyor; widget’larda da aynı davranış için sunucu kodu gerekiyordu
    • Geri bildirim sheet’i: Bilinen sorunları ve planlanan özellikleri gösteriyor; hesap özelinde sorularda hesabı doğrulamak için token içerebiliyordu
    • Hesap silme: 2021’deki App Store güncelleme gereksinimleri doğrultusunda hesabın uygulama içinden tamamen silinebilmesi sağlandı

SwiftUI ile öğrenerek yeniden yapmak

  • Stocketa, Swift ve SwiftUI öğrenme süreciyle eşzamanlı ilerlediği için birçok ekran ve uygulamanın bazı bölümleri sürekli yeniden tasarlandı ve yeniden uygulandı
  • SwiftUI, iOS 13’ten sonra performansın yanı sıra bileşenler ve özellikler açısından gelişti; iOS 17’de shaders, keyframes ve scroll transitions gibi özellikler de sundu
  • SwiftUI, bir kod aracı olduğu kadar tasarım aracı olarak da kullanışlıydı
    • Tasarımcı hızlıca layout oluşturabiliyordu
    • Etkileşim eklemek kolaydı
    • Native araçlarla gerçek tasarım hissi kontrol edilebiliyordu
  • UIKit gereken durumlar sınırlıydı
    • Daha ince giriş, stil ve format kontrolü için özel text field
    • Sembollerin sırasını sürükleyerek değiştirmek için CollectionView
    • Confetti veya gece göğü yıldızları gibi particle emitter’lar
    • Uzun basmanın başladığı konumu almak için UILongPressGestureRecognizer

Backend ve TestFlight operasyonu

  • Başta backend veya kullanıcı hesabı olmayan basit bir uygulama düşünülmüştü, ancak kısa süre sonra kendi backend’i gerekli hale geldi
    • Finansal veri API anahtarını uygulamanın içine koymamak için backend proxy’si oluşturuldu
    • API kötüye kullanımıyla maliyetlerin artmaması için rate-limiting ve throttling eklendi
    • Sign In With Apple eklendi
    • Birden fazla hesap aynı veriyi istediğinde yalnızca bir kez çekmek için sembol bazlı istatistikler belirli süre önbelleğe alındı
  • Backend, Node/Express tabanında yaklaşık 13.000 LOC büyüklüğüne ulaştı
    • Cloud Run üzerinde çalışıyordu
    • Kimlik doğrulama, önbellekleme, haberler, temel iş mantığı, veri temizleme, bildirimler, widget’lar, birden fazla API entegrasyonu ve bazı scraping işlerinden sorumluydu
  • İş yönetimi Linear ile yürütüldü
    • Görevler, fikirler, özellikler, müşteri geri bildirimleri ve kilometre taşları yönetildi
  • TestFlight, yakın arkadaşlara yönelik küçük bir alfa ile başladı ve giderek genişletildi
    • Bir dönem yaklaşık 1.000 kişi davet edildi
    • Bekleme listesinde binlerce kişi vardı ancak API ve hosting maliyetleri ile destek ve geri bildirimlere yanıt verme yükü nedeniyle daha fazla büyütülmedi
    • Geri bildirimler iyi ilk izlenimler, özellik istekleri ve hata raporlarının karışımıydı

Web sitesi tasarımı ve uygulaması

  • İlk web sitesi, ilgi toplamak ve bekleme listesi e-postaları toplamak için basit bir landing page’di
  • İlk tasarımda, borsa grafiklerinin iniş çıkışlarını gevşekçe referans alan dalga biçimli öğeler ve yüzen mini hisse kartları yer aldı
    • Mini kartlarda SVG çizgi grafikler vardı ve sayfa yüklendiğinde animasyon oynuyordu
    • Arka planda yumuşak hareket efekti offset-path CSS ve 2 keyframe animasyonuyla uygulandı
  • Ana sayfa v1.0 2021 başında tamamlandı
    • Uygulama özelliklerini gösterecek kadar uygulama biriktiği düşünülerek daha tamamlanmış bir ana sayfa yapıldı
    • Tipik uygulama ana sayfalarındaki telefon çerçevesi + başlık düzeni yerine, kaydırmaya bağlı olarak 3D telefon çerçevesinin hareket ettiği ve uygulama teaser videosunun oynatıldığı bir yapı denendi
    • Lottie yerine JavaScript’in canvas ve offscreenCanvas üzerine frame sequence çizdiği yöntem seçildi
    • Rotato ile kısa Stocketa ekran kayıtları, 3D telefon videosu ve PNG frame sequence olarak üretildi
    • Sonrasında frame sequence oluşturma, optimize etme ve güncelleme süreci büyük bir zahmete dönüştü
  • Ana sayfa v2.0 bir yıl sonra yeniden tasarlandı
    • Daha fazla özellik ve iyileştirmeyi göstermek için uzun tekrarlı modüller yerine hızlıca göz atılabilen bir özellik listesi istendi
    • Sağda sabit cihaz çerçevesi, solda kaydırılabilir özellik listesi bulunan 2 panelli yapı benimsendi
    • Özellik öğelerinin üzerine gelindiğinde cihaz çerçevesindeki ekran görüntüsü değişiyordu
    • Mobilde başlık, kaydırılabilir cihaz çerçevesi carousel’ine dönüştürüldü
    • Kaydırmaya bağlı hero metni gradyanı, ikon renk değişimi, hover arka plan gradyanı ve ikon particle emitter’ı eklendi

Finansal veri API’lerinin yarattığı sınır

  • Stocketa’nın bağımlı olduğu finansal veri kalitesi yayımlanabilir seviyede değildi
  • İlk sağlayıcı IEX’te çeşitli sorunlar vardı
    • Grafiklerin eski veya fiyatların hatalı olduğu durumlar oluyordu
    • IEX borsasında az işlem gören varlıklarda sorun özellikle büyüktü
    • OTC piyasa verisi yoktu ve OTC ile doğrudan pahalı lisans anlaşması yapmak gerekiyordu
    • Nasdaq’ta listelenen hisse verileri de ciddi biçimde sınırlıydı; pre-market ve after-hours gibi temel veriler de eksikti
    • Önceden haber vermeden mutual fund verilerini tamamen durdurdu
  • Daha sonra kullanılan ticari kullanıma uygun başka bir sağlayıcı aylık 100 dolardı, ancak veri ve güvenilirlik sorunları daha da büyüktü
    • Endpoint’ler eski veya yanlış veri döndürüyordu
    • Sorun bildirildiğinde hataları görmezden geliyor ya da böyle bir hata olmadığını söylüyordu
  • Bazı verileri ücretli API’lerle bile elde etmek zordu; bu yüzden backend’de bir scraping motoru yapılması gerekti
    • dividend yield
    • earnings dates
    • OEF verisi
  • Yüksek kaliteli piyasa verisi, bağımsız uygulama geliştiricilerine uymayan bir fiyat yapısına sahipti
    • Bazı büyük ABD piyasa veri sağlayıcılarında ticari veri fiyatları aylık 2.000 dolardan başlıyordu
    • Endeks verileri veya opsiyon verileri için ek maliyet gerekiyordu
    • Bir sağlayıcı startup planı olarak aylık 499 dolar ve MAU başına ücret teklif etti, ancak bunun da ihtiyaca göre çok pahalı olduğu düşünüldü
  • Finansal veri API’lerine bağımlı projeler, işini dış şirketlerin API’leri üzerine kurma riskini taşır; bu durum Twitter ve Reddit API değişikliklerine benzer bir sorun olarak görüldü

Yayını durdurma nedeni

  • Stocketa baştan beri gerçek bir iş değil, yan projeydi
    • Gerçek bir işe dönüştürmek için daha fazla özellik ve gelir modeli gerekiyordu
    • Finansal danışmanlık hizmeti ya da hisse alım satımı gibi alanlara girmek gerekebilirdi; bunlar büyük şirketlerin rekabet ettiği kalabalık alanlar
    • Bu yön, basit ve zarif bir uygulama yapma çıkış noktasıyla uyumlu değildi
  • Durdurma nedenleri üç başlıkta özetlendi
    • Veri: Makul bir abonelik fiyatıyla yayımlamak için güvenilir, ucuz ve yüksek kaliteli finansal veri gerekiyordu; ancak maliyet ve temin zorluğu büyüktü
    • Destek: TestFlight kullanımına bakıldığında müşteri desteği, e-postalar, bakım ve sürekli özellik geliştirme için ciddi yatırım gerekiyordu
    • Zaman: Daha fazla odaklanılacak alan olarak Rewind AI seçildi; Stocketa yıllar boyunca geceleri, hafta sonlarını ve blog yazma zamanını bile kapladı
  • Başlangıçtaki Swift ve SwiftUI öğrenme hedefi gerçekleştirildi
    • Yayımlanmamış olsa da native iOS geliştirme konusunda çok şey öğrenildi
    • Stocketa’dan edinilen SwiftUI bilgisi Rewind AI çalışmalarında büyük fayda sağladı

1 yorum

 
GN⁺ 2023-10-17
Hacker News yorumları
  • Yıllar süren bir projenin gerçekten kullanılmaması neredeyse bir onur madalyası gibi hissettirebiliyor. Akıllıca bir madalya değil belki ama benim gibi iyi anlamda takıntılı hâle gelip tamamen içine çekilen geliştiriciler için neredeyse gerekli bir ders de oluyor.
    Eski deneyimlerimi ve oradan gelen acıyı anlattığımda insanların donup kaldığını hissediyorum. Bir yıldan uzun süre boyunca günde 10 saatten fazla bir şeye sarılmadıysanız, binlerce saat harcayıp hiçbir sonuç alamamanın nasıl bir his olduğunu anlamak zor olabilir.
    Başarılı projelerim de çok, şu anda da işler iyi gidiyor; ama o yıllar süren projeler geri alınamaz. Öğrenmek için gerekli olmuş olabilirler, fakat düşündüğümde hâlâ hüzünlü ve yalnız hissettiriyorlar.

    • 2016'da Swift ve UIKit'i kendi kendime öğrenirken bir iOS uygulaması geliştirirken benzer bir şey yaşadım. 2 yıl boyunca haftada 5 gün, günde yaklaşık 2 saat çalışarak 1.000 saatten fazla harcadım ama o uygulama hiçbir zaman yayımlanmadı.
      Bunun yerine çok daha iyi bir programcı olmamı sağlayan beceriler kazandım ve Swift'i sevdim. Şimdi olsa, Apple'ın geliştirme araçları ve API'lerinin son 7 yıldaki ilerlemesi sayesinde, o uygulamanın tamamını bir hafta sonunda sıfırdan yeniden yapabilirmişim gibi geliyor.
      Böyle projeler anılmaya değer. Programlama bir sanat olabilir; sanat da yaratıcı bir çıkış olarak yalnızca insanın kendisi için üretilebilir.
    • Böyle şeylere pişman olmak, ancak o sırada zaten olmayacağını bilebilecekken daha iyi muhakemene karşı gelip zorladığında anlamlıdır. O an elindeki bilgilerle en iyi kararı verdiysen yapabileceğin şeyin tamamı budur; gerisi şansa kalır.
      Sonradan edindiğin bilgilerle geçmiş projeler için kendini yiyip bitirmek şeklindeki sonuç odaklı düşünme pek işe yaramaz. Çoğu proje ve iş başarısız olur; gerçek budur.
      Eski bir finansçının “kötü bir işlemden tesadüfen para kazandığı için kimse kovulmaz” diye yazdığı bir yazıyı hatırlıyorum. Sonuç odaklı bir kültürde, gerçekten kontrol ettiğimiz tek şeyin süreç olduğunu kolayca unutuyoruz.
    • Bir yazılım projesine 10 yıl harcadım; bitireli 6 ay oldu ama hâlâ tek kuruş kazanamadım :(
      Ne zaman duracağını bilmek gibi değerli bir ders aldım, ama çok ama çok uzun bir dersti. Hâlâ doğru düzgün düşünmeye bile cesaret edemiyorum.
    • Yıllarını bir projeye harcadıktan sonra birine gösterir göstermez “pek iyi değil” deyip itmesi ya da sadece X yapmanı söylemesi kadar insanın hevesini kıran az şey var.
    • Muhtemelen hedef başarı, yani uygulama kullanımı ya da gelir olduğu için daha çok acıtıyor. Asıl neden keyif almak ya da öğrenmek olsaydı farklı hissedilebilirdi.
      Kimse kullanmasa bile pişman olmayacağından emin değilsen, bir yıldan uzun sürecek bir projeye başlamamayı önermek ister miydin, merak ediyorum.
  • Harika bir yazı ama sonucu hüzünlü geliyor. Böyle “gereksiz şeylerden arındırılmış sürüm”ü olmasını istediğim o kadar çok uygulama var ki; buraya konan emek de hayranlık uyandırıcı.
    Daha basit bir iOS uygulaması yayımlayıp organik trafikle günlük aktif kullanıcı sayısını yaklaşık 1.000'e kadar çıkardım, ama sonunda kapattım. Reklamları kaldırmak için $1.99 ya da $2.99'lık tek bir uygulama içi satın alma eklemiştim; ayda yaklaşık $70 kazanıyor ve hata raporlarıyla uğraşıyordum.
    O dönemde SwiftUI henüz olgun değildi, UIKit kullanmak gerekiyordu ve düzeltilmesi zor sınır durumlarıyla sürekli karşılaşıyordum.
    Son darbe, Google'ın kendi reklamlarıma tıkladığımı iddia ederek reklam gösterimini durdurması oldu. Fiilen tüm gelir kesildi ve bunu ne kadar özenle yapsam da sonunda büyük teknoloji şirketlerinin kaprislerine bağlı olduğunu fark ettim.
    Apple tüm uygulama içi satın almalardan %30 alıyordu; reklam geliri ise üç kuruştu ama Google hiçbir gerekçe göstermeden kapatabiliyor ve itiraz etmenin yolu da olmuyordu. Büyük para kazanmaya çalışmıyordum, ama zaman ve enerji harcamak için bir nedene ihtiyacım vardı ve artık bunu haklı çıkaramıyordum.

    • Google'ın kendi reklamına tıklama gerekçesiyle reklamları kesmesi fazlasıyla acımasız bir saçmalık gibi görünüyor.
      Geliştiricinin gelirden hariç tutulacak cihazlar, IP aralıkları ve konum listeleri tanımlamasına neden izin vermediklerini anlamıyorum. İnsan eninde sonunda kendi uygulamasını kullanıyor ve kaydırırken reklama yanlışlıkla basmamak çoğu zaman neredeyse imkânsız oluyor.
      Gerçek ortamda test etmek de önemli; ayrıca reklam gerçekten ilgi çekiciyse, potansiyel bir müşteri olarak meşru şekilde tıklama ihtimali az da olsa var. Ama mevcut yaklaşım fiilen kendi uygulamanı kullanma demek.
      Bu temelden aptalca politikada ısrar eden Google geliştiricileri ya da yöneticileri dışında bunun kime fayda sağladığını bilmiyorum. Bunu biraz olsun düzgün ele almak gerçekten bu kadar mı zor, diye düşünüyorum.
  • 20 yıl boyunca ne konser vermiş ne albüm çıkarmış bir yatak odası müzisyeni; 18 yaşından sonra topa bir daha dokunmamış çocukluk dönemi sporcusu; yarışlara katılmayan koşucu; öğretmeyen entelektüel için de benzer düşünülebilir.
    Aynı “dış çıktı = değer” öncülünden yola çıkarsak, onlarca yıl yaşayıp çocuk sahibi olmamış bir insana kadar da genişletilebilir. Bu benim inancım değil; sadece mantığın akışının buna vardığını söylüyorum.
    Ama bu tür yargılar insan yapımı kurgulardır ve uzun süre içimizde taşıdığımız “çocuğumuzu” dünyaya çıkarma yönündeki biyolojik buyruğun bir yansıması gibidir. Neden onların kendi hayatlarını kazanmasına izin verilmesin diye sorarız; kendi başlarına başarı üretmeye devam etmelerini ve geleceğe bir iplik daha eklemelerini isteriz.
    Bu buyruğa uymak ahlaki, etik ve haz açısından doruk noktası mıdır derseniz, bazı insanlar için öyledir; yargılamak istemem. Ama bazı insanlar için tuhaf biçimde öyle değildir.

  • Bu projeyi satmayı düşünüp düşünmediğini merak ediyorum. Konsept hoşuma gidiyor ve ilgilenen müşteriler de var gibi, ama destek yükünü ve ticarileştirmeyi üstlenmek istemiyor gibi görünüyor.
    Ben bir varlık takip aracı (https://jch.app) yapalı yaklaşık 1 yıl oldu, ancak özellikler ve kullanıcı deneyimi hâlâ bunun çok gerisinde.
    Muazzam bir çalışma; yolculuğa dair derin kayıt da çok iyiydi. rewind.ai'de sırada ne çıkacağını da merakla bekliyorum.

  • Sayısız insanın, başkaları için pek bir anlam taşımayan sayısız projeye durmadan zaman dökmesinden pek farklı değil. Bisikletleri hacklemek ya da model trenlerle uğraşmak gibi bir şey
    Tek fark şu: Uygulamaları bu kadar kolay yayımlamak, belgelemek ve arşivlemek mümkün; ama “garip bisiklet parçalarını kesip kaynak yaparak geçirilen zamanı” YouTube’a tamamen yüklemediğiniz sürece aynı şekilde yapmak zor
    Elbette bunu yapan çok kişi var ve bir ölçüde anlamlı da; ama hobileri ve kişisel uğraşları, kendi başına bir şey olmaktan çıkarıp başka hedefleri olan ürünlere dönüştürmeye çalışınca işin özünü biraz kaçırabiliyorsunuz
    Bu yazının yanlış olduğu anlamına gelmiyor. Şikâyet ediyor ya da öfkeli gibi görünmüyor; başta söylediği gibi “bir yerlere, bir şekilde kaydetmek istiyorum” hissi veriyor. GitHub’ımın büyük kısmı da böyle

    • Neyin mümkün olabileceğinin, gerçekten olanı değerlendirmek için referans noktası hâline gelmesi derin bir söz
      Bu tür değerlendirme ölçütünün aceleyle ayarlanması, gerçek sonucu bulanıklaştırdığı için pek faydalı olmayabilir. Bu durumda yazarın “boşa harcadığı” emekten utanması kolay; ama daha uygun tepki, öğrendiklerine minnet duymak olurdu
      Böyle projelerden öğrenilenler muazzam
  • Bu yazının ürkütücü yanı, kendimi onda çok fazla görmem. Harika bir ürün yapmaya derinlemesine dalmak, zanaatkâr kimliğine kapılmak ve hızlı, kirli MVP ile tekrarlı pazar testi gibi “ruhsuz” yaklaşımlara direnç duymak
    r/SaaS subreddit’ine gittiyseniz, bu benim bir yazılım geliştirici olarak keyif aldığım şeyin tam tersidir
    Ama pazar testi ve hızlı, kirli iterasyon konusundaki bakış açımı değiştirebilirsem, bunun aslında içimi rahatlatıp zanaatkârlığa odaklanmak için daha iyi bir temel sağlayacağını da biliyorum

  • Anlıyorum. Ben de hâlâ banka backend’i geliştiriyorum. Çekirdek, muhasebe, müşteri, hesap, ödeme (SEPA ve kartlar), bildirimler (ServiceNow benzeri), yaptırım taraması, risk ve izleme motoru, olay akışları ve raporlamayla birlikte 5. yılım
    Bu kadar dev bir işe girişmem delilik mi aptallık mı diye şüphe etmeye başladım. Daha landing page bile tasarlamadım ve kod yaklaşık 150 bin satır civarında

    • Bu alanda biri olarak, potansiyel müşterilerle mümkün olduğunca erken temas kurup güven oluşturmaya başlamanı şiddetle öneririm
      Mevcut platformda çok sayıda hata, sınırlama ve güvenlik sorunu olmasına rağmen, müşterileri bizim core banking platformumuza geçmeye ikna edecek kadar güven kazanmamız 5 yıldan çok daha uzun sürdü
    • Ben de ödemeler, REST mesajlaşma, e-posta sunucusu (IMAP/SMTP), affiliate reklamlar ve kendi ödeme, raporlama ve erişim kontrolünü içeren bir e-ticaret çözümü yaptım. Masaüstü ve mobil web frontend’leriyle birlikte tüm çözümü alfa durumuna kadar getirdim
      Ama mobil uygulamalar önem kazanınca native uygulama da yapmaya başladım; bu artık fazlaydı. Sonunda burnout yaşadım ve iflasa kadar gittim, bu yüzden aşırı büyük projeleri önermem
      Çok şey öğrendim ama israf buna değmedi. Bu kadar çok şeyi yeniden yapmak için zaman fazla değerli. Şimdi en fazla 6–12 aylık “küçük” projeler yapıyorum
    • Banka backend’ini yan proje olarak mı yapıyorsun? İlginç. Daha çok eğlence için yapılan bir proje mi, yoksa ticari bir hedefi mi var merak ediyorum
      Açık kaynak olma ihtimali de var mı merak ediyorum
    • Yayına almalısın. Ekran görüntüleri, özellik listesi ve planlanan özellikler listesini birbirinden ayırarak koyup önce beta başvuru formu oluşturman yeterli
      Eklemek istediğin her şeyi çıkardığında bile temel sürümü yayımlayamıyorsan, bunu bir süre rafa kaldırmayı düşünmelisin
      Son 20 yılı aşkın sürede birçok proje ve ürün yaptım; 2–3 tanesi ciddi büyüdü. Diğerlerinin binlerce kullanıcısı var ama sürdürülebilir bir gelir kaynağı yoktu
      Kârlı bir işe dönüşenlerden biri “hafta sonu build’i” sürümüyle yayımlandı ve sonraki 7 yılda bunun üzerine inşa edildi
    • Kendine “başarı nasıl görünürdü?” diye de sormalısın. 5 yıldır gelir yoksa muhtemelen şu anki aşamaya alışmışsındır
      Alışılmış durum, sürekli lansman öncesi yapılacak işler bulmana yol açan bir tuzak olabilir. Bu yüzden zihninde çerçeveyi yeniden kurmak iyi olabilir
  • Yakın zamanda Leonardo DaVinci’nin müthiş bir erteleme ustası olduğunu ve tamamlamadığı çok sayıda projesi bulunduğunu okudum
    Birçok alanda bu kadar başarılı biri olduğu için ona hep hayranlık duymuştum; bunu öğrenince ertelemeyi, yaratıcı insanlar olarak bizim bir parçamız gibi görmeye başladım
    Bunu başarısızlık olarak da görebiliriz, sürecin bir parçası olarak yeniden de yorumlayabiliriz. Sonuçta bir şeyler yapmaktan keyif alıyoruz

  • Aslında “MVP yap, hızlı yayımla, iterasyon yap” şeklindeki yaygın tavsiyeyi kabul edip tam tersini yapmış gibi

    • Büyük teknoloji şirketlerinde 10 yıl boyunca vasatın altında deneyimler yayımladıktan sonra, tam tersine kaliteye odaklanması beklenirdi. https://paulstamatiou.com/craft/
    • O tavsiyenin tek kişilik geliştiricilere de uyup uymadığını bilmiyorum. Bu uygulama gibi kaçınılmaz olarak maksimalist ürünlerde, en küçük parçanın bile sorumluluğu tek başına sende olduğu için hızlı hareket etmek diye bir şey yok
  • Harika görünen bir yan proje hakkında mükemmel bir yazı. İlgiyle okurken rewind.ai’ı fark ettim; o da iyi görünüyor
    Sürekli otomatik ekran ve ses kaydı gibi potansiyel olarak mahremiyete müdahaleci şeylerde gizlilik kilit önemde olduğundan, “Privacy first” bölümüne bakarken aklıma bir soru takıldı
    “Verilerinizi FileVault ile şifreleyin. Apple FileVault, Rewind ile birlikte çalışır. Bunu açarsanız verileriniz şifrelenir” deniyor; Rewind, Apple FileVault’un “Rewind ile birlikte çalışması” için bir şey mi yapıyor?
    Yoksa her şey için geçerli olan genel disk şifrelemesinden mi bahsediliyor? Ciddi bir soru. Rewind kullanmak istiyorum ama bu ifade gereksiz bir ambalaj gibi yorumlanabilir
    “Yalnızca ilgili metin tabanlı veriler buluta gönderilir ve aktarım sırasında şifrelenir” ifadesi de benzer bir his veriyor. “Aktarım sırasında şifreleme” standart TLS şifrelemesi anlamına mı geliyor? Rewind iyi görünüyor ama güvenilir olması gerekiyor

    • Rewind web sitesinde şöyle yazıyor
      “Bulut entegrasyonuna gerek yok. Gmail, Dropbox, Slack gibi çeşitli servislere bağlanmanız gerekmeden her şey otomatik olarak çalışır”
      Ancak https://www.rewind.ai/privacy adresindeki resmi gizlilik politikasının ayrıntılarına bakınca şöyle deniyor
      “[Toplananlar:] OpenAI tarafından oluşturulan bilgiler. Rewind AI’ın OpenAI entegrasyonunun bir parçası olarak, ses kayıtlarının transkripsiyon özetleri ve OpenAI entegrasyonunun oluşturduğu diğer veriler gibi OpenAI tarafından üretilen çıktıları da toplayabiliriz”
      O halde “bulut entegrasyonu gerekmez” deniyor ama sesim OpenAI ile paylaşılıyor mu?
      Ayrıca https://www.rewind.ai/privacy-first sayfasında “Rewind’de arama yaptığınızda ne olur? Tüm kayıt verileri yerelde kalır” deniyor
      Hangisi doğru bilmiyorum. Rewind’e güvenmek istiyorum, ancak kullanıcı verilerinin nasıl işlendiğini açıklayan içeriklerdeki tutarsızlık nedeniyle tereddüt ediyorum
    • Bildirdiğin için teşekkürler. Sanırım o sayfayı güncellememiz gerekiyor; ayrıca kendi şifrelememiz de var. Ayrıntılar burada: https://help.rewind.ai/en/articles/7242593-is-the-rewind-dat...