28.02.2009

Internet'in Üç Platformu

Internet üzerinde 3 çeşit platform vardır” diye yazmıştı ilk web tarayıcısının mimarlarından Marc Andreessen bir buçuk yıl kadar önce. Aktif bir girişimci yatırımcı programcı olan Andreessen beyaz yaka sosyal ağ platformu Ning.com’u büyütmekle meşguldü. Bununla uğraşırken ortaya koyduğu Internet platformları gözlemi günümüzün üretim biçimlerini anlamak için önemli çatı oluşturuyor.

Günümüzde bir web servisi sadece servis değil, aynı zamanda üzerinde dışarıdan uygulamaların çalışabildiği bir platform. Programlanabilir bir sistem. Servisin belirli özellikleri API (“Application Programming Interface”) yoluyla açık tutuluyor. Ayrıntılarına burada girmiycem, basitçe API bir web servisine programatik, yani başka programlardan erişim sağlıyor. Web servisinin sahipleri dışında birileri servisi kullanan başka uygulamalar geliştirebiliyor. Mesela Facebook’da bir zombie oyunu, bir gelişmiş poke uygulaması, veya profilinize bakanları görme kutusu bunlara örnek. Bu uygulamları Facebook değil mesela Kaliforniya’da bir lise öğrencisi, Filipinler’de bir memur, veya Türkiye’de bir web ajansı geliştiriyor.

Internet’de bulunan platformların 3 çeşit olduğunu söylüyor Andreessen, özetle şöyle:

1. Erişim API

Uygulama platformdan veri okur platforma veri yazar, ve sadece kendi web adresinde yaşar. Tüm işletme geliştiriciye ait. Örnek: Flickr, Delicious, Twitter ve bunları dışardan kullanan uygulamalar.

2. Eklenti API

Uygulama veri okuma yazma yanında, platformdan erişilebilir. Uygulama kendi web adresinde değil platform içinde gömülü kullanılablir. Yine tüm işletme geliştiriciye ait. Gösterim kontrolü platforma ait. Örnek Facebook ve üzerinde çalışan uygulamalar.

3. Canlı ortam

Uygulama tamamiyle platformda çalışıyor. Geliştirici uygulamayı geliştirdikten sonra kodu platforma yüklüyor ve hemen hiç bir işletme kaynağı harcamıyor.  Örnek: Ning, Salesforce, SecondLife, Amazon EC2 S3, Google App Engine, Akamai Edge.

İlkinden sonuncusuna doğru platfom sahibinin hem sorumlulukları artıyor hem geliştiricinin emeklerini sömürme kapasitesi artıyor.

Bu yazıyı bir buçuk yıl kadar önce yazmaya başlamış bırakmıştım, şimdi rafdan alıp toparladım. Bugün artık bu üç platform tipinden ayrılmış yeni yaklaşımlar var. Serbest pazar ve rekabet bu son saydığımız canlı platform türünün DNA’sını değiştirerek paralı servis olmaya zorladı. Artık parayla alınıp satılan “cloud computing” servisleri kullanır olduk.

27.01.2009

Upgrade! Istanbul: Sosyal Ağlar Üzerine

Yarın akşam Upgrade! İstanbul toplantısı yapılıyor Kadir Has Üniversitesi İletişim Fakültesi’nde (Haliç’deki kampüs). Toplantıda İsmail Hakkı Polat ile beraber sosyal ağlar üzerine bir konuşma yapıyoruz. Ben konuşmada “sosyal ağlarda güç odakları” üzerine bir kaç soruya eğilicem:

  • Sosyal ağ uygulaması nasıl geliştirilir?
  • Platform sahibi, uygulama geliştiren, ve kullanıcı arasındaki farklar nelerdir?
  • Mikro-emek veya kullanıcı emeği nedir, nasıl sömürülür?
  • Türkiye’deki Internet yasakları ile sosyal ağlar arasındaki maddi ilişkiler nelerdir?
  • Yaklaşan kümesel işlem (“cloud computing”) trendleri sosyal ağımızı nasıl etkileyecek?

Bu soruları Düğümküme’de yazdığımız konular bağlamında ve son zamanlarda yaptığımız UserLabor, Meta-Markets, ve Mypocket projelerinden örneklerle tartışıcaz.

Sosyal ağ denilince akla ilk gelen kavram Web 2.0. Bu kavramın pek çok çatlakları var. Konuşmaya gelmek isteyenler için hazırlık olsun diye Web 2.0 nedir burada tekrar ediyorum:

Web 2.0 nedir? (çeviri)

Web 2.0, internetin bir platform olarak ele alınması sonucu ortaya çıkan, bilgisayar endüstrisindeki iş devrimidir ve bu yeni platformda başarının kurallarını tanımlamayı amaçlayan bir çabadır. Bu kuralların başında, ağ etkilerini (“network effects”) lehine çeviren ve kullanıldıkça daha da iyileşen uygulamalar üretmek gelir. Başka bir deyişle, Web 2.0 uygulamaları toplu zeka (“collective intelligence”) ile beslenir ve büyür.

Kaynak: Web 2.0 Kompakt Tanımı, Tim O’reilly

Web 2.0 nedir? (Türkçesi)

İnsanların katkısını yani toplu zekayı uygulamanın gelişimi doğrultusunda kullanan sosyal bileşenli uygulamalar.

Kaynak: Web 2.0 için Deneysel Türkçe Tanım, Engin Erdoğan

