Ekim 2009 için arşiv
Önce uyum gösterirsiniz, sonra alışkanlık edinirsiniz
Başlıkta geçen söz, Wilson Pickett’e ait. İlk duyduğumda ne hissettiysem, şu anda yazarken de aynı şeyi hissediyorum. Yakın zamanda benzer bir alıntıya denk geldim, Aristoteles’e atfedilmiş: “Sürekli yaptığımız şey neyse, biz oyuz. O halde mükemmellik bir eylem değil, bir alışkanlıktır.”
Bu yazı, bu alıntıların arkasında yatan felsefeye dayalı. Çok daha detaylı olabilirdi ama kısa tutmaya çalışacağım. Daha çok kişisel bir yazı, hitap ettiğim kişi genel olarak kendimim. Düşündüğüm şeyleri yazıya geçirdiğimde aklımın berraklaştığını hissediyorum. Erişime, başka insanlara da motivasyon olabilir ve fikirlerini paylaşabilirler düşüncesiyle açtım.
Yazı paradigma değişimi ile ilgili, benim yapmak istediğim paradigma değişimi. Ben’i kısaca özetlersem; gününün çoğunu bilgisayar başında geçiren bir bilgisayar bilimi öğrencisi ve hayatı internetle dolmuş taşmış biri. İki tane ben var, biri fiziksel, diğeri sanal. Siz şu anda fiziksel ben’i kısmen temsil eden sanal ben’i okuyorsunuz.
Değişim; bireyin kendi isteklerini kavramaya çalışması, bu yolda internet sosyalliğinden ve alışkanlıklardan yapılmak istenene doğru hamleleri ile ilgili. Çok düzenli bir yazı değil, bölük pörçük. Aynen beni rahatsız eden şu anki durum gibi. Beni rahatsız eden şey yaptığım şeyler değil; yapmadığım, yapamadığım şeyler…
Özbilinç
Bireyin kendi isteklerini, yani basbaya hayattan ne beklediğini bilebilmesi ne zor. Bunu düşündüğünde karşılaşacağı tabloya göğüs germesinin zorluğundan ve korkusundan belki de, sürekli ertelenir bu düşünceler. Çok basit bir deney işte sana: Eline bir parça kağıt ve bir kalem al, ve oraya hayattan ne istediğini yaz. Günler geçer, yazamassın, yine paspasaltı olur o düşünceler. Ancak bıçak kemiğe dayanır tekrar ve hortlar saklı istekler. Yazmak istemeyiz bir de, çünkü vebali büyüktür.
Deneyin devamı da çok basit: Hani şu 3x5’lik kağıtlar var. Onlardan al bir tomar ve her gece hedeflediğin isteklerin doğrultusunda bir madde de olsa sonraki gün ne yapacağını yaz ve gidişatı gözlemle. Kağıdı günün sonunda at. Günler geçecek ve o madde hep yeni kağıtlarda yer alacak. Bir maddeyi bitirsen, ikincisi kalacak, üçüncüsü kalacak ama günün koşuşturmacası ve her yanını saran bölünmelerden dört olmayacak. Aman diyceksin, ne saçma bu sistem! Robot muyum ben, böyle iş mi yapılır? Bu yöntem mi derdin gerçekten, yoksa istediğin şeyleri yapamadığını, ve uğraşmazsan hiç yapamayacağını apaçık görmek mi? Bununla yüzleşmek mi? Nietzsche, “To forget one’s purpose is the commonest form of stupidity” der. Sanırım çok haklı…
Seçme özgürlüğü
“Düşünce, özgürleştiği yerde yeşerir” derler. Bunca bilgi bombardımanının altında düşünsel özgürlük ve özgünlüğün yakalanabileceğini düşünmüyorum artık. Kişinin bunlardan vazgeçmesi, zor da olsa denemesi gerekir.
Bağımlılık
Hep bağımlı olmadığımızı düşünür, geçiştiririz, ciddiye almayız. Fakat bu işi cidden gözlemeye başladığımızda ortaya çıkan tablo bizi sinir edebilir. Zaten belki de bu yüzden bu işi çok dürtüklemek istemeyiz. Bağımlılığın tespiti kolaydır: Bir süre yapmadan duramıyorsan o şeye bağımlısındır. Bağımlılık bir tür hastalıktır ve kurtulmak için önce hasta olduğuna ikna olmalısın. Ve bıraktığında ilk anlar muhtemelen güzel gelecek, cesaretleneceksin, ama ilerleyen zamanlarda boşluğa düşme hissi seni deli edecek. Ya kendini kandırıp vazgeçeceksin, ya da kendine başka bir bağımlılık bulacaksın. İdeallerin, insanın bağımlılığı olması en ender durumlardan biri sanırım. İnternet de günümüzün en yaygın bağımlılığı olsa gerek, bu yazının bahsi gibi.
Çözünürlük ve sıklık
İnsanlar dağın değişikliğini gözlemleyemezler ama bir taşın düştüğünü gözlemleyebilirler. Ağacın yapraklarının rüzgarda sallandığını gözlemlerler ama elektronun atom etrafında döndüğünü gözlemleyemezler. Algı, zamana bağımlı bir çıkarım fonksiyonudur. Biz dün ve bugünü gözlemleyebiliriz; çocukluğumuz, gençliğimiz, yaşlılığımızı gözlemleyebiliriz ama insanlık tarihini gözlemleyebilmek için çözünürlüğü biraz değiştirmek gerekir. İstediklerini bir türlü yapamadığını düşünen ve yaşam çözünürlüğünde bakan bir göz, besbelli çocukluğuna özenir. Bu göz, her çağda aynıdır, hep çocukluğuna özenir. O çağda iyi olmuş şeyler olabilir ama buna başka bir gözle bakmak lazım. Her durumda aynı gözlükleri takınmak geleceğe kulaklarını kapamak olur. 80’lerin çocukluğunda kalırsın; teknolojinin sevdiğin insanın hayatını kurtardığını göremeyip insanların bilgisayar oyunundan başını alamadığına takılır, bundan dem vurursun…
Sanal ben
Çoğumuzun bir de sanal hali vardır. Biz yaratırız onu. Fiziksel ben’in yapmak istediklerinin gerçekleşmesinin zorluğuna karşın sanal ben isteklerini daha kolay gerçekleştirebilir. Hatta fiziksel ben’i de kandırıp alıkoyabilir. Bunun uç boyutunda Second Life gibi oyunlar yer alıyor. Facebook türevleri de insanlığın sanal meskeni oldu artık. Buralarda yaratılan sanal ben, fiziksel ben’in hep iyi tarafıdır. Arada kötü taraf da serpiştirilir ama onda bile bir güzellik katma hedefi vardır, boşa yapılmaz. Fiziksel ben’in algılama kapasitesinin ötesinde bir paylaşım hızı olur ve fiziksel ben için seçme özgürlüğü baltalanır, bağımlılık yapar ve asıl beklentiler hep alıkoyulur. Buralarda insanı alıkoyan bir şey var. Sebebini bilemiyorum, ama semptomlarını yaşıyorum.
Mücadele yöntemi
Üstteki maddelerin farkında olan herkes onlarla başaçıkabilmeyi ister. Bu isteklere cevaben hazırlanan belli kalıplar doğdu. Genel adıyla verimlilik pr0nosu deniyor. O metodları tümüyle uygulamazsanız, yanlış yolda olduğunuzu hissediyorsunuz. Bu da bağımlılıklarla mücadele etmenin başka bir bağımlılıkla bir nevi yerdeğiştirmesi. Bunun da farkında olmak lazım.
Rota
Farklı çözünürlüklerde bakış, daha çok fiziksel ben, bağımlılıklarla ve özfarkındalığın acısı ile mücadele ve ultra-verimlilik derdinin çöpe atılması. Hepsini yaparken sonunun düze çıkacağına olan umut…
Sade dille özet
- Sanal dünyadan (burası dışında) zorla da olsa kendimi koparma adımları attım. Çoğu sanal hesabımı ve Facebook hesabımı tamamen sildim. Üstünde haftalarca emeğim olan sanal ben uçtu gitti. Ne kadar özenerek sanal ben yarattığımı(zı) farkettim. Bir daha sanallığa amaçsız dalmayacağım.
- Verimlilik pr0nosuna bağımlı olduğumu gördüm ve bu konuda minimum bir okur olmaya karar verdim. Bu konuda pek konuşmayacağım.
- Bahsettiğim deneylerin hepsini yaptım ve deneyimimi yazdım.
Son zamanlarda çok fazla yazı yazdım. Nadasa bırakıyorum buraları…
Önce uyum gösterirsiniz, sonra alışkanlık edinirsiniz
— Wilson PickettSürekli yaptığımız şey neyse, biz oyuz. O halde mükemmellik bir eylem değil, bir alışkanlıktır.
— Aristoteles
Minimalist Gmail, Youtube ve Firefox
Eğer Firefox kullanıyorsanız, şu işlemler tarayıcınızı sadeleştirmek için birebir:
- Tiny Menu eklentisi ile menüyü tek haneye düşürmek
- Yer imlerini kapatmak (zaten Ctrl-B ile gösterilebiliyor)
- Gezinme araçlarının çoğunu kaldırmak (Esc ile dur işlemini, F5 ile yenileme işlemini, Ctrl-F5 ile yepyenileme işlemini, Alt-Sağ ok/Alt-Sol ok ile ileri/geri işlemlerini yapabiliyorsunuz)
- Sonuç itibariyle tek bir satır bırakmak (menü, gezinme çubuğunun sadeleşmiş hali, adres çubuğu ve arama çubuğu)
Birkaç önemli kısayol daha: Ctrl-L ile adres çubuğuna, Ctrl-K ile ise arama çubuğuna geçebilir ve arama çubuğunda iken Ctrl-Aşağı ok/Ctrl-Yukarı ok ile arama yapacağınız hizmeti (Google, Yahoo, Seslisözlük [eklediyseniz], vb.) seçebilirsiniz.
Varşova’da Python kışokulu
8–12 Şubat 2010 tarihlerinde, Varşova’da, ileri seviye, bilimsel Python kışokulu düzenlenecek. Katılım ücretsiz, yalnızca yol, barınma ve yemek masrafları katılımcıya ait. Üniversitede iseniz, bilimsel programlama olduğu için fondan yararlanılabilir sanırım.
Ben Eylül’de Berlin’de düzenlenen yazokuluna katılmıştım. Varşova’daki ile konu olarak örtüştüğü için ona başvurmayacağım ama kısaca yazokulundaki gözlemlerimi yazayım:
Organizasyon sinirbilimcilerin organizasyonu gibi gözükmesine rağmen katılımcılar farklı alanlardan gelmişti. Ekonomisti, fizikçisi, mühendisi, kimyacısı, biyoloğu, meraklı herkes… Katılımcıların büyük kısmı Python bilmesine rağmen hiç bilmeyenler de vardı. Hatta ve hatta nesne-tabanlı programlama bilmeyen ve vektörel programlama konusunda fikri olmayanlar bile vardı! Yani, ben bilmiyorum, zaten kabul etmezler fikri tamamen yanlış, onun için diyorum. Bilmeyenler veya bilgisini tazelemek isteyenler için ilk gün (0. gün) hızlandırılmış bir kurs oluyor. Tüm dersler önce anlatım (2–2,5 saat) ve ardından alıştırmalar (~1,5 saat) şeklinde ilerliyor ve günde bunlardan iki set oluyor. Bir hayli yoğun bir program. Yazılım mühendisliği, kod tasarımı üstüne yaklaşımlar (“design patterns”), Python ile bilimsel programlama (MATLAB gibi kullanabilme [numpy, matplotlib, scipy]), kodu paralel çalıştırabilme, birim test yazma, hız analizi (“profiling”) öne çıkan başlıklar.
Tüm konuları hazmedemiyor insan ama çok iyi bir izlenim bırakıyor. Sadece dinlemiyorsun, elleri de zoraki kirletiyorsun. Bir de alıştırmaları zorunlu olarak 2 kişilik gruplarda yapıyorsun. Amaç birlikte çalışabilmeyi de zorlamak. İki kişinin bilgilerini paylaşmasını sağlamak. Bana farklı günlerde, ne yazık ki (!) çok bilen bir Fransız ve İtalyan arkadaş denk geldi ve onlara vektörel programlamayı anlatırken alıştırmalar güme gitti. Çok ilginçtir bu kazanım, daha sonra değineceğim. İtalyan arkadaşı çok sevdim, inanılmaz sıcak bir adamdı ama diğeri beni çok sevdiğinden ikinci gün sattı :)
Son iki gün yoğun bir şekilde 6 kişilik gruplar halinde bir projede çalıştık: Pacman! Pacman oyunu için her grup 2 adet oyuncu yazdı ve yazokulu sonunda oyuncuları kapıştırdık. Biz 4. olduk, ama beş takım vardı :) Yani çok büyük performans gösterdik anlayacağınız.
Benim kazancıma geleyim. Ben anlatılan çoğu şeyi biliyordum ama çok önemli bir şey farkettim. Bizim grup 6 kişi, biri ilk gün hastalandı, gitti. Kaldık 5 kişi. Bir İtalyan var (ilk bahsettiğimden farklı), eleman canavar. Onunla frekanslar tuttu, projeyi nasıl yaparız diye tartışıyoruz. Bir de benim ikili gruplardan partnerim olan Fransız var ki grubu hiç dinlemiyor. Hadi girişelim, ben şurayı yazacam falan, aceleye getiriyor işi. Ben kendimi görece grup çalışmasına yatkın biri olarak tanımlardım hep. 3 gün boyunca arada benim teller koptu, kendimi dışarı attım, sakinleşip yazmaya çalıştım. İşin ucunda bir şey olacağı yok ama strese sokuyorlar, geriyorlar ortamı falan. Of dedim of, ama kendimin bu konularda ne kadar tecrübesiz olduğunu gördüm. Yani kızsam kaybederiz, adamın dediği her şeye uymak da ters, birlikte kod yazarken de politik olmak gerekiyor onu farkettim. Litvanyalı bir kız vardı, onla partner olduk, birlikte projenin bize düşen ayağını yaptık. Sonunda iyi kötü işin içinden çıktık. Ben de kodlamanın ötesinde bir şey edinmiş oldum. Zaten organizatörlerde gördüğüm birlikte çalışabilme kültürü beni hayrete düşürdü. Hepsi birbirine saygılı ve paylaşımcı. Bizde pek az bulunan özellikler bunlar bence (hele bir de Boğaziçi’ndeyseniz, ÖSS sonucuyla ömrünü tamamlayan, çok fazla küçük dağ yaratıcısı ile yaşamaya alışmanız lazım).
Konferansta çalışmanın dışında yemekler de tertip edildi ve değişik insanlarla tanışma fırsatı doğdu. Çoğu doktora öğrencisi veya doktora sonrası araştırmacı. Çok iyi programlama biliyorlar genel de. Hepsinin dahil olduğu açık kaynak bir proje var ve mümkün olduğunca kendi aralarında alışveriş yapmaya çalışıyorlar. Çok teknik bir konuşma, bir an paylaşım üstüne güzel bir sohbete dönüşebiliyor. Açıkçası bunları görmek benim çok hoşuma gitti. Konferansta tanıştığım EPFL’den bir araştırmacı beni Freiburg’a sinirbilimcilerin başka bir Python çalıştayına çağırdı. O da 2 hafta kadar önceydi, oraya katıldım. Başka bir elemandan şimdiye kadar okuduğum en iyi programlama kitabını öğrenmiş oldum: The Pragmatic Programmer. Birlikte iş yaptığımız için insanlarla daha yakından tanıştık. Python bilgisi dışında bana kattığı farklı güzel şeyler oldu. Berlin’i de unutmamak gerek.
Vel hasıl-ı kelam, bilimsel Python programlama öğrenmeye meraklıysanız; sadece teknik olmasın, biraz da yazılıma dair bakış açıları öğreneyim derseniz birebir. Ayrıntılı bilgi programda var. Sinirbilim kardeşi bir alanda iseniz kullandığınız açık kaynak modüllerin yazarları orada olabilir, bakmak lazım. Bu arada, Varşova’nın soğuğu da cabası!
Python kaynakları
Python kodlamak isterseniz internette açık kaynak, çok güzel kitaplar mevcut. Özellikle başlangıç seviyesinde tonla kaynak var.
Genel anlamda Python programlamayı öğrenmek istiyorsanız:
Okuma listesi
Araştırma, bilim, akademi gibi konuları içeren bir okuma listesi ve bağlantı deposu:
- Principles of Effective Research (Etkin/Verimli Araştırmanın İlkeleri), Michael Nielsen, Temmuz 2004
- Ten Lessons I Wish I Had Been Taught (Keşke Öğretselerdi Dediğim On Ders), Gian-Carlo Rota, Ocak 1997
- Advice for the Young Scientist (Genç Bilimciye Öğütler), John Baez, Mart 2007
- A Stroke of Genius: Striving for Greatness in All You Do (Bir Deha Davranışı: Yaptığınız Her Şeyde Yücelik için Çabalamak), Richard W. Hamming
- Principles of Research (Araştırmanın İlkeleri), A. Einstein, 1918
- Dr. Z's Opinions (Dr. Z'nin Düşünceleri), Dorol Zeilberger, 1967'den beri
- Advice on Doing Research* (Araştırma Yapma Üstüne Öğütler), Duke Üniversitesi, Lisansüstü Çalışmalarına Giriş, Güz 2007
- Suggestions and Howto's* (Öneriler ve 'Nasıl'lar), IRKM Lab, UC Santa Cruz
- A Roadmap to Success (Başarıya Giden Yol), The Etude, Ekim 1913
- How to Ensure Rapid Success in a Career in Science** (Bilimsel Kariyerde Hızlı Başarı Nasıl Sağlanır), J. Harthong, 1998
* İlgili birçok bağlantı içerir
** Tersname türünde yazılmış
Temel konular için yanlış yöntem: bloglar
Bir blog; güncel konuları takip etmek için, arkadaşların düşüncelerini paylaşmak için, küçük kod parçaları için, "tutorial" tarzı anlatımlar için, bir projenin gelişme raporlarının takibi için ve daha birçok şey için iyi bir araç olabilir. Fakat temel metinler için hiç ama hiç doğru bir araç değil. Örneğin nümerik metodlar bir blogdan öğrenilmez, yani şu anki blog teknolojisi ile bu pek mümkün değil. Ya da ücretsiz olarak pek mümkün değil. Bu, halis muhlis basım kokusu olan kitaptan öğrenilir. Video dersleri de buna eşlik edebilir Bence bunun mantıklı yolu bu. Özenle yazılmış, işin pîrlerinin onca kitabı varken, günden güne onlardan uzaklaşmayı tercih etmek, zihni zorlamayıp çok basit birkaç giriş seviyesinde yazıya "paylaşım için sağol" demek, günden güne körleşmekten başka hiç bir işe yaramaz sanırım. Okyanus orda öylece yatarken, küçük göletlerde takılmak gibi bir şey. Bana kalırsa böyle bir bloğu takip etmekten de, böyle bir blog tutmaya soyunmaktan da kaçınmak lazım. Yani, elde sadece çekiçle dolaşmamak lazım. Malum, tüm problemler çivi değil.
Kod istatistikleri
Kod geliştikçe arada istatistiklere bakmak güzel oluyor. Kodu subversion'da tutuyorsanız statsvn ile bunu yapmak mümkün. Bunu her yaptığımda nasıl yaptığımı unutup, tekrar bakmam gerekiyor. Burada saklayayım...
Statsvn Ubuntu depolarında var. Oradan çekilebilir veya jar dosyası olarak indirilip java ile çağırabilir. Ben paketi indirdim, statsvn diye doğrudan çağırılabiliyor. Merak ettiğiniz açık kaynak bir projenin istatistiklerini de görebilirsiniz. İşlemler şöyle:
Yüz takibiyle fare oynatmaca
Hep merak etmişimdir, işimiz insan-bilgisayar etkileşimi ama bilgisayar bizle etkileşiyor, biz onunla nasıl etkileşeceğiz diye. GNU/Linux kullanıyorsanız 15 dakikada bilgisayarınızı Azınlık Raporu’ndaki muhteşem etkileşim sahnesinin çoook minimal haline getirebilir ve küçük Tom Cruise’u oynayabilirsiniz.
İhtiyacımız olan paketler: python, opencv (halihazırda python kodları geliyor) ve xdotool
Açık yayın manifestosu
Yakın zamanda Bill Gasarch'ın tetiklemesiyle Daniel Lemire de kendi manifestosunu yayınlamıştı. Düşünceler üstüne denk gelinen bu yazılar bana da vesile olsun.
Genç araştırmacının açık yayın manifestosu :
- Araştırmalarını koyacağın bir internet sitesine sahip ol.
- Bir yayın yaptığında (makale, poster sunumu, vb.), öncelikli işin onu kendi internet sitene veya diğer araştırmacıların ulaşabileceği bir internet sitesine koymak olsun. (Ör: arXiv)
- Eğer bir konuşma verirsen, sunumu sayfana koy. Eğer konuşma kayda alındıysa, kaydı video olarak da koy ve sitenden bağlantı ver.
- Bu yayınla ilgili gelişmeleri ve (teknik, teorik, yazım, noktalama, vb.) hataları da bu sitede yayınla.
- Bu güncellemeleri diğer araştırmacıların rahat ulaşabileceği şekilde sun. (Ör: RSS, Atom)
Ve isteğe bağlı, genişletilmiş sürüm:
- Yayınlarında kullandığın kaynak kodu, küçük bir kullanım kılavuzu ile yayınla.
- Blog sahibiysen; bloğunda, araştırmanın özetçe kısmının daha günlük dille yazılmış bir sürümünü yayınla.
Kodları renklendirmek
Eğer bir internet sitesinde kod yayınlıyorsanız, kod kısımlarını farklı biçimlendirmek okurlarınız için paha biçilemez bir nimet. Çünkü, örneğin ben, Arial veya Times New Roman fontunda kod okumayı hiç ama hiç sevmiyorum, beceremiyorum da. Hizalamadan, tırnak işaretlerine kadar herşey çorba gibi oluyor. Renklendirmeyi geçtim: en azından Monospace yapmak lazım. Eğer WP kullanıyorsanız, WP-Syntax eklentisi süper iş görüyor. Üstelik kodları diline göre renklendiriyor da. Size kalan css dosyasında küçük ayarları yapmak.
Bu arada eğer fontların Linux ve Windows'ta farklı gözükmesinden şikayetçiyseniz (yine ben!) bu bilgi çok faydalı olabilir.

