Welcome to my blog! See the archive page for all posts, and subscribe to the feed.

GitHub Badge başlangıçta kullanıcıların GitHub profilleri ile ilgili birkaç istatistiki bilginin gösterileceği ve geliştiricilerin özgeçmişlerine veya bloglarına koyabilecekleri basit bir bilgi alanından ibaretti. Aslında hala öyle ancak "birkaç istatistiki bilgi" kısmını biraz genişlettik.

İlk sürümü yayınlandıktan sonra,

gibi nedenlerle mevcut yapı App Engine'in ücretsiz kullanım limitlerini zorlamaya başladı.

Ölçeklenebilirlik

Memcache

İlk yaptığımız şey üretilen HTML sayfasının belirsiz süreyle Memcache üzerinde önbelleğe alınmasıydı ki bu oldukça etkili bir çözüm oldu. Her ne kadar sunduğumuz bilgiler her zaman en güncel bilgiler olmasa da iletilen bir şikayet olmadı. Kaldı ki çoğu durumda GitHub'ın agresif önbellekleme stratejisinden dolayı GitHub arayüzünden daha güncel veriler sunmamız rastlanmayan bir durum değil(eğer bir projeyi veya kullanıcı takip etmediyseniz ya da bir gönderi yapmadıysanız profilinize ait bilgiler GitHub Badge'e göre daha eski olabilir). Ancak gönderi yoğunluğunu gösteren sparkline özelliği yayına girdiğinde her öğenin yaşam süresini 24 saatle kısıtlamamız gerektiğine karar verdik.

Bu durumun üzerine "bizi destekleyin" ve "Google Analytics'i kapat" gibi HTML çıktısını değiştiren özelliklerin eklenmesiyle sadece üretilen HTML sayfasının önbelleğe alınması yetmemeye başladı. Bu durumu çözmek için hesaplanan kullanıcı bilgilerinin bulunduğu sözlük nesnesini de JSON biçiminde önbellekte saklamaya başladık.

Google App Engine, Memcache kullanımını ücretlendirmediği için alabildiğimiz tüm bilgileri Memcache ile önbelleğe aldık ya da önbelleğe aldığımız veri miktarını arttırmaya çalıştık. Bu durum, artan günlük ziyaretçi sayımıza ve kullanıcılarımıza rağmen hala ücretsiz kullanım sınırları içerisinde kalabilmemizin iki temel sebebinden bir tanesi.

Ön yüz

Ön yüzde neredeyse ilk sürümden beri HTML ve CSS sıkıştırma kullanıyoruz, Google App Engine de gzip kısmını kendisi hallediyor. Buna ek olarak tüm sayfanın yarım günlüğüne tarayıcı önbelleğine alınması ve kişilerin GitHub'da görünen resimlerinin de sunucu tarafında yeniden boyutlandırılıp sayfaya gömülmesi gibi optimizasyonlar ile bant genişliğimizi oldukça etkin kullanmayı başardık.

API kullanımı ve Pyresto

GitHub Badge'in ilk sürümünde, GitHub API'ı ilgili işleri yapmak, takipçi sayısı gibi bilgileri hesaplamak için bir nesne ve buna bağlı birkaç yöntem yeterliydi. Gönderi grafiği, kişinin kendisi dışındaki toplam proje takipçi sayısı gibi veri işleme gerektiren, daha ayrıntılı bilgileri göstermek istediğimizdeyse bu basit sınıfın işimizi görmeyeceğini anlayıp farklı çözümler aramaya karar verdik. Yaptığımız küçük araştırmada GitHub için halihazırda yazılmış olan Python istemcilerinin ya eski ya da istediğimiz gibi olmadığını gördük ve "hepsine hükmedecek tek bir yüzük olmalı" diyerek "adam gibi yazılmış" REST tabanlı her türlü uygulama arayüzü ile çalışacak bir ORM projesi yazmaya karar verdik. İlk kurbanımız elbette ki GitHub olacaktı.

Bu noktada GitHub'ın sunduğu uygulama geliştirme arayüzünün üçüncü sürümünün gerçekten mükemmele çok yakın olduğunu, mükemmel olmayan kısımlarında da GitHub ekibinin yaptığımız hata bildirimleri ve özellik isteklerine olumlu ve hızlı yanıt verdiğini belirtmekte fayda var ki bu da geliştirme sürecinde işimizi oldukça kolaylaştırdı. Pyresto'nun asıl yaptığı şey veri ile uğraşmak isteyen programcıyı arkaplanda dönen karmaşık işlemlere bulaştırmamak, basitçe onun önünden çekilmek ve veriyle rahatça uğraşmasına izin vermek, bunu yaparken de farklı platformların geliştirme arayüzü tanımlamalarını olabildiğince basite indirgemek. Örneğin şu an kullanmakta olduğumuz GitHub modülü sadece 70 satırlık bir dosyadan ibaret. Bu kod elbette tam değil ve herşeyi kapsamıyor ancak yaptığımız ve sıradan olmaktan uzak GitHub uygulaması için fazlasıyla yeterli. İşin güzel yanı bu 70 satırın çoğu aslında veri modelini tanımlıyor, yani gerçek kod değil.

