Cuma, Aralık 19, 2008

1915 Ermeni Meselesi Hakkindaki Dusuncelerim

İçeride:
Bir grup bir katliamı önce planlıyor, sonra uyguluyor, sonra da katliamın konuşulmasını yasaklıyor.
Bir diğer grup suçu biliyor, fakat kendi halkının gördüğü zulümler kabul edilmeden, suçu kabullenmeyi zül sayıyor.
Millet, suçun vuku bulmadığına inanıyor. Suçlu grup korunuyor, suçu açıklayanlar suçlanıyor.

Dışarıda:
Bir grup, suçu tüm millete yüklemeye çalışıyor. Kendi menfaatleri için, acı bir olayı kullanmak istiyor.
Bir halk, sürekli geçmişte yaşanmış bir zulmü tekrarlıyor. Aynı acıları tekrar tekrar yaşıyor.
Halkın içinden bir grup, sadece suçu işleyenleri değil, tüm bir milleti suçluyor, nefreti körüklüyor.

Öncesi:
Büyük devletler ve ecnebi halklardan çıkan isyancı gruplar, bir millete topyekun saldırıyor. Bir devlet çöküyor. Bir millet kırılıyor.
Bir grup, elde kalanları kurtarmak için, kendi milletlerine yapılanlara misliyle karşılık vermeyi meşru sayıyor.
Grup, devleti ele geçiriyor, devletin imkanlarını, kendi düşüncelerini gerçekleştirmek için kullanıyor.

Yazının Devamı...

Çarşamba, Kasım 26, 2008

Modern Binalarda Sosyallesme Alanlari

Dün Kalder'in Kalite Kongresine katıldım. Çok güzel konuşmalar vardı. Keşke dizüstü bilgisayarımı yanıma alsaydım, bunları şimdi yayınlama imkanım olurdu.

Bu yazıda kısa bir şekilde Tago Mimarlık firmasından Tatsuya Yamamoto'nun dikkatimi çeken bir fikrine değineceğim. Çok değerli şeyler söyledi Yamamoto, fakat bir tanesi bana çarpıcı geldi:
Mimar Yamamoto diyor ki, modern binalarda insanlar sosyal etkileşim alanı arıyorlar. Bunun için, modern binaların en güzel yerini, yani terasını cazibeli bir hale getirip, bir sosyal buluşma mekanı olarak tasarladıklarını söyledi.

3000 kişinin yaşadığı bina projelerinin çatıları, son derece güzel bir şekilde düzenlenmiş bahçeler ve kafelerle süsleniyor.



Tago Mimarlık Novus Projesi Tasarımı

Fakat bana kalırsa burada Yamamoto yanlış problemi çözüyor. Sorun, binalarda sosyal etkileşim mekanı bulunmaması değil. Sorun, modern ve refah seviyesi yüksek insanların etkileşimden kaçınması.

İlgimi çeken bir gözlemdir: Nüfus yoğunluğunun çok düşük olduğu bir gecekondu semtini dolaşırken, sokaklarda insanları hareket halinde, oynarken ve sohbet ederken görürsünüz. Fakat Ataşehir, Ümitköy gibi modern uydu kentlerde, son derece güzel çevre düzenlemesi ve yüksek nüfus yoğunluğu bulunmasına rağmen, her yer ıssız ve sessizdir. Demek ki sorun, sosyal mekanların bulunmayışından kaynaklanmıyor. Bana kalırsa, Yamamoto'nun yeni binalarındaki kafeli, bahçeli teraslar da bomboş ve sessiz mekanlar olarak duracak.

Yazının Devamı...

Cumartesi, Kasım 15, 2008

30 Yasina Girmek

Yarın 30 yaşıma gireceğimi ve ölümün gerçekliğini düşünüyordum. Peygamber Efendimizin bir sözü aklıma geldi: "İnsana ibret olarak ölüm yeter." Gerçekten de ölümün, insan hayatında inanılmaz derecede önemli bir yeri var. Ölüm, tek başına insana hakikati öğretebilecek bir varlık.

Bunları düşünürken, sonbahardan eşsiz bir resim çıktı ekranımda:

sonbaharda kırmızı
Bugün Facebookta Mehmet Akdağ adlı bir arkadaş, "Ben neden insan öldüremem? Bunun felsefi açıklaması nedir?" diye bir soru sormuş. Çok ilginç geldi bana. Hakikaten neden insan öldürmek içimizde bu denli büyük bir günah? Bir adam öldüren bir kişi, çok büyük bir vicdani yıkım yaşıyor. Bambaşka bir insan oluyor. Hayat ve ölüm, varlığımızın öyle derin bir gerçekliği ki, her şey onunla anlamlanıyor.

Ölümü düşünüyorum. Düşündükçe, her şeyin anlamı farklılaşıyor. İnsanın varoluşsal bir problemi, ölüm: Ben neyim? Nereden geldim? Nereye gidiyorum?

Doğrusu ölümü düşünmek beni heyecanlandırıyor. İçimden tekrarlıyorum, "ölüm" kelimesini. Algılamak istiyorum, ölümün hakikatini.

20'li yaşlar, insana bir güvenlik hissi veriyor. Gençlik algısı hakim 20'li yaşlarda. Bunun sona ermesi, muhtemelen çoğu insanı çok etkilemiştir. 30 yaşına kadar insan yaşlanmıyor, sanki 30'la birlikte başlıyor yaşlanmak.

Fakat bu güzel bir şey. Çünkü ölüm hayatın en büyük gerçeği. 30 yaş bu gerçeği daha iyi hissetmeyi sağlıyor. Gerçeğe yaklaşmak güzel bir şey.

Yazının Devamı...

Pazartesi, Ekim 20, 2008

Pratik Bir Nesne Modelleme Araci: Mapsys

Mapsys normalde sistem dinamiği modelleri geliştirmek için üretilmiş bir araç. Fakat çok hızlı bir şekilde çizge (bağlantılı öğelerden oluşan bir şema) oluşturma kabiliyeti sunduğu için, bu aracı yazılım geliştirmede nesne modellemesi için de kullanmak çok pratik oluyor.


UML'in sunduğu özelliklerin çoğunu desteklemiyor, Mapsys. Bu normal, çünkü bir UML tasarım aracı değil. Fakat benim için en önemli özelliklerden biri, çok hızlı bir şekilde basit nesne çizgeleri geliştirmek. Bunu yapabilmemi sağlıyor.



Resimde oluşturduğum bir modelden örnek bir kesit gösteriyorum. UML'den biraz farklı bazı yazım standartları kullanıyorum. UML'de nesne başlıkları, "< obje_adı >:@lt class_adı >" şeklinde. Bense şu şablonu kullanıyorum: "< class_adı > @ < obje_adı >"

Bu yazım şeklinin okunabilirlik açısından bir faydası var: Bazen sadece class ismini, bazen sadece obje ismini kullanmak istiyorum. UML'de bunu yapmak mümkün, fakat görsel ayrıştırma çok kuvvetli olmuyor.

Yazının Devamı...

Pazar, Ekim 19, 2008

Komplo Teorilerindeki Dusunme Yontemi Hatalari

Komplo teorileri günümüzde çok yaygın. En çok satan kitaplar ve en çok izlenen videolar komplo teorilerine dayanıyor. Sadece kendi ülkemizde değil, tüm dünyada özellikle ABD'de en çok rağbet gören fikir akımları komplo teorilerine dayanır hale geldi.

Benim kişisel hayatımda da komplo teorileri çok yer alıyor. Çok sıkçana çevremdeki insanlarla, komplo teorileriyle ilgili tartışırken buluyorum kendimi. Ne yazık ki, komplo teorilerine inanan insanları bunun tersine ikna etmede çok nadiren başarı sağlayabiliyorum. Bu yüzden, konuyu felsefi olarak daha derin bir şekilde incelemeye karar verdim. Umarım, yeterince doğru ve kapsayıcı bir fikir eseri ortaya çıkar.

Konuyla ilgili en az iki makale planlıyorum. Bu ilk makale denemesinde, komplo teorilerini savunanların çok sıkça düştükleri bazı mantık ve yöntem hatalarını ele alıyorum. Bundan sonraki makalede, komplo teorilerinin inanmanın altında yatan gerekçeleri incelemeyi planlıyorum. Burada ifade ettiğim fikirlerin sağlamlaştırılmasıyla ilgili katkısı olabilecek her türlü destekleyici veya muhalif düşünceye açığım.

Komplo teorilerinde yaygın mantık ve düşünme yöntemi hatalarının şu maddeleri içerdiğini düşünüyorum:

• tümevarım/genelleme: doğru olabilecek bir örnekten genel kural çıkarma
• iddia edilen tezleri yanlışlanabilirlikten soyutlama
• orjinal kaynakları bilmeden, kaynakların güvenilirliğini araştırmadan kesin iddialarda bulunma
• kendi inandığı teze muhalif delilleri araştırmama
• gündelik mantığı bilimsel muhakeme olarak görme
• sonuçtan sebebe gitme (ters sebep-sonuç ilişkisi)

Tümevarım/genelleme: doğru olabilecek bir örnekten benzerlik kurup genel kural çıkarma

Tümevarım çok önemli bir mantıksal çıkarım yöntemidir, fakat tek başına kullanıldığında güvenilir ve kapsayıcı değildir.

Örnekler:
• Türkiye'de Ergenekon örgütü de cinayet ve terör olaylarını, kendi rakiplerinin üzerine atıyor. Öyleyse, CIA de 11 Eylül gibi olayları kendi yapıyor ve bunu radikal islamcıların üzerine atıyor.

• Afrika'da açlık, Batılı silah tüccarlarının kışkırtmasından doğan iç savaşlardan kaynaklanıyor. Öyleyse, Batılı provakatörler dünyanın tek hakimidir ve tüm dünyayı fesadın içine sokan güç onlardır. Demek ki, 11 Eylül'ü ve 2. Dünya Savaşındaki Nazi katliamını aslında dünyayı yöneten gizli komite gerçekleştirmiştir.

(Not: Aslında doğa bilimleri de özünde tümevarıma dayanarak tekil gözlemlerden genel teoriler oluşturur. Fakat bilimsel düşünme yönteminde, tümevarımı sağlamlaştırmak için kullanılan fakat komplo teorilerinde bulunmayan çok sayıda ek yöntem bulunur.)

İddia edilen tezleri yanlışlanabilirlikten soyutlama

Tümevarım ve tümdengelim, birbirinin tam tersi olan iki mantıksal çıkarım yöntemidir. Tümevarım, tekil gözlemlerden, genel bir sonuca ulaşmaktır. Tümdengelim ise, genel bir kabulden, tekil olaylarla ilgili sonuçlar çıkarmaktır. Her iki yöntemin de yerine göre ve diğer muhakeme yöntemleriyle sağlamlaştırılarak kullanılması durumunda, sorun olmaz. Fakat bu iki yöntemin yanlış yerde yanlış şekilde kullanılmasının sonucunda, yüzeysel incelemede makul görünebilen, yanlış sonuçlara ulaşırız.

Burada önemli bir ayrım var: Bir mantıksal çıkarımın insanlar için çok ikna edici olması, varılan yargının doğru olduğu anlamına gelmez. Retorik, hitabet ve belagat sanatı gibi bazı yöntemler kullanılarak, son derece mantığa uygun ve ikna edici fikir eserleri üretilebilir. Fakat bir eserin bilimsel anlamda doğru kabul edilmesi için bu anlatım tekniklerinin iyi kullanılmış olması yeterli değildir.

Komplo teorilerini savunanlar, bazen tümdengelim yöntemini yanlış bir şekilde kullanarak, iddia ettikleri tezleri yanlışlanabilirlikten soyutluyorlar. Örneğin, komploya inanan bir kişiyyle şöyle bir diyalog geçtiğini varsayalım:

A (komplo teorisinin muhalifi): "Bilim adamları ikiz kulelerin jet yakıtının neticesinde çökebileceğini açıkladılar."
B (komplo teorisinin destekçisi): "Bilim adamları da komplonun bir parçası" ya da "Bunun tersini açıklayan bilim adamlarını konuşmaktan korkutuyorlar." diyebilir
A: "Batı ülkelerinde şeffaflık ve hukuk egemendir. Bilim adamlarının fikirleri devlet baskısıyla kontrol edilemez."
B: "Batı ülkeleri aslında en kapalı ve baskıcı devletlerdir."

Bu düşünceleri çürütmek mümkün olmuyor, çünkü bazı genel önkabullere dayanıyor. Mesela yukarıdaki durumda, "Batılı devletlerin en üst seviyede kapalı ve baskıcı rejimler olduğu" böyle bir genel önkabuldür. Bu bir veri olarak kabul edilince, Batı üniversitelerindeki bilim adamlarının açıklamalarına ve makalelerine güvenilmemesi, tümdengelimle üretilmiş bir mantıksal çıkarımdır. Ne var ki, sorun şu: Burada kendi içinde kapalı, mantıksal bir fikirler (önerme) zinciri var. Buna mantıkta totoloji denir. Bunların mantıksal olarak çürütülmesi imkansızdır.

Yukarıdaki örnekte, komplocu bakış açısının ürettiği kapalı daire şu şekildedir:

"Batılı devletler, kapalı ve baskıcıdır" => "Bilim adamlarına güven olmaz" => "İkiz kulelerin jet yakıtıyla yıkıldığını söyleyen bilim adamları yanlış söylemektedir." => "ABD ikiz kuleleri kendisi yıkmıştır" => "Batılı devletler, kapalı ve baskıcıdır."

Orjinal kaynakları bilmeden, kaynakların güvenilirliğini araştırmadan kesin iddialarda bulunma

Bilimsel düşünme yöntemi, uzman görüşlerine ve tanıklıklara atıfta bulunmakla ilgili hassas ve katı kurallar içerir. Alıntıların kaynakları belirtilmeli, kaynakların yalanlanmamış olduğundan emin olunmalı, kaynakların güvenilirliğiyle ilgili araştırma yapılmalı, alıntı edilen sözlerde tam olarak ne dendiğine dikkat edilmeli abartmaya veya kendi tezinize uygun halde yorumlamaya gidilmemeli. Fakat komplo teorilerini üretenler veya bunlara ikna olmuş halde başkalarına yayanlar, bu kurallara titizlik göstermiyor.

Örnekler:
• 5 yıl önce İngiltere'den 4 bilim adamı çıkmış ve açıklama yapmışlardı: "cep telefonunun kanser yapmadığını bilimsel olarak ispatladık". Şimdi ABD'de 10 bilim adamı tam tersini ispatladı. Bunca yıl boyunca bunu bildikleri halde insanları aldattılar.

• Youtube'da video ile gösteriyorlar. İkiz kuleler yıkılırken, kat kat içeriden bombaların patladığı görülüyor.

• Pentagon'a düşen uçak enkazının resmini gösteriyorlar. Ortada uçaktan bir tek parça yok. Demek ki, uçak düşmemiş, CIA füze atmış.

• 11 Eylül olayında ölen yahudi yok. Mossad olaydan önce yahudileri uyardı.

Kendi inandığı teze muhalif delilleri araştırmama

Komplo teorilerine inananlar, bu teorilere karşı yeterince eleştirel davranmıyor. Komplo teorileriyle çelişen verileri dikkate almıyorlar veya araştırmıyorlar. Bilimsel düşünme yöntemi ise bir tezle ilgili destekleyici ve muhalif tüm delilleri dikkate alarak muhakeme etmeyi gerektirir.

Örnekler:
• Yukarıda ifade edilen 11 Eylül olayında ölen yahudi olmaması meselesi.
Türkiye'de 11 Eylül olaylarının ardından böyle bir söylenti farklı kanallardan dolaşmaya başladı. Bu söylentiyi yayanlar, iddianın doğru olduğuna kesin olarak inanmadan önce, iddianın doğruluğunu sorgulaması gerekir. Bu teknik olarak çok kolay bir işlem. Google'da "dead jews in 911" gibi bir sorgulama yapmak yeterli. Olayda ölmüş yahudilere ait çok sayıda tanıklık, fotoğraf, adres ve liste bu arama sorgusunun sonunda bulunuyor.

Burada sorun, komplo teorisine eleştirel bir bakış açısıyla yaklaşmamaktan kaynaklanıyor. İddia edilen tez eğer kişinin daha önceden sahip olduğu önkabullerle uyumluysa, kişi hiçbir eleştirel araştırma yapmadan, tezi kabul ediyor.

Bu örnekte, google'da çok sayıda muhalif verinin çıkmış olması tek başına, komplo teorisini çürütecek bir delil değildir. Fakat bilimsel düşünme yöntemde şöyle bir ilke vardır: Bir tez yayınlarken, bu tezi destekleyen veya bu teze muhalif tüm deliller araştırılmalı ve yayınlanmalıdır. Fakat komplo teorilerini savunanlar, tezlerine muhalif delilleri toplamak için yeterli özen göstermemektedir.

Gündelik mantığı bilimsel muhakeme olarak görme

Doğa olaylarında, bir şeyin mümkün olup olmadığına karar vermek için, hesap veya deney yapmak gerekir. Ortaokulda öğretilen basit bir fizik konusuna ait bir soruyu yanıtlamak için, kağıt, kalem ve hesap makineleri kullanarak dakikalarca hesap yaparken, gerçek dünyada gerçekleşmiş, çok karmaşık bir fizik olayını hesap kitap kullanmadan bir anda çözmek sağlam bir yöntem değildir.

Komplo teorilerine inananlar, hesap kitap kullanmadan bir fizik olayını açıkladıkları halde, bu açıklamanın bilimsel olduğunu söylüyorlar. Halbuki bu açıklamalar, bilimsel muhakemeye değil, gündelik akıl yürütme yöntemine bir örnektir.

Örnekler:
• Akıl var mantık var, uçak yakıtıyla bina çöker mi? Mümkün değil.

• İkiz kuleler bulunduğu yere yıkıldı. Eğer uçak kazasından dolayı yıkılmış olsaydı, yana doğru yıkılırdı. İçeriden patlatılmış bombalarla yıkıldığından, bulunduğu yere yıkıldı.

Sonuçtan sebebe gitme (ters sebep-sonuç ilişkisi)

Kriminal araştırmalarda, bir işten kimin yarar sağladığı şüphelilerin tespitinde kullanılan yararlı bir akıl yürütme yöntemidir. Fakat bu yöntem suçu ispatlamak için değil sadece şüpheli sayısını azaltmada kullanılabilir. Bir suçtan yarar sağlayabilecek kişilerin sayısı birden çok olabilir. Bazen suçu işleyen kişi, olaydan bizzat kendisi en büyük zararı görmüş olabilir. Bu yüzden, sonuçtan sebebe gitmek tek başına yeterli delil oluşturmaz.

Örnekler:
• 11 Eylül işi ABD'ye yaramıştır, o zaman bu işi ABD yapmıştır.

• 11 Eylül'den müslümanlar en büyük zararı görmüştür, bu yüzden yapanlar müslüman topluluklardan olamaz.

Yazının Devamı...

Çarşamba, Ekim 15, 2008

Probleme Olumlu Yaklasim Ustalastirir

İnsan yeni bir problemle karşılaştığında ne olur?
Kişinin bilgi seviyesi ne kadar çoksa, problemlerle karşılaştığında, bunu daha olumlu bir tavırla karşılar. Yani bilgi, kişinin problemlere yatkınlığını artırır. Problemlere yatkınlık, iş yapma istek ve azmini artırır. İstek ve azim, kaliteli çalışmanın süresini artırır.

Kaliteli çalışma miktarının artması, kişinin problem çözmesini kolaylaştırır, yani kişinin iş üretkenliğini artırır. Üretkenlik arttıkça, kişi daha fazla öğrenme deneyimi yaşar ki bu da kişinin bilgi miktarını artırır. Bu da başlangıç noktası olan problemlere yatkınlığı daha da artırır. Yani kişi işi sevdikçe ustalaşır, ustalaştıkça işi daha çok sever. Bu geribesleme döngüsü, pekiştirici bir döngüdür. Yani değişkenlerin birinde olumlu yönde bir artış, döner dolaşır yine aynı değişkene geri döner ve değişim miktarını aynı yönde artırır.

Bu sürecin içinde ikinci bir pekiştirici geribesleme döngüsü daha var: Kişinin bilgisi ne kadar çoksa, üretkenliği o kadar çok olur; çünkü kişi problemleri daha çabuk çözer, işi daha hızlı ve pürüzsüz bir şekilde yapar. Üretkenlik arttıkça, kişinin iş deneyimleri de artar. Ve kişi deneyim kazandıkça, daha fazla bilgi öğrenir. Dolayısıyla, bilgi miktarının artması, döner dolaşır, yine bilgi miktarını artırır.



Bu yukarıda bahsettiğim pekiştirici geribesleme döngüleri, her zaman olumlu bir şekilde çalışmak zorunda değildir. Bazen işler olumsuz bir şekilde de gelişebilir. Bu durumda, olumsuzluk giderek büyüyerek artar. Buna kısır döngü denir. İşin ilginç tarafı şu: pekiştirici döngü eğer olumlu bir şekilde çalışmaya başlarsa, bir tür refah veya saadet döngüsü oluşturur. Fakat tersine olumsuz bir şekilde çalışmaya başlarsa, o zaman da içinden çıkması giderek zorlaşan bir kısır döngü oluşturur.
Genellikle neden-sonuç döngülerini tanımlarken, anlaşılmayı kolaylaştırmak için değişken isimlerini olumlu yönüyle belirtmek tavsiye edilir. Fakat yapının olumsuz bir şekilde çalışması durumunda, bu yapının kısır döngüler üreteceği unutulmamalı.

Yazının Devamı...

Pazartesi, Ekim 13, 2008

Yari Cevik Tasarim

