2004 yilindan bu yana her yil hayatimda onemli degisiklikler olmustu. Askerlik, kariyer, ABD’ye yerlesmek, evlenmek vs. derken, her yil hep yeni bir seyler olup hayatimin akisi degisiyordu. 1 Ocak saat 00:00′dan itibaren ise 2010′un bana ne getirecegi hep aklimda soru isaretiydi. Ta ki bugune kadar. Bugun farkettim ki, 2010 bana cok buyuk bir sey getirmisti: Gobek.
Acilen bir sey yapmaliyim!
Linux’un en kotu tarafi taraftarlaridir. Hani su kraldan cok kralci olanlar, cekirdek hakkinda Linus Torvalds’in bile sikayet ettigi seylerden bahsedince seni Linux dusmani yapanlar falan. Bir de bir kullanicinin yasadigi donanim veya disk bolumleme ile ilgili verilen degismez cevap vardir ki, tadindan yenmez: “Sen becerememissindir. Arastirsaydin, kesin cozum bulurdun. Bu senin sucun.”
Sanirsin Linux gokten indi, hatasizdir. Ama kiminle konustugunun farkinda degildir dangalak.
Cristian, mobil uygulamalar uzerine calisan bir programcidir. Daha once Wap sitesinin gelistirmesi ve guncellemeler ile ugramisken, sonra Android icin yazilim gelistirmis, simdi ise sirket ondan iPhone uygulamasi gelistirmesini istemistir. Ancak malumunuz olacagi uzere Apple’in iPhone uygulamalari konusundaki politikasi yuzunden, Cristian’in isi simdilik rafa kaldirilmistir. O rahat calissin diye Wap sitesi ile ilgili operasyonlar da Web ekibine verilmis oldugu icin, Cristian adeta sadece ogrenmek icin oradadir. Ustelik bir de Cristian, en yogun calisilan “geri plan uygulamalari” bolumu gelistiricileri ile ayni calisma alaninda oturdugu icin daha da bir tuhaf kacmaktadir.
Birgun geri plan programcilarindan Indu dayanamaz ve sorar:
Indu: Su senin iPhone uygulamasi ne zaman cikacak?
Cristian: Bilmiyorum, su anda gelistirebilecegim bir sey yok. Vardi aslinda ama Apple istemedi. Ben de sadece kitap okuyup denemeler yapiyorum.
Indu: Yani sirket sana sadece ogrenmen icin mi para veriyor?
Cristian: Sanirim oyle.
Gecen gun de web ekibinden birisi, Cristian’in daha once yazmis oldugu bir kod ile ilgili olarak yaptigi yeni bir duzenlemeyi Subversion kayitlarinda gorur ve ona konuyla ilgili bir e-posta gonderir.
Webci: E-postami aldin mi?
Cristian: Hayir, neyle ilgiliydi?
Webci: Senin bir commitini gordum.
Cristian: Evet, ne olmus? O kodu ben yazmistim.
Webci: Ben senin artik burada calismadigini dusunuyordum.
Bir programa herhangi bir islevsellik katmadigi müddetçe, programlarin kabuk destegi olmasına hep karsı olmusumdur. Bu konuda yapılmış su yoruma tamamen katılıyorum:
Whenever a programmer thinks, “Hey, skins, what a cool idea”, their computer’s speakers should create some sort of cock-shaped soundwave and plunge it repeatedly through their skulls.
Bütün hafta boyunca gerek yeni projeler, gerek eski projeler ile ilgili degisiklikler için rahatsız ettigim sistem yoneticisi artık beni gordukce yolunu değiştirmeye veya saklanmaya başladı. Bugün de 3. kez odasına baska bir programciyla girip, ellerimi ovusturmaya başlayınca sonunda isyan etti:
SY: Sen bir tatile ciksana
Ben: Olur. Benim için Cristian (yonetici) ile konuşursan neden olmasın?
SY: Neden?
Ben: İznimi kullandım da ondan
SY: Tamam mesele değil, yeter ki sen git.
Aksam üstü yorgun oldugum için 1 kutu Red Bull icmeye kalktım. Şimdi saat sabahın 6’si ve yeni yeni uykum gelmeye basladi. Bakalım uyanabilecek miyim?
CV yazmaktan veya kariyer sitelerindeki ozgecmuis formlarini doldurmaktan oldum olasi hoslanmamisimdir. Kendimi tek bir kaliba uydurarak tanitmaya calismak bana hic dogru gelmiyor. Bugun ilk defa LinkedIn’e giris yaptim ve burada da kendimi belli bir kaliba sokmam istendi. Niyeyse yazacak bir sey bulamadim. Sanki hicbir teknik bilgi, hicbir konuda deneyime sahip degilmisim gibi hissettim kendimi. 10 yillik programcilik bosa gecmis gibi.
Yeni bir hafta başladı yine. Haftaya son derece dinç ve enerjik başlamak isterdim ama imkansız. Otobüste bari uyuyabilseydim…
Bugun umask ile ilgili ilginc bir sey gordum. Normalde konsolda umask yazinca karsiniza 0022 gibi bir deger cikacaktir. Buradaki ilk 0 sticky bit hanesi, diger sayilar ise sahip, grup ve diger kullacilar haneleri icindir. Sirketteki gelistiriclerden birinin hesabindaki umask degerini 0002 yapmak istedim. Ancak ilginc bir seyle karsilastim. umask ciktisina aldanip .bash_profile dosyasinda umask 0002 yazdim ve dosya olusturmak istedigimde dosyanin erisim izinlerindeki grup ismi yerine 512 seklinde bir deger gordum. Kullanicinin bulundugu on tanimli grubun gid’si 514 idi ve 512 gid’sine sahip bir grup da yoktu. .bash_profile’daki umask 0002 satirini umask 002 seklinde degistirince bu sorun ortadan kalkti. Sistem ilginc bir sekilde umask degerini kullanicinin gid’sinin degerinden cikarip ortaya cikan sonucu, dosyanin sahibi olan grup olarak atamisti. Belki de sorun creat() cagrisiyla ilgili bir seydir. Bu durumu gordugum sistem Linux’ta idi. Ancak sirkette herhangi bir BSD olmadigi icin denemis degilim.
Ek: Ayni seyi Mac OS X’de denedigimde umask olmasi gerektigi gibi calisti ve dosyanin gid’si degismedi. Sorun Linux’a ozel.
Ek-2: Ayni seyi 2.6.26 surumlu cekirdege sahip bir Debian ile denedigimde de umask olmasi gerektigi gibi calisti ve dosyanin gid’si degismedi. Sorun denedigim makine uzerindeki 2.6.18 cekirdeginde veya makine uzerindeki CentOS’de (ya da Red Hat tabanli diger sistemlerde de olabilir.
Bilgisayar dunyasi icin “tarihi eser” niteligi tasiyacak kitaplar okumayi cok seviyorum. Cunku hem onceki teknolojileri, hem gunumuz teknolojisine ve fikirlere nasil ulasildigini anlamayi sagliyorlar. Bircogunun icerigi guncelligini yitirmis gibi gorunse de bugunku teknolojilerin temellerini olusturan bilgiler iceriyorlar.
Bazilari da guncelligini hic yitirmiyor. Ornegin “The UNIX Programming Environment”. Brian Kernighan ve Rob Pike tarafindan yazilmis ve UNIX isletim sistemi altinda programlamayi anlatan bu kitaptaki cogu bilgi hala gecerliligini korumakta.
Bu tarz eski kitaplari okumak ayni zamanda gunumuz kitaplarinda yuzeysel olarak anlatilmis veya hic anlatilmadan sanki her seyin basindan itibaren oradaymis gibi gosterilmis bazi kavramlarin anlam kazanmasini saglayabiliyor. Cok basit bir ornek: EOF, NULL, TRUE, FALSE vs. gibi kavramlar, guncel C kitaplarini okuyan birisi icin en basindan beri sanki oyle bir veri turu varmiscasina algilanabilir. Ancak eski bir C veya UNIX ile ilgili programlama kitabindaki kod orneklerine bakildiginda, bunlarin aslinda define ile tanimlanmis ve degerlerinin 0 ve 1 gibi integer degerler olduklari gorulecektir. Guncel C kitaplarinda dosya olustururken stdio.h (bu baslik dosyasi guncel kitaplar sayesinde okuyucular tarafindan sanki besmeleymis gibi algilanir) dosyasi include edilip (“include etmek”! kendimden nefret ettim bir anda) fopen() fonksiyonu cagrilirken, The UNIX Programming Environment’taki kod orneklerinde UNIX’teki standart dosya olusturma cagrisi olan creat() fonksiyonunun kullanildigi gorulur. Bu da okuyucunun aslinda fopen() fonksiyonunun creat() gibi sistem cagrilarini kullandigini, aslinda stdio.h’in C’de “besmele” olmadigini anlamasini saglar.
Tabi bu tarz eski kitaplari edinmeye ABD’ye geldikten sonra baslayabildim. Cunku Turkiye’de bu tur kitaplari bulmak oldukca zor iken, Ebay’de son derece mumkun. Hatta bazi kitaplari bulduguma oldukca sasiriyorum. Ornegin en son aldigim “Programming Under Mach” adli kitap. Mach cekirdegi ile programlamayi anlatiyor ve artik Mach cekirdegi (en azindan orijinali) aktif olarak gelistirilmiyor olmasina ragmen bu kitabin hala oralarda dolasmasi oldukca sasirtici. Bulduguma sasirdigim bir baska kitap da bizzat Gordon Letwin tarafindan yazilmis “Inside OS/2″ adli kitapti.
Bunlarin disinda, “Design and Implementation of 4.3BSD UNIX Operating System” ve “Dragon Book” adiyla anilan “Compilers – Principles, Techniques and Tools” buldugum diger cok degerli ve eski kitaplar.
Peki bunlarin hepsini aldigim gibi okuyor muyum? Hayir. Sadece her zaman kitaplari bulmak mumkun olmayabilir dusuncesiyle buldugum zaman aliyorum. Firsat buldukca da yavas yavas tadini cikararak okuyorum.