Basit ve İlham Verici Internet Projeleri

Proje fikrinin basit olması ortaya çıkacak işin de basit olacağı anlamına gelmiyor. Kaos ortamının logaritmik olarak genişlediği bir dünyada ( Ne cümle oldu ), insanların hayatlarını kolaylaştıracak basit projelere ihtiyaçları var. Zaman en değerli hazinemiz.

Yeni kıvılcımların parlamasına vesile olması dileğiyle, dikkatimi çeken bir kaç tane basit fikri paylaşmak istiyorum.

1) Fiverr (http://www.fiverr.com/)

fiverr

İnsanların 5 dolar karşılığında paylaşabilecekleri hizmet ve ürünlerin yer aldığı seri ilan sitesi. Özellikle Almanya’da klonları mantar misali türüyor. Türkiye’de bir örneğine denk gelmedim henüz.

2) 9Flats (http://9flats.com/)

9flats

Gerçek kişilerin (Tüzel değil) odalarını ya da evlerini geçici sürelerde kiraya verdikleri rezervasyon sistemi. Üyeler evinde kalmak istediği üyeyi seçebiliyor, o kişide misafir olmuş kişilerin yorumlarını okuyabiliyor ve evi (odayı) uygun tarih aralığında anında rezerve edebiliyor. Açılmalarının üzerinden bir kaç ay geçmiş olmasına rağmen ciddi bir trafik ve ilgiliyi yakalamış durumdalar.

3) Five and Fifty (http://www.fiveandfifty.com)

fiveandfifty

Grup satın alma modelinin nişleşmiş ve hızlandırılmış bir hali olarak düşünülebilir. İş yerleri siteye %50 ve üzeri indirim içeren fırsatlarını giriyor, five and fifty var olan üye havuzuna bu fırsatı servis ediyor ve kullanıcılar kendilerine ulaşan kod ile iş yerine giderek indirimden faydalanıyor. Projenin en can alıcı noktası ise tüm fırsatların geçerlilik süresinin 5 saat ile sınırlı olması. Örnek olarak bir spa merkeziniz var ve akşam rezervasyonlarınızdan bir kaçı iptal edildi. Bu siteye fırsatınızı giriyorsunuz ve hizmetinizi anında satabiliyorsunuz.

4) Hotel Tonight (http://www.hoteltonight.com/)

hotel

Adından da anlaşılacağı gibi aynı gün için indirimli otel odası kiralama hizmeti veriyor. Şehir bazlı olarak gece 2’ye kadar o gün için otel odası kiralanabiliyor. Sisteme dahil olan oteller boş odalarını günlük olarak bildiriyor, kullanıcılar da aynı gün içinde hoteltonight üzerinden odalarının rezervasyonlarını yaptırabiliyorlar. İş mantığı gereği tek günlük oda rezervasyonu yapılabiliyor. Proje tamamen mobil uygulama üzerinde çalışmaktadır.

 

24 Saat Spam

Günlerdir 24saatfirsat.com isimli fırsat sitesinden kurumsal e-posta adresime spam mesajları alıyordum. Tabi spam olduğu için eposta listesinden çıkma özelliğini geliştirememişler daha. Bende doğal olarak iletişim panellerinden e-posta adresimi listelerinden çıkarmaları için bir mesaj gönderdim. Verdikleri yanıt ile ne kadar fırsatçı olduklarını ve isimleri ile özdeşleştiklerini ispatlar nitelikteydi.

24 Saat Fırsat: Sayın Hasan Bey; Mail Gönderimleri Tarafımızdan Yapılmıyor Uluslar Arası Mail Marketing Firması Tarafından Yapılıyor “İzinli Gönderim” Olarak. Gönderim Yapan Firmanın Mail Datalarına Erişim veya Müdahale Hakkımız Bulunmuyor Bu Nedenle İsteğinizi Yerine Getiremiyoruz. Bilgilerinize Sunarız. Saygılarımızla.

Bir an için kötü bir şaka yaptıklarını düşündüm. Benim iznim olmadan e-posta gönderimi yapılıyor ve bunun kendi müdahale alanları dışında geliştiğini söylüyorlar. Bu basit talebimi yerine getiremeyecek süper teknolojik bir spam sistemi kurdukları için kendilerine teşekkür ettim. Mesajı göndermemin üzerinden 1 saat geçmemiştiki cevabım pat diye geldi. Bu kadar hızlı bir müşteri ilişkileri alt yapısına sahip oldukları için ne kadar gurur duysalar azdır.

İşte gelen cevap:

24 Saat Fırsat: xxx@yyy.com Mail Adresi Kayıtlı Müşteri Datamızda Bulunmuyor Bu Adres Mailing Firmasının Kendi Datasında Olan Adresler Arasındadır Bu Nedenle Müdahalemiz Söz Konusu Değildir. Sitemiz Üzerinden Üye Olmuş Müşterilere Sitemiz Üzerinden Otomatik Mailler Zaten Gidiyor Onun Haricindeki Üye Olmamış Kayıtları Tarafımızda Olmayan Mail Adreslerine Mailing Firması Gönderim Yapıyor Onların Datalarına Karışma Gibi Yetkimiz Bulunmuyor. xxx@yyy.com Mail Adresi Müşteri Datalarımızda Olmadığı Halde Mailimiz Size Ulaşmışsa Bu Mailing Firması Datalarınında Bulunduğunuz Anlamına Gelir Bu Firma Size Nasıl Ulaştı Nasıl Kayıtlarına Aldı Bunu Biz Bilemeyiz. Saygılarımızla.

Kendilerini İnternet’in yüce adaletine havale ediyorum 🙂

 

Sonsuz Küçük İhtimal

filli saatBilgisayar ortamında yazılan tüm kodlar en nihayetinde derlenir ve 1 ve 0’lardan oluşan bir dizi haline gelir. Gördüğün en afilli program da, en şaşalı web sitesi de, bir virüs de bu düzenin içinde var olmak zorundadır.

Yazılım geliştirme ortamları ve derleyiciler üretilecek olan bir ve sıfırların düzenli bir sırada yan yana gelmesini garanti altına alırlar ve istenilen mantıkta program akışının işlemesini sağlarlar. Eğer kod dizisindeki bazı bir ve sıfırların yerlerini değiştirirsek beklenmeyen hatalar oluşur ve %99.99… ihtimalle program çalışamaz hale gelir.

Peki ya o ufacık bir ihtimal gerçekleşirse? Kod dizisi bozulan program çalışırsa? İşte o zaman programın, yazılımcısının beklediğinden farklı bir akış ve davranış sergileceyeceği kesindir.

Ütopik bir yaklaşımla rastgele kod dizisi üreten bir program geliştirdiğimizi varsayalım. Program, rastgele olarak ürettiği kod dizisini derleyip, bulunduğu çalışma ortamında çalışabilen bir kod dizisi olup olmadığını test edebilir. Test sonucunun olumlu çıkması halinde hiç bir insanoğlunun üretmediği, bir bilgisayar tarafından geliştirilen yeni bir yazılım ortaya çıkmış olacaktır. Ortaya çıkacak yazılım ekrana anlamsız karakterler basan bir program olabileceği gibi, dünyayı yok edebilecek öğrenebilir bir yapay zeka da olabilir. Kim bilir 🙂

Rastgele olarak çalışabilir bir yazılımın üretilme ihtimali, insanlığın evrende var olması ihtimaline yakın olacaktır. Bu oranı biraz olsun arttırmak adına, gönüllü bir bilgisayar ağı kurulabilir. Programa dahil olmak isteyenler, bilgisayarlarına kuracakları bir program aracılığıyla, işlemcilerini boş zamanlarında bu proje için ayırabilirler.

Tabi “sonsuz küçük ihtimali” milyonla da çarpsak, neticede “sonsuz küçük ihtimal” olarak kalacaktır.

Hayat ne tuhaf vapurlar filan 🙂

Resim görseli: Filli Su Saati

 

Kodsal Dumurlar

Bilgisayar programları, insanlardan farklı olarak bulunduğu zamana ya da mekana göre değişmeyecek kesin sonuçlar üretir. Bir yazılımdan aynı girdilere karşı aynı çıktıları alırız.

Özellikle nesneye yönelik programlama dillerinin katı kuralları olduğunu hepimiz biliriz. Tüm yazılımlar bu kurallar çerçevesi içerisinde üretilir. Kuralların dışına çıkmaya çalıştığımızda derleyici aşamasında ya da çalışma aşamasında hatalarla karşılaşırız.

Yazılımcının esas görevlerinden biri yazdığı programın ruhuna bürünerek onun gibi düşünmesidir. Ancak bu bakış açısıyla çok daha hızlı ve stabil programlar yazılabilir. Fakat bazen aklınıza öyle durumlar gelir ki yazacağınız kod satırlarının nasıl çalışacağını kestiremezsiniz.

İşte benden bir kaç örnek:

Birbirinden türeyen sınıflar

Aşağıdaki yapıda 3 adet sınıfımızın olduğunu düşünelim. A sınıfı C’den türesin, C sınıfı B’den türesin, B sınıfı da A’dan türesin. Sizce bu mümkün mü?

public class A extends C {
    A() {}
}
 
public class B extends A {
    B() {}
}
public class C extends B {
    C() {}
}

Ufak bir kafa karışıklığına neden olsa da derleyici aşamasında hata mesajını alıyoruz (cyclic inheritance involving)

Boşluk İşaretleyici (Null Pointer)

A sınıfımızın boşluk(null) döndüren getA adında bir fonksiyonu olsun. Bu fonksiyonu dışardan tetikleyip A sınıfına ait sabit test değerini alabilir miyiz?

public class A {
    static String test = "test mesaji";
    A getA() {  return null; }
    A() {}
}
 
public class Main {
    public static void main(String[] args) {
        A a = new A();
        String msg = a.getA().test;
        System.out.println(msg);
    }
}

Main sınıfını çalıştırdığımızda “NullPointerException” hatası beklerken, hatasız bir şekilde konsolda “test mesaji” yazısını görüyoruz.

Konu hakkında biraz araştırma yaptığımda Java Puzzlers kitabı ile karşılaştım. Java üzerinde karşılaşılan tuzakları, tehlikeleri ve çıkmazları konu edinmiş bir kitap.

Web sayfası: http://www.javapuzzlers.com
Örnek bölüm: http://www.javapuzzlers.com/java-puzzlers-sampler.pdf

 

İnteraktif Projeler Neden Zamanında Yetişmez?

uuuİnteraktif uygulamalar ya da oyunlar genellikle süreli olarak yayında kalan işlerdir. Projeler bir kere yayına alınırlar ve kampanya bitimiyle birlikte rafa kaldırırlırlar. Bu tarz projelerinin ortaya çıkma süreci ideal koşullarda şu adımlardan oluşmalıdır: Fikir şekillenir, projenin maketi hazırlanır, tasarım gerçekleştirilir ve son adımda yazılım süreci ile proje neticelendirilerek yayına alınır.

İnteraktif projeleri incelediğimizde hemen hemen hepsinin istenilen bitiş süresinde tamamlanamadığını hatta bazılarında ciddi aksamalar olduğunu görmekteyiz. Süreçleri detaylandırdığımızda aşağıdaki aksaklıklar göze çarpmaktadır.

Ayağından bağlasan ipini koparabilecek uçuk fikirler

“Bu proje öyle farklı olmalı, öyle acayip olmalı ki insanlar ilk duyduklarında neye uğradıklarını şaşırmalı” denilerek yola çıkılan projeler genellikle bir dünya emeğin boş yere heba olmasına neden olmaktadır. Fikir aşamasında odaklanılması gereken iki ana nokta vardır: Amaç ve gerçeklenebilirlik. Amaç çok net çizgilerle belirlenmeli, fikir bu çizgiler içerisinde yaratılmalı ve gerçeklenebilirliği fikrin doğum aşamasının her noktasında sorgulanmalıdır.

Proje yöneticilerinin uzaylı olması ve ekibe sadece “ben dostum” demesi

Proje yöneticilerinin ekipteki her çalışanın konuştuğu dili bilmesi gerekir. İş gücünün bir kısmınıda diller arasında çevirilere harcamalıdır. Tasarımcılar, yazılımcılar, teknik ekip, müşteriler arasındaki tüm konuşmalar ve yazışmalar yöneticinin üzerinden gerekli çeviriler, düzenlemeler ve filtrelemeler yapıldıktan sonra ilgili taraflara iletilmelidir. Eğer yönetici bu noktalara yeterince hakim olamassa projenin istenilen sürede planlandığı gibi yayına çıkması zorlaşmaktadır.

Tasarımcıların projeyi “6 günde ben yarattım” havası

Projelerin son kullanıcı tarafında nihai görünen kısmı tasarımcıların elinden çıkmış görsel çalışamalardır. Bu da tasarımcıları “ben yarattım” havasına sokmaya yetmektedir. Tasarımcıların projeye kullanılabilirlik ve uygulanabilirlik açısından yaklaşmadığı sürece ortaya koydukları görsel çalışmanın ne kadar sanatsal ve estetik olduğunun bir önemi yoktur. Çalışmalarını şu sorular eşliğinde yürütmelidirler: Tasarımın çıktısı sabit diskte ne kadar yer kaplar? Tasarım parçalanıp istenilen geliştirme ortamına aktarılabilir mi? Animasyonlar ne kadar işlem gücü gerektirir? Vb.

Yazılımcıların her birinin farklı bir psikolojik vaka örneği olması

Psikolojik sorunları olanlar mı yazılımcı olur yoksa yazılımcılar mı sonradan psikolojik sorunlara sahip olur. İşin içinden çıkabileceğimizi sanmıyorum. Yazılımcı bazen 5 günlük işi 1 günde yaparken bazen de 1 günlük işi 5 günde yapabilmektedir. Kodlamak ile insanın en temel bir kaç ihtiyacından biri olan üremek arasında bir benzerlik olduğuna inanıyorum. Yazılımcılar genellikle sosyal olamadıkları ya da insanları sevmedikleri için kendilerini bilgisayara hapsedebilmektedirler. Yazılımcıların kodlayarak ortaya çıkarttıkları programlar, onların üreme ihtiyaçlarını bir nebze çözmektedir. Ortaya çıkan uygulama onların çocuğu gibidir. Ona hayat öpücüğünü yazılımcı vermiştir. Yazılımcılarla anlaşmak ve çalışmak iyi yönetilmesi gereken zorlu bir süreçtir.

Projenin işlevinden çok boyuna odaklanılması

Proje geliştirilme aşamasındayken her şey istenildiği gibi gitmez. Mutlaka revizyonlar, eksikler, fazlalar ortaya çıkar. Bu gibi durumlarda adım adım işleyen süreçler tamamen birbirine girer. Bir de projenin yayına alınmasına az bir süre kalmışsa arap saçından farksız bir ortam oluşur. İşte bu noktada mühendis bakış açısıyla olaya yaklaşmak ve yapılabilecek olanın en iyisini en az kaynakla ortaya çıkarma üzerine plan yapmak gerekir. Eğer bu süreçte ayrıntılara odaklanılıp, işlevsellikten uzaklaşılırsa kaos içinde kaos vakalarına rastlayabiliriz.