Etkinliğin resmi ilanı şöyle:

THE UPGRADE!ISTANBUL
NOMAD
http://nomad-tv.net/upgrade

28 Ocak 2009 – 18:30 (Dışarıdan katılıma açık)
Kadir Has Üniversitesi, Iletişim Fakültesi, Istanbul
Cibali Kampüsü, Sinema Salonu #2

Sosyal Ağlar üzerine
İsmail Hakkı Polat & Burak Arıkan

İsmail Hakkı Polat Web 2.0 üzerinden sosyal ağları ve paylaşımı, fiziksel ile siberin kesiştiği nokta olarak da Web 3.0′ı tartışıyor. Burak Arıkan ise, ağ topolojileri, ilişki dinamikleri, protokol ve enformasyon tasarımı üzerinden büyük ölçekli ağları yaratıcı ve eleştirel bir eylem olarak kullanıyor. Bu çizgide, son işlerinden örnekler sunacak.

* Yukarıdaki görsel Meta-Control serisinden.

10.12.2008

Cep Telefonlarında Beş Yıl Önce Beş Yıl Sonra – 1

Bu yazıda cep telefonlarının geçtiğimiz beş yıl içerisindeki gelişiminden ve önümüzdeki günlerde nasıl bir yol izleyebileceğinden bahsedeceğim. Cep telefonu fermanı tadında upuzun bir yazı olmaması için içeriği ikiye bölüyorum. Bu ilk bölümde geçtiğimiz beş yıla bakacağız.

Cep telefonları, karşıladıkları kullanıcı beklentileri açısından evrim geçiriyor. Alışılageldik temel özellikler (örn. boyut, şarj, sağlamlık) satın alma kriterleri olarak yeterli olmamaya başladı, çünkü artık mobil cihazlar kullanıcılara telefon odaklı fonsiyonlardan çok daha fazlasını sunuyor. Geçtiğimiz yıllarda üreticiler, kullanım alanlarına göre özellikler sunarak kendilerini farklılaştırdılar. Mesela, iş dünyasına yönelik  telefonlar bağlılık (Exchange, e-posta, bluetooth vs.) ve verimlilik üzerine yoğunlaştı. Bu alanda Blackberry, e-posta sistemi ve klavyesi ile kendine has bir kültür oluşturdu, hatta bazı kullanıcılar için bir nevi bağımlılık yarattı.

Bireysel telefonlar ise kullanıcılara müzik dinleme, fotoğraf çekme gibi başka cihazların gerçekleştirdiği fonksiyonları tek cihazla yapma olanağı sunmaya başladı. Mobil internet tarayıcılarının içinde bulunduğu içler acısı hal iPhone‘un çıkışı ile bir son buldu. Bireysel cep telefonları özellikle son iki yıldır büyük gelişim gösterdi. Önce iPhone geldi, arkasından LG, Samsung ve HTC gibi üreticilerden bir dolu benzer cihaz çıktı. iPhone, aynı zamanda form olarak yeni bir kategorinin başını çekti. Bu kategoriye tam ekran dokunmatik mobil cihaz diyebiliriz.

Bireysel cep pazarında uygulamalar, iPhone ile yeni bir anlam kazandı. Poker, Solitaire gibi basit ve popüler oyunlar yerini çok daha alımlı, garip ve yaratıcı uygulamalara bıraktılar. Bu uygulamaların gelişimi başlı başına bir yazı konusu fakat kısaca şunu söyleyebiliriz. Cep telefonuna uygulama eklemek/çıkarmak, hem arayüz açısından hem de psikolojik açıdan çok daha kolay bir aktivite olarak algılanmaya başladı.

Tam ekran dokunmatik cihazların en büyük eksiği, kurumsal e-posta sistemlerini Blackberry ve benzerleri kadar iyi desteklememesi ve iş dünyasına yeterince hitap edememesi idi. Bu eksiklik geçtiğimiz 6 ayda iPhone’un Microsoft Exchange desteği vermesi ile azaldı ve iPhone PDA dünyasına yarışmacı olarak katılmış oldu.

Yazının ikinci bölümünde bireysel-kurumsal cihazların HTC Android G1 ve Blackberry Storm gibi cihazlarla nasıl bir yol izlediğinden bahsedeceğiz.

03.12.2008

İş Planı Hazır 500 iPhone Projesi

Yap yap sat. Düşünme durma hemen şimdi başla! Gerçek mi reklam mı yeni bir toplu filtreleme taktiği mi sorma. Silikon Vadisi’nin en büyük Venture Capital’lerinden Kleiner Perkins iFund isminde 100 milyon dolarlık bir fon işletiyor iPhone uygulaması geliştirecek startup şirketler için. Techcrunch’dan aldığım bu habere göre fon’a yapılan başvuruların bulunduğu SQL veritabanı yanlışlıkla web’a açılmış. Kim göndermiş, iş planı, demo herşey 558 proje tüm detaylarıyla burada:

http://209.85.173.132/search?q=cache:http://planet.emeteora.com/~nitemare/kpcb.sql

Kleiner Perkins uyandığında kaldırtmış verileri ama web’e bir defa düşen mal öyle kolay kolay ortadan kaybolmaz. Anında kopyalanmış ve hatta hemen Google Index’ine girmiş.