Çevik süreçler genel olarak, sistemin ön tasarım ile geliştirilmesinin yerine, tasarımın test ve programlama içinden geliştirilmesini söylüyor. Bu kural genel olarak doğru bir kural. Fakat istisnaları var.
Son zamanlarda üzerinde çalıştığım iş akışı otomasyonu projesinde, farklı bir yöntem izliyorum. Önce dokümantasyon ile birlikte, sözde kod benzeri mantıksal bir tasarımı çıkarmaya çalışıyorum. Gayet verimli oluyor. Program ve testin yararı, mantıksal adımlardaki boşlukları tümüyle gidermek oluyor. Fakat ister istemez, üst seviye hızlı bakıştan biraz ödün vermek gerekiyor. Ayrıca kod bir kere yazıldıktan sonra, mevcut kod evrime engel oluyor.
Dinamik diller, type inferencing, otomatik refactoring desteği mevcut kodun evrilmesini kolaylaştırıyor; fakat yine de bu araçlarla bile değişim düşüncenin hızına yetişemiyor. Ne var ki, aklın da kapasitesi çabuk doluyor. Tasarım kararlarının sayısı belirli bir miktarın üzerine çıkınca, zihin bunları takip edemiyor.
Bu yüzden, şöyle bir yöntem izliyorum: Eğer tasarım gerektiren zor bir problem üzerine çalışıyorsam, önce sözde kodlarla mantıksal tasarımı geliştiriyorum. Aklımın kaldırabileceği kadar karmaşıklığa varınca, program ve testleri yazıyorum. Sonra bir sonraki tasarım problemi için yeniden, mantıksal tasarımı elle yapmaya geri dönüyorum. Çevik ilkelerin tavsiye ettiği gibi, bu da yine devirli bir tasarım süreci. Fakat çevik ilkelerden farkı, önce tasarım, sonra program/test.
Gerçi bu usul çok yeni bir farklılaşma da sayılmaz. Yıllardan beri çevik yöntemlerden sayılan Jeff de Luca ve Peter Coad’ın FDD (feature driven development) yöntemi de önce tasarım, sonra programlama çevrimini tavsiye ediyor.

Yazının Devamı...

Çarşamba, Ekim 08, 2008

Word'deki Yazilim Hatalari




Dünyanın en çok kullanılan yazılımlarından biri olan Word, çok fazla yazılım hatasına sahip. Özellikle büyük belgeler hazırlarken, Word kullanıcıyı anlaşılmaz birçok sorunla rahatsız ediyor. En son beni çokça uğraştıran bir sorun, eşimin Word'de yazdığı doktora tezinde ortaya çıktı.

Sorun şu: Word belgesini, pdf'e dönüştürüyoruz. pdf dosyadaki sayfa numaraları, word belgesindeki sayfa numaralarından farklı. Sorunun nereden kaynaklandığını anlamak için, 5 farklı pdf dönüştürücüsü kullandım: Word 2007'nin kendi pdf dönüştürücüsü, zamzar.com, expresspdf.com, pdfwriter ve cutepdf. Hepsinde aynı sorunla karşılaştım.
Ayrıca dosyayı yazıcıdan bastırdığımda da aynı sorun ortaya çıkıyor.
Sorunun sebebi neden kaynaklanıyor, diye biraz araştırdım.
İlk sorun, Resim 1'de görünen sorun. Resmin sol tarafında word belgesi, sağ tarafında ise pdf belgesi görünüyor. Şekil 3 dikkat ederseniz, pdf dosyasında metnin içine gömülmüş. Şeklin gerçek yeri burası değil. Şeklin gömüldüğü yerde aslında şekle referans (caption) bulunuyor. Fakat muhtemelen word belgesinin içindeki bir yazılım hatası, word'ün belgeyi basarken, bu referansın yerine şekli gömmesine sebep oluyor.
2. ve 3. resimlerdeki sorun daha da garip. Basılmayan karakterleri göster komutunu verdikten sonra, word belgenin formatını değiştiriyor. Tablo 14 bir alt sayfaya kaydırılmış.
Neyse, word böyle işte. Ben şahsen, eşime tezini yazmaya başlamadan önce, word yerine latex kullanmasının yararlı olabileceğini söylemiştim. Fakat latex'in de kullanımı teknik konulara ilgili olmayan kullanıcılar için, oldukça zor. OpenOffice'in bu gibi yazılım hatalarında Word'e kıyasla ne durumda olduğunu merak ediyorum. Muhtemelen daha iyi olsa gerek. Çünkü Word çok uzun bir geçmişe sahip olduğundan, geçmişten gelen, muhtemelen geliştiricilerinin dahi ne işe yaradığını unuttuğu çok fazla yazılım koduna sahip. Bu yüzden, muhtemelen dünyada en çok test edilen yazılımlardan biri olduğu halde, hala çok fazla yazılım hatası içeriyor.

Yazının Devamı...

Salı, Ekim 07, 2008

Bilginin Dogrulugu ve Ahlaki Sorumluluk

İnsanlar bazı kurum veya kişilerle ilgili çok çarpıcı iddialar ve suçlamalar içeren mailler yolluyorlar birbirine. Bu mailler, çeşitli deliller ve tanıklıklara başvuran haberlerle pekiştiriliyor. Fakat sorun şu ki, kaynak olarak kullanılan delil ve tanıklıklar çoğu zaman gerçek değil. Bu genel ve her yerde her zaman geçerli olan bir sorun. Sadece öteki grupların gönderdiği maillerde değil, bizzat kendi görüşümüzdeki, kendimizi ait gördüğümüz gruptaki insanların gönderdiği haberlerde bu sorun geçerli.