Sözün özü GitHub Badge projesinin kalbinde aslında Pyresto yatıyor ve bir sonraki hedefimiz bu kütüphaneyi hem belgelemesi hem de testleri ile herkesin rahatça kullanabileceği bir hale getirip yaygınlaşmasını sağlamak. Şu anki hali de PyPI üzerinden indirilebilir durumda.

Arayüz

Eklenen yeni özelliklerle beraber, bu özelliklerin son kullanıcıya nasıl sunulacağı da önemli bir soru haline geldi. Bu nedenle arayüz toplamda üç kez değişti. Bu süreç, ürünün özelliklerini kısıtlı bir alanda, kullanıcının kafasını karıştırmadan, mümkün olan en sade ve güzel tasarımla, olabilecek en fazla bilgiyi sunmaya çalışmak gibi hedefler nedeniyle epey öğretici ancak bize göre sunum konusunda hala olması gerekenden uzakta olan bir tasarım deneyimi oldu. Yani bu konuda tavsiyelere açığız.

Açık kaynak topluluğu ile iletişim

GitHub Badge öncesinde başta Mozilla ve Python olmak üzere açık kaynak projelere katkıda bulunuyorduk ancak jGrow haricinde sıfırdan yazdığımız ve topluluktan geribildirim aldığımız bir proje geliştirmemiştik. GitHub Badge ilk katkılarını yayına girdikten birkaç saat sonra aldı. Test sürecinde farketmediğimiz hataları da yine bu sayede düzelttik.

Bir açık kaynak projeye katkıda bulunmanın tek yolu kod yazmak değil. Başlangıçta çok basit olarak düşündüğümüz proje, Emre Sevinç'in katkılarıyla çok daha fazla bilgi sunar hale geldi. Her ne kadar yeni sürümlerde eklediğimiz JSONP ve CORS tabanlı API'lar için beklediğimiz geri bildirimi alamamış olsak da sağlıklı bir açık kaynak proje nasıl olur ve nasıl gelişir konularında bir miktar tecrübe kazandık.

Yeni bilgisayar, Firefox Metro, FM 2012

Posted 2 weeks, 2 days ago

Üzerinden birkaç ay geçti ama yine de not düşmek gerek. 2008'de aldığım ve pişman olduğum Asus laptop'ımın parçalarının teker teker elimde kalmaya başlamasıyla uzun zamandır ertelediğim yeni bilgisayar alma/toplama işlemini daha da hızlandırdım.

BYK'nın süper önerileriyle aşağıdaki sistemi topladım:

  • THERMALTAKE CONTAC21 LGA775/1155/1156/1366 & AM2/AM2+/AM3/AM3+/FM1 İŞLEMCİ SOĞUTUCU 1
  • OCZ 120GB Agility 3 Serisi Sata 3.0 SSD (525MB Okuma/ 500MB Yazma)
  • AMD A8 X4 3870K Soket FM1 3.0GHz 4MB Cache 32nm İşlemci
  • ASUS F1A75-V AMD A75 Soket FM1 DDR3 2250MHz (O.C.) DVI&HDMI Anakart
  • GSKILL 8GB(2x4GB) RipjawsX DDR3 1866MHz CL9 1.5V Dual Kit Ram x 2

Gelelim yeni bilgisayarım ile ilgili ilk izlenimlerime.

Windows 7 üzerinde pymake ile Firefox'u sıfırdan derlemek 30 dakikanın altında sürüyor. Daha önce Ubuntu'da aynı işlem yaklaşık 4 saati buluyordu. İkinci SSD'ye kuracağım Ubuntu ile bu değerleri diğer geliştiricilerin Windows ve GNU/Linux build süreleri ile karşılaştırdığımda yarı yarıya düşeceğini de hesap edince aradaki farkın büyüklüğünü ve geliştirme sürecini ne kadar kısalttığını daha iyi anlaşılacaktır. Tabii bu değerler incremental build yapabildiğim sürece pek önemli değil ama bazen debug veya release build almak zorunda kalabiliyorsunuz ve bu eğer iyi bir donanımınız yoksa saatler demek.

Bir oyun ve özellikle Football Manager hastası olarak yeni bir bilgisayar alma sebeplerimden birisi de dizüstümdeki Ubuntu'da FM 2012'yi çalıştıramamamdı. Bu vesileyle 6 yıl sonra yeni bir Windows lisansı satın aldım ve şimdilik Windows 7'den gayet memnunum.