Ekonomik açıdan bu olayın web’e olan etkisi bir zamanlar New York’da yaşanan elektrik kesintisinin müzik tarihine etkisine, Hip hop’un doğuşuna benziyor. Yaşanan büyük elektrik kesintisi sonucu tüm New York karanlığa gömülmüş. Bronx’un fakir sokaklarından gelen gençler elektronik ve müzik dükkanlarını yağmalayıp çeşit çeşit malzemeler edinmişler. Sonra bunlarla yaptılkarından Hip Hop gelişimiş derler bir efsane olarak.

10.08.2008

Google App Engine Üzerinden YouTube'a Nasıl Erişilir?

Bu yazıda Google App Engine kullanarak Türkiye’den erişilebilen YouTube proxy uygulaması nasıl oluşturulur, onu öğreneceğiz. Bu, ucuz reklamlar ve ‘ninja hakaretlerinin’ yer almadığı, sıfır maliyetli ve Google engellenmediği sürece varlığını sürdürecek basit bir uygulama olacak. İki tane çalışan YouTube uygulamasını şuradan (evet Türkiye’den de) görebilirsiniz:

Yazıya “Meet the Sniper” videosu eşliğinde devam ediyoruz :). App Engine YouTube uygulamanın nasıl çalıştığını merak ediyorsanız, okumaya devam edin.

Google App Engine Nedir?

Bildiğiniz gibi Google bir süre önce çok şık bir hareket yaptı, ve muhteşem altyapısının bazı parçalarını Google App Engine adıyla paketleyerek kamuoyuna sundu.

Google App Engine, Google mimarisinden faydalanarak web uygulamaları geliştirmenizi ve yayınlamanızı sağlayan bir platform. Üstelik bedava.

Bu sayede mesela kullanıcı zaten Google üyesi ise, bu kişiye ait kullanıcı adı, email gibi bilgileri kullanabiliyorsunuz, hatta Google Query Language (GQL) ile de erişebildiğiniz bir veritabanınız, imaj işlemleri yapabilmenizi sağlayan Images API‘ınız ve üstüne mail falan da yollamanızı sağlayan Mail API cabası.

Google App Engine sayesinde Google’ın hem CPU gücünden, hem depolama gücünden, etinden sütünden herşeyinden faydalanabilirsiniz. Bu henüz ilk sürüm, ileride bunu bir çeşit iş modeli haline getireceklerine kuşku yok. Hatta Users API ile uğraşırken, Google’ın internetin “kullanıcı veritabanı” olması gerektiğine bile karar verdim. Kesinlikle kullanıcı işini bu adamlar halletmeli. Bırakalım e-mailleri falan Google toplasın.

Google App Engine, arkasında Guido Von Rossum gibi bir idolün de bulunduğu, ‘internetin framework’ü olabilecek potansiyelde, Google ile birlikte nefes alan bir platform :).

Daha detaylı bilgi ve dökümantasyon için, http://code.google.com/appengine/docs/ adresine gözatın.

Hangi programlama dilleri destekleniyor

App Engine servisi şimdilik sadece Python ile kodlayabiliyorsunuz, ama Ruby, PHP gibi dilleri de implemente etmeleri an meselesi. (Bunun gibi bir Ruby on Rails servisine de heroku.com adresinden ulaşabilirsiniz.)

Görülen o ki, bir takım limitler koymuşlar. Mesela boyutu 1mb den fazla olan HTTP responselar bloklanıyor, günlük 2GB trafik limitiniz ve toplam 500MB dosya depolama izniniz var. Yine de appengine küçük ve orta ölçekli işler için uygun. Hatta büyük ölçekli işlerde de yardımcı bir backend olabilir.

App Engine YouTube uygulamsına başlamadan önce

Bu yazı zaten ‘derdinizi anlatacak kadar’ Python bildiğinizi ve bir appengine uygulaması kurmuş ve çalıştırmış olduğunuzu varsayarak yazıldı. Eğer bu konularda hiç bir fikriniz yoksa, önce Google App Engine indirin. Sonra 10 adımda nasıl appengine uygulaması çalıştırılır öğrenin ve buraya dönün. Bu işlem yaklaşık 20 dakikanızı alacak.

Python’a bir kaç saat içinde güzel bir başlangıç yapmak isterseniz, bedava dağıtılan “A Byte of Python” kitabına göz atabilirsiniz.

Başlıyoruz…

Öncelikle uygulamanıza ait dosyaları koyacağınız klasörü oluşturun, benimkinin adı “itube” olacak.

Başlangıç için bu itube klasörü altında “app.yaml” adinda bir dosya oluşturuyorum, bu dosya içerisinde uygulamam ile ilgili bir takım önemli bilgileri ve URL Handler ları tanımlıyorum.

app.yaml

application: itube
version: 1
runtime: python
api_version: 1

handlers:
- url: /assets
  static_dir: assets
- url: /.*
  script: itube.py

application kismini kendi uygulamanızın ID si ile değiştirin. /assets klasörü altındaki dosyalar statik dosyalar, geri kalan herşey itube.py dosyasının kontrolünde olacak.

Bakalım itube.py ne yapıyor.

itube.py

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.api import urlfetch
from urlparse import urlparse
import re