Şimdi ahlaki açıdan işin önemli yanı şu: Söylediğimiz her şey doğru olmalıdır. Başka bir kaynaktan bir bilgi aktarırken dahi, kaynakların doğruluğundan emin olmak bizim sorumluluğumuzdadır.

Eğer aktardığımız bilgiler, toplumdaki bazı insanların itibarını yaralayıcı ise, bu bilgilerin yanlış olması durumunda, ahlaki olarak sorumlu oluruz. Dolayısıyla, bir kişi veya kurumun itibarını zedeleyici bir bilgiyi insanlarla paylaşmadan önce, bu bilginin doğruluğundan emin olmak için, sağlam bir araştırma yapmak ahlaki sorumluluğumuzdur. Bu kolay bir iş değildir. Sağlam bir araştırma yapmak, iyi bir bilim adamı, hukukçu veya araştırmacı gazetecinin işine gösterdiği özeni göstermemizi gerektirir. Bu ise çok zor bir iştir. Bir bilim adamı, gerçeklikle ilgili ufak bir yargıya ulaşabilmek için, çok uzun mesailer harcar. Bir hakim de, bir yargının doğru olup olmadığına karar verebilmek için, çok zaman harcar. Aynı çabayı, bizim birbirimize gönderdiğimiz maillerde göstermemiz mümkün değil. Çünkü hepimizin işi gücü var. Başlı başına bir meslek sahibinin gösterdiği özeni, bir haberin doğruluğunu araştırmak için harcayamayız.

Dolayısıyla, bir bilgi objektif kanallardan doğrulanmamışsa, bu bilgiyi yaymadan önce şu soruyu kendimize sormalıyız: Bu bilginin yanlış olması durumunda, bundan zarar görebilecek kişiler var mıdır? Eğer durum böyleyse ahlaki doğruluktan ayrılmamak için iki seçeneğimiz bulunuyor: Birinci seçenek, bilgiyi paylaşmaktan kaçınmak. İkinci seçenek, bilgiyi paylaşmak, fakat önce kendi ev ödevimizi yapmak. Nedir bizim ev ödevimiz? Çok şey olabilir. Benim aklıma gelenler şunlar:

1. Bilginin yayılmasından zarar görebilecek kişilerle irtibat kurup, konuyla ilgili fikirlerini öğrenmek.
2. Bilginin kaynağının doğruluğunu tahkik etmeye yönelik eleştirel bir araştırma yapmak.
3. Bilgiyi insanlarla paylaşırken, bu bilgiyle ilgili şüpheli yönleri de tüm gerçekliğiyle ortaya koymak.
4. Bilgiyi insanlara aktarırken, bilginin objektif olarak doğrulanmamış olduğunu özellikle vurgulamak.
Bilginin doğruluğu çok önemli bir mesele. Hayatımızın tümünde bilimsel yönteme uygun bilgi üretmek ve yaymak, hepimizin için çok yüksek fayda sağlayacaktır.

Yazının Devamı...

Pazar, Eylül 28, 2008

Sistem Dinamigi Ders ve Kitap Notlarim

Yaman Barlas'ın IE 602 Analysis of Systems dersi ve Sterman'ın Business Dynamics kitabına dair notlarımın bir kısmını bilgisayara aktardım. Özet olarak hızlı bir tekrar yapmak için işe yarayabilir. Erişim için: http://www.box.net/shared/pqosbubi9a Aslında box.net paylaşmak istediğim dosyalar için tam ihtiyacımı karşılamıyor. Biraz yavaş ve yeterince verimli değil. İleride tüm bu dosyaları Google Sites ortamına aktarmayı planlıyorum.

Yazının Devamı...

Cuma, Eylül 26, 2008

Programming in Scala Kitap Ozeti

Bir haftadır Martin Odersky'nin Programming in Scala kitabını okuyordum. Benim alışkanlığımdır, bu tip öğretici kitapları okurken, bir yandan da Keynote programıyla tüm notlarımı tuttuğum dosyaya not alırım.
Bu kitaba ait özet notlarımı pdf haline çevirip internete koydum. İsteyen yararlanabilir.
Fakat tabi ki özet notlar kitabın yerini alamaz. Bu özet notlar, kitabı okumuş veya scala'ya hakimiyeti olan programcıların yararlanabileceği hızlı bir gözden geçirme kaynağı olabilir.

Yazının Devamı...

Cuma, Eylül 12, 2008

The pointing tree


The pointing tree, originally uploaded by admiral999.

Böyle bir yerde yaşayan kimse var mı? İrlanda'danmış.

Yazının Devamı...

Cuma, Ağustos 15, 2008

Minik Tontisimizin Hatiralari

Minik tontişimiz, hatıralarını yazmaya başladı. Fakat henüz yazma işini kendisi yapamadığından, kendisi yerine annesi ve babasını vekil kıldı.

Yazının Devamı...

Salı, Ağustos 12, 2008

Başlangıç Girişimleri İçin Kapsamlı İş Planı Oluşturmadan Kaynak Toplama

Dharmesh Shah'ın onstartups blogundan beğendiğim bir başka girişimcilik yazısına dair notlarım:

4 Quick Tips on Raising Startup Funding Without A Plan Or A PowerPoint

Boston'daki girişimci topluluğun bir üyesiyim. Çok sık rastladığım bir sorun var: İnsanlar kuruluş aşamasındayken inanılmaz derecede çok zamanı, kapsamlı iş planları hazırlamak için harcıyor. Halbuki bu planları hemen hemen kimse okumuyor. Çok biçimsel ve kapsamlı bir plan hazırlamadan da kaynak bulmak mümkündür. Bunun için önerilerim:

