Archive for April, 2012

Twitstreet

TwitStreetBugün tam bir yıl oldu twitstreet fikrinin aklıma yerleşmesinin üzerinden geçen zaman. Şimdi size twitstreet projesinin nasıl başladığını nasıl geliştiğini ve nasıl sevilen bir oyun haline geldiğini anlatayım.

2011 yilinin Mart ayında ne yapsak ne yapsak diye düşünürken 2007 yıllarda severek oynadığım bir oyun aklıma geldi. Oyunun o zamanki adı alexadex.com fakat sonra oyun adres değiştirmiş urladex.com olmuş. Urladex oyununda web sitelerinin isimlerini satın alıyorsunuz, eğer sitenin ziyaretçi sayısı artarsa sizin de puanınız o oranda artıyor. Oynaması oldukça zevkli bir oyundu. Oyun dataları isminden de anlaşılacağı şekilde alexa.com’dan çekiyordu. Bir dönem çok popüler olan bu oyun, bazı oyuncuların alexa.com’daki dataları alexadex‘ten daha hızlı  çekmesi sebebiyle git gide popülerliğini kaybetti. 2011′de ben girdigimde bu site tamamen ıssızdı.

Ne yapsak ne yapsak diye düşünürken aklıma benzer bir oyunu twitter üzerinden yapmak geldi. Oyuncular twitter kullanıcılarının takipçilerini alıp satacaklardı. Eğer takipçi sayısı artarsa oyuncunun puanı da aynı oranda artacaktı. Fikir oldukça güzeldi sıra kodlamaya gelmişti. Github‘da bir repository açıp işe başladık. Burda bence yaşanan bir sıkıntıdan söz edeyim. Daha sonra da bir projeye başlarken bu fikri savundum hep. Yeni başlayan bir projede iki, üç, dört kişi birden çalışmaya çalışmak işleri yavaşlatıyor. Bence öncelikle bir kişi kendi başına dizayn edip kodlamaya başlamalı temellerini atmali, projenin taslağı belli olduktan sonra diğer insanlar projeye dahil olabilir. Yeni özellikler ekleme olsun, hata düzeltme olsun herşey böyle daha hızlı ilerliyor. Eğer yapacagınız işi ayrıntılı olarak biliyorsanız diyaznınızı, ne yapılacağını nasıl yapılacağını yine aynı anda birden cok kişi çalışabilir ama bizimki sadece bir fikirdi.

Özgur ile projeyi kodlamaya başladık. Bir taraftanda twitter api’sini araştırıyorduk. İlk karşılaştığımız problem twitterdan istediğimiz kadar data çekemeyeceğimiz gerceği oldu. Eğer twitter’a giriş yapmadan twitter’dan çağrı yapıyorsanız saatte 150 sorgu gibi bir limit var. Twitter‘a login olarak sorgu yapıyorsanız  saatte 350 gibi bir limit var. Bunlarin ikisi de bizim ihtiyaclarimizi karşılamıyordu. İlk çözüm olarak kendimiz yüzlerce hesap açıp bunlarla mı sorgu yapsak diye düşündük fakat bu da site büyüdükçe başa çıkılabilecek birşey değildi. Ayrica o kadar hesap açmak içinde bir sürü vakit harcayacaktık. Daha sonra biri bizim sitemize login olduğunda onun adına sorgu yapabileceğimizi farkettik. Yani üye sayımız çarpı 350 tane sorgu yapma hakkımız olacaktı. Ve üye sayısı arttıkça da sorgu yapma sayımız artacaktı.

İlk olarak bu sistemi kurduk. Daha sonrasında benim Dallas’a gitme durumum oldu. Dallas’a gittiğimin ilk zamanları yine koda devam etmeye çalıştım fakat oradaki işlerin de yoğunlaşmasıyla git gide projeden koptum. Akabinde Özgür işten ayrıldı. Dört ay gibi bir süre geçtikten sonra Dallas’taki işlerin azalmasıyla tekrar twitstreet‘e kod yazasım gelmişti. Öncelikle Özgür ile beraber yazdığımız kısımları tekrar düzenledim. Anlamadığım yerleri sildim, hibernate kullanıyorduk onu kaldırdım kendimiz yazsak queryleri daha performanslı yazarız sadece istediğimiz datayı çekeriz diye düşündüm. Bu karara iyi veya kötü deyemeyeceğim çünkü bence ikisi de yakın performanslarda olurdu. Bu değişiklikleri yaparken projeyi tamamen dağıttım diyebilirim bir kaç gün çalışmadı nerdeyse. Sürekli şu sınıflar şu pakette olmalı bunlar burada bu sınıflar için yeni bi paket yapayım bunları oraya alayım diyerek geçti bir kaç gün.

