Labeler NearBy Oluşturma
Table of Contents
İlk Hackathon’um
2022 yazının ilerleyen dönemlerinde, heyecan verici bir projede çalışmak istiyordum. Lisans eğitimimi yeni bitirmiştim ve tam zamanlı bir yazılım mühendisi olarak çalışıyordum. Bir yan projeye kendimi adamak istiyordum ve o dönemde bunu yapacak yeterince boş zamanım vardı. Ne üzerinde çalışacağımı gerçekten bilmiyordum, ta ki Ağustos 2022’de Devpost adında bir web sitesi keşfedene kadar. Devpost, hackathon adı verilen yazılım yarışmalarını barındıran bir web sitesidir. Devpost’u gezerken, NEAR MetaBUILD III adında, NEAR Protocol organizasyonu tarafından düzenlenen bir hackathon keşfettim.
NEAR Nedir?
NEAR Protocol, akıllı sözleşmeleri destekleyen bir blok zinciridir ve NEAR kripto para birimi ile bilinir. Çok düşük işlem ücretlerine sahip olması, akıllı sözleşmeleri desteklemesi, kendi resmi test ağının olması ve Rust ve/veya Java Script ile akıllı sözleşmeler yazabilme imkanı sayesinde harika bir geliştirici ortamı sunmasıyla tanınır. NEAR Protocol hakkında daha iyi bir genel bakış için CoinGecko’nun harika videosunu izleyebilirsiniz:
Bu süre zarfında, Coinbase resmi olarak NEAR Protocol’ü platformlarında işlem görebilen bir coin olarak desteklemeye başladı. Bu, Coinbase’in hangi coinleri destekleyeceği konusunda oldukça seçici olması nedeniyle büyük bir olaydı. Bu, NEAR’ı daha güvenilir bir platform haline getirmeye yardımcı oldu. Bugün hala Coinbase’de NEAR ticareti yapabilirsiniz.
Neden Taahhüt Etmeliyim?
Bir süre düşündükten sonra, NEAR MetaBUILD III hackathon’unda yarışmak için zamanımı taahhüt etmeye karar verdim. Gerekçem şuydu:
- Kripto para ortadan kaybolmayacak ve kalıcı bir teknoloji. Bu nedenle, bu teknoloji hakkında bir şeyler öğrenmek için zaman ayırmak mantıklıydı.
- Hackathon’un harika ödülleri vardı, kazananlardan biri olursanız 20.000 ile 100.000 NEAR arasında ödül kazanabilirsiniz.
- Hackathon’un belirli bir son tarihi vardı, bu da projenin genellikle birçok yan projede olduğu gibi aylarca sürünmeyeceği anlamına geliyordu.
- Proje harika bir öğrenme deneyimi olacak ve hackathonlara harika bir giriş sağlayacaktı.
- En kötü ihtimalle, hackathon bana özgeçmişimde gösterebileceğim harika bir proje yapma imkanı verecekti.
Bunları göz önünde bulundurarak, 26 Ağustos 2022’de üniversiteden yakın arkadaşımı aradım ve bu hackathon için plan yapmaya başladık. Hackathon’un 23 Eylül 2023’te başlaması ve 21 Kasım 2022’de sona ermesi planlanmıştı. Ancak, hackathonun sonunda son tarih 24 Kasım 2023’e uzatıldı. Bir ay önceden geldiğimiz için, bu zamanı öğrenmeye ve bu 2 aylık hackathon için ne üzerinde çalışacağımızı düşünmeye karar verdik. O ilk ayda, kripto ve blok zincirleri hakkında genel bir bakış edindik. NEAR’ın testnet’inde gözden geçirdik ve pratik yaptık, NEAR SDK’sını inceledik ve birkaç akıllı sözleşme dağıttık.
Fikir
Blok zinciri ve NEAR ile ilgili her şeye harika bir giriş yaptıktan sonra, fikirler üzerinde beyin fırtınası yapmaya başladık. Bu projenin sadece bir “hackathon projesi” olmasını değil, başkalarının kullanabileceği bir ürün haline gelmesini ve kriptonun sadece ticaret dışında nasıl faydalı olabileceğine dair bir örnek olmasını istedim.
Bunu göz önünde bulundurarak, başlangıçta NEAR blok zincirinde akıllı sözleşmelerin kolayca oluşturulması ve dağıtılması için kodlama gerektirmeyen Unreal Engine Blueprint’e benzer bir şey yaratmaya karar verdik. Ancak, hackathon başlamadan bir hafta önce, bu fikri terk ettik çünkü bu mantıklı gelmiyordu. Eğer henüz pratik bir kullanım durumu yoksa, neden birinin NEAR akıllı sözleşmeleri oluşturmak için aracımızı kullanmasını bekleyelim? Bu, birçok insanın ihtiyaç duymadığı bir aracı geliştirmek gibi olurdu.
Hackathon başlamadan sadece bir hafta kala, tekrar beyin fırtınası yapmaya başladık ve bu fikre karar verdik:
Dünyanın dört bir yanındaki etiketleyicilere veri etiketleme hizmeti verebilecek merkeziyetsiz bir platform
Projemize “Labeler NearBy” adını verdik. Bu fikri seçme kararımız aşağıdaki nedenlere dayanıyordu:
- AI geliştirme, eğitim için verilerin insan tarafından etiketlenmesini gerektirir.
- Belirli veri setlerini etiketlemek için yetenekli bireyleri bulmak ve yönetmek zordur.
- Bu fikir, Scale AI adında bir şirket tarafından başarıyla uygulanmış olup, ürün-pazar uyumunu nasıl bulduklarıyla kanıtlanmıştır.
- Scale AI gibi merkezi hizmetler, organizasyonların verilerini etiketleme şirketine göndermesi gerektiğinden endişeler doğurur; bu şirket daha sonra insan etiketleyicileri küresel olarak dış kaynak kullanır. Etiketleme sürecinden sonra, şirket etiketlenmiş verileri organizasyona geri gönderir. Bu, değerli eğitim verileri üzerindeki kontrolü kaybettirir ve bu veriler etiketleme şirketi tarafından kendi modellerini eğitmek için kullanılabilir. Bu hizmetin merkeziyetsizleştirilmesi mantıklı bir çözüm gibi görünüyordu.
- Bu fikri üzerinde çalışan merkeziyetsiz uygulama (dApp) alanında çok az proje bulduk, bu da bu alanda yenilik yapma ve öncülük etme fırsatı sundu.
Karmaşıklığı azaltmak için, Labeler NearBy’nin şimdilik yalnızca görüntü verilerini destekleyeceğine karar verdik.
Başvuru
Fikir belirlendikten ve hackathon resmi olarak başladıktan sonra, arkadaşım ve ben Labeler NearBy’yi inşa etmeye başladık. Projemiz üzerinde 2 ay boyunca çalıştık ve 24 Kasım 2022’de Devpost’a projemizin son taslağını sunduk. Projemizi Devpost’a sunduk ve ayrıca Github’da başvurumuzun bir kopyasını oluşturduk. Bu blog, Labeler NearBy’nin her teknik yönünü ve geliştirme sürecini kapsamamaktadır. Bunu bilerek, Labeler NearBy’nin nasıl çalıştığını öğrenmek veya son başvurumuzu görüntülemek için lütfen aşağıdaki bağlantılardan birine gidin:
Labeler NearBy, ln-researcher ve ln-labeler adında iki kod tabanından oluşmaktadır. Bu kod tabanları tamamen MIT lisansı altında açık kaynak olup, aşağıdaki bağlantılardan görüntülenebilir:
Labeler NearBy’nin (LN) nasıl çalışacağına dair 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ı LN’yi verilerini barındırmak ve etiketleyicilerin verilerini etiketlemesi için bir yol sağlamak amacıyla kullanır. Bu, araştırmacının akıllı sözleşmeleri ve yerel bir Postgres veritabanından oluşan bir API ile kendine ait barındırılan web hizmeti olan ln-researcher aracılığıyla gerçekleştirilir. Etiketleyici için, araştırmacının görüntülerine erişim ve etiketleme yapabilmesi için bir web ön yüzü (sağlanmış olacaktı) sunulmuştur. Etiketleme sürecinde, bir görüntü farklı etiketleyiciler tarafından üç kez etiketlenir. En iyi etiketleri veren etiketleyici, bir oylama sistemi aracılığıyla belirlenir ve NEAR coinleri ile ödüllendirilir. Bu süreci yöneten web uygulamasına ln-labeler denir. Araştırmacı, her etiketleme işlemini finanse eder ve NEAR coinleri Coinbase aracılığıyla kolayca dolara dönüştürülebilir. Tüm işlem lojistikleri, NEAR Protocol blok zincirinde barındırılan akıllı sözleşmeler tarafından yönetilir.
Hackathon için Labeler NearBy’nin demo videosunu burada izleyebilirsiniz:
En Büyük Başarı
Uygulamaktan en gurur duyduğum özellik, getImage() adında bir fonksiyondur. Bu fonksiyon, ln-researcher içinde bir API uç noktası olarak hizmet eder ve Labeler NearBy (LN) içindeki 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 etiketleme için dağıtmasına olanak tanır. Etiketleme görevleri, NEAR Protocol blok zincirinde bir NEAR akıllı sözleşmesi aracılığıyla yönetilirken, görüntü verileri araştırmacı tarafından ln-researcher aracılığıyla 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ü gerçekleştirir. Bu, isteğin imzasını doğrulamayı ve görevin varlığını ve atanmış etiketleyiciye ait olduğunu onaylamak için ilişkili akıllı sözleşmeyi kontrol etmeyi içerir.
İstek, araştırmacının kendine ait barındırılan ln-researcher API’sinde doğrulandığında, fonksiyon görüntüyü yerel Postgres veritabanından alır, görüntüyü şifreler ve ardından etiketleme için görüntüyü çözebilen yetkili etiketleyiciye teslim eder. Aynı zamanda, fonksiyon görüntünün durumunu veritabanında güncelleyerek etiketleme sürecinin ilerlemesini gösterir. Bu süreç boyunca, hem araştırmacının hem de etiketleyicinin RSA anahtarları kimlik doğrulama için kullanılır. Görüntüyü şifrelemek için ise AES şifrelemesi 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. Güvenli veri transferini sağlar ve görüntü etiketleme sürecini etkili bir şekilde izler ve yönetir. Ayrıca, bu süreç, en azından bu uç nokta için HTTPS kullanımını ortadan kaldırma potansiyeline sahiptir.
Bu özel uç nokta/fonksiyon test edildi ve işlevsel olduğu kanıtlandı. Aşağıda, Labeler NearBy’nin genel işlevselliğini gösteren ve yukarıda bahsedilen uç noktanın/fonksiyonun nasıl çalıştığını açıkça gösteren bir diyagram bulunmaktadır:
Sonuç
Üzgünüm, ama üzücü gerçek şu ki, bu projeyi hackathon’un son tarihine kadar tam olarak tamamlayamadık. Projenin çoğu tamamlandı, örneğin ln-researcher, ancak frontend (ln-labeler) tamamlanmadı ve canlı bir demo yayınlayamadık. Backend (ln-researcher) temelde tamamlanmış olmasına rağmen, düzgün çalışan bir frontend olmadan ve canlı bir demo olmadan, hiç kimse Labeler NearBy fikrini deneyimleyemedi. Bununla kalmayıp, jüri üyeleri projeyi deneyimleyemediler ve bunun yerine başvuruyu okumak, kodu incelemek ve/veya kendileri çalıştırmaya çalışmak zorunda kaldılar. Bu da kazanma şansımızı neredeyse sıfıra indirdi. Bu, 15 Aralık 2022’de hackathon kazananları açıklandığında doğrulandı ve biz onların arasında değildik.
Kaybetmek
Bu hackathonun nihai sonucunun moral bozucu olduğunu saklamayacağım. Bu projeye aylarca emek verdik ve bu projenin araştırmacılara çok faydalı bir araç sağlayacağını düşündüğüm için büyük bir vizyonum vardı.
Üstlendiğim projeler için net bir standartım var: ya başarılı olurlar ya da başarısız; ortada bir ara yok. Bu proje, son tarihe kadar tam olarak tamamlanmadığı için bir başarısızlık oldu ve potansiyel kullanıcılara erişilemez kaldı.
Ancak, başarısızlığın hayatın doğal bir parçası olduğunu hatırlamak önemlidir. Başarılarımız, başarısızlıklarımızdan öğrendiğimiz dersler üzerine inşa edilir. Bu hackathonun sonucu moral bozucu 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ı:
- Seçtiğimiz proje, üzerinde iterasyon yapmadan önce birçok özelliğin önceden inşa edilmesini gerektiriyordu. Bununla ne demek istiyorum? Bu proje, fikrin test edilmeden önce neredeyse tüm bileşenlerinin inşa edilmesini gerektiriyordu. İşlevsellik için daha az temel bileşene sahip bir projeyi seçmek daha mantıklı olurdu. Böylece, temel bileşenleri daha hızlı inşa edebilir ve projede daha erken iterasyon yapabilirdik. Böylece, 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ı bir şekilde pazara çıkmayı, kullanıcılarla konuşmayı ve iterasyon yapmayı vurguluyor. Bunu bu hackathon için projemizle yapmalıydık.
- Bu projenin inşa edilmesinin ne kadar süreceğini küçümsemişiz. Bu bizim ilk hackathonumuzdu ve merkeziyetsiz bir uygulama (dapp) yapma konusunda ilk deneyimimizdi. Bununla kalmayıp, ben tam zamanlı bir yazılım mühendisi olarak çalışıyordum ve arkadaşım yüksek lisansını tamamlıyordu. Yine de, 2 ayın yeterli olacağını düşündük. Projenin kapsamını azaltmak ve/veya iş yükümüzü azaltabilecek bir takım arkadaşı bulmak daha mantıklı olurdu.
- Winston Churchill ünlü bir şekilde şöyle demiştir: “Mükemmeliyet, ilerlemenin düşmanıdır.” Bu projeyi bir işten tüketiciye (B2C) ürünü gibi ele alıyordum, oysa bu sadece bir hackathon projesiydi ve en fazla bir minimum uygulanabilir ürün (MVP) olabilirdi. Bu nedenle, erken aşamalarda, temel özelliklerin yeterince çalışmasını sağlamak yerine küçük detaylara çok fazla zaman harcadım.
Bu değerli derslerin yanı sıra, hem kişisel yan projelerimde hem de profesyonel çabalarımda son derece değerli olan yeni beceriler kazandım. Bu beceriler şunları içeriyor:
- Node.js, JavaScript ve Express.js ile API geliştirme
- Veri yönetimi için PostgreSQL kurma ve kullanma
- PG gibi paketler kullanarak API geliştirmeye PostgreSQL dahil etme.
- Veri güvenliğini artırmak için RSA (asimetrik şifreleme) ve AES (simetrik şifreleme) kullanma.
Sonuç
Genel olarak, bu hackathona katıldığımız için mutluyum, nihai sonuçtan hayal kırıklığına uğramış olsam da. Labeler NearBy üzerinde çalışırken edindiğim değerli dersler ve beceriler için minnettarım, çünkü bunlar beni daha iyi bir geliştirici yaptı ve bir sonraki projemin geliştirilmesine önemli ölçüde katkıda bulundu: Notify-Cyber.
Diğer Notlar
- Labeler NearBy’e geri dönebilirim, ancak şu anda bu proje “uzun bir ara” vermiş durumda.
- Şu anda, Labeler NearBy yalnızca NEAR’ın testnet’inde çalışmalıdır. Daha fazla geliştirme, test etme ve denetim gerekmektedir.