1. İyi bir hikaye oluşturun:



İnsanlar hikayelerden etkilenir. Hayal dünyasına hitap eder. İnsanları harekete geçiren tek gerekçe, insanın kendi iç gerekçeleridir. Hikayeler, hayal dünyasını tetiklemekle, muhataplarınızın kendi iç gerekçelerini oluşturmasına yardımcı olur.

2. Kaldıraç (leverage) etkisini gösterin:

Bunun bir diğer adı: rekabet üstünlüğü (unfair advantage). Mesela, iki üniversite öğrencisi, öğrencilikleri sırasında bir yazılım geliştiriyorlar. Bunların önemli bir rekabet üstünülüğü vardır: Rakipleri, yaşamak için pek çok para harcamaları gerekirken, üniversite öğrencileri, yaşamak için ek para harcamadan, yeni bir girişimde bulunmaktadır. Başka rekabet üstünlüğü örnekleri: bir müşteri grubuna erişim, potansiyel bir ortağa veya dağıtım kanalına erişim, nadir yeteneğe erişim, önceden hazırlanmış entellektüel varlık (IP)

3. Bebeğinizin çirkin olduğunu kabul edin:

Startupın kusurlarını görmezden gelmeyin. Fakat gelecekte nasıl güzelleşeceğini anlatmaya odaklanın.

4. Büyük hayal edin, küçük planlayın:

Başlangıç aşamasında çok az kaynağı bulunan fakat verimli bir şekilde çalışan firmaların başarılı olması daha kolay olur. Çünkü çok fazla para, firma yönetiminde işleri doğru yaptıkları yanılgısına sebep olur. Az para olunca, insanlar verimli bir şekilde çalışmaya zorlanırlar.

Yazının Devamı...

Çevik Startup

Dharmesh Shah'ın onstartups.com blogundaki bir yazısına dair notlarım. Yeni bir teknoloji veya inovasyon iş girişiminde bulunmak isteyen girişimciler için faydalı dersler içeriyor:

Agile Software Startups: The Myth Of The Perfect Business Plan


Çok iyi bir ürün fikrim olabilir. Fakat 3-4 ayımı bu ürünün tanımlanması, dokümantasyonu için harcarsam, çok büyük hata etmiş olurum.


Yazılım geliştirme sürecinin tamamını planlamak zordur. Kendisi zuhur eden ve devirli bir yapıya sahiptir.

Çevik süreçlerin en önemli ilkelerinden biri, devirli olmasıdır. Müşteriyle birlikte yazılım geliştirilir.

Bütün bu genel geçer bilgilere rağmen, neden çağlayan (waterfall) tuzağına düşüyoruz? Bence önemli bir sebep, kaynak bulmak için iş planı oluşturmaya harcadığımız emekten kaynaklanıyor. Fakat aslında bu şart değil. İş planı olmadan kaynak bulabiliriz. Kaynak bulmadan, yazılım şirketi kurabiliriz.

Çevik ilkelerden öğrenebileceklerimiz var:

1. Faydalı yazılım, kapsamlı bir iş planından daha değerlidir:
2. Müşteri gelirleri, dış kaynaklardan daha değerlidir
Müşteri gelirleri, doğru problemi çözdüğümüzün açık kanıtıdır. Ne kadar erken, o kadar iyi. Bir şey doğru mudur, öğrenmek için, müşteriye sorarız. Müşterinin iletişim dili ise nakitledir.
3. Değişime yanıt vermek, planı takip etmekten daha değerlidir
Çoğu başarılı firma, orjinal iş planını takip etmez. Esneklik kilittir.
4. İyi şirket kurmak, şirket satmaktan daha önemli:
Satmak üzere kurulan bir şirket, vasat olmaya mahkumdur.

Yazının Devamı...

Cumartesi, Haziran 14, 2008

Gapminder

Gapminder sitesini yeni keşfettim. Tam benim gibi istatistik meraklılarına göre. Çok ilginç görselleştirmelerle, kamu istatistiklerini sunuyorlar. Etkileşimlilik ve kullanışlılık açısından tam bir örnek alınacak eser. Ayrıca çok da öğretici. Mesela, Türkiye'de doğurganlığın yüksek olduğunu, nüfusun bu yüzden arttığını biliriz. Fakat istatistiklere göre durum böyle değil. Türkiye'de son 10-20 yıldaki nüfus artışında, doğurganlık kadar, ortalama hayat süresinin uzaması da etkili olmuş. Sitenin sunucusu olan sempatik bir istatistikçi bunu "Gapcast" adını verdiği bir video ile eğitsel açıdan son derece kaliteli bir şekilde burada anlatıyor.

Yazının Devamı...

Cuma, Haziran 06, 2008

Yargıçlar devletine hayır

