Labeler NearBy

Table of Contents

İlk Hackathonum

2022’nin yazının ilerleyen dönemlerinde, heyecan verici bir proje üzerinde çalışmak istiyordum. Yeni mezun olmuş ve tam zamanlı bir yazılım mühendisi olarak çalışıyordum. Yan bir projeye bağlanmak istiyordum ve o zamanlar bunu yapacak yeterli boş zamanım vardı. Ne üzerinde çalışacağımı bilmiyordum, ta ki Ağustos 2022’de Devpost adlı bir site keşfedene kadar. Devpost, hackathon adı verilen yazılım yarışmalarına ev sahipliği yapan bir site. Devpost’u incelerken, NEAR MetaBUILD III adlı bir hackathon buldum; bu hackathon, NEAR Protocol organizasyonu tarafından düzenlenmişti.

NEAR Nedir?

NEAR Protocol, akıllı sözleşmeleri ve NEAR kripto para birimini destekleyen bir blokzincirdir. Çok düşük işlem ücretleri, akıllı sözleşme desteği, kendi resmi test ağı ve Rust ve/veya JavaScript ile akıllı sözleşme yazabilme imkanı sayesinde geliştiriciler için harika bir ortam sunmasıyla bilinir. NEAR Protocol hakkında daha iyi bir genel bakış için CoinGecko’nun harika videosunu izleyebilirsiniz:

Bu dönemde, Coinbase resmi olarak NEAR Protocol’ü platformlarında işlem görebilen bir coin olarak desteklemeye başladı. Bu, Coinbase’in platformunda desteklediği coinler konusunda çok seçici olması nedeniyle büyük bir adımdı ve NEAR’ı daha güvenilir bir platform haline getirdi. Hâlâ NEAR’ı Coinbase’de alıp satabilirsiniz.

Neden Katıldım?

Bir süre düşündükten sonra, zamanımı NEAR MetaBUILD III hackathonuna katılmaya karar verdim. Gerekçem şuydu:

  • Kripto yok olmayacak ve kalıcı bir teknoloji. Bu yüzden teknolojiye zaman ayırmak mantıklı.
  • Hackathon, kazananlar için NEAR cinsinden 20.000 $ ile 100.000 $ arasında ödüller sunuyordu.
  • Hackathonun belirli bir son tarihi vardı, bu da projenin aylarca sürüklenemeyeceği anlamına geliyordu.
  • Proje, harika bir öğrenme deneyimi ve hackathonlara giriş için mükemmel bir başlangıç olacaktı.
  • En kötü durumda, hackathon özgeçmişimde gösterebileceğim harika bir proje yapmamı sağlayacaktı.

Tüm bunları göz önünde bulundurarak, 26 Ağustos 2022’de üniversiteden yakın bir arkadaşımı aradım ve bu hackathon için planlama yapmaya başladık. Hackathon 23 Eylül 2023’te başlayıp 21 Kasım 2022’de sona ermesi planlanmıştı. Ancak son tarihler hackathonun sonunda 24 Kasım 2023’e uzatıldı. Bir ay erken olduğumuz için bu zamanı öğrenmeye ve iki aylık hackathon için ne üzerinde çalışacağımızı beyin fırtınası yapmaya harcadık. İlk ayda kripto ve blokzincirler hakkında genel bir bakış elde ettik. NEAR’ın test ağını, NEAR SDK’sını inceleyip birkaç akıllı sözleşme dağıttık.

Fikir

Blokzincir ve NEAR hakkında harika bir giriş yaptıktan sonra, fikirler üzerinde beyin fırtınası yapmaya başladık. Bu projenin sadece bir “hackathon projesi” olmamasını, başkalarının da kullanabileceği ve kriptonun sadece ticaret dışındaki şeylerde nasıl faydalı olabileceğine bir örnek olmasını istiyordum.

Bu düşünceyle, Unreal Engine Blueprint’e benzer bir şey yaratmaya karar verdik; ancak NEAR blokzincirinde akıllı sözleşmeleri kodlama ihtiyacı olmadan kolayca oluşturup dağıtmak için. Ancak hackathon başlamadan bir hafta önce bu fikri bıraktık çünkü mantıklı değildi. Kimse henüz pratik bir kullanım durumu olmadığı için bizim aracımızı NEAR akıllı sözleşmeleri oluşturmak için kullanmazdı. Bu, birçok kişinin ihtiyaç duymadığı bir araç geliştirmek gibi olurdu.

Hackathon başlamadan sadece bir hafta kaldığında tekrar beyin fırtınası yapıp şu fikri benimsedik:

AI araştırmacılarının dünya çapındaki etiketleyicilere veri etiketleme dış kaynaklandırabileceği
merkezi olmayan bir platform