class MainPage(webapp.RequestHandler):

    def get(self):

        self.response.headers['Content-Type'] = 'text/html'

        baseurl = "http://www.youtube.com"
        requrl = urlparse(self.request.url)
        url = baseurl + requrl.path + "?" + requrl.query

        result = urlfetch.fetch(url, allow_truncated=True)

        if result.status_code == 200:
            s = result.content

            # regex işlemlerini şimdilik sadece video izleme sayfasında yapıyoruz
            if requrl.path == '/watch':

                # Video dosyasının gerçek adresini bulabilmek için uygulanan işlem
                yt_video_id = re.search("\"video_id\": \"((.*))\", \"l\"", result.content).group(1)
                yt_t = re.search("\"t\": \"((.*))\", \"hl\"", result.content).group(1)
                # Bu bilgi "assets/base.js" dosyasında, flashVars olarak atanmak üzere JS olarak da tanımlanıyor
                # swfArgs tanımlanmazsa SWF Object hata veriyor
                s = re.sub("swfArgs(.*)", "swfArgs = {};\nvar ytVideoId = '"+yt_video_id+"';\nvar ytT = '"+yt_t+"';\n", s)

                # YouTube'un kendi playerına harici FLV dosyalarını oynattıramayacağımız için,
                # YouTube playerı yerine kendi playerımızı yüklüyoruz
                s = re.sub("swfUrl(.*)", "swfUrl = 'http://itube.appspot.com/assets/player.swf';", s)

                # Aynı işlemi JS dosyası için de yapıyoruz ki, bu dosya üzerinde rahatlıkla hareket edebilelim
                # YouTube çoğu işlemi Ajax numaralar ile yapıyor, login falan yapılabilmesi için Javascript'e ince ayar çekmek gerekecek
                s = re.sub("type=\"text/javascript\" src=\"(.*)\"></","type=\"text/javascript\" src=\"http://itube.appspot.com/assets/base.js\"></", s)

            # Sonucu göster
            self.response.out.write(s)
        else:
            print 'ofmg'

application = webapp.WSGIApplication([('/', MainPage), ('/.*', MainPage)], debug=True)

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()

Önemli detayları kod üzerinde yorumlarla yazdım, itube.py dosyası kısaca, kendisine gelen tüm GET requestlerini aynı şekilde YouTube’a sorgulatıp sonucu dönüyor. Bu sırada eğer video izleme sayfasındaysak, gelen sonuç biraz değişiyor.