Gelelim bir diğer sebebime: Firefox Metro. Microsoft, Windows 8 ile tabletleri de destekleyecek bildiğiniz gibi. Böyle bir platformda Firefox'un kaliteli bir tarayıcı ile yer alması epey kritik ve henüz geliştirme aşamasının çok başında olduğu için bir geliştiricinin yapabileceklerinin etkisi diğer pek çok Mozilla projesine göre çok daha fazla. Henüz sadece sanal makinada Windows 8 kurup, geliştirme ortamını hazırladım ve Fennec'i derledim(teşekkürler 16GB ram!).

Türkiye'de Bilgisayarın 50 Yılı

Posted 3 weeks, 4 days ago

Çocukluğum bilgisayar ve internetin aynı cümle içinde kullanılmaya başlandığı 90'lı yıllara denk geldiğinden benim için bilgisayarın Türkiye'ye geliş tarihi hep 90'ların başı olarak kalmıştır. BYK'dan National Geographic Türkiye'nin Mart sayısında Türkiye'de Bilgisayarın 50 Yılı başlıklı bir yazı olduğunu öğrendiğimde merak edip aldım. Türkiye'de yaşayan insanların düşüncelerinin geride kalan 50 yılda aslında hiç değişmediğini ve Türkiye'deki internet ile tanışıp bu sayede para kazanan ilk nesillerden biri olarak nereden nereye geldiğimizi görmeme yardımcı olduğu için Akdoğan Özkan'a teşekkürler.

Karayolları Genel Müdürlüğü ABD'den elektronik beyin almış. Bu beyin bilmem kaç memurun, bilmem kaç ayda yaptığını, birkaç dakikada yapıyormuş... Yanlız insanın içine bir şüphe düşüyor; biz Allah'ın verdiği beyni kullanamazken ABD'nin verdiğini nasıl kullanacağız bakalım. – Çetin Altan, 5 Şubat 1961

Türkiye'nin ilk bilgisayarı olan IBM 650 Model I, 1960 yılının Eylül ayında ülkemize gelmiş ve o zamanki adıyla Karayolları Umum Müdürlüğü'ne kurulmuş. Hatta sadece Türkiye'nin değil Balkanlar ve Ortadoğu'nun da ilk bilgisayarıymış. Bilgisayarın satın alınmasının sebebi ise, o zamanlar insan gücüyle 3 ay süren yol hesaplamalarını hızlandırmakmış ve bilgisayar ilk kez 63 km uzunluğundaki Polatlı-Sivrihisar yolunun yapımında kullanılmış. IBM 650 ile bu hesaplamaların süresi 1 saate kadar düşmüş.

Tabii işleri bir anda bu kadar hızlandırıp, zaman kazandıran bir makine ortaya çıkınca insanlar homurdanmaya başlamış:

Hangi işe el attıysak bir direniş oldu. Yol mühendisliği hesaplarında olsun, birtakım istatistiksel çalışmalarda olsun, muhasebe işlerinde olsun hep bir tedirginlik yaşandı. İnsanlar işlerinin ellerinden gideceği endişesine kapılmışlardı. Ya işlerine son verileceğini ya da tayin edileceklerini zannettiler.

Bana en ilginç, komik ama bir o kadar da üzücü gelen anı ise, Karayolları Umum Müdürlüğünün o zamanki bilgisayarcılarından Kaya Kılan'a ait:

1962 yılında bir gün Karayolları'na elektronik beyni görmek üzere 80 yaşlarında bir adam geldi. "Evladım buraya ABD'den bir beyin gelmiş, merak ettim, görmeye geldim" dedi. Adamı aldık, 650'nin yanına götürüp sistemin özelliklerini izah ettik. Fakat bu bilgilere ve gördüklerine itibar etmeyip, "tamam ben şimdi beyni göreyim" diye ısrar ediyor. Baktım ısrarı geçecek gibi değil, teknisyenlere rica edip sistemin içinde devre yapısını temsil eden, lambalardan oluşan işlem biriminin kapağını açtırdım. Ve "işte işlemlerin yapıldığı beyin burası" dedim. Bir bana, bir de merkezi işlem birimine baktı ve, "bu beyin filan değil, beni kandırıyorsunuz" dedi. Sabırlı davrandım: "Amca bakın işlemlerin yapıldığı beyin kısmını sordunuz, işte burası orası" dedim. İkna olmaya niyetli olmayan adam sonunda verdi bize hükmünü: "Tabii Amerikalılar izin vermiyor beyni göstermenize, di mi?" Arkasını, ön kapağını açtıysak da, "demek göstermemeye kararlısınız" diyen yaşlı adam beyni gördüğüne ikna olamadan ayrıldı binadan.

Bu arada, Akdoğan Özkan'ın Anı ve Fotoğraflarla Bilişim Tarihimiz adlı kitabının genişletilmiş baskısı bu yıl içerisinde yayımlanacakmış.

Print

About me

Me!

I'm a passionate, open source lover software developer from Istanbul, Turkey with extensive PHP experience who also has a crush on Python and JavaScript.

You can contact me by emailing berker.peksag@gmail.com.

Follow me on Twitter and fork me on GitHub!