Cumhuriyet, devlet yetkisinin yalnızca halktan alınmasına dayalı bir yönetim şeklidir. Hiçbir kurum veya kişi, halktan alınmamış bir yetkiye dayanarak devletin gücünü kullanamaz. Meclis doğrudan halk tarafından seçilen ve yasama yetkisini halkın onayladığı anayasadan alan bir kurumdur. Tek yasa koyucu olan meclisin anayasada yaptığı değişiklikler, yalnızca şekil bakımından denetime tabi olabileceği, anayasanın 148. maddesinde belirtiliyor. Kanunların anayasaya uygunluğunu denetlemekle sorumlu kurum olan Anayasa Mahkemesi, 148. maddede kendisine anayasa tarafından konulmuş olan sınırın içerisinde denetim yapması kanuni olarak şarttır. Mahkeme bu sınırın ötesine geçerek, anayasa değişikliklerini içerik bakımından denetleyemez. Aksi taktirde kanun denetleyicisi, bizzat kendisi kanunu ihlal etmiş olur.
Yine anayasanın 6. maddesine göre, hiçbir kurum kaynağını anayasadan almayan bir devlet yetkisi kullanamaz. Dolayısıyla mahkeme yeni bir içtihatta bulunarak, 148. maddenin sınırlarını genişletme yetkisine sahip değildir.
Anayasa Mahkemesi 9 Şubat 2008 günlü 5735 sayılı kanunla ilgili gerekçeli kararında, bu eleştirileri yanıtlayarak, nasıl bir meşruiyete dayanarak karar verdiğini açıklaması gerekir. Anayasa Mahkemesi Cumhuriyet'i korumakla görevli kurumlardan biridir. Umarım, "yargıçlar devleti" eleştirilerine karşı geçerli, kanuni ve felsefi açıdan tam tutarlı bir gerekçe yayınlayabilir. Aksi durumda, Cumhuriyet'in temel nitelikleri ihlal edilmiş olur.

Yazının Devamı...

Pazartesi, Mayıs 19, 2008

Asla String kullanmayin

Stephan Schmidt Never, never, never use String in Java (or at least less often :-) makalesinde, String gibi primitifleri kullanmak yerine alternatif bir çözüm öneriyor. Yaklaşımının temelinde DDD (domain driven design) yani alan temelli tasarım yatıyor. Temel fikir şu: Alana (veya domain/business) ait kavramların nesnelerle temsil edilmesi, en küçük alan kavramından başlamalı. Bir kişinin ismi dahi kendi adına bir nesne olmalı.

Makaleden aldığım notlar burada:

String gibi primitifler kullanmayın

eski yol:


public void bookTicket(
String name,
String firstName,
String film,
int count,
String cinema);


yeni yol:


public void bookTicket(
Name name,
FirstName firstName,
Film film,
Count count,
Cinema cinema);


faydaları:
çok uzun parametre listesi alan metotlar kendi kendini dokümente ederler
iş mantığının yönetimi daha kolay olur


new Name("ahmet")
şeklinde yazmak işi zorlaştırmaz mı?
çözüm:

public static Name name(String name) {
return new Name(name);
}


böylece:

new Customer(firstName("Stephan"), name("Schmidt"));


eski yol:

new Customer("Stephan", "Schmidt");


başka örnek:

new Point(10,10);

yeni yol:

new Point(x(10), y(10));

XPos ve YPos objeleri kullanılıyor

örnek:
fiyatla arama yapmak:
searchByPrice
bu metodun argümanları nasıl olmalı?

kötü yol:

Vector searchByPrice(double start, double end)


iyi:

List searchByPriceRange(Price start, Price end)


veya

List searchByPriceRange(PriceRange priceToSearch)



---
Tartışma:

İtirazlar:
1. YAGNI ilkesi ihlal edilmiş olmuyor mu?

Cevaplar:
Oliver:
http://stephan.reposita.org/archives/2008/05/02/never-never-never-use-string-in-java-or-at-least-less-often/#comment-87153
But we actually had a problem with the last names on the project I am currently on. The business wanted to limit the last name length to minimum 2 characters, and of course, the code was littered with length checking, from the ui level to the database.

A couple of months later, they dropped that requirement, and it took us ages to find all the checking throughout the code and remove it.

The original blog post argued that domain modeling needs to occur at the lowest possible level. At some point, every project, starts introducing domain model.

Yazının Devamı...

Perşembe, Mayıs 15, 2008

Uykuya dalis

Web günceme daha önce yazmadım. O yüzden şimdi duyurayım: 5 hafta kadar önce (7 Nisanda) çocuğumuz doğdu. Adını Özgür Emin koyduk, fakat hala nüfusta kaydını yaptırmadık. Aslında bu web sayfasını daha çok teknik konularla ilgili doldurmak istiyordum. Kişisel anılarımı başka bir yere koysam belki daha uygun olur diye düşünüyordum, fakat ne yapacağıma dair tam da bir karara varamadım.

Birden çok web güncesi olunca, hepsinin bakımı ayrı bir güçlük olacak. Zaten birden çok web güncem var, fakat bazılarının adreslerini ben bile bilmiyorum. Bu arada bu web güncemin adresinden de çok memnun değilim, değiştirmeyi planlıyorum.
Neyse, ana konumuza dönelim. Ne kadar gevezelik yapıyorum :)
Tontişimizin (bebekten bahsediyorum) en ilginç yönlerinden biri uyuyakalma şekli. Uyutmak için, kucağıma alıp, salonda defalarca tur atıyorum. Gezmeye başlarken gözleri faltaşı gibi açıkken, birkaç turun ardından göz kapakları yarıya iniyor. Bir iki tur daha attım mı, gözlerini zorlukla açık tutabiliyor. Sonra kendisi farkına bile varmadan, uyku alemine giriyor.

Yazının Devamı...

Cumartesi, Mayıs 03, 2008

qipit ile doküman taramak

Qipit.com adlı bir site var. Dokümanları kolayca okunabilir bir şekilde taramak için çok yararlı bir uygulama. Cep telefonunuzla veya dijital fotoğraf makinenizle çektiğiniz resimleri qipit'e yüklüyorsunuz. Normalde çektiğiniz resimlerde, çok sayıda karanlık alan oluyor. Qipit size otomatik olarak, doküman resimlerinin temiz bir şekilde düzenlenmiş halini geri gönderiyor.

Yazının Devamı...