Projeye “Labeler NearBy” adını verdik. Bu fikri seçmemizin nedenleri:

  • AI geliştirme, eğitim için insan etiketlemesi gerektirir.
  • Belirli veri setlerini etiketlemek için yetenekli bireyleri bulmak ve yönetmek zordur.
  • Scale AI adlı bir şirket bu fikri başarıyla uygulamış ve ürün-pazar uyumunu bulmuş.
  • Scale AI gibi merkezi hizmetler, organizasyonların verilerini etiketleme şirketine gönderip, etiketleme sürecinden sonra verileri geri alması gibi kontrol kaybına yol açar. Bu, değerli eğitim verilerinin etiketleme şirketi tarafından kendi modellerini eğitmek için kullanılmasına yol açabilir. Bu hizmeti merkeziyetsizleştirmek mantıklı bir çözüm gibi görünüyordu.
  • Merkezi olmayan uygulama (dApp) alanında bu fikir üzerine çalışan çok az proje bulduk, bu da yenilik yapma ve öncülük etme fırsatı sundu.

Karmaşıklığı azaltmak için, Labeler NearBy’nin şu anda sadece görüntü verilerini destekleyeceğine karar verdik.

Sunum

Fikir seçildi ve hackathon resmi olarak başladıktan sonra, arkadaşım ve ben Labeler NearBy’yi geliştirmeye başladık. Projemizi 2 ay boyunca çalıştık ve 24 Kasım 2022’de Devpost’a son taslağımızı gönderdik. Projemizi Devpost’ta gönderip aynı zamanda Github’da bir kopyasını oluşturduk. Bu blog, Labeler NearBy’nin tüm teknik detaylarını ve geliştirme sürecini kapsamıyor. Daha fazla bilgi edinmek veya son gönderimizi görmek için aşağıdaki bağlantılardan birine göz atın:

Labeler NearBy iki kod tabanından oluşur: ln-researcher ve ln-labeler. Bu kod tabanları MIT lisansı altında tamamen açık kaynaklıdır ve aşağıdaki bağlantılardan incelenebilir:

Labeler NearBy (LN) nasıl çalışır, genel bir bakış:

Bir araştırmacı, AI modelini eğitmek için etiketlenmiş görüntülere ihtiyaç duyar. Bunu başarmak için araştırmacı, verilerini barındırmak ve etiketleyicilerin verileri etiketlemesini sağlamak için LN’i kullanır. Bu, bir API, araştırmacının akıllı sözleşmeleri ve yerel bir Postgres veritabanı içeren kendi kendine barındırılan bir web hizmeti olan ln-researcher aracılığıyla yapılır. Etiketleyici için bir web ön yüzü (sunulmuş olacaktı) sağlanır, böylece araştırmacının görüntülerine erişip etiketleyebilirler. Etiketleme sürecinde, bir görüntü farklı etiketleyiciler tarafından üç kez etiketlenir. En iyi etiketleri sağlayan etiketleyici, bir oylama sistemiyle belirlenir ve NEAR coinleriyle ödüllendirilir. Bu süreci yöneten web uygulaması ln-labeler olarak adlandırılır. Araştırmacı her etiketleme işlemini finanse eder ve NEAR coinleri Coinbase üzerinden kolayca dolara çevrilebilir. Tüm işlem lojistiği, NEAR Protocol blokzincirinde barındırılan akıllı sözleşmeler tarafından yönetilir.

Labeler NearBy’nin hackathon için demo videosunu burada izleyebilirsiniz:

En Büyük Başarı

En çok gurur duyduğum özellik, getImage() fonksiyonudur. Bu fonksiyon, ln-researcher içinde bir API uç noktası olarak hizmet verir ve Labeler NearBy (LN) içinde araştırmacılar ve etiketleyiciler arasındaki veri akışında kritik bir rol oynar.

Bu API uç noktası, araştırmacıların görüntülerini güvenli ve güvenilir bir şekilde dağıtmasını sağlar. Etiketleme görevleri, NEAR Protocol blokzincirindeki akıllı sözleşmeler aracılığıyla yönetilir ve görüntü verileri araştırmacı tarafından ln-researcher üzerinden barındırılır.

Uç nokta, yalnızca atanmış etiketleyicinin görüntüye erişebilmesini sağlamak için bir dizi güvenlik kontrolü yapar. İstek imzasını doğrulama ve ilgili akıllı sözleşmeyi kontrol ederek görevin varlığını ve etiketleyiciye atanıp atanmadığını kontrol eder.

İstek, araştırmacının kendi barındırdığı ln-researcher API’sinde doğrulandıktan sonra, fonksiyon yerel Postgres veritabanından görüntüyü alır, şifreler ve yetkili etiketleyiciye gönderir; böylece etiketleyici görüntüyü şifre çözerek etiketleyebilir. Aynı zamanda, veritabanındaki görüntünün durumunu günceller, etiketleme ilerlemesini gösterir. Bu süreçte, hem araştırmacının hem de etiketleyicinin RSA anahtarları kimlik doğrulama için, AES şifreleme ise görüntüyü şifrelemek için kullanılır.