Buraya kadar yaptığımız işlem sonucunda, text/html dosyaları appengine üzerinden nasıl proksifiye edeceğimizi gördük. Eğer uygulamayı appengine üzerinde çalıştırırsanız, videoları izleyemediğinizi göreceksiniz :( Bunun sebebi YouTube’un video playerının dosyaları youtube.com üzerinden açmaya çalışması. Elimizde bu flash playerın açık kodu olmadığı için gerekli kısımları değiştiremiyoruz. O halde yeni bir player yazmak durumundayız. İşimizi görecek kadar özelliği olan bir flex video player kodunu itube kaynak kodunda assets klasörü altında bulabilirsiniz (assets/player.mxml)

Flash Video Oynatıcı nasıl çalışıyor?

Bu dosyayı incelerseniz FLV dosyalarının başka bir proxy sitesinden çekildiğini göreceksiniz. Bu aşamada böyle bir proxy sitesi desteği almak gerekiyordu. Zira appengine’ın limitlerinden bahsetmiştik. Appengine üzerinden video/flv dosyalar da indirmek mümkün, ama bu dosyaları YouTube’dan request edecek methodun çalışma süresi 10 sn olarak kısıtlanmış, eğer 10 sn içinde dosyayı alamazsa hata veriyor. 10 sn içinde alsa bile response limit 1048kb. Yani 1Mb ın üstünde videoları bu şekilde indirmek mümkün değil. Belki bir takım yöntemleri var, ama uygulamanın da en azından biraz kalıcı olmasını istediğimden video dosyalarının yükünü bir proxye aktaracağım.

Proxy nasıl dağıtık çalışıyor?

Bunun için tek bir proxy sitesini hedef almak yerine, genel olarak kullanılan bir “Proxy sitesi oluşturma sistemi” ni kurban seçmek daha akıllıca olurdu. Bu günlerde Glype adında PHP ile yazılmış sevimli bir proxy sitesi yapma uygulamasıyla tanıştım. Glype ile oluşturulmuş hakkaten çok-çok fazla proxy sitesi var mı bilemiyorum, ama bunların bir listesi var.

player.mxml dosyasında görecekleriniz bunlardan ibaret. Bu dosya aynı zamanda SWF derlenmiş olarak kaynak kod içerisinde bulunabilir (assets/player.swf)

Yeni video oynatıcımızı derledikten sonra, sıra bunu doğru değerlerle sayfaya yerleştirmeye geldi. Bunun için YouTube’un base javascript dosyasında bazı değişiklikler yapmak gerekiyor. Bu dosyayı daha iyi kontrol edebilmek için, daha önce kaydettim ve kaynak kod da “assets/base.js” altında bulunabilir. Orjinal dosya ile tek farkı 1575. satırdan başlayan writeMoviePlayer() fonksiyonu. Bu fonksiyonu, video player ile uyumlu olsun ve FLV dosyasını bulabilmek için gerekli bilgileri sağlasın diye şu şekilde değiştirdim:

function writeMoviePlayer(player_div,force){
var fo = new SWFObject(swfUrl,”movie_player”,”480″,”385″,”7″,”#000000″);
fo.addParam(‘flashvars’,'ytVideoId=’+ytVideoId+’&ytT=’+ytT);
fo.addParam(“allowfullscreen”, “true”);
player_written=fo.write(player_div);
return fo;
}

Gördüğünüz gibi bu işlemi de yaparken, YouTube’un SWFObject‘ inden faydalanmış olduk.

Uygulamayı nasıl çalıştıracaksınız?

Tüm bu aşamaları atlattıysanız, uygulamanızı appengine’e yüklediğinizde YouTube izleyebileceksiniz.

Henüz oldukça eksiği var, mesela POST requestlerine hiç yanıt vermiyor, bu yüzden Login falan olunamıyor. Ama Users API ile de login olma olasılığı var gibi. Hatta sırf YouTube’a özel bir API çıkarırlar diye düşünüyorum. Ajax fonksiyonların adam akıllı çalışabilmesi bir takım düzenlemeler yapılması gerekiyor. Bazı videolarda HTML yapısı da değişiyor, ona bakmak gerek.

Bana sadece “videoları aratayım bulayım ve izleyeyim” yettiği için, bir süre bu kadarıyla yetineceğim.

App Engine YouTube uygulaması kaynak kodu

Geliştirmek isterseniz kaynak koda http://code.google.com/p/itube-appengine/ adresinden ulaşabilirsiniz.

Eğer böyle bir işe kalkışırsanız bu başlığa bir yorum sallayarak, beni de gelişmelerden, isteklerden haberdar ederseniz sevinirim.

http://sansursensin.com/watch?v=hkb3r9filcM

İyi seyirler :)

Konuyla ilgili önceden düğümküme’de yazılanları hatırlayalım:

11.07.2008

iPhone Pazar Yeri Açıldı

Önümüzdeki bir kaç gün içinde iPhone haberlerinden bıkmış olacaksınız muhtemelen. iPhone neden bu kadar heyecan yaratıyor? Dokunmatik ekran internet bağlantılı akıllı telefon olması mı? Bu özellikleri zaten geçen sene ilk çıktığında aklımızı almıştı. iPhone geldi, iPhone nasıl kırılır?, iPhone Türkiye’de çalışır mı? gibi yazılar Düğümküme’de yüksek trafik alan yazılar olmuştu. Şimdi telefona GPS eklenmesi ve 3G hızlı internet bağlantısı tabii ki telefonu daha da kullanışlı kılıyor. Ancak bu yeni heyecanın esas sebebi iPhone’un bir mobil platforma dönüşmesi.

iPhone sadece bir cep telefonu değil akıllı telefon uygulamaları için bir pazar. Bir zamanlar nasıl Microsoft Windows işletim sistemi PCler için pazar oluşturduysa, nasıl Facebook platformu sosyal uygulamalar için bir pazar oluşturduysa, iPhone da üzerinde uygulama geliştirmeye açık platformuyla akıllı cep telefonları için bir pazar oluşturuyor. Daha çıkmadan yüzlerce uygulamanın promosyonu yapılmaya başlandı. 1 dolardan 20 dolara kadar fiyatlandırlımış, reklamlı reklamsız bedava uygulamlar daha iPhone çıkmadan iTunes üzerinden satılmaya başladı. iPhone App Store‘da en çok satanlar arasında SuperMonkeyBall oyunu, OmniFocus üretkenlik arttırıcı, iLoveControl uzaktan kumanda, YellowPages ilanlar, Twitterrific, BigTipper bahşiş hesaplayıcısı, ShopIt alışveriş listesi, ShoutIt uzaktan sessiz bağırma, Metro Haritaları gibi tek fonksiyonlu uygulamalar var.


En çok satan SuperMonkeyBall 9.99 dolar ve şu ana kadar yaklaşık 12 bin satmış, 120 bin dolar gelir elde etmiş. En pahalı uygulama Omnifocus 19.99 dolar, şu ana kadar yaklaşık bin tane satmış, 20 bin dolar gelir elde etmiş. Bu satışlardan uygulama sahipleri %70 kazanırken Apple %30 kazanıyor. Yani SuperMonkeyBall yapımcısı Sega oyun şirketi 84 bin dolar, OmniFocus yapımcısı Omni Group şirketi 14 bin dolar kazanmış.

Çok satan uygulamalar sahiperine bir gün içerisinde 3-5 bin dolar kazandırırken Apple aynı sürede 50 bin dolardan fazla yapıyor. İngilizce iş alemlerinde “win win” denilen bir durum gerçekleşiyor.


Pinch Media iPhone uygulamaları istatistklerine göre fiyat dağılımı.

iPhone analitik programı Pinch Aanalytics‘in 650+ iPhone uygulaması üzerinden tuttuğu istatistiklere göre bir iPhone uygulamasının ortalama fiyatı 5 dolar. Ancak yukarıdaki grafikde görüldüğü gibi 10 dolar seviyesi de oldukça tutuyor.

Bedava uygulamalardan bazıları reklamlı. Mesela Iconfactory şirketinin geliştirdiği Twitterrific Premium 9.99 dolar iken bedava olanı reklamlı. Aynı şekilde iPhone Flickr uygulaması Exposure reklamsız 9.99 reklamlı bedava. Bu iki uygulamanın reklam dağıtımı ve gösterimi daha önce Reklam Federasyonları Nasıl Kurulur? yazısında bahsettiğimiz The Deck federasyonu ile yapılıyor. Daring Fireball blogundan John Gruber bu iki uygulamanın premium ve bedava sürümlerinin indirilme sayılarını çıkarmış:

Exposure 3,638
Exposure Premium 76
Twitterrific 13,638
Twitterrific Premium 322

Bedava ile premium arasındaki oran, premium/reklamlı yaklaşık 1/40, zamanla değişecektir kesin ama bugün iPhone uygulaması geliştirmek isteyenler veya geliştirmeye başlamış olanlar için ürünlerini iPhone pazarında nasıl konumlandırabileceklerine dair fikir veriyor.

iPhone App Store uyguluması ile direk iPhone üzerinden bu ürünleri satın alıp indirebiliyorsunuz. Bilgi çağında ticaret adına herhalde bugüne kadar yapılmış en büyük gelişmelerden bir tanesidir. Cebimde kullanacağım ürünleri, cebimden alıyorum. Çoğu web ürünlerinde, Facebook uygulamlarında olduğu gibi, alışveriş ile kullanım ortamı aynı…

iPhone bu haliyle bir pazar yerine dönüşüyor. Bir yanda uygulama geliştirenler platform’un sağladığı özellikler üzerinden (gps yer bilgisi, internet bağlantısı, hareket algilayıcıları vs.) çeşit çeşit uygulamalar geliştiriyorlar. Bir yanda iPhone kullanıcıları ihtiyaçlarına göre bu zengin uygulama çeşitlerinden istediklerini satın alıyorlar. Diğer yanda Apple platform’u hızlı, kullanışlı, ve hatasız tutmaya çalışıyor. Kapitalizmin temel kuralı rekabet ortamı daha gelişmiş uygulamlar çıkmasını sağlıyor. Teknolojik platform oluşturma stratejisi Microsoft Windows’dan öğrendiğimiz, yıllar sonra Facebook Platformu ile tekrar karşımıza çıkan, ve şimdi de iPhone plafromu ile tekrar akılları almaya başlayan çok kuvvetli bir kapital stratejisi.

iPhone uygulaması geliştirmek istiyorsanız iPhone Developer Center‘daki belgeleri okuyarak başlayabilirsiniz.

02.03.2008

Sosyal Akım Uygulamaları

sosyal-akim-uygulamalari.jpg

Amerikan Internet’ini takip ediyorsanız son bir aydır ardı arkası kesilmeden çıkan sosyal akım uygulamalarının farkındasınızdır. Twitter, Jaiku, Facebook, Plaxo gibi servislerle başlayan sosyal akım uygulamaları basitçe arkadaşlarınızın hepsine birden bir anda SMS atmaya eş değer bir imkan veriyor. Şu anda ne yaptığınızı yazıyorsunuz bir web arayüzüne bir anda bütün arkadaşlarınız haberdar oluyor sizden. Son zamanlarda WordPress de blogunuzu aynı şekilde kullananbilmenizi sağlayan bir etklentiyi test ediyor.

Bu uygulamların en yaygın kullanım alanlarından biri konferanslarda ve etkinliklerde ne oluyor arkadaşlarınızı ve dünyayı haberdar etmek. Mesela Ebay’in kurucusu Pierre Omidyar şu anda TED konferansında, konferansda Pierre’in gözünden neler olup bittiğini dakika dakika kendi Twitter’ımdan okuyorum:

Pierre: Al Gore TED sahnesine çıktı
Pierre: Gore Tim Oreilly’e öpücük gönderdi
Pierre: Gore: “Küresel ısınma sorununu çözmek için demokrasi sorununu çözmemiz gerek”
Pierre: Gore: “Çalışma vergisi yerine karbon vergisi”
Pierre: Gore: “Bizim nesil bu çözülmesi gereken sorunu sandığımızdan çok daha yukarı çıkarabilir”

Pierre TED konferansındaki yüzlerce Twittercıdan sadece biri, yorumları ve gözlemleri ilginç olduğu için takip ediyorum. Konferans bugün bitiyor, eve dönüyorlarmış…

Sadece metin mesaj mı?

Sosyal akım sadece metinsel mesaj biçiminde değil, fotoğraf ve video olarak da geliyor. Flickr fotoğraf servisinde oluşturulan setler sayesinde gidemediğiniz etkinlikleri adeta fotoroman gibi takip edebiliyorsunuz. Mesela TED konferansından fotoğraflar sahnedeki konuşmacılardan koridorlarda olan bitenlere pek çok anı neredeyse canlı canlı gösteriyor.

Canlı video ise sosyal akım uygulamarında daha yeni yeni yerini alıyor. Örneğin geçenlere Davos Dünya Ekonomik Forumu’nda bir kaç blogcu cep telefonlarından çektikleri videoları anında webden yayınlıyorlardı. Hatta blogcu Robert Scoble yeni Nokia modelinin video stream özelliğini ve Qik cepten video servisini kullanarak ayaküstü yaptığı Davos röportajlarını canlı yayınlıyordu.

Toplayıcılar

Sosyal akım uygulamaları yazma ve toplama servisleri olarak ikiye ayrılmaya başladı. Yazma servisleri bütün içerik üretilen bütün Twitter, Thumblr, Last.fm, Facebook status ve benzeri uygulamalar. Toplama servislerinden kastımız bir çok farklı kaynaktan gelen mesajları toplu olarak okuma sağlayan servisler. Mesela Flickr’dan fotoğraflar, YouTube’dan videolar, Qik’dan canlı videolar, blogdan son yazılar, MySpace’den son mesajlar, Last.fm’den son müzikler hepsi bir listede yayınlanıyor… Bütün bu kaynaklar RSS beslemelerinden okunarak toplanıyor. Bu tür toplayıcı servislere örnekler: FriendFeed, Second Brain, Onaswarm, Lifestrea.ms, sayılabilir. WordPress Lifestream eklentisi ve diğer bir blog yazılımı geliştiren şirket SixApart da MovableType için ActiveStreams adında blogunuzda toplayıcı görevi gören eklenti çıkardı iki ay önce. Bunlardan çok var tabi, en son ReadWriteWeb’de 35 tanesinden bahsedildi.

Esasen toplayıcıların bir RSS okuyucudan (Bkz RSS nedir nasıl kullanılır?) farkı yok sadece ayrı ayrı takip etmek yerine arkadaşlarınızın RSS beslemelerini toptan takip etmenizi sağlıyorlar. Çeşit çok olunca bir araya getirip toplumun aklını odaklamak yeni bir pazar olarak ortaya çıkıyor.

Bu hafta Amerikan Internet’i için iki önemli konferans yapılıyor. Biri Etech Koneferansı, “Internet’in başkenti” San Francisco’da, diğeri SXSW Konferansı, petrol patronları ülkesi Teksas’da. Her iki konferansa da katılan şirketlerin ürünleri 2008 boyunca bloglarda dünyaya tekrar tekrar tanıtılacak ve tüm dünya vatandaşları yeni Twitter’lar yeni Facebook’lar yeni sosyal akımlı uygulamalar alışkanlık edinecek.

02.01.2008

Yeni Nesil Internet Uygulamaları Yaratırken Dikkat Edilecekler

yeni-nesil-varis-sayfasi1.png

2008 yılında web, sayfalardan oluşan bir ağ yapısından çok bir kaynak-insan ağı olarak algılanacak. Web’in yaratıcısı Tim Berners-Lee bu gelişmeyi WWW (World Wide Web)’den GGG (Giant Global Graph)’e geçiş olarak tarif etmişti. Son zamanlarda kaynak-insan ağına odaklanarak geliştirilen yeni nesil internet uygulamaları artık farklı tasarım örüntüleri gösteriyor. Eskiden web sitesine sayfa tasarımından ve site haritasından başlanırdı, ancak bu alışkanlıklar yerini yeni tasarım yaklaşımlarına bırakıyor. Bunların farkında olmanız daha kullanışlı web servisleri yaratmanıza yardımcı olacaktır. Öncelikle yeni nesil internet uygulamları ile ne kastettiğimizi tekrar edelim.

İnsanların katkısını yani toplu zekayı uygulamanın gelişimi doğrultusunda kullanan sosyal bileşenli uygulamalar.

Bahsettiğimiz uygulamalar klasik portal, haber sitesi, dergi gibi merkezden-kitleye durağan modeller değil sosyal imleme, video paylaşımı, sosyal ağ servisleri gibi kitleden-kitleye etkileşimle büyüyen uygulamalar, popüler deyişle web 2.0 uygulamaları.

Bir web 2.0 servisi yaratırken dikkat edilecek noktalar şunlar:

  1. Internet’teki veri birikimine değer katıyor mu?
    Bu servisi kullanarak internet’ten yeni ne öğreniyoruz. Mevcut servislerin sağladığı bilgilerin üzerine ne tür yeni bilgiler katıyor.
  2. Servisi oluşturacak ana veri modelleri neler?
    Tasarıma sayfalardan değil veri modellerinden başlayın. Sayfa iki boyutludur, model çok boyutludur daha derin ve yalın kurgulamanızı sağlar.
  3. Adresler (URL) okunaklı, kalıcı, ve tahmin edilebilir mi?
    Veri yapısını yansıtan, veriler arası hiyerarşiyi gösteren adresler oluşturun. Adres yapısı alan adı kadar önemlidir, akılda kalıcı adresler servise erişimi arttırır.
  4. İçerik tekrar tekrar karıştırılıp yeni içerik oluşturulabiliyor mu?
    Servisi kullananlar mevcut içeriği kullanarak yeni içerik üretebilmeli ve uygulamayı oluşturan işlemler kullanıcı katkısıyla gelişebiliyor olmalı.
  5. Hem normal kullanıcılar, hem geliştiriciler, hem de makinaların anlayabileceği şekilde çalışıyor mu?
    İçerik XML, JSON, RSS, Microformats gibi veri standardları ile de sunulabiliyor olmalı. Böylece programatik kullanıma açık olarak dışardan sizin servinizin üstüne yeni servisler geliştirilebilmeli.

yeni-nesil-varis-sayfasi-ayrik.png

Artık bir web sitesinin içinde veya siteden siteye değil, kaynaktan kaynağa dolaşıyoruz.

Web siteleri artık içine girilip dolaşılan bir yer olmaktan çıkıyor. Sitenin anasayfası değil sitenin içeriği internet’de dolaşırken uğradığımız noktalaradan bir tanesi. Yani artık sitenin içinde veya siteden siteye değil, kaynaktan kaynağa dolaşıyoruz. Bu gözlem bizi sayfa metaforundan veri modeli metaforuna taşıyor. Buna en güzel örnek Wikipedia sayfaları, bir kavramı sadece bir sayfa ve bir adres temsil ediyor ve buna herhangi bir yerde doğrudan bağlantı veriliyor.

Veri modellerini önce adres ile sonra yine sayfa ile temsil ediyoruz. Adreslerin veriyi en iyi şekilde yanısıtması, okunaklı ve akılda kalıcı olması mesela bloglardan veya hatta diğer servislerden bağlantı yapılabilmesini kolaylaştırıyor. Olay kaynak ve kaynağın adresine dönüşüyor. Bu durum birbirine bağlı bir kaynaklar ağının daha çabuk gelişmesini sağlıyor.

Bu yeni bakış açısına göre sayfa tasarımları da değişiyor. Veri modellerini temsil eden üç sayfa türü var:

  1. Varış Sayfası
    Ana içerik ve destekleyen ikinci derece bilgi. Mesela ana içerik video, fotograf, slayd şov, profil, kitap, çizim olabilir. Destekleyen içerik etiketler, yorumlar, oylar, içerğin sahibi, sahibinin diğer içerikleri olabilir.
  2. Liste Sayfası
    Ana içerikler arasında dolaşmayı sağlayan liste. Mesela indeks, arama sonuçları, kişiye ait belgeler olabilir. Listelenen içerik biribirne göre oranlı dizilebilir.
  3. Düzenleme Sayfası
    Ana içerikleri toplu düzenlemeyi ve karıştırmayı sağlayan arayüz. Mesela Flickr toplu photo edit ve YouTube video edit sayfaları buna iyi örnekler.

Özetle veri kaynağını temsil eden en önemli sayfa varış sayfası. Bu sayfaya herhangi bir web sitesinden bağlantıyla gelinebilir. Bir kişi bu sayfaya geldiğinde dikkatini nereye yönelendireceği tasarımınıza bakıyor. Vermek istediklerinizi önem sırasına göre dizip sayfa tasarımını ona göre düzenleyebilirsiniz. Yazıda kullanılan görseller varış sayfası dediğimiz sayfanın tasarımına dair web 2.0 / sosyal ağlı servisler üzerinde yapılan bir BBC analizinden alıntı, tasarımlarınıza örnek olabilir. Yine tekar edelim, varış sayfasını kaynak yapan şey kolay hatırlanacak bir adresi olması.

09.12.2007

Rails 2.0 Çıktı

rails.png

Web uygulamaları geliştirme iskeleti Ruby on Rails’in 2.0 sürümü çıktı. Biz web tabanlı projelerimizde Ruby on Rails kullanıyoruz. 2005 yılında Openstudio Rails’in ilk versiyonuyla yapılmıştı, daha sonra Manevi Emek Borsası, Bağcık, ve Meta-Markets projelerinde kullandık. Henüz açmadığımız deneysel projeleri ve bu sırada geçimimizi sağlamak için yaptığımız bir kaç ticari projeyi Ruby on Rails’in 1.2.3 sürümü ile geliştirdik. Bütün bunlar olurken Rails etrafında oluşan topluluklardan öğrendik ve elimizden geldiğince katkıda bulunmaya çalıştık. Ruby on Rails açık kaynaklı bir proje, bu yeni 2.0 sürümü de dünyanın pek çok yerinden programcının katkısıyla geliştirildi.

http://rubyonrails.org/

Rails 2.0 bir çok yenilik içeriyor, ilk gözüme çarpanlar şunlar:

Rails 2.0 PDF dökümanında yeni özellikler derinlemesine anlatılıyor. Ayrıca Mike Clark tarafından yazılan yeni Gelişmiş Rails Tarifeleri kitabı da Rails 2.0 içeriyor. Bir de son zamanlarda çok faydasını gördüğüm Rails screencast‘leri var, Rails Casts arşivi oldukça detaylı. Sizin de dikkatinizi çeken yeni Rails 2.0 özellikleri varsa bu yazıya yorum yazarak paylaşın, ne varmış beraber öğrenelim. Ayrıca Bağcık’da Ruby on Rails ile ilgili faydalı bağlantıları biriktiriyoruz.

http://bagcik.com/etiketler/rails

16.06.2007

İlk iPhone Uygulaması

iphone-digg.jpgiPhone daha piyasaya çıkmadı ama azimli bir programcı genç iPhone için ilk 3. parti uygulamayı geliştirdi. Uygulamayı şurada görebilirsiniz.

Uygulamanın en ilginç yanlarından biri, Javascript ile geliştirilmiş olması. Geliştiren genç yeterince ilgi olması durumunda bir Javascript kullanıcı arayüzü geliştirmek istediğini söylüyor ki herkes kullanabilsin. Uygulama ile ilgili tartışmayı şurada okuyabilirsiniz.

Apple hali hazırda kullanıcılara iPhone’un güzelliklerini erişilebilir kılan bir arayüz sunmuyor. Fakat, Apple’ın stratejisi, tıpkı cıbırlarda (Widgets) olduğu gibi programcılara html+javascript kullandırmak. Steve Jobs son Apple Developer Konferansında şöyle dedi: “iPhone için uygulama geliştirme platformu mu istiyorsunuz, Safari kullanın.”

iphone-uygulama.jpg
Apple Developer Konferasında Jobs iPhone uygulamalarını anlatıyor. Fotoğraf: Engadget.

GÜNCELLEME: iPhone satışa çıktı. New York Apple Dükkanı önündeki uzun iPhone kuyruğundan canlı canlı fotoğraflar ve videolar çektik.