05.08.2009

Kodak Dijital Fotoğraf Makinesi, 1975


kodak-digital-camera-mashup

Kodak’ın ilk dijital fotoğraf makinesi (1975) bir “mashup” –farklı işlevleri olan şeylerin bir arada kullanılmasıyla yeni fonksiyonu olan bir şey yaratma. Analog fotoğraf makinesi + bilgisayar + kaset çalar + kaset. Müzik alanıda “remix” denilen. Çağdaş sanat alanında Nicolas Bourriaud’ın “postproduction” dediği.

Bu yazının geri kalanını okuyun »

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.

22.06.2008

OpenFrameworks ile Yüksek Performanslı İşlemsel Sanat ve Tasarım

OpenFrameworks yüksek performanslı grafik ve video programlamak için geliştirilen bir düzine C++ kütüphanesi. Sizi düşük seviye karmaşık fonksiyonlarla uğraştırmadan, tasarladığınız kompozisyona odaklanmanızı sağlıyor. OpenFrameworks sitesinde yeni başlayanlar için film endüstrisinden şöyle bir analoji yapılıyor:

Kendi filminizi tasarladınız ve bir film yapımcısı şirketle çalışmaya karar verdiniz. Yapımcı şirket çekim mekanlarını, kameramanları, ışıkçıları, sesçileri, ve tüm altyapıyı hazırlıyor. Herkesin aynı anda aynı zamanda çekim alanında bulunmasını ve işini yapmasını sağlıyor. Size kalan filmi çekmek. OpenFrameworks geliştireceğiniz programlar için bir film şirketi. Lojistik ayrıntıları ve idareyi hallediyor, siz de yaratıcı vizyonunuza odaklanıyorsunuz.

OpenFrameworks ile yapılan işlerden örnekler ve kullanan sanatçılarla kısa söyleşiler:


made with openFrameworks from openFrameworks on Vimeo.

Processing kullananlar bilirler, böyle yalınlaştırılmış iskeletler işlemsel ürünler yaratan tasarımcılar ve sanatçılar için büyük kolaylık sağlıyor. Processing Java programlama dili üzerine geliştirildi. Yalınlığıyla bizi karmaşık işlerle uğraşmaktan kurtarıp esas işimize odaklamıştır. OpenFrameworks arayüzünde, yani kullanılacak metodların ve değişkenlerin isimlendirilmesinde, Processing’den etkilenmiş. Processing geliştiricileri ve bütün bu programlamayı yaratıcı insanlara yakınlaştıran iskeletlerin anası sayılan Design By Numbers bu tür programlama arayüzlerinin temelini atmıştır.

C++ üzerine geliştiriliyor olduğundan OpenFrameworks öncekilerden farklı olarak yüksek performanslı işlere imkan sağlıyor. İsmi üzerine açık kaynaklı bir proje OpenFrameworks. Zach Lieberman ve Theo Watson tarafından başlatıldı ve dünyanın farklı yerlerinden kişilerin katkılarıyla büyüyor. Eyebeam, Parsons School of Design, MediaLabMadrid, ve Hangar Center for the Arts projeye destek veriyor.

OpenFrameworks kullanmaya nasıl başlarım?

Önce son sürümünü burdan indir. Mac, Windows, ve Linux üzerinde çalışıyor. İndireceğiniz paket tüm kaynak kodu ve örnekleri içeriyor. OpenFrameworks kullanabilmek için tavsiye edilen programlama ortamı (SDK) her işletim sisteminde farklı. Mac için Xcode, Windows ve Linux için Code::Blocks kullanabilirsiniz. Her bir SDKyı kurmak ve üzerinde OpenFrameworks kullanmak için adım adım takip edebileceğiniz yardımlar var, bunları takip ederek ilk OpenFrameworks programınızı çalıştırabilirsiniz:

Mac için adım adım Xcode kurmak ve OpenFrameworks kullanmak
Xcode, http://www.openframeworks.cc/setup/xcode

Windows için 3 SDK seçeneği ve OpenFrameworks kullanımı
Dev-C++, http://www.openframeworks.cc/setup/devcpp
VC++ 2005, http://www.openframeworks.cc/setup/visual_studio
Code::Blocks, http://www.openframeworks.cc/setup/codeblocks_setup_guide

Linux için Code::Blocks
Makefile yardım, http://www.openframeworks.cc/setup/linux-makefile
Code::Blocks, http://openframeworks.cc/setup/linux-codeblocks

Processing’den openFrameworks’e nasıl geçilir?

Eğer bir süredir Processing kullanıyorsanız ve daha önce Class –nense tabanlı programlama– kullandıysanız, openFrameworks ile rahat rahat çalışabilirsiniz. Biri Java biri C++. Sözdizim (“syntax”) birbirine çok yakın. API Processing’den alınmış. Yani rect() mesela ekrana diktörtgen çiziyor, setup() ile program giriş yapıyor draw() ile döngüye giriyor. Bazı farklılıklar var mesela programın derlenmesi Java’da ve C’de farklı işliyor. C’de gelişmiş hafıza kontrolu için “pointer” kavramı var. openFrameworks denemeyi düşünüyorsanız öncelikle “OF for Processing Users” wiki‘sini okumanızı tavsiye ederim.

Nerede yüksek performans gerekir?

Yüksek performans en çok resim ve video işlemede lazım oluyor. Mesela kameranın önünde el sallayarak kontrol edeceğiniz bir yazılım için openFrameworks kurduğunuz sistemin hızlı ve dolayısıyla akıcı çalışmasını sağlar. Kamera ile fiziksel etkileşim işleri en çok performanslarda kullanılır. Kamera vücudunuzu veya her ne kullanıyorsanız onu takip eder, hareketten yakalanan bilgiler geliştirdiğiniz yazılma girer, ve yazılımın kontrol ettiği dinamik görsel projektörden ortama yansıtılır. Bu tür etkileşimli performans senaryolarında openFrameworks ironik bir şekilde performansınızı yükseltecektir…

Vücut etkileşimi ve video işleme konusuna ne gibi teknikler var, nasıl kullanılır öğrenmek isterseniz Golan Levin’in yazdığı “Computer Vision for Artists and Designers” PDF kitapçığına bakmanızı tavsiye ederim.

İlgili bağlantılar: