Cam Fanusta Yazılım Olmaz

2000 yılında bir arkadaşım, kasabalarındaki kömürcünün bir yazılım yaptırmak istediğini söylemişti. Kömürcü, komşusu bakkalı kıskanmıştı. Bakkal, borcuna itiraz eden bir müşteri olduğunda “Ben söylemiyorum, bak bilgisayara” diyerek bilgisayarında çalışan yazılımı gösteriyor, bilgisayarın hikmetinden sual olunamayacağından müşteri uysalca borcunu ödüyordu. Kömürcü de daha sorunsuz müşteri ilişkileri yönetimi için komşusu gibi veresiye defterini atmak ve yerine bilgisayar koymak istiyordu.

Bakkalın müşterileri, yazılımı geliştirenin ve onu kullananın insan olduğunu unutarak bilgisayarın hiçbir zaman yanılmayacağını ve hile yapmayacağını düşünüyorlardı. Kömürcü ise yaptıracağı yazılımla bakkalla müşterileri arasındaki ilişkiyi kendi işine taşıyabileceğini hesaplıyordu. Hikayenin sonrasını bilmiyorum. Ama 2000’li yıllarda benzer beklentiler içinde CRM (Customer Relationship Management – Müşteri İlişkileri Yönetimi) veya ERP (Enterprise Resource Planning – Kurumsal Kaynak Planlaması) yazılımlarını satın alan birçok kuruluş hayal kırıklığına uğradı. Bu hayal kırıklıkları çoğunlukla teknolojinin nötr bir araç olarak değerlendirilmesinden kaynaklanıyordu. Başka bir kuruluşta kullanılan ve başarılı olan bir yazılımın kendi kuruluşlarında da harikalar yaratmasını bekliyorlardı. Bazı yerlerde başarılı olan bir yazılım neden diğerlerinde başarılı olamıyordu?

Law’ın (2006) teknoloji transferi hakkında yazdıkları geçmişte yaşanan başarısızlıklara dair önemli ipuçları vermektedir. Law (2006) teknoloji transferi diye bir şey olmadığını savunmaktadır. Teknoloji bir yerde ortaya çıktıktan sonra diğer yerlere yayılmaz. Teknoloji elden ele geçer ve her el değiştirmede değişir. Law’ın (2006) Madeleine Akrich’ten aktardığı hikayede İsveç’teki bir makinenin Nikaragua’da nasıl dönüşüp geliştiği anlatılmaktadır.

İsveç’te kullanılan makine ağaç atıklarını (ağaç kabuğu, ağaç parçaları, talaş vb) sıkıştırıp kömüre dönüştürmekte ve bu kömürü endüstride kullanmaktadır. İsveç hem ağaç atıkları yönünden zengindir hem de endüstride kömüre gereksinim vardır. İsveçliler, yakıt sıkıntısı çeken Nikaragua ile yakın ilişki içindedir. Acaba aynı makine, Nikaragua’nın tropikal ormanlarından elde edilen atıklarla kullanılabilecek midir? Makine İsveç’ten Nikaragua’ya götürülür. Ama makinenin Nikaragua’ya getirilmesinden sonra çeşitli sorunlar ortaya çıkar ve Nikaragualılar karşılaştıkları sorunları çözerken İsveç’ten getirdikleri teknolojiyi yeniden şekillendirirler.

İlk sorun, Nikaragualılar’ın yaşadığı toprakların tropikal ormanlardan uzakta ve bu ormanların da kontraların elinde olmasıdır. Ağaç atıkları yerine pirinç ve pamuk artıklarının kullanımı gündeme gelir. Yapılan testlerde pirinç artıklarının kömür yapımı için uygun olmadığı ortaya çıksa da pamuk atıkları hem uygun bir maddedir hem de boldur. Pamuk kullanımının tercih edilmesiyle ikinci bir sorun baş gösterir. Çiftlik sahipleri pamuk artıklarını ortadan kaldırmak zorundadır. Çünkü yasa gereği zararlı böceklere karşı atıkların gömülmesi ya da yakılması gerekmektedir. Bu nedenle pamuk anızının önceden ayrıştırılması gerekecektir. Üçüncüsü, bu iş için yeterli tarım işçisi yoktur. İşgücü açığı Sudan’dan getirilen bir makineyle aşılmaya çalışılır. Makine gayet güzel çalışmasına karşın makineden çıkan döküntüleri toplamak için yine işgücüne ihtiyaç vardır. Dördüncüsü, pamuk bitkilerinin yarısının toprak altında olmasıdır. Köklerin sıkıştırılması daha önce İsveç’te denenmemiştir. Nikaragua’da denenir ve toprak altındaki atıkların toplanması için Sudan’dan yeni bir makine getirilir. Beşincisi, İsveç’te hızarlar sürekli çalışmakta ve kömür yapımı için yıl boyunca hammadde akışı olmaktadır. Pamuk ise yılın 90 günü toplanmakta, geriye kalan zamanda yeni pamuk yetişmektedir. Bu nedenle kömür makinesinin, hammaddenin toplandığı ve stoklandığı yere yakın olması gerekmektedir. Altıncısı, iki yıl sonunda amphiserus cornutu adlı zararlı böceğin neden olduğu beklenmedik sorundur: depolanan atık rendelendiğinde toza dönüşmektedir ve tozdan kömür yapmak olanaksızdır. Atıkların kısmi sıkıştırılması amphiserus cornutunun yaşayabilmesine olanak vermiştir. Makinenin daha farklı çalışması gerekecektir. Yedincisi, daha ciddi bir sorundur. Üretilen kömürü kim satın alacaktır? Endüstride kullanılan kazanlar bu kömürü tercih etmemektedir. Ama kömürün evlerde ve özellikle fırınlarda kullanılabileceği ortaya çıkar. Sonuçta, atıklardan kömür elde edilir ve satılır. İsveç’teki teknoloji ve içerdiği toplumsal ilişkilerle Nikaragua’daki arasında büyük farklar vardır. Ama Nikaragua tam da bu nedenle, karşılaştığı sorunların üstesinden gelip teknolojiyi yeniden şekillendirebildiği için başarılı olmuştur (age).

Law (2006) bu örneği ATT (Actor-Network Theory, Aktör-Ağ Teorisi) bağlamında tartışmaktadır. AAT, 1980’lerde John Law, Bruno Latour ve Michel Callon tarafından geliştirilmiştir. AAT öncesinde de insan ve teknoloji ilişkisini tartışan, sosyal ve teknik boyutlar arasındaki karşılıklı etkileşime odaklanan çalışmalar vardır. Cresswell, Worth ve Sheikh’nin (2010) belirttiği gibi AAT bu çalışmaların devamı olmakla beraber insan olmayan varlıkları (teknoloji, kavramlar, düşünceler, hayvanlar vb.) çözümlemeye dahil etmesi nedeniyle söz konusu çalışmalardan farklılaşmaktadır. AAT’de canlı ya da cansız olmasına bakılmaksızın bir eylemin kaynağı aktör olarak adlandırılır. Fakat aktörler yalnız değildir. Ağ içinde varlık kazanırlar. Daha da önemlisi Dankert’in (2016) işaret ettiği gibi AAT’de dar anlamıyla aktörden değil, eylemciden (actant) söz edilmektedir. Eylemci, bir eylemi yerine getiren ya da eyleme maruz kalandır. Böylece ağdaki diğer eylemcileri etkiler ve değiştirir. Örneğin, ağdaki bir eylemci olan insan binaları inşa ederek ağa etkide bulunur. Ama ağın bir parçası haline gelen binalar da onun yaşamını şekillendirir. İnsan ve insan olmayan arasında ayrım yapılmaması, ikisi arasında bir fark olmadığı anlamına gelmemelidir. Sadece insan olmayan varlıkların da ağdaki ilişkileri etkileyebildiğini vurgulamaktadır.

Dankert (2016), adında her ne kadar teori kelimesi geçse de AAT’nin aynı zamanda bir araştırma yöntemi olduğunu belirtmektedir. AAT’de, bir ağın nasıl ortaya çıktığı, hangi bağlantıları içerdiği, aktörlerin ağa nasıl dahil olduğu, ağdaki kararlı bağlantılar ve kararsızlıklar araştırılmaktadır. Her şeyin toplumsal olarak oluşturulduğu (sosyal konstrüktivizm) ya da her şeyin önceden var olduğu (realizm) tezlerinin aksine AAT çalışmaya herhangi bir ön kabulle başlanmaması gerektiğini savunmaktadır. Araştırma sorusu belirlendiğinde ilk yapılması gereken şey bir başlangıç noktasının belirlenmesidir. Teoriler ve varsayımlar bir kenara bırakılır. Başlangıç noktası, tema, araştırmanın hedefi ve merkezi soru olabilir. Örneğin, belirli bir politikanın gerçekleştirimi araştırılıyorsa, bunun için hazırlanmış politika belgesi iyi bir başlangıç noktası olabilir. Buradan başlayarak araştırmacı ilgili eylemciyi ve ilişkili olduğu diğer eylemcileri incelemeye başlar. Araştırmada ağa dahil olan eylemcileri ve kurulan yeni bağlantıları fark edebilmek önemlidir. Bunun için de görüşmeler yapmak, elde edilen belgeleri çözümlemek, doğrudan gözlem yapmak vs gerekmektedir.

Bu bağlamda, Law’ın (2006) aktardığı hikayede, İsveç’ten getirilen makinenin Nikaragua’da zamanla nasıl bir ağ oluşturduğu, ağa katılan yeni aktörler, aktörlerin karşılıklı etkileri ve teknolojinin değişimi oldukça öğreticidir:

  • Hikayenin sonunda oluşan ağ bir yapıya benzemektedir. Ama araştırmacı, düğümleri ve bağlantıları varsaymamış bu ağdaki düğümleri ve bağlantıları araştırma sonucunda adım adım oluşturmuştur.
  • Ağ heterojendir. Ağda canlı ve cansız eylemciler vardır: İsveç’te üretilen makine, Nikaragua Hükumeti, ağaç atıkları, pamuk, zararlı böcekler, kontralar, Nikaragua Endüstrisi vs.
  • Ağdaki aktörler, insan olup olmamalarından bağımsız olarak birbirlerini etkilemektedir: Hammadde olarak pamuğun kullanılması, zararlı böcekler, Sudan’dan getirilen makine vb.
  • Ağlar, şeylerin yapısından ve doğasından çıkan ilişkiler ve yapılar değil, süreçler ve oluşumlardır.
  • Teknolojide bir dönüşüm yaşanmıştır. Nikaragua’da oluşan teknoloji hem İsveç’tekine benzerdir hem de ondan farklı özellikler taşımaktadır.

Ancak AAT’nin insan olmayan aktörleri ağa dahil etmesine yönelik eleştiriler de vardır. Ayrıca AAT’yi bir araştırma yöntemi olarak seçerken AAT’nin hızlı sonuca ulaşabilen ve dolayısıyla ucuz bir yöntem olmadığına da dikkat etmek gerekir. Çok fazla görüşme ve araştırma yapmak gerekebilir. Bunun sonucunda elde çok fazla veri birikecektir ve bu verinin hangi kısımlarının araştırma için değerli olduğuna karar vermek zor olabilir. Ayrıca araştırmanın hedefi açık değilse, ortaya sonuç bölümü olmayan ve bir açıklama sunamayan sadece güzel bir hikaye çıkacaktır (Dankert, 2016).

Bu eleştirilere karşın AAT, özellikle az incelenmiş alanlarda geleneksel yöntemlerle açıklanamayan konuları daha anlaşılabilir kılabilmekte ve beklenmedik sonuçlar ortaya koyabilmektedir. Geçen yazıda tanıttığım “Kod/Mekan”lar (Kitchin ve Dodge, 2011), Cresswell vd.’nin (2010) bilişim sistemlerinin sağlık hizmetlerindeki gerçekleştirimini ele aldıkları çalışmaları ya da Fransa’da CCTV’lerin gelişimi üzerine yapılan incelemeler (Douillet ve Dumoulin, 2016), yazılım ve bilişim teknolojileri hakkında yapılan çalışmalarda AAT’nin oldukça verimli bir analitik çerçeve sunduğunu göstermektedir. Geçmişte satın alınan yazılımların başarılarının ve başarısızlıklarının AAT ile analiz edilmesi ilginç ve öğretici olabilir.

Yukarıda belirttiğim gibi araştırmalarda AAT ‘yi kullanmak zaman alıcıdır ve ayrıntılı bir çalışmayı gerektirir. Veri olmadan hayali aktörler ve bağlantılar kurgulamak afaki olacaktır. Ama yine de, teknoloji meraklıları olarak gündelik hayatta karşılaştığımız teknolojileri toplumsal hayatı biçimlendiren nötr araçlar olarak görmek yerine belirli toplumsal ilişkiler içinde var olan, bu ilişkileri etkileyen ve onlardan etkilenen olumsal bir süreç olarak görmeyi deneyebiliriz. Bunun yaparken, teknoloji “guru”larının icat ettiği gösterişli terimlere karşı özellikle dikkatli olmak gerekiyor. Örneğin web 2.0, bulut bilişim ve algoritmik düzenleme…

Bilgisayar biliminde algoritma, “sonlu, gerekirci (deterministic), verimli ve bilgisayar programı olarak gerçekleştirmeye uygun problem çözme metodu”dur (Sedgewick ve Wayne, 2014:4). Adım adım tasarlanan bir algoritma, farklı programlama dilleriyle ama aynı çıktıyı elde etmek üzere kodlanabilir. Algoritmik düzenleme ise kısaca, akıllı cihazlar ve bilgisayarlardan elde edilen verilerle toplumsal hayatın daha verimli bir biçimde düzenlendiği yönetim biçimi olarak tanımlanmaktadır. Bu terimi ortaya atan, bilişim dünyasında etkili bir yayıncı olan Tim O’Reilly’dir. Kendisi aynı zamanda Web 2.0 terimini de popülerleştiren kişidir. Bürokrasinin hantallığından, adam kayırmacılıktan, kalitesiz hizmetlerden ve çağ dışı uygulamalardan bıktıysanız yukarıdaki tanımdan yola çıkarak “ne güzel bir öneri!” diye düşünebilirsiniz. Hemen iyimserliğe kapılmamanızı öneririm. O’Reilly’nin (2013) Açık Veri ve Algoritmik Düzenleme (Open data and algorithmic regulation) başlıklı yazısına düzenlemenin günümüz siyasetinde korkulan bir şey olduğuna işaret ederek başlar ve yazının devamında okuyucuyu algoritmik düzenlemenin verimliliği konusunda ikna etmek için çeşitli örnekler verir.

O’Reilly (2013) düzenlemenin hayatın birçok alanında bulunduğunu, iyi ve kötü örnekleri olduğunu belirtir. Düzenlemeye genel bir perspektiften bakmayı önerir. Örneğin arabamızın elektronik bileşenleri, motordaki hava yakıt karışımını en optimum düzeyde dengelemekte ve emisyonu en aza indirmek için bir düzenleme yapmaktadır. Bir uçağın otomatik pilotu çeşitli parametreler yardımıyla yaptığı düzenlemeyle uçağı idare etmektedir. Doktorlar hastaya verdiği ilacın dozunu düzenlemek zorundadır. İnternet servis sağlayıcılar ve e-posta sunucusu işleten kuruluşlar düzgün çalışabilmek için istenmeyen e-postalara ve zararlı yazılımlara karşı düzenleme yapmalıdırlar. Arama motorları reklamla kullanıcının istediği içeriği gösterebilmek arasındaki dengeyi sağlamak için çeşitli düzenlemelere başvurmaktadır.

O’Reilly’ye (2013) göre bunlar yararlı düzenlemelerdir ve dört ortak noktaları vardır:

  1. İstenen sonucun ne olduğuna dair derin anlayış
  2. İstenen sonucun elde edilip edilemediğinin gerçek zamanlı ölçümü
  3. Yeni veriye göre ayarlamalar yapacak algoritma (kurallar kümesi)
  4. Algoritmanın doğru ve beklendiği gibi çalışıp çalışmadığına dair daha derin analizler

O’Reilly (2013) bu tip düzenlemelerin kabul edilebilir olmasının arkasında üç neden olduğunu belirtir:

  1. Arzulanan çıktılar açıktır.
  2. Kamuya açık veriler kullanılarak istenen sonuca ulaşılıp ulaşılamadığı ölçülmektedir.
  3. İstenen hedefe ulaşılamadığında ayarlamalar yapılmaktadır.

Günümüzdeki düzenleyiciler ise sonuç odaklı çalışmamakta, sonuçtan çok kurallarla ilgilenmektedir. O’Reilly’nin (2013) yasalardan beklentisi, yasaların hedefleri, hakları, çıktıları, yetkileri ve sınırları tanımlamasıdır. Hükümetlerin her tür düzenlemesine karşı olan ve piyasanın kendi başına işleri yoluna koyacağını savunanları eleştirmektedir. Çünkü ona göre hükümet de Google, Microsoft, Apple ve Amazon gibi toplumun iyiliği için çalışan bir platformdur ve diğerleri gibi düzenlenmesi gerekmektedir. Örneğin Google gereksinimler doğrultusunda platformunu düzenleyen algoritmaları hızla değiştirebilirken hükümetler değişen koşullara uyum konusunda hantal kalmaktadır. Hükümetlerden istenen çıktılar bellidir: güvenlik, sağlık, adalet, fırsat eşitliği. Bu çıktılar yasalarda kodlanmalı ve değişen koşullara göre sürekli gelişebilen düzenleyici mekanizmalar yaratılmalıdır.

O’Reilly (2013), teknolojinin son zamanlarda düzenlemeyi azaltarak, gözetimi ve verimli sonuç elde etme olanağını artırdığını iddia etmektedir. İş dünyası bu değişimi göz önünde bulundurarak inovatif çözümler geliştirebilmektedir. O’Reilly (2013) uygulamadaki ulaşım hizmetleri ile 2009’da San Francisco’da kurulan çokuluslu ulaşım ağı şirketi Uber’in (ayrıntılı bilgi için bkz. http://www.pcworld.com.tr/rehber/uber-nedir-nasil-kullanilir/) sunduğu hizmetleri karşılaştırmaktadır. Kalite, yolcu güvenliği ve ihtiyaç duyulan yerlere yeterli sayıda aracın sevk edilebilmesi için kamusal düzenlemeler gerekir. O’Reilly (2013) şu anki düzenlemelerin Uber deneyimi ile karşılaştırıldığında kalite yönünden daha zayıf ve yetersiz olduğunu savunmaktadır. Kullanıcılar uber.com sitesinden veya akıllı telefonlarındaki bir uygulamayla taksi taleplerini iletirler, konumuna göre Uber ağındaki bir sürücü talebi alır, gitmek istenilen yere göre rotayı hesaplar ve ücret belirlenir, hedefe varıldığı zaman da daha önce belirlenen ödeme tercihine göre uygulama ücretini çeker. Uber kullanıcıları daha sonra aldığı hizmeti puanlar. Bunun sonucunda kötü ve kalitesiz hizmete sunan sürücüler sistemden elenir, iyiler kazanır. O’Reilly (2013), hükümetlere Uber gibi girişimleri örnek almalarını tavsiye eder.

O’Reilly (2013) klasik düzenleme yerine veri toplama, bunları ölçme ve ölçüm sonucuna göre hareket etme arzusundadır. Bilişim dünyasındaki algoritmik pratikleri gündelik hayata taşımak ister. Örneğin, bir web sitesi sahibi, sitenin kullanım istatistiklerine göre nasıl bazı hizmetlerini iyileştiriyor, bazılarını fazla kullanılmadığı için sitesinden kaldırıyorsa benzer yaklaşımı kamu web siteleri için de önerir. Ziyaretçi sayısı az olan bir web sitesi için harcanacak parayı sorgular.

Ev yaşamı, iş ve siyaset dijitalleştikçe, toplanan veri artıkça gerçek zamanlı ölçüm ve düzenleyici algoritmalar için yeni olanaklar doğmaktadır. O’Reilly (2013) bunun bayraktarlığını yaparken Silikon Vadisi de dünyayı bu geleceğe sürüklemektedir. Teknolojinin siyasetin yerini alacağı (http://motherboard.vice.com/read/technology-will-replace-the-need-for-big-government), n. devrimin içinde olduğumuz, Silikon Vadisi’nin yoksulluğa çözüm bulacağı gibi tezler (http://www.theguardian.com/commentisfree/2015/mar/01/silicon-valley-promises-digital-socialism-but-is-selling-a-fairy-tale) bu yanılsamanın ürünüdür.

Algoritmik düzenlemenin yakıtı veri, daha çok veridir. O’Reilly (2013) mahremiyet kavramının değiştiğini, insanların aldıkları hizmetler karşılığından mahremiyetlerinden vazgeçebildiklerini iddia etmektedir. Mahremiyet ve gözetim tartışmasına girmeyeceğim. Çünkü teknolojinin politikanın yerini alabileceği önerisinin daha tehlikeli ve mahremiyet ihlalini de körükleyen bir durum olduğunu düşünüyorum.

O’Reilly’nin kimin sözcüsü olduğu aslında yazısının ilk cümlesinden (“düzenlemenin korkutuculuğu”) anlaşılmaktadır. Yeni teknolojilerinin hayatımızı kolaylaştırdığını ve toplanan verinin çözümlenmesinin başta sağlık olmak üzere birçok alanda insanın gelişimi açısından önemli faydalar sağladığını inkar edemeyiz. Ama Morozov’un (2014) belirttiği gibi sorun tam burada başlamaktadır. Çağın hızına erişemeyen kanunlara bağlı kalmak yerine veri toplayan, ölçen ve geri bildirimlerle kendisini değişen duruma göre ayarlayabilen sonuç odaklı bir politika önerilmektedir. Politika, demokrasi ve iktidar kavramları aşırı basitleştirilmektedir. Kredi kartı dolandırıcılığının tespitinde faydalanılan algoritmik hesaplarının benzerinin vergi kaçıranların tespitinde de kullanılabileceği düşünülmektedir. Morozov (2014), bu yaklaşımların en büyük vergi kaçakçılığını yapan süper zenginler karşısında işlevsiz olacağını vurgulamaktadır. Algoritmik düzenlemeyi tasarruf tedbirlerinin uygulanması konusunda kullanmak mümkündür. Fakat algoritmalar mali krizlerin asıl sorumlularına karşı çaresizdir.

Toplumsal sorunları, politikayı göz ardı ederek teknolojik çözümlerle aşabileceğini düşünenlerin (ki bu da bir politik tercihtir) en büyük hatası ne ve nasıl sorularını birbirinden ayırıp ikisi arasındaki diyalektik ilişkiyi yadsımalarıdır. Örneğin, eğitim, sağlık, güvenlik alanlarında ne olması gerektiğine yönelik güzel hedefler konulabilir. Ama bu hedeflere nasıl ulaşılabileceği ne sorusunda hedeflenen şeyi etkiler. Geçmişte bu hedeflerin devlet tarafından mı yoksa piyasanın görünmez eli tarafından mı gerçekleştirilebileceği tartışılırdı. Seçilen yol, hedefin kendisini de biçimlendiriyordu. Şimdi tartışılan hedefe dijital mi yoksa analog yollardan mı ulaşılacağı, dinamik geribildirim mi yoksa statik kurallar mı olacağıdır. Bu yaklaşım, 11 Eylül de fırsat bilinerek ilk kez güvenlik konusunda benimsendi. Terörizmin nedenleri, tarihsel kökenleri ve dış politikayla ilgisi bir kenara bırakıldı terör sorunu enformasyonel bir soruna indirgendi. Herkes gözetlenirse teröristler de bütünün içinden ayıklanabilecekti. Bunun arkasındaki mesaj, terörizmin nedenlerinin ortadan kaldırılamayacağıydı; yapılabilecek tek şey kararsız bir sistemle yaşamayı kabullenmek ve algoritmaların bizim için teröristleri tespit etmesini beklemekti (age).

Nedenler yerine etkilerle ilgilenme eğilimi son yıllarda güvenlikten sağlık alanına doğru genişledi. Şirketler, giyilebilir teknolojiler, büyük veri, akıllı cihazlardaki alıcılar vs ile bizi nasıl daha sağlıklı yapacaklarını anlatmaktadır. İnsanlar kendi sağlıklarının takipçisi olmaya teşvik edilmekteler. Hemen arkasından sigorta şirketlerini kendilerini göstermekte, kendi kendini düzenli takip eden, daha doğrusu düzenli takip sonucu elde edilen verileri daha az risk etkeni içeren müşterilere özel indirim uygulamaktadır. Sağlık bireyselleştirilip sağlıksız olmak kişinin kendisinden kaynaklı bir sorun haline getirilmektedir. Sağlıklı beslenme tartışılırken, hükümetlerin ve gıda şirketlerinin politikaları, sınıfsal farklılar, toplumsal eşitsizlikler vb atlanmaktadır. Microsoft çoğumuz için Window’tur, MS Office’tir. Fakat Microsoft şimdi ev otomasyonu konusunda American Family Insurance adlı sigorta şirketiyle ortak çalışma yapmaktadır.

Ayrıca her şey algoritmik olarak düzenlenebilir mi? Optimizasyon ve verimlilik takıntısı demokrasi için uygulanabilir mi? Facebook’taki siyasi taraflılık tartışmaları algoritmaların hiç de tarafsız olmadığını göstermektedir (https://www.yenihayatgazetesi.com/facebookun-siyasi-taraflilik-tartismalari-buyuyor-12612). Eski bir çalışanın itirafı, Facebook’ta belirli tipteki haberlerin üst sıralara çıkarıldığını ortaya çıkarmıştır. Facebook’un algoritmalarının ön belirlemelerinden sonra bir editöryal grubunun öne çıkacak haberlere karar verdiği söylenmektedir. Tüfekçi (2016) algoritmaların fizikteki matematiksel formüllerle karşılaştırıldığını ancak veriye ve matematiksel hesaplara dayanmalarının tarafsız ve nesnel oldukları anlamına gelmediğini vurgulamaktadır.

Morozov’un (2014) da belirttiği gibi tüm bu gelişmeler karşısında teknofobi bir çözüm değildir. Teknolojinin şu anki yönelimi oyunun kurallarını tamamen şirketlerin ve hükümetlerin koyduğu bir yere doğrudur. Küçülen değil, daha da güçlenen ve hayatın her alanını metalaştırmaya kararlı hükümet örnekleri vardır. O’Reilly gibiler gözetim ile fayda arasında bir tercihi zorunlu olarak sunmaktadır. Ama söz konusu durum, şirketlerin ve hükümetlerin yarattığı bir ikilemdir. Buna karşı, internete eşit ve özgür erişim hakkını, takibi zorlaştırıcı teknolojileri, insanın gelişiminin önünü açan ve yeni yaratıcı kullanım alanları yaratmaya uygun bir altyapıyı savunmamız gerekir. Tabi bunu yaparken de yeni teknolojilerin içine gömülen neo-liberalizme karşı da uyanık olmak gerekiyor.

Kaynaklar

Cresswell, K. M., Worth, A., Sheikh, A. (2010). Actor-Network Theory and its role in understanding the implementation of information technology developments in healthcare. BMC medical informatics and decision making, 10(1), 1.

Dankert, R. (2016). Using Actor-Network Theory (ANT) doing research, http://ritskedankert.nl/using-actor-network-theory-ant-doing-research/, son erişim 15/05/2016.

Douillet, A. C., Dumoulin, L. (2016). Actor Network Theory and CCTV Development. Actor-Network Theory and Crime Studies: Explorations in Science and Technology, 21.

Kitchin, R., Dodge, M. (2011). Code/space: Software and everyday life. Mit Press.

Law, J. (2006). Traduction/trahison: Notes on ANT. Convergencia Revista de Ciencias Sociales, (42).

Morozov, E. (2014), The rise of data and the death of politics, https://www.theguardian.com/technology/2014/jul/20/rise-of-data-death-of-politics-evgeny-morozov-algorithmic-regulation, son erişim 19/05/2016

O’Reilly, T. (2013). Open data and algorithmic regulation. Beyond transparency: Open data and the future of civic innovation, 289-300.

Sedgewick, R., Wayne, K. (2014). Algorithms Part 1. Addison-Wesley Publishing Company.

Tüfekçi, Z. (2016),The Real Bias Built In at Facebook, http://www.nytimes.com/2016/05/19/opinion/the-real-bias-built-in-at-facebook.html, son erişim 20/05/2016

 

 

 

Yazılım Nedir?

Skandalı bol ülkemizin nisan ayındaki skandallarından biri ortalığa saçılan kişisel verilerdi. 2009 yerel seçimlerinde oy kullanan vatandaşların verilerini içeren veritabanı ilk kez şubat ayında paylaşılmış, 4 Nisan’da da şifresiz olarak dolaşıma girmişti. Ulaştırma Denizcilik ve Haberleşme Bakanı Binali Yıldırım’ın belirttiği gibi verilerin çalınması yeni bir olay değildi. 2010 yılında kişisel verilerin bir DVD içinde satıldığına dair haberler yayımlanmıştı. Fakat internet kullanıcıları sosyal medyadan duyurulan bir web sitesinde, ad soyad bilgileriyle sorgulama yaptıklarında durumun vahametini daha net gördüler. Yapılan sorgulamalarda herhangi bir kişinin TC kimlik numarası, anne adı, baba adı, cinsiyet, doğum yılı, doğum yeri, nüfus kayıt yeri bilgilerinin yanı sıra adres bilgilerine de erişilebiliyordu. Bu bilgilerin dolandırıcılık ve sahtecilik amaçlı kullanılabilecek olması insanları ürküttü.

Verilerin kim tarafından, kimden ve nasıl sızdırıldığının yanında zamanlaması (neden 6 yıl sonra?) da sorgulandı. Ama kimse, “bu işin fıtratında var” demedi. Onu da ben ekleyeyim. Tüm seçmenlerin bilgilerinin ortalığa saçılmış olması büyük bir skandal. Ancak bunu, günümüz toplumunun gelişiminin doğal bir sonucu olarak görüyorum. Bu olay büyük bir patlamaydı. Öncesinde de kişisel verilerimizi teslim ettiğimiz yerlerden veri sızıntıları oluyordu. Üstelik kişisel verilerimizi yalnız kamu kurumlarına değil, özel kuruluşlara da sonrasını düşünmeden ve çoğu zaman gönüllü olarak sunuyorduk. Kişisel Verilerin Korunması Kanunu bile henüz yeni yasalaşmışken (http://www.resmigazete.gov.tr/eskiler/2016/04/20160407-8.pdf), bu tip skandalların yaşanması neredeyse kaçınılmaz. Bu kanunun ne kadar etkili olabileceğini ve ne ölçüde uygulanabileceğini zaman içinde göreceğiz. Şu an için bu skandalı geleceğe dair kritik bir uyarı olarak değerlendirmeli.

Her Türkiye Cumhuriyeti vatandaşının benzersiz (unique) TC kimlik numarası vardır. Herhangi iki kişinin aynı kimlik bilgilerine (ad, soyad, baba adı, anne adı, doğum tarihi vb.) sahip olmasının önünde hiçbir engel yoktur. Fakat aynı TC kimlik numarasına sahip iki kişi olamaz. Bunun yanında TC kimlik numaraları, farklı kurumların veritabanlarındaki kişi verilerini de birbirine bağlamaktadır. Örneğin, TC kimlik numarası ile kişinin tüm hastane kayıtları, adres bilgileri, elektrik abonelikleri, öğrenim bilgileri, banka işlemleri vs ilişkilendirilebilmektedir. Benzersizlik ve farklı veritabanlarını ilişkilendirme gereksinimi, toplumsal ilişkileri daha çok yazılımın içine gömmüştür.

Artık yazılımın farklı derecelerde gündelik hayatı koşullandırdığı, ekonomik ve toplumsal ilişkileri düzenlediği bir dünyada yaşıyoruz. Yazılım, yeni iş yapma biçimleri sunuyor, var olan pratikleri otomatikleştiriyor ve hızlandırıyor. Yazılım gündelik hayattaki ilişkilerde dört farklı düzeyde karşımıza çıkmaktadır. Birincisi, hızla yaygınlaşan kodlanmış nesneler. Nesneler kodlanarak daha akıllı hale gelmekte ve yeni işlevler kazanmaktadır. İkincisi, kodlanmış nesnelerin ağından oluşan kodlanmış altyapılardır. Bu altyapılar, kısmen ya da tamamen yazılımla izlenip düzenlenebilmektedir. Örneğin bilgisayar ağları, yayın ağları (televizyon, radyo, uydu), kamu hizmeti ağları (su, elektrik, gaz, kanalizasyon). Üçüncü düzey ise kodlanmış süreçlerdir. Kodlanmış süreçler, kodlanmış altyapılardaki işlemleri ve dijital veri akışını ifade etmektedir. Kodlanmış süreçlerde dijital veri akışı, oluşturulmuş belirli kurallar ve biçimler doğrultusunda gerçekleşir. Banka kartınızı (kodlanmış nesne) bankamatiğe yerleştirip şifreyi girdikten sonra şifreniz doğrulanır ve bankanın kodlanmış altyapısına erişirsiniz. Bu erişimden sonra da belirli kurallar çerçevesinde belirli işlemler yaparsınız. Dördüncü düzey, kodlanmış birliktelikler, kodlanmış altyapıların entegrasyonu veya yakınsamasıyla oluşur. Farklı altyapılar bir araya geldiğinde parçaların toplamının ötesinde bir bütün meydana getirirler; bu yeni bütünlük onunla etkileşim halinde olan kullanıcıları da değiştirir. Örneğin, finans kuruluşları birbirleri ile bağlandığında arka planda sistemler birbirleriyle konuşur, veri transferi gerçekleşir. Artık bir bankaya, kredi başvurusunda bulunan herhangi bir müşteri yoktur. Banka, kendisine başvuran müşterinin finansal geçmişini bilir ve krediye uygunluk kararını buna göre verir. Ülkemizde kişi verilerini tutan kodlanmış birlikteliklerde TC kimlik numaralarının rolü kritiktir; parçalar çoğunlukla TC kimlik numaralarıyla bağlanmaktadır. Dolayısıyla son kriz sonrası gündeme gelen TC kimlik numaralarının değiştirilmesi önerisinin maliyeti de yüksek olacaktır.

Gündelik hayattaki etkinlikler, yazılım ile dolayımlanmakta, güçlenmekte, kolaylaşmakta ve düzenlenmektedir. Bu yeni dünya, makinelerce okunan ve yazılan bir dünyadır; enformasyon insan müdahalesi olmaksızın rutin bir biçimde toplanmakta, işlenmekte ve üzerinde çalışılmaktadır. Buna karşın yazılım hakkındaki bilgimiz son derece sınırlıdır. Yazılım denilince ilk akla gelen, bilgisayarın donanım ve yazılım olarak ikiye ayrıldığı, yazılımın da,

“Bir bilgisayarda donanıma hayat veren ve bilgi işlemde kullanılan programlar, yordamlar, programlama dilleri ve belgelemelerin tümü” (Türk Dil Kurumu)

olduğudur.

Yazılım terimini ilk kullanan John W. Tukey olmuştur. Tuckey, 1958 yılında American Mathematical Monthly dergisinde yayımlanan makalesinde, elektronik hesap makinelerinde bulunan matematiksel ve mantıksal komutların giderek daha önemli hale geldiğini yazmaktadır. Makalede, kablolar, transistörler, teypler vs donanım olarak nitelendirilirken yordamlar ve derleyiciler yazılım olarak nitelendirilmektedir. 1968 yılında IBM’in donanım ve yazılım bölümlerini ikiye ayırması, yazılım sektörünün önünü açar.

Yazılım, bilgisayar donanımını, donanımın içerdiği elektrik devreleri komuta eder. Kullanıcının kodu görmemesine karşın kodun etkileri son derece görünür ve somuttur. Yazılımın bir canlı olmadığı açıktır. Ama Thrift ve French (2002) yazılımın suni olarak da değerlendirilemeyeceğini iddia eder. Yazılım, ikisinin arasında bir yerdedir. Yazılım, veri toplamakta, enformasyonu işlemekte, durumları değerlendirmekte, kararlar verebilmekte ve en önemlisi de bunları insan müdahalesi olmadan özerk olarak yapabilmektedir. Mackenzie’ye (2006) göre yazılım kendini çalıştırdığı zaman ikincil bir eylemliliğe sahiptir. Çalışması her zaman görünür ya da açık seçik değildir; kimi zaman oldukça karmaşık çıktılar üretmesine karşın ancak hatalı işlem yaptığında ya da çalışmadığında varlığından haberdar olunmaktadır.

Çoğu insan yazılımı, kendisiyle bir şeyler yaptıkları bir araç olarak görmektedir. Yazılım mühendisliği, bu aracın nasıl daha iyi geliştirilebileceği üzerine çalışırken sosyal bilimciler de bu aracın topluma etkilerini tartışmaktadır. Her ikisinin de yararı vardır. Ama toplumsal etkilerine bakarak yazılımın ne olduğunu anlamamız olanaklı değildir. İşte bu olanaksızlıktan yola çıkan Yazılım Çalışmaları disiplini, yazılımın kendisine odaklanmaktadır.

Yazılım Çalışmaları

Kitchin ve Dodge (2011), yazılım çalışmaları ile bilişim teknolojilerinin topluma etkileri üzerine yapılan çalışmalar arasındaki farklılığı açıklarken bunu hastalıkların epidemiolojisine çalışmakla hastalıkların dünyadaki etkisine çalışmak arasındaki farka benzetir. Hastalıkların dünyadaki etkisini araştırırken çok şey öğrenilebilir. Ama hastalığın etiolojisini (nedeni, kökeni, evrimi) bilmeden hastalığın topluma etkisi hakkındaki bilgilerimiz de eksik olacaktır.

Yazılım çalışmalarına ilk kez Lev Manovich’in The Language of New Media adlı kitabında değinilmiştir. Manovich (2001), yeni medyanın mantığının anlaşılabilmesi için yüzümüzü bilgisayar bilimine dönmemiz gerektiğini savunur. Manovich’e (2001) göre medya çalışmalarından yazılım çalışmalarına, medya teorisinden yazılım teorisine kayılması gerekmektedir. Yazılımın nasıl yazılıp geliştirildiği; yazılımın çalışması sonucu dünyada nasıl öznellikler, pratikler, etkileşimler, ve hareketlilikler yaratıldığı; yazılım endüstrisinin doğası; kodun farklı alanlardaki (iş, sağlık, eğitim, eğlence) sosyal, ekonomik, kültürel ve politik etkileri yazılım çalışmaları kapsamında araştırılması gereken konulardır. Bu bağlamda, yazılımın günümüz kültürünün oluşumuna etkisi kadar yazılımın geliştirilmesinde etkili olan kültürel, toplumsal ve ekonomik güçler de tartışılmalıdır.

Manovich (2001), yeni medyayı da bu doğrultuda tanımlar. Yeni medyaya atfedilen etkileşim ve programlanabilirliği, yeni toplumsal etkinlikleri, bireylerin duygu ve düşüncelerini paylaşabilme olanağının artmasını yeni medyayı var eden yazılımın beş temel özelliğiyle ilişkilendirir: Sayısal temsil, modülerlik, otomasyon, değişkenlik, kod çevrimi.

Sayısal temsil, yeni medya verisinin matematiksel olarak tanımlanabilirliğini ve verinin algoritmik olarak müdahaleye açık olduğunu belirtmektedir. Modülerlik, yeni medyanın çeşitli elemanlardan (piksel, poligon, katman, ses kanalı) oluşmasıdır. Böylece herhangi bir görüntüyü yeniden çekmeden görüntünün pikselleriyle oynamak mümkün olabilmektedir. Otomasyon, yukarıdaki iki özelliğin sağladığı olanaklarla, içerik üzerindeki işlemlerin otomatikleştirilebilmesidir. Örneğin, görüntülerin otomatik olarak düzenlenmesi, renk karşıtlıklarının (contrast) ayarlanması, gürültünün ayıklanması yazılımlarla otomatik olarak yapılabilmektedir. Değişkenlik ise aynı medyadan neredeyse sonsuz sayıda farklı medya üretilebilmesidir. Değişen gereksinimlere göre, ana medyaya zarar vermeden farklı medyalar türetilebilmektedir. Sonuncu özellik, kod çevrimi (transcoding), en kritik olanıdır. Kod çevrimi teknik anlamda, bilgisayardaki bir dosyayı bir biçimden diğerine dönüştürmeyi anlatır. Manovich (2001) ise kod çevrimiyle bir medyadaki anlam ve işlevin, başka medyalara aktarıldığını anlatmak istemektedir. Bilgisayarlardaki mantık ve iş yapma şekilleri farklı medyalara taşınmakta, oradaki iş yapma biçimlerini değiştirmekte, yeni bir kültür oluşturmaktadır.

Manovich’in (2001) kitabının dışında yazılım çalışmaları alanındaki başlıca çalışmalar şunlardır:

  • Behind the Blip (Fuller, 2003)
  • Protocol (Galloway, 2004)
  • Media Ecologies (Fuller, 2005)
  • Cutting Code (Mackenzie, 2006)
  • Software Studies: A Lexicon (Fuller, 2008)
  • Software Takes Command (Manovich, 2008)
  • My mother was a computer (Hayles, 2010)
  • Code/space: Software and everyday life (Kitchin ve Dodge, 2011)

Bu yazıda, Kitchin ve Dodge’un (2011) Kod/mekan (Code/space) kitabını, sonraki yazılarda da yazılım çalışmaları disiplininin diğer kitaplarını tanıtmak istiyorum.

Kod/mekan

Kitchin ve Dodge’un (2011) temel tezi, yazılımın mekanı ürettiği, toplumsal süreçleri ve ekonomik ilişkileri şekillendirdiğidir. Mekanın üretimi her geçen gün koda daha bağımlı hale gelmekte ve kod mekanın yeniden üretimi için tekrar yazılmaktadır. Bu bağlamda, kod/mekanlar ve kodlanmış mekanlar arasında bir ayrım yapmaktadırlar. Kodlanmış mekanlarda kod, yine mekanın oluşumuna etkide bulunmasına rağmen mekanın bir parçası değildir. Kod ve mekan karşılıklı olarak birbirlerini oluşturmazlar. Örneğin, bir dersin LibreOffice Impress ya da Microsoft PowerPoint ile anlatılmasının hem öğretmen hem de öğrenciler üzerinde (olumlu ya da olumsuz) etkisi olur. Sunum yapılan bilgisayarın arızalanması dersin daha verimli anlatılmasını engelleyebilir, öğretmen bazı konuları aktarmakta zorlanabilir. Ama bu dersin yapılmasını engellemez; sınıfın sınıflığı devam eder. Kod/mekanın varlığı ise koda bağımlıdır. Kodun çalışmaması durumunda mekan niteliğini kaybedecektir. Kitchin ve Dodge (2011), süpermarket ve havaalanı örneğini verir. Süpermarketteki yazılımlar çalışmazsa kasiyerin bir bakkal gibi çalışması, markette satılanların fiyatlarını bilmesi, meyveleri tartması o kadar kolay olmayacaktır. Çalışanlar bu duruma göre eğitilmemiştir. Havaalanındaki yazılımların arızalanması durumunda ise havaalanı işlevini yerine getirmekte zorlanacak ve bir kaos oluşacaktır. Bir diğer deyişle, kodlanmış mekanlarda yazılım kolaylaştırma, izleme ve iyileştirme aracıyken kod/mekanlarda kontrol ve düzenleme aracıdır.

Kitchin ve Dodge’un (2011) kod/mekanları tartışırken yaptığı yazılım sınıflandırması açıklayıcı ve öğreticidir. Önce, yazılım içermeyen nesneleri, yazılım dünyasına dahil edebilmek için bu nesnelerin nasıl benzersiz ve makinece okunur (machine readable) hale getirildiklerini ele alırlar. 1970’lerin sonlarından itibaren tüketim malları barkodlanmaktadır. Barkod bilgisi lazer ile taranmakta ve ürün eşleştirilmektedir. Kitchin ve Dodge (2011), barkodlu nesnelerin okunma sırasında pasif olduğunu belirtir. RFID (Radio Frequency ID ) etiketi taşıyan ürünlerde ise bilgi aktif olarak, radyo sinyalleri ile iletilir, etiketin lazer ile taranmasına gerek yoktur. RFID’nin yakın zamanda barkod teknolojisinin yerini alması beklenmektedir. Nesneler, kendileri herhangi bir yazılım içermeksizin dışsal olarak etiketlenerek ağa dahil olmaktadır. Ama günümüzde asıl belirleyiciliği olan yazılım nesneleridir.

Yazılım nesneleri iki gruba ayrılmaktadır: Çevresel olarak kodlanmış nesneler ve kodneler (codejects).

Çevresel kodlanmış nesneler de yazılım içerir. Yazılım nesneyi daha işlevsel hale getirir. Fakat içerdikleri yazılımın çalışmaması onların kullanımına engel değildir. Yalnızca daha verimli ve üretken kullanımları sınırlanmış olur. Örneğin bir fırındaki dijital saatin bozulması, fırının pişirme aracı olarak kullanımını engellemez.

Kodneler ise işlevleri doğrudan içerdikleri yazılıma bağlı olan nesnelerdir. Adından da anlaşılabileceği gibi kodun ve nesnenin bütünlüğünü gösterir. Kodneler, programlanabilirlik, etkileşim, hatırlama, önceki kullanımlara göre sonrakini tahmin etme ve ilişkisellik kapasitelerine göre üçe ayrılır: Sabit kodneler (hard codejects) , üniter kodneler (unitary codejects), logne (logjects).

Sabit kodneler, USB belleklerde olduğu gibi, bellenim (firmware) adı verilen, işlevselliği önceden belirlenmiş ve sabit bir yazılım içerirler.

Üniter kodneler belirli bir düzeyde programlanabilme ve etkileşim olanağına sahiptir. Üniter olarak adlandırılmalarının nedeni işlevsellikleri için gerekli olan her şeyi kendi yapılarında barındırmalarıdır. Üniter kodneler de ikiye ayrılır. Kapalı kodneler ve algısal kodneler. Kapalı kodneler, çevrelerinden bağımsız çalışırlar. DVD oynatıcılar ve dijital saatler bu tipte nesnelerdir. Arayüzleri son derece sınırlı bir etkileşime ve programlamaya (saat ayarlama, DVD içinden seçim yapma gibi) olanak vermektedir. Algısal kodneler ise dış dünyadaki değişimlere karşı duyarlıdırlar. Klima sistemindeki dijital termostatlar ya da ışık düzeyini ayarlayabilen dijital kameralarda olduğu gibi çevresel faktörler dikkate alınmaktadır.

Logneler, durum ve kullanım bilgilerini kaydetmeleriyle üniter kodnelerden ayrılmaktadır. Bir logne aşağıdaki özelliklere sahiptir:

  • Benzersiz olarak dizinlenebilir.
  • Çevresinden haberdardır ve işlevi bağlamındaki çevresel değişimlere yanıt verir.
  • Belirli bir düzeyde programlanabilir (ayarları değiştirilebilir.)
  • Belirli bir zaman ve mekandaki kullanımları ağdaki diğer bilgisayarlara iletebilir.

Ağa bağlı kodneler, makineden makineye, makineden insana, insandan makineye haberleşebilmektedir. Bir kargo aracı konumunu belirli aralıklarla izleme istasyonuna iletir (makineden makineye), trafik enformasyon sistemi sürücüyü rotasındaki kazalar hakkında uyarabilir (makineden insana), arabanın kapısı uzaktan kumanda (insandan makineye) ile açılabilir.

Bu sınıflandırmanın yanında Kitchin ve Dodge (2011), Greenfield’in (2010) ortaya attığı everyware terimini değerlendirir. Everyware ile bilgisayarların klasik kullanım alanlarının genişletilerek gündelik hayatın temel bileşenleri haline gelmeleri anlatılmaktadır. Everyware ile,

  • Yazılımın işlevselliği mekana ve nesnelere gömülmektedir
  • Algılayıcılar belirli tip etkinlikleri algılayıp kaydetmektedirler
  • Etiketler, aktörleri tanımlamaktadır
  • İnsanlar sistemlere tepki vermemekte, onlarla etkileşim halinde olmaktadır.
  • Yazılım durumları modellemektedir

Günümüzde everyware beş biçimde karşımıza çıkmaktadır: her tarafa yayılan berim (pervasive computing), duyarlı berim (sentient computing), somut berim (tangible computing), aynı zamanda her yerde olan berim (ubiquous computing), giyilebilir berim (wearable computing).

Her tarafa yayılan berim, gündelik hayatı ve etkinlikleri, gündelik hayattaki nesnelere çeşitli algılayıcılar ve kısmen karar verebilen teknolojiler ekleyerek değiştirip dönüştürmektedir. Artık yalnızca fare ve klavye ile kullanılan bilgisayarlar yoktur. Duyarlı berimde ise bilgisayar kişiyi algılar ve buna göre hareket eder. Örneğin kişiyi algılayınca kilitli kapıyı açar, adres defterini gösterir, ağ kullanımlarını kişiselleştirir. Somut berim, insan ve bilgisayar arasındaki etkileşimi daha doğal hale getirmeye çalışmaktadır. Bir bilgisayarı fare ve klavye ile kontrol etmek her zaman olanaklı olmayabilir. Bunun yerine ses ve jest tanıma teknolojileri kullanılabilmektedir. Aynı zamanda her yerde olan berim, her tarafa yayılan berime benzemesine karşın burada algılayıcı olan çevreden değil kişiyle beraber hareket eden berimsel (computational) güçten söz edilmektedir. Dolayısıyla, her tarafa yayılan berimde her şey berimsel güçle donatılmak istenirken aynı zamanda her yerde olan berimde bu gücün her yere taşınması hedeflenmektedir. Giyilebilir berimde ise yazılım belirli kodnelerden giysilere ve aksesuarlara kaymaktadır. Ülkeler, everyware’in farklı türlerine yoğunlaşmaktadırlar. Kitchin ve Dodge (2011), Japonya’da eğilimin aynı zamanda her yerde olan berim, Kuzey Amerika’da ise her tarafa yayılan berim yönünde olduğunu belirtmektedir.

Kitchin ve Dodge’in (2011) yazılım çalışmalarına en büyük katkısı çoğu zaman ihmal edilen mekanın önemine yaptıkları vurgudur. Yazılım, içinde bulunduğu toplumun, mekanın ve zamanın bir parçasıdır. Onlarla etkileşim içinde etkin olur ve gelişir. Yazılım hem bir ürün hem de bir süreçtir; özyineli (recursive) bir süreç. Yazılımı geliştirenler, kodlarla mekanın temsilini yaratmakta; bu temsili mekan, gerçek dünyadaki ilişkileri düzenlemeye girişmekte; bu girişimin sonucunda da mekanın yazılımla yeni temsili geliştirilmektedir. Dolayısıyla her yazılım eksiktir. Tamamlandığı anda değişen mekan, değişen toplumsal ilişkiler yeni gereksinimler yaratır.

Kitchin ve Dodge (2011) kod/alan tanımlamasının teknolojik determinizm olmadığını savunmaktadır. Kod ve alan arasında tek yönlü bir belirlemenin olmadığını, kodun ve mekanın karşılıklı olarak birbirlerini oluşturduklarını vurgularlar. Ayrıca kod/mekanın doğasının ve dönüşümünün olumsal bir süreç olduğunu belirtirler. Yere, zamana ve bağlama (kültürel, politik, ekonomik ilişkilere ve durumlara) göre farklılaşabilmektedir.

Bunun yanında, Kitchin ve Dodge’un (2011) yazılımın hegemonyası hakkında yazdıkları da son derece ilgi çekicidir. Yazılım gündelik hayatın her alanına yayılmakta ve yoğunlaşmakta ama çok az sorgulanmaktadır. Neden? Sorgusuz sualsiz kabullenmenin başlıca nedeni insanların, güvenlik ve refah, terörizmle savaş, sağlık, refah vb için bu sistemlerin gerekli olduğu konusunda ikna edilmiş olmalarıdır. Daha öncekilerin kimin için ne ifade ettiğini sorgulamadan n. sanayi devrimlerini selamlamaktadırlar. İkincisi, yazılımların evrimsel gelişimlerinin de etkisiyle yeniliklerin hep öncekinin bir devamı olarak görülmesidir. Örneğin, yakın zamanda kullanıcı adı ve şifrelerin yerini biyometrik temelli güvenlik sistemleri alacak ve bu da doğal bir durum olarak kabullenilecektir. Üçüncüsü, yeni sistemlerin kaçınılmaz olarak gösterilmesi ve doğallaştırılmasıdır. Dördüncüsü, çoğu yazılımın doğrudan insanlara hissettirilmeden ve onları hayatına doğrudan bir zorluk katmadan çalışmasıdır. Arka planda büyük veri üzerinde düzenleyici ve ayrıştırıcı algoritmalar çalışır; ama bunun gündelik hayata hemen fark edilebilir olumsuz etkisi olmamaktadır. En önemlisi de insanların ayrımcılığa uğrayacakları ya da kötü muameleye maruz kalacakları endişesiyle itiraz etmekten kaçınmalarıdır.

***

Kişisel verilerimizin çalınmasına kızmak, sorumluları kınamak ve olabilecekler konusunda endişelenmek hakkımızdır. TC kimlik numarası bilgileri ile yapılabilecek sahtecilikler korkutucu. Ancak TC kimlik numaralarının yaşadığımız mekanların kritik bir yazılımsal bileşeni olduğunu ve yalnız dolandırıcıların değil “yasal” olarak birçok yerde saklanıp rızamız olmadan paylaşıldığını da unutmamak gerekiyor. Büyük olasılıkla bu skandalın ardından hükümet kimlik bilgilerinin paylaşımı konusunda kısıtlamalar getirecek ve bilişim profesyonelleri veri güvenliği konusunu teknolojik çözümler kapsamında tartışacaklar. Ama yazılım deryasında, “derya içre olup deryayı bilmeyen balık” gibiyiz. Yeni teknolojik çözümlerle yazılım deryasına daha çok gömüleceğiz…

Kaynaklar

Fuller, M. (2003). Behind the blip: Essays on the culture of software. New York: Autonomedia.

Fuller, M. (2005). Media ecologies: Materialist energies in art and technoculture. MIT Press.

Galloway, A. R. (2004). Protocol: How control exists after decentralization. MIT press.

Hayles, N. K. (2010). My mother was a computer: Digital subjects and literary texts. University of Chicago Press.

Greenfield, A. (2010). Everyware: The dawning age of ubiquitous computing. New Riders.

Kitchin, R., Dodge, M. (2011). Code/space: Software and everyday life. Mit Press.

Mackenzie, A. (2006). Cutting code: Software and sociality. New York: Peter Lang.

Manovich, L. (2001). The language of new media. MIT press.

Manovich , L. (2008). Software takes command. http://black2.fri.uni-lj.si/humbug/files/doktorat-vaupotic/zotero/storage/D22GEWS3/manovich_softbook_11_20_2008.pdf, son erişim 20 Nisan 2016.

Thrift, N., S. French. (2002). The automatic production of space. Transactions of the Institute of British Geographers 27 (3): 309–335.

Java happens before rules for Concurrency

The rules for happens-before are:

Program order rule. Each action in a thread happens-before every action in that thread that comes later in the program order.
Monitor lock rule. An unlock on a monitor lock happens-before every subsequent lock on that same monitor lock.
Volatile variable rule. A write to a volatile field happens-before every subsequent read of that same field.
Thread start rule. A call to Thread.start on a thread happens-before every action in the started thread.
Thread termination rule. Any action in a thread happens-before any other thread detects that thread has terminated, either by successfully return from Thread.join or by Thread.isAlive returning false.
Interruption rule. A thread calling interrupt on another thread happens-before the interrupted thread detects the interrupt (either by having InterruptedException thrown, or invoking isInterrupted or interrupted).
Finalizer rule. The end of a constructor for an object happens-before the start of the finalizer for that object.

HDFS hflush vs hsync

hflush:  This API flushes all outstanding data (i.e. the current unfinished packet) from the client into the OS buffers on all DataNode replicas.

hsync: This API flushes the data to the DataNodes, like hflush(), but should also force the data to underlying physical storage via fsync (or equivalent). Note that only the current block is flushed to the disk device.

[1] https://github.com/apache/hadoop/blob/trunk/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSOutputStream.java

How to really persist your file in Java

Use FileChannel.force(boolean) or FileDescriptor.sync() to force data to be persistent on disk. Either of them can work. FileChannel.force use FileDispacther.force[1] and it calls fdatasync or fsync in Java 8. 

When you use OutputStream.flush, it does not guarantee the data to be written to disk, just flush it to OS. Better to use FileOutputStream.getChannel().force(true) or FileOutputStream.getFD().sync() to guarantee the persistency, performance might not be good.

Special Thanks to Yongkun. He wrote very good blog post. [2]

[1] http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c#l141

[2] http://yongkunphd.blogspot.com/2013/12/how-fsync-works-in-java.html

Bloom Filters

Good tutorial for Bloom Filter understanding: http://billmill.org/bloomfilter-tutorial/

Bloom filters use case is following:

You have very large data sets that typically don’t fit in memory and you want to check your element it contains or not contains. Obviously It works very well for not contains detection.

if the bloom filter gives a hit: the item is probably inside
if the bloom filter gives a miss: the item is certainly not inside

How can I use in Java. Guava Provide a library for Bloom Filter:

https://github.com/google/guava/blob/master/guava/src/com/google/common/hash/BloomFilter.java

m denotes the number of bits in the Bloom filter (bitSize) 

n denotes the number of elements inserted into the Bloom filter (maxKeys)

k represents the number of hash functions used (nbHash) 

e represents the desired false

positive rate for the bloom (err) If we fix the error rate (e) and know the number of entries, then the optimal bloom size 

m = -(nln(err) / (ln(2)^2) ~= nln(err) / ln(0.6185)

The probability of false positives is minimized when k = m/n ln(2).

Why does Java’s hashCode() in String use 31 as a multiplier?

The value 31 was chosen because it is an odd prime. If it were even and the multiplication overflowed, information would be lost, as multiplication by 2 is equivalent to shifting. The advantage of using a prime is less clear, but it is traditional. A nice property of 31 is that the multiplication can be replaced by a shift and a subtraction for better performance: 31 * i == (i << 5) - i. Modern VMs do this sort of optimization automatically.

(from Chapter 3, Item 9: Always override hashcode when you override equals, page 48, Joshua Bloch’s Effective Java)