En sonunda kendimce temellerini atmıştım projenin. Neyin nereye konulacağı ne şekilde çalışacağı belliydi. Türkiyeye geldikten sonra da oldukça vaktim oldu. Hızlı bir şekilde kodlamayı ilerlettim. 15 Ocak2012 gibi temel özellikleri çalışır hale gelmişti oynanabilir durumdaydı. Hemen rimuhosting.com dan sunucu kiralayıp projeyi açtım. İşyerinde arkadaşlarla oynamayı başladık ilk olarak. Birinci sezonumuz 15 Ocak – 1 Şubat arası oldu. İlk koyduğum halinde oldukça fazla hatalar vardı insanlar oynadıkça ortaya çıktı ve hemen sezon içerisinde bunları düzelttik. Bu günlerde üye sayımız 40 falandı. Fakat kırk üyede bile oyun performans vermiyordu biz hep yazdığımız kodun performanssız çalıştığını düşündük ve iyileştirmeye çalıştık ama bir türlü istediğimiz şekle gelmedi. Böyle olunca ne Türkiyede duyuru yapabildik ne yabancı forumlarda.

İkinci sezon bir ay sürdü bu sürede işyerinden Mustafa ve Çağdaş da katıldılar projeye. Zaten gündüz işyerinde çalışıp akşam evde en fazla üç dört saatimizi ayırabiliyorduk projeye başkalarının yardımcı olması iyi oldu. Mustafa da işten ayrılınca eskisi kadar çok sık ilgilenemedi ama Çağdaş çoğu zaman ben de daha fazla kod yazdı. Şubat sonunda ikinci sezonun çok uzun sürdüğüni insanların sıkıldığını farkettik ve Mart ayından itibaren sezonları bir haftaya indirmeye karar verdik.

Bu arada uygulamamızı birden fazla sunucu üzerinde çalıştırıp performansı arttırmak istiyorduk. İlk olarak rimuhosting üyeliğimizi iptal ettik ve linode‘dan yeni sunucu kiraladık. Uygulamayı linode‘a koyunca çok hızlı çalıştığını hiç sorun çıkarmadığını farkettik. Böyle olması bizi çok sevindirdi çünkü duyuru yapmayı hep bu performans problemlerinden dolayı erteliyorduk.

Buraya kadar Çağdaş oyuna bir çok yeni özellik ekledi. Satın aldığın bir twitter hesabından nekadar para kazandığınızdan, satın aldığınız hesapların artış hızına kadar değişik özellikler. Farkettiğimiz başka bir sorunda insanların twitterdan hesap aramaya çok vakit ayıramadıkları oldu. Bu yüzden Tavsiye Edilen Hisseler diye bir bölüm oluşturduk. Bu bölümde dünya trendleriyle ilgili twitter hesaplarını gösterdik. Buraya giren hisseler genelde hızlı yükselen hisselerdi. Daha sonra üye sayımız arttıkça buraya tek dünya trenlerini değil bütün ülkelerin trendlerini ekledik.

Ve ben ilk duyuruları forumlara yazarak yapmaya başladım ilk yazdığım forum ceviz.net tir. Çok sağolsun ceviz.net kullanıcılarından çok olumlu yorumlar aldık. Olumsuz yorumlarda aldık ama bunlar oyunun kendisinden ziyade twitter kullanmayı ve oyun oynamayı saçma bulan kişilerdi. Belli başlı forumlara yazdıktan sonra teknoloji bloglarına yazmaya başladım. İlk olarak shiftdelete.net‘e yazdım oradaki bir editör geldi oyunu bir süre oynadı ve haftanın gezilesi web siteleri bölümüne tanıtım yazısı yazdı. Burada üye sayımız ve trafiğimiz biraz arttı. Daha sonra webrazziye yazdım sağolsun onlardan da bir editor benimle iletişime geçti ve bir tanıtım yazısı yazdı. Webrazzi‘deki yazıdan sonra üye sayımız çok hızlı bir şekilde arttı. Daha sonra tamindir.com ve bilgeyazar.org gibi sitelerde de tanıtım yazılarımız çıktı. Oyunun kodlarının açık olması ve oyunun tamamen ücretsiz olması sebebiyle bende forumlara veya başka yere tanıtım yazısı yazmakta sakınca görmedim.

Bu dönemde yine oyuna iki önemli özellik ekledik. Biri davet sistemiydi. Birini davet ederseniz ve o kişi üye olursa davet eden ekstra puan alıyordu. Twitter da takipçi sayısı çok olan kişiler oyuna davet twittleri atınca yine üye sayımızda hızlı bir artış oldu. Üye sayımızı arttıran yine önemli bir özellikte o günün en çok artanına attığımız twitstreet.com daki en popüler kişisiniz tweetleri oldu. Bazı twitter kullanıcıları bunları retweet edince onların takipçileri de görmüş oldu ve üye oldular. Bununla ilgili yaşanan en ilginç olay America Ferrara‘nın yanlışlıkla bizim mesajı re-tweet etmesi ve takipçilerinden özür dilemesiydi sanırım.

Sadece Türkiye’deki sitelerde yaptığımız tanıtımla üye sayımızı 300 lere çıkardık ve sıra yurtdışındaki forumlarda sitelerde tanıtım yapmaya geldi. İlk olarak reddit.com‘a yazdık kendi aramızda da up-vote ederek üst sıralarda tutmaya çalıştık sonra bizim dışımızda da insanların up-vote etmesiyle günün en beğenilenlerine girdi twitstreet, programming alt reddit‘inde. Sitemizde reddit etkisi gördük günlük ziyaretçi sayımız 10 a katlandı o gün için ve yabancılar oyunu oynamaya başladı. Bu şekilde üye sayımız 700 lere yaklaştı fakat oyunu oynayan bir sonraki sezon gelmiyordu. Oyunu aktif oynayan oranı toplan üye sayısının 10% – 20% si kadar oluyordu her sezon. Bunun için her sezon başladığında üyeleri tekrar oyuna davet eden bir özellik ekledik oyunculara tweet atıyorduk tek tek. Bu bence yine çok etkili olmadı ama en azından oynayan sayısını aynı seviylerde tutmayı başardı.

İkinci bir özellikte yurtdışı forumlarda çok tanıtım yapamadık ama yazdığımız yerlerden de sadece redditten büyük dönüş oldu. Bunun için oyuna yeni bir özellik ekledim. İngilizce içinde “I am bored” veya “I got bored” veya Türkçe “Çok sıkıldım” içerikli tweet atan birisi olursa twitstreet ona çok sıkıldıysan gel twitstreet oyna tarzı bir mesaj atıyor. Daha sonra mesaj attığımız hesapları inceledim sanırım buradan da bir kaç kişi gelmiş oyuna :) Fakat hem davet mesajları hem sıkılanlara mesajlar atınca bir süre sonra twitter mesaj attığımız hesapları blokladı bunun için daha sofistike bir yöntem geliştirmemiz lazım twitter’ın spam’e karşı oldukça katı kuralları var bende bu kurallara çiğnemeden çok seyrek aralıklarla mesaj atıyorum 15dk bir ve 20dk da bir. Ama sürekli mesaj atmaktan ziyade mesaj attığımız hesapların sürekli mention atması dışında mentionsız normal mesajlar göndermesi arada birilerini takip etmesi birileri tarafından takip edilmesi yani normal insan gibi davranması gerekiyor.

Sonuç olarak bir fikrimiz vardı oturduk gerçekleştirdik 700 kişinin ilgisini çekerek oyunu oynattık. Başarılı oldumu tam bilemiyorum bunun için biraz erken Mart başında ilk duyuruları yaptığımızı varsayarsak bir buçuk ay karar vermek için çok erken. Zaten bizim yabancılara göre en kötü özelliğimiz çok fevri sabırsız davranmamız. Başarılı olmuş bir çok projeye bakınca adamların yıllarca bıkmadan geliştirmeye devam ettiklerini yaptıkları işlerin arkasında durduklarını görüyoruz.

Twitstreet tabi ki ne facebook ne twitterlar ile karşılaştırılabilecek birşey hatta twitter’ın api’si kullanılarak yapılmış bir oyun sadece ama yine de bir gün onbinlerce kullanıcısının olacağına belli bir kitle tarafından sevilerek oynanacığına inanıyorum. Şuanda geldiğimiz noktada da twitstreet.com dünyada en popüler twitter oyunu diyebilirim.

Bir projenin boyutu yazılan kod miktarıyla ölçülmez tabi ama yinede kattettiğimiz yol açısından benim için belirleyici. İlk versiyonu koyduğumuz Ocak ortasında 3.000 satırlardayken şimdi 10.000 üzerine çıktık. Daha eklenecek çok özellik düzeltilecek çok hata var, mesela yine oynayan sayısını arttıracak iphone/android telefonlarda çalışacak bir versiyonumuz yok.

Twitstreet‘i yaparken en güzel tarafı bence bir fikri alıp sıfırdan bir ürün haline getirmek insanların eğlenerek vakit geçirdikleri birşeyler ortaya çıkarmaktı. Ve bunu yaparken açık kaynak kodlu yaptık başka bir güzelliği ise tek başına yazmaktan ziyade diğer insanlarla beraber sorunsuz geliştirdik.

 

Comments