Bu uç nokta, araştırmacılardan etiketleyicilere görüntülerin güvenli ve kontrollü dağıtımını yönetmede kritik bir rol oynar. Veri transferini güvenli hale getirir ve görüntü etiketleme sürecini etkili bir şekilde izler ve yönetir. Ayrıca, bu süreç HTTPS kullanımını ortadan kaldırma potansiyeline sahiptir.

Bu özel uç nokta/fonksiyon test edilmiş ve işlevsel olduğu kanıtlanmıştır. Aşağıda, Labeler NearBy’nin genel işlevselliğini ve yukarıda bahsedilen uç nokta/fonksiyonun nasıl çalıştığını gösteren bir diyagram bulunmaktadır:

Sonuç

Ne yazık ki, proje hackathonun son tarihine kadar tamamen tamamlanamadı. Projenin büyük kısmı tamamlandı (ln-researcher), ancak frontend (ln-labeler) tamamlanmadı ve canlı bir demo sunamadık. Backend (ln-researcher) tamamlanmış olsa da, düzgün çalışan bir frontend ve canlı demo olmadan kimse Labeler NearBy fikrini deneyemedi. Jüriler de projeyi deneyemedi, sadece gönderiyi okuyup kodu incelemek zorunda kaldı. Bu da kazanma şansımızı sıfıra yaklaştırdı. Bu durum 15 Aralık 2022’de hackathon kazananları açıklandığında doğrulandı ve biz kazananlar arasında değildik.

Kaybetmek

Hackathonun final sonucu hayal kırıklığıydı. Aylarca bu projeye yatırım yaptım ve bu projenin araştırmacılar için çok faydalı bir araç olacağını düşünüyordum.

Projelerim için net bir standartım var: ya başarılı olur ya da başarısız; ortada bir şey yok. Bu proje, son tarihine kadar tamamlanmadığı ve potansiyel kullanıcılar için erişilemez olduğu için bir başarısızlık oldu.

Ancak başarısızlık hayatın doğal bir parçasıdır. Başarılarımız, başarısızlıklardan öğrendiklerimiz üzerine kurulur. Bu hackathonun sonucu hayal kırıklığı olsa da, bir proje/ürün geliştirme ve inşa etme konusunda değerli içgörüler sağladı.

Öğrenilen Dersler

Bu deneyimden aldığım ana dersler şunlardır:

  1. Seçtiğimiz proje, ilerleyebilmek için önceden çok sayıda özellik gerektiriyordu. Ne demek? Proje, fikri test etmeden önce neredeyse tüm bileşenlerin önceden inşa edilmesini gerektiriyordu. Daha az temel bileşen gerektiren bir proje seçmek daha mantıklı olurdu. Böylece temel bileşenleri daha hızlı inşa edip projeyi daha erken iterasyon yapabilirdik. Bu sayede son tarihe daha kolay ulaşabilir ve daha basit ama daha tamamlanmış bir proje yapabilirdik. YC, bir teknoloji girişim hızlandırıcısı, hızlı başlat, kullanıcılarla konuş ve iterasyon yap önerir. Biz de hackathon için bunu yapmalıydık.
  2. Projenin ne kadar süreceğini küçümsedik. Bu bizim ilk hackathonumuz ve ilk defa merkezi olmayan bir uygulama (dapp) yapıyorduk. Ben tam zamanlı yazılım mühendisi olarak çalışıyordum, arkadaşım yüksek lisansını tamamlıyordu. 2 ay yeterli olacağını düşündük. Projenin kapsamını azaltmak ya da bir ekip üyesi daha eklemek daha mantıklı olurdu.
  3. Winston Churchill şöyle demişti: “Mükemmellik, ilerlemenin düşmanıdır”. Bu projeyi bir B2C ürün gibi ele alıyordum, oysa sadece bir hackathon projesi ve en fazla bir minimum viable product (MVP) idi. Bu yüzden erken aşamalarda çok fazla zaman harcadım, oysa temel özellikleri çalışır hale getirmeye odaklanmalıydım.

Bu değerli derslerin yanı sıra, kişisel yan projelerimde ve profesyonel çalışmalarımda çok faydalı olan yeni beceriler edindim:

  1. Node.js, JavaScript ve Express.js ile API geliştirme
  2. Veri yönetimi için PostgreSQL kurma ve kullanma
  3. API geliştirmede PG gibi paketler kullanarak PostgreSQL entegrasyonu
  4. RSA (asimetrik şifreleme) ve AES (simetrik şifreleme) ile veri güvenliğini artırma

Sonuç

Genel olarak, hackathonun sonucundan hayal kırıklığına uğramış olsam da katıldığımız için mutluyum. Labeler NearBy üzerinde çalışırken edindiğim değerli dersler ve beceriler, beni daha iyi bir geliştirici yaptı ve bir sonraki projem olan Notify-Cyber geliştirmeme büyük katkı sağladı.

Diğer Notlar

  • Labeler NearBy’ye geri dönebilirim, ancak şu an için proje “uzun bir ara"da.
  • Şu anda, Labeler NearBy sadece NEAR’ın testnetinde çalışmalıdır. Daha fazla geliştirme, test ve denetim gerektirir.