İlerleme Süreklilik İster 2

Daha önceki bir yazımda Google’ın gözlük projesinden sonra giyilebilir bilgisayarların gelişiminde öncü role sahip Steve Mann’ın hikayesinden bahsetmiş ve Google’ın gözlük projesini bugün konuşuyor isek biraz da bunu 70’lerin sonlarından bu yana çalışmalarını ısrarla ve kesintisiz biçimde sürdüren Steve Mann ve benzerlerine borçlu olduğumuzu anlatmaya çalışmıştım.

Geçenlerde bütün dünyanın hayranlık ve bir o kadar da ürperti ile seyrettiği Nik Wallenda’nın Grand Canyon’da bir uçtan diğer uca gerilmiş ip üzerinde emniyet kemeri olmadan yürüyüşünden sonra aklıma yine bu konu takıldı.

İmkansızın peşinden ısrarla koşmanın sonucu Nik Wallenda’nın “büyük yürüyüşü” olmuştu. Ancak bu büyük yürüyüşün başlangıcı neredeyse 18. yüzyıla kadar uzanıyor. Wallenda ailesi 7 nesildir ip üstünde cambazlıkla uğraşıyor. Yürüyüşlerinde zaferlerin yanında trajediler de yok değil. Ancak bunlar hiçbir zaman Wallenda’ların yürüyüşünü kesintiye uğratmamış ve muhtemelen de bu yürüyüş daha nesiller boyu devam edecek gibi görünüyor.

Dede Wallenda’nın 1973’deki Ölümcül Düşüşü

Torun Wallenda’nın 2013’deki Grand Canyon’daki Zaferi

Bizim kesintisiz yürüyüşlerimiz mi? Bizdeki durum ancak Cem Yılmaz’ın AROG’undan bir replik ile anlatılabilir: “Bir haftada ortaçağ, 15 günde yeniçağ, yemin ediyorum 1 aya kadar Fransız devrimine kadar götürürüz biz bu işi.”

İlerleme Süreklilik İster

Steve Mann’ı ve çalışmalarını İnternet üzerinden 94’den bu yana aralıklarla takip ediyorum. Kendisi 70’lerin sonlarından bu yana “giyilebilir bilgisayar” sistemleri üzerinde çalışıyor. Çalışmaları en son Google’ın “gözlük” projesini duyunca tekrar aklıma geldi. Acaba Steve Mann’da bu projede yer alıyor mu veya bu proje hakkında ne düşünüyor diye merak ediyordum. Kısa bir zaman sonra takip ettiğim twitlerden birisinde aşağıdaki yazı belirdi. Steve, yazıda 35 yılı bulan, kendi tabiri ile “mediated reality” yani “aracılı gerçeklik” tecrübelerinden ve Google’ın “gözlük” projesi hakkındaki fikirlerinden bahsediyor.

Steve Mann’ın 70’lerin sonlarındaki ilk çalışmalarına baktığımızda kafasında büyükçe, antenli ve garip bir kask görüyoruz. Steve bu çalışmalarını ilk dönemlerden itibaren günlük hayatta da tecrübe ediyormuş. Muhtemelen kendisi ile dalga geçen, alaya alan, çabalarının beyhude ve zaman kaybı olduğunu düşünen, bu külfete katlanmayı anlamlı bulmayan pek çok kişi olmuştur. Ancak bu çalışmaların kesintiye uğramadan 35 yılın sonunda geldiği noktaya ve sunduğu kabiliyetlere baktığımızda net bir ilerleme görüyoruz. Eğer Steve Mann bu süreci ısrarla sürdürmeseydi, kesinlikle günümüzde erişilen noktada olunamayacaktı.

Bütün bunları düşünürken aklıma bizim yazılım sektöründeki durumumuz geldi. Acaba özel veya kamu kuruluşlarımızın çalışmaları ne kadar süreklilik arz ediyor? İlk aşamada başarısız, verimsiz gibi duran çalışmaların içerisindeki işe yarar kısımlar ne ölçüde tespit edilip, revize edilerek, ne işe yarıyor, neresi problem yaratıyor bakılarak ortaya çıkan yapılar şirketin deneyim havuzuna aktarılıyor? Önceki projelerden elde edilen bilgi birikimi ve deneyim hangi oranda kesintisiz biçimde daha sonraki projelerde kullanılıyor, iyileştirilip bir ileri adıma taşınabiliyor? Teknolojide, araçlarda ve yazılım süreçlerinde ne gibi bir süreklilik var? Yoksa günü kurtaran çözümlerle ağustos böceği gibi yaşamaya devam mı ediliyor? Gazetelerden birisinin sloganıydı “her sabah dünya yeniden kurulur, her sabah taze bir başlangıçtır”, yoksa bizde bu sloganla mı hareket ediyoruz?

Sözün özü, herhangi bir konuda ilerleme ve tatmin edici bir sonuç istiyorsak kısa vadeli çözümlerin kurumsal vizyonu sekteye uğratmasının önüne geçmeliyiz. Esen rüzgarda bir oraya bir buraya savrulan yaprak olmaktan kurtulmalıyız.

Java Dergisi Yazıları

2010 yılında bir girişimle Özcan Acar tarafından hayata geçirilen Java Dergisi malesef kısa bir süre sonra yayın hayatına veda etmişti. O dönemde bende dergiye yazılarımla katkıda bulunuyordum. Derginin ilk iki sayısında yayımlanan ve 3. sayısı için hazırladığım fakat yayımlanma imkanı bulamayan yazılarımı buradan sizlerle tekrardan paylaşmak istedim.

If Your Eclipse Hangs…

Recently, my STS installation started to freeze during “initializing java/spring tooling” step. As a first attempt, I suspended all validations from window>preferences>validation, however it didn’t help much. Whenever you experience a hang or freeze in your Eclipse installation, it is always a good habit to look inside of .metadata/.log file in Eclipse workspace folder. Most of the time, causes for such hangs or freezes appear to be network problems. I was right, this time it was no exception, either. I noticed “Connection timeout” messages in the log file. In order to discover the URL address which causes connection timeout, I switched off wireless connection of my laptop and restarted STS. This time messages turned into “unknown host exception” indicating java.sun.com. I thought I am on the right track. I guessed somehow there was a connectivity problem with java.sun.com. The last step was to add a line in my /etc/hosts file so that java.sun.com request will resolve into my machine instead of going through Internet. After adding that line, and restarting STS again, error messages turned into FileNotFoundExceptions pointing URI http://java.sun.com/dtd/web-app_2_3.dtd. Exception stacktrace was self explanatory, the problem was related with Spring tooling auto config detection.

!MESSAGE java.io.FileNotFoundException: http://java.sun.com/dtd/web-app_2_3.dtd
!STACK 0
java.lang.RuntimeException: java.io.FileNotFoundException: http://java.sun.com/dtd/web-app_2_3.dtd
at org.springframework.ide.eclipse.core.SpringCoreUtils.parseDocument(SpringCoreUtils.java:650)
at org.springframework.ide.eclipse.core.SpringCoreUtils.parseDocument(SpringCoreUtils.java:627)
at com.springsource.sts.ide.metadata.locate.DynamicWebProjectBeansConfigLocator.canLocateInProject(DynamicWebProjectBeansConfigLocator.java:239)
at org.springframework.ide.eclipse.beans.core.model.locate.AbstractPathMatchingBeansConfigLocator.locateBeansConfigs(AbstractPathMatchingBeansConfigLocator.java:67)

 

Ubuntu Kurulumları Hep Böyle Problemli mi Olacak?

Birkaç senedir dizüstü bilgisayarlarımda ubuntu linux işletim sistemini kullanıyorum. Ubuntu’ya geçiş kararım bir akşam üstü dizüstü bilgisayarımı kapatmaya çalıştığımda Windows XP’nin dakikalar boyunca uğraşması sonucu aniden oluvermişti. O gün bu bugündür de bu işletim sistemini severek kullanıyorum.

İşletim sisteminin performansına ve kurulduktan sonraki istikrarlı çalışmasına hiç bir diyeceğim yok. Ancak ne zaman ki bilgisayarımdaki sürümü yükseltmeye kalksam veya sıfırdan bir kurulum yapmak istesem bu işlemlerin ilk seferde düzgün biçimde gerçekleştiğine pek şahit olmadım. 9.10 sürümünü CD’den bir bilgisayarıma kurmak için defalarca uğraştığımı hatırlıyorum. Bir türlü internal CD ile kurulum yapamamıştım. En sonunda diski çıkarıp başka bir makinada kurulum yaptıktan diski tekrar eski makinaya takmıştım. 9.10’dan 10.10’a upgrade süreci de istediğim gibi gerçekleşmemişti. Sıfırdan kurulum yapmadan, önce 10.04 ardından da 10.10’a yükseltmeye çalışmıştım. Ama ya iso imajlarında checksum problemleri, ya da kurulumdan sonra işletim sisteminin düzgün biçimde açılmaması gibi problemlerden ötürü bir türlü 10.10’a geçiş yapamamıştım.

Geçenlerde yeni bir dizüstü bilgisayar aldım. Sistem i7, 8 GB’da RAM’e sahip olunca 10.10’u sıfırdan kurmak ve 64 bit ubuntu’yu denemek istedim. Artık USB’den boot özelliği de iyice yaygınlaştığı için 10.10 64 bit imajını internetten indirip USB startup disk’i oluşturuverdim. Ardından da kuruluma başladım. Herşey gayet normal seyrederken birden yine bir hata penceresi karşıma çıkıverdi. apt installer bazı paketlerin kurulumuna devam edemiyordu, bir bug request’i gönderebilir, logları inceleyebilirdim. Sistemi reboot ettim, işletim sistemi bulunamıyordu, demek oluyordu ki grub loader’ın kopyalanması aşamasına da gelinmemişti. Logları incelemeden evvel hemen her bilgisayarcının yaptığı gibi kurulumu aynen bir kere daha başlattım. Önceki kurulumda seçenekler arasında olup seçtiğim flash player gibi 3rd party araçların kurulması seçeneğini bu sefer boş bırakmayı denedim. Evvet! bu sefer şansım yaver gitti ve kurulum başarılı biçimde sonlandı. Artık 10.10 ve 64 bit bir ubuntu ile çalışıyorum. Bakalım 64 bit ubuntu ne kadar fark yaratacak…

Matematik Nedir?

Elime bir “discrete” matematik kitabı geçti. Discrete matematiğe üniversiteden bu yana hep ilgi duymuşumdur. Ancak matematiğin bu kolunu anlatmaya çalışan kitaplardan yana da bu güne kadar pek tatmin olmamışımdır. Sanırım Norman L. Biggs’in Discrete Mathematics kitabı bunu tersine çevirecek gibi. Kitabın giriş sayfasındaki şu ifadeleri yıllar önce bilinçli biçimde matamatik öğrenmeye başladığımız zamanlarda duymuş olsaydık sanırım pek çoğumuzun matematik algısı çok daha farklı olurdu.

Mahtematicians deal with statements.
Usually the statements are about numbers.
The statements may be true or false.
To decide whether a statement is true or false requires a proof.

Peki Apple Kimden Çalmış?

Sene 95, o yaz Bill Gates’in büyük bir gürültü ile Windows 95’i tüm dünyaya tanıttığını daha dün gibi hatırlıyorum. Windows 95, 3.1 ile kıyaslandığında kesinlikle bir ilerlemeydi, ancak Windows 95 ile tanıştığımız pek çok yeniliğin aslında Apple ve Machintosh’da çok daha önce hayata geçirildiğini öğrendiğimizde bu hayranlık daha çok kandırılma duygusuna dönüşüvermişti. Arkadaşlar arasındaki konuşmalarımızda da sık sık, aslında Bill Gates’in Windows 95’i Apple’dan aşırdığı söylenirdi. Çoğumuza göre asıl innovasyon sahibi Apple’dı. Daha sonraları GUI, desktop işletim sistemleri, word, excel gibi office çözümlerinin, mouse gibi donanımların, daha evvelinde Xerox tarafından geliştirildiğini öğrendik. Geçenlerde okuduğum bir kitapta Steve Jobs’un Xerox lablarında bazı sunumlara katıldığı, bu sunumlarda gördüklerinden çok etkilendiği, ardından Xerox’dan bazı mühendisleri transfer ederek NextStep işletim sistemini geliştirmeye çalıştığından bahsediliyordu. NextStep aslında Steve Jobs’un Apple’dan kovulduğu bir dönemde kurduğu şirket tarafından geliştirilen ve daha sonra Apple’a satılarak, Steve Jobs’un da Apple’a geri dönmesini sağlayan, Machintosh işletim sisteminin temellerini oluşturan bir işletim sistemi. Yani aslında bir şekilde Machintosh’un da köklerinin aslında başka yerlerde olduğunu görüyoruz. Bu konuları biraz da youtube’daki eski videolardan öğrenmeye çalıştığımda karşıma Xerox’un 1981 yılında ürettiği Star Workstation’ını tanıttığı bu demo çıktı. Yukarıda bahsettiğim pek çok konsepti gerçek ofis ortamında iş yapış şekilleri üzerinden güzel bir analoji ile anlatan bu demoyu severek izledim. Windows, Apple ve NextStep’den çok daha önce GUI, desktop, office uygulamaları gibi çözümlerin bize sunulduğunu görmek ilginç. Tabi burada aklıma da şu soru gelmiyor değil, peki Xerox Star Workstation’ın kökleri nerede?

İnce Müşteri

Son dönemde okuduğum kitaplardan birisi de Yakamoz Yayınları’ndan çıkan Steve Jobs’un hayat hikayesini anlatan bir kitap. Genel olarak çok hoşuma giden ve çeviri dilini de gayet iyi bulduğum bir eser olmasına rağmen, kitabın sonlarına doğru karşıma çıkan bir ifade teknik terimlerde yaygın biçimde kullanılan ve oldukça komik sonuçlar üreten “birebir sözlük çevirisi” yaklaşımına gayet güzel bir örnek teşkil ediyor.

Kitaptan aynen alıntı: “…Bir süre sonra, insanların yapmak istedikleri şeylerin çoğunu yapmak için gereken tek şey, bir “ince müşteri” haline gelmişti. Basit, İnternet’e bağlanabilen, bir Net gezgini ve Web’den malzeme indirmek için büyük kapasiteli sabit diske sahip bir bilgisayar.”

İkinci cümleden buradaki “incre müşteri”den kastın “thin client” olduğunu anlayabiliyoruz. Zamanında bir kitapçıda bilişim sözlüklerini incelerken rastgele bir sayfayı açtığımda karşıma “mainframe” için “ana pencere” karşılığını görünce çok gülmüştüm. “İnce müşteri” kelimesi de beni bir an 90-60-90 bir güzelin kollarına atıverse de, bir sonraki cümle tekrar kendime gelmeme yardımcı oldu…

Neden JSF Değil?

Son zamanlarda bana neden JSF’i terk ettiğimi sıkça soruyorlar. Aslında terk ettiğim sadece JSF değil, kurumsal web uygulamalarında doğrudan XML ve Javascript ile UI geliştirmeyi zorlayan her türlü UI teknolojisi. Kurumsal web uygulamalarını isteyen müşterilerimiz desktop da ne yapıyorlarsa aynısını web üzerinde de yapmak isterken, yazılım geliştiriler ise UI programlamayı XML türevi taglibler ve Javascript üzerinden değil doğrudan Java ile geliştirmeyi tercih ediyorlar. Vaadin UI Framework’ün 10. yılını kutladığı bu mesajı okurken Vaadin geliştiricileri ile benzer deneyimleri ve gözlemleri yaptığımızı fark ettim. Web’in “assembly dili” javascript ve taglib’ler ile UI geliştirmek yerine doğrudan Java kullanmak sizce de güzel değil mi?

Peki Bizim Kullanıcı Arayüzlerimiz Nasıl?

Resim şimdilerde Fransa’daki kazadan sonra uçuşları durdurulmuş Concorde’ların cockpit’inden bir görüntü. Sizin de bazen geliştirdiğiniz uygulamaların kullanıcı arayüzlerinin de bu cockpit kadar karmaşık olduğunu düşündüğünüz oluyor mu? Uygulama geliştirme süreci boyunca sürekli olarak aynı arayüzü kullanmaktan ötürü ortaya çıkan aşinalık, kullanıcı arayüzünün basit olduğu izlenimini verebiliyor. Ancak daha önce bu uygulama arayüzü ile hiç karşılaşmamış bir kullanıcı acaba el yordamı ile istediği fonksiyonaliyeti çalıştırmayı başarabiliyor mu? Ya da sisteminiz “aptal kullanıcı testinden” kazasız belasız geçebiliyor mu?