The largest and the best home page
Olmazmi search
tr
en
home page sites rsses
   
 There are thousands of mobile phones in Telefonvarmi.com Click here to go Telefonvarmi.com.

Technology - Ferruh Mavituna RSS

The Social Network @ 08-02-2012 16:06

Son zamanlarda ciddi sayıda kötü film izledim ama The Social Network kesinlikle herkesin dediği gibi süper bir film. Şiddetle tavsiye edilir,her güzel hikaye gibi gerçek ile kurgu iç içe ama kesinlikle izlenesi.

Sadece film'e dayanarak Mark hakkında hem iyi hem de kötü duygular oluşuyor içinizde



Hayat 2.0 @ 08-02-2012 16:06

Sosyal medyanın gelişmesi ile insanlar herşeyi paylaşır oldu, ne yaptıkları (twitter), ne gördükleri (flickr,youtube), ne okudukları (librarything), ne yedikleri (mekanist), nerede oldukları (four square) ve kimle birlikte oldukları (facebook)…

Bazılarına bu tuhaf, saçma, hatta aptalca gelebilir ama aslında bu benim seneler önce ilk blog yazmaya başladığımda aklımdaki şeydi. İlk sitemi yayınladığımda (~11 sene önce) ve daha sonraları blog yazmaya başladığımda (~8 sene önce) benim de aklımda hep bu vardı, o zaman çok ütopikti şimdi ise gerçek. İnsan belli şeyleri paylaşmanın tadına varınca daha fazlasını istiyor.

Psikolojik olarak durumun açıklamasını yapacak bir bilgim yok ama muhtemelen bunlar bilinme arzusu ve kendini ifade etme arzusunun sonuçları. Belki gözden kaçırdığımız şey 10 kişi bunu yaparken iyiydi ama 10 milyon kişi bunu yapınca o kadar anlam ifade etmiyor faktörüdür. Bu da otomatik olarak sosyal medyayı 3 bölüme ayırdı. Geyik yapan arkadaşlar ve onları takip eden diğer geyik yapmak isteyen sanal ya da gerçek dünyadan arkadaşları. Sosyal medyayı diğer benzer profesyoneller ile birlikte iletişimde kalmak, kariyer, bilgi vs. konusunda yukarıda olmak isteyenler, bir de son olarak sosyal medyayı tamamen inbound marketing amacı ile kullananlar. Bir de not düşmek lazım pek aktif olarak katılmayan ama sadece kendine başarılı bir figür olarak gördüğü ya da tarzını, bilgisini beğendiği insanları takip eden bir grup var ki bunu da kariyer / bilgi grubunun içerisine sokabiliriz. Inbound tayfası ile kariyer tayfası birbirine çok yakın ve hatta bazen iç içe olduğundan onları kategorilere ayırırken dikkatli olmak lazım.

Benim yıllar önce aklımda olan şey çok dağılmış bir şekilde oluştu, benim kafamda ki şu şekildeydi:

  • Blog’a widgetlar eklenir
  • Tray de çalışan bir uygulama şu şeylerin paylaşımını çok kolay hale getirir
    • Okuduğun kitap ve şu anki durumu, Bu ebooklar vs. için otomatikLibrary Thing, Good Reads
    • Dinlediğin Müzik, otomatik Media Player’dan alınır – Last.fm
    • İzlediğin Film, Dizi ve puanın, gene mümkünse otomatik media player’dan alınır – ??? Get Glue?
    • Giydiğin Kıyafet (marka vs. olarak) – ?…
    • Oynadığın Oyun – Steam
    • Kısa olarak şu an ne halt yediğin – Twitter
    • Aktif olarak kullanılan program ve ne kadar vakit harcandığı – Wakoopa
    • Girdiğin ve paylaşmak istediğin siteler – Delicious
  • Bu tray uygulamasının otomatik keşfettiği herşey ve elle girilen herşey otomatik sitede gözükecekti

Nerede bulunduğunu yayınlama gibi şeyler o zaman hiç aklıma gelmemişti, sonuçta internet kullanıcılarının her zaman bilgisayar başında olacağını varsaymıştım.

Bu tray uygulamanın adı “Life” olacaktı. Şimdi bakıyorum da aslında bunların, hepsi ve çok daha fazlası efektik olarak yapıldı (tek bir parça olarak değil ama). Açıkçası ben kullanmıyorum, iki nedeni var nedense eskisi kadar bir şeyleri paylaşma isteği kalmadı, ikincisi bu sistemlerin hepsi çok dağınık ve pratik değiller. Eğer pratik olsalar bir istatistik manyağı olarak gittiğim her yeri, attığım adım sayısını, hasta olduğum günleri, her gün giydiğim kıyafetleri, bastığım tuş sayısını, yazdığım kelime sayısını, emailda harcadığım süreyi, bulunduğum şehirleri, dinlediğim müzikleri, izlediğim filmleri, izlediğim dizileri, gördüğüm siteleri, tanıştığım insanları vs. vs. hepsini kayıt altına alırdım. Ondan sonra hasta olduğum günlerde ki hava durumu ile giydiğim kıyafet dataları karşılaştırıp boğazlı kazağın bana yaramadığını anlayabilirdim, izlediğim ve puanladığım 500 filmi başka insanlar ve film dataları ile karşılaştırıp bir sonraki izleyeceğim filmin dandik olmamasını sağlayabilirdim, dinlediğim müzikler sayesinde Sibirya’daki küçük bir grubu müzik grubunu bulabilirdim…

Bir gün oraya gelecek miyiz, yoksa düzenli şekilde 20 farklı servisi ayrı ayrı kullanmak zorunda kalacak mıyız emin değilim. Bir gün birileri inanılmaz bir XML formatı, bir protokol ile bu datanın efektif paylaşılmasına farklı yerlerde farklı cihazlarla iki yönlü iletişim yapmayı ve bu datayı işlemeyi mümkün kılabilecek mi, emin değilim, ama emin olduğum tek şey var oraya doğru gitmemizin gerekli olduğu. Dünyada bu kadar data oluşturulurken hemen hemen hiç birinin özellikle bireyler açısından kollektif anlam ifade etmemesi acı bir durum, bu kadar data verimli işlendiğinden, büyüyen trendleri hatta ekonomik krizleri bile tahmin etmek çok kolay olabilirdi, belki de Google’un geleceği tahmin edebileceğini iddia etmesi bu datayı efektif olarak korrele edebileceğine inanmasıdır.



AnkaSec’10 Bilgi Güvenliği Konferansı @ 08-02-2012 16:06

ankara_sec_master23 Aralık’ta tahmin ettiğiniz gibi Ankara’da AnkaSec’in 2. düzenlenecek. Maalesef ben orada olamayacağım ama oralardaysanız gitmeyi ihmal etmeyin derim.



Ramazan Ayı Mübarek Olsun @ 08-02-2012 16:06

Bir süredir yaz(a)mıyorum, Ramazan ayı vesilesiyle hala hayatta olduğumu hatırlatayım dedim…

Bu yazıya da biraz anlam katmak için sizi Sorularla İslamiyet sitesinin Ramazan Sayfaları’na gönderiyorum.



IT Sektöründe Kişisel Gelişim ve Kariyer Semineri @ 08-02-2012 16:06

21 Haziran’da İstanbul’da Genç Girişimciler Kulübü’nde IT Sektöründe Kişisel Gelişim ve Kariyer isimli bir konuşma yapacağım. Açıkçası bugüne kadar yaptığım güvenlikle alakalı olmayan ilk konuşma olacak.

Etkinlik ücretsiz, siteden kayıt olmanız yeterli.



5. Kamu Kurumları Bilgi Teknolojileri Güvenlik Konferansı @ 08-02-2012 16:06

25 Haziran’da Ankarada 5. Kamu Kurumları Bilgi Teknolojileri Güvenlik Konferansında konuşuyor olacağım, genelde demo ağırlıklı bir şekilde web uygulamalarındaki güvenlik açıklarından bahsedeceğim.

Konferansa katılım ücretsiz ama sitesinde belirtildiği şekilde kayıt olmanız gerekli.



Hakin9 Röportajı @ 08-02-2012 16:06

Bir süredir yazamıyorum bu da yazamadığım vakitlere denk geldi. Hakin9 benimle bir röportaj yaptı, ek olarak Hakin9 artık ücretsiz olarak internet yayınlanmaya başladı, şuradan download edilip okunabilir.



Minimum Ürün @ 08-02-2012 16:06

Maalesef geliştiriciler olarak “kabul edilemez” listemiz gereğinden çok daha fazla ve esas gerçeği düzenli şekilde unutuyoruz. “Ürün çözmek için geldiği sorunu en iyi şekilde çözüyor mu? Size diğer tüm eksik ve hataları göz ardı etmenizi sağlayacak birşeyler sunabiliyor mu?”

Bakalım neler yapmadan da bir yazılım yapabiliyormuşuz ve başarılı olabiliyormuş, benden iki örnek:

  • Google Chrome
    • Otomatik update ekranı yok, (hakkında sayfasında çok basit bir göstergesi var)
    • Proxy desteği yok (sadece SYSTEM proxy’ sini kullanıyor)
    • Normalde ihtiyacınız olabileceği ama olmadan da yaşayabileceğiniz bir milyon özellik yok (Firefox / IE ayarları ile Chrome’ un ayarları arasında 10 kat kadar fark var)
  • Hacker News
    • Şifrenizi unutursanız hatırlatma desteği yok,
    • Arama yok
    • Kategori, tag vs. yok

Bu tip özellikler ileride gerekebilir ama v1.0 de gerçekten o özelliğe ihtiyacınız var mı? Şimdi kesinlikle olması gerekenler listenize tekrar bakın ve yarısını silip aslında abarttığınızı itiraf edin.

Unutmadan insanların bir özelliği istemesi o özellik olmayınca yazılımı kullanmayacağı anlamına gelmiyor.

Sizin bildiğiniz bu şekilde başarılı ama çok bariz özellikleri olmayan ürünler var mı?



Why platform matters in web application security? @ 08-02-2012 16:06

I wrote this article about 2 years ago in Turkish. Recently Whitehat released a quite nice paper about vulnerability counts per programming language/framework. That report kind of backs up this article however many took and advertised it wrongly as it sounded like “choice of framework has virtually no effect on security”. So I decided to write it in English again.

One of the oldest clichés in web application security is:

"Choice of framework doesn't matter"

I say bullshit!

Good Developers Always Develop Secure Applications

Yes, one can write a secure web application using brainfuck in 1 year and after 250 iterations. She can start by "implementing her own session handling and make it secure". That sounds funny, right? But when I say "All you need to do is implement your own CSRF protection", it doesn't sound funny because that's what everyone is keep doing. However to me it's still wrong, just like a secure session implementation a secure CSRF protection implementation should be one of the responsibilities of the framework not the developer.

Security of the Language, Security of the Framework

There is no perfect framework, vulnerabilities identified in all frameworks just like vulnerabilities identified in all applications. However just like some applications security track of some frameworks are much better. ASP.NET Request Validation Bypass, PHP Zend_Hash_Del_Key_or_index overwrite issues, Struts Validation Bypass are good examples of these vulnerabilities.

PHP is a perfect example of this. PHP itself has so many vulnerabilities (such as Zend_Hash_Del_Key_Or_Index Vulnerability, month of PHP bugs and others) even when the developer codes everything securely it still can be vulnerable. I don't even mention the terrible design issues such as GLOBALS Overwrite problems, magic quotes, providing not one but several different functions to do the very same job.

If you set a directory as protected and if your framework can't protect you because the attacker used a different HTTP Method then that's not the developer's fault, it's framework's fault.

That's why framework matters, even when you build the most solid application when your framework is weak, there is a higher possibility of getting owned.

Can framework handle unicode characters correctly? Do functions unexpectedly effected by null bytes? Does it spill out all the details when you send one character in the cookie?

All of these are problems of the framework. If you are wise enough you should choose a framework with a good track of security.

Framework Specific Issues

You won't see much RFI (Remote File Inclusion) in ASP applications because there is no easy way to introduce such vulnerability in ASP. You can't see code execution problem ( such as eval() ) in ASP.NET applications because there is no easy way to do it however in Classical ASP you have this problem. Heck, in PHP application even preg_replace can evaluate code with /e modifier. And yes that happens in real world application, PHPBB was vulnerable to this.

Framework specific problems matter.

Secure by Default - Design of the Framework

Some part of some frameworks designed in a "secure by default" way. For example it's quite rare to see HTTP Header Injection (CRLF/HTTP Response Splitting) problems in ASP.NET because by default all related .NET functions will not accept new lines. Therefore as a developer you should push your limits to introduce this vulnerability, yet if you are stupid enough you'll succeed. Developer's stupidity is something that a framework can't fix. Sorry about that.

Stupid features of a framework can hurt as well. For example Magic Quotes in PHP. Loads of application burned by that, it's such a mess. It shouldn't have been there in the first place that's why finally they decided to deprecate it.

Inbuilt Security Features

I think everyone knows that rolling your own crypto is idiotic but somehow it's OK for people roll their own CSRF protection, SQL Injection filter, XSS protection library etc. Yet all penetration testers observe that these developers keep failing miserably. That's why projects like ESAPI should be employed by more developers.

When it comes to frameworks some of the questions we need to ask;

  • Does it support parameterized SQL Queries?
  • Does it provide a way to separate data and the HTML and carry out the required encoding based on the output location?
  • Does it provide a secure session implementation?
  • Does it provide a secure authentication mechanism?
  • Does it provide a secure way to execute OS commands? (separating parameters and the executable to avoid injections just like parameterized SQL Queries)
  • Does it provide secure storage options? Path normalization functions?
  • Does it provide a way to avoid email header injections?
  • Is there any function which can protect against new line injections to write safe logs without worrying about new lines?
  • Is there any inbuilt feature to apply whitelisting on inputs?

I can go on but you got the point. Unfortunately there is no framework which does all but some frameworks are clearly better.

Take a look at Secure Web Application Framework Manifesto for many other ideas and see what frameworks should bring to the table in means of security by default and as inbuilt security features.

Also ASP.NET's built-in membership feature is also is the right direction and more frameworks should do the same.

Documentation, Culture, Sample Code etc.

Documentation and culture around a framework also quite important. Take a look at Tomcat JSP examples and IIS 6 ASP examples. All of them have several serious vulnerabilities out of the box. Like it's not enough to write vulnerable applications as samples they even deployed them by default so your environment can be vulnerable by default!

For example many examples in .NET documentation uses parameterized SQL Queries which is very good thing although .NET documentation got so many other flaws and terrible code snippets in many places. Generally most of the vendors are terrible about documentation and providing secure code snippets. Some of these sample codes stripped from security checks as they stripped from error checks to increase clarity in the example. I still not a good enough excuse.

Finally when it comes to the culture there are some factors such as what are the best practices among developers. For example you can see more OS Command Injections in Perl applications than potentially any other framework because that's how Perl guys roll. Pass it to an OS command, parse the output and spill it out to the screen. This is a quite rare practice in many other frameworks*.

Required Time, Effort and Knowledge for a Secure Application

All of these discussed factors affect the required time, effort and required security knowledge to develop a secure application.

If framework provides built-in security for CSRF with one line of code than it decreases the complexity of the application, required development and testing time. Finally developers don't need to be a security expert to implement such a check.

Do you really think a junior developer would know that it's possible to do CSRF against a web service. Believe me they don't. Also they don't know that you can do XSS in CSS, they don't know if content-type is "plain/text" XSS is still possible in IE, they don't know that they need to mark cookies as secure, they don't know you can bypass many *clever* XSS protections by using XSS Tunnel or BeeF, they know jack-shit about security especially when it comes to corner cases.

They don't know and they will never know many of these and I don't expect them to know** , that's why framework should care of this stuff and that's why framework matters.

Framework Matters

Now please don't tell me that framework doesn't matter because it bloody does. However the problem is; there is no perfect framework and there won't be anytime soon although it's getting there. Right now you can still choose a better framework instead of choosing arbitrarily by claiming that all of them are same anyway.

My examples were mostly about PHP, ASP and ASP.NET because those are the frameworks that I'm pretty familiar with. You can think of many other frameworks such as Ruby on Rails, Struts or CppCMS and observe similar benefits or framework specific problems.

* Although I need to note that due to many other configuration requirements that task might not be that easy in some frameworks hence not that popular. For example .NET might require several permissions to properly run an executable from an ASP.NET script.

** OK, they need to know about "Secure Cookies" but funny enough many of them still don't. So why not mark all cookies set over SSL as secure and when their code doesn't work they can fix(!) it, at least this way it'll be secure by default and maybe developer will ask herself "What the hell is a secure cookie? and why would I need it?"



Süreç mi Sonuç mu? @ 08-02-2012 16:06

Geçen gün Timecrimes - Los cronocrímenes i izledim. Film boyunca eğlenceli bir süreç var, süreç devam ediyor, ediyor, ediyor ve film hiç bir sonuç olmadan aynı Lost’ un bölüm sonu gibi havadaki soruları da cevaplamadan bitiyor. Bu noktayı görünce ben tabii ki ağzımda sonu hiç bir yere bağlanmayan eski Türk filmi tadı kalmış şekilde küfrediyorum.

Timecrimes’ta benim için diğer sofistike olma taklidi yapan filmler arasında yerini alıyor. Başka neler var o listede? Cube serisi başı çekiyor o kesin ama Matrix’te listenin dibinde bir yerlerde, arada da onlarca adını bile hatırlayamadığım film var. Hani şu altında bir çok anlam varmış gibi yapan ama aslında yönetmeninin bile ne halt olduğunu bilmediği filmler. Zaten bu filmler de Deus ex machina da vardır hep, bir şey vardır ama o bir şey hep şeydir çünkü yazar ve yönetmen onu tam anlamıyla sıkmıştır (TDK daki 8. anlamında sıkmak).

Şimdi kimi der ki filmin sonu değil süreci önemli ben film boyunca eğlendim, kimi de derki aynı bir fıkra gibi bir çok filmin süreci sadece son andaki espriye hazırlıktır eğer son anda bir espri yoksa o süreç sadece adama batar.

Şimdiye kadar okuduklarınızdan anlamışsınızdır ki benim sanatsal film kültürüm düşüktür. Elephant gibi “sanat filmlerini“ izlemem hasbel kader izlediğimde de sevmem. Buradaki teori bir çok şeye uygulanabiliyor, bir şey tüketirken süreçmi yoksa ağızda kalan tat mı önemli diye.

Hmmm ilginç bu blog da bir çok gıcık olduğum film gibi hiç bir sonuca ulaşmadı…



0 ve 1 @ 08-02-2012 16:06

Mükemmeliyetçilik hakkında çok konuştum daha fazla konuşmayı planlamıyordum ama orada bahsetmediğim çok önemli bir konu daha var.

Bir sorunu çözerken, ya da bir işi yaparken genelde programcılar işi ya yapabilir ya da yapamaz, arası yoktur, en azından genelde olmadığını düşünürler. Eric Sink bu sendroma Binary Thinking adını vermiş.

Bu mükemmeliyetçilik ile bire bir ilgili bir konu, anlaşılması gereken hemen hemen her çözümün üç şekilde sonuçlandırılabilmesi:

  1. Tam bir çözüm – 1
  2. Çözememek – 0
  3. Yeterli Çözüm

Mesela Google arama motoru olayını çözmedi ama yeterli kadarını çözdü, bundan sonrası düzenli bir şekilde geliştirme aşamasında. Aynı şekilde kullanıcılarınızın %90'ını tatmin edebilecek ya da %90 durumda iyi çalışacak bir çözüme ulaştıysanız kalan %10'u çözmek eğer zorsa çözmeyebilir ve çözmeden de neredeyse aynı verimi alabilirsiniz.

Bu teknik ve teknik olmayan alanlarda düzenli şekilde karşımıza çıkan bir durum, üçüncü seçeneğin orada olduğunu bilmek lazım. (ek olarak bakınız "good enough software")



Açık Kaynak Kod vs. Ticari Yazılım @ 08-02-2012 16:06

Herşeyden önce 317 fanboy bana “Özgür Yazılım, Açık kaynak kod’ dan sen ne anlarsın? Höttörö ve töttörö” demeden önce benim bir sürü GPL, LGPL, WTFPL kodumun piyasada bulunduğunu söyleyeyim. Aynı zamanda ticari yazılımla da uğraşıyorum. Dolayısıyla çitin iki tarafında da bulunmaktayım. Bu hala işin felsefesinden anladığımı kanıtlamıyor tabii ki sadece gıcıklığına bu yazıyı yazmadığımı söylemek istiyorum.

Artık gelen yorumlardan o kadar korkmaya başladım ki her yazının başına böyle bir şey yazma gereği duyuyorum…

Özellikle son zamanlarda açık kaynak kod projelerinin destek ve geliştirme ekipleri dikkatimi çekmeye başladı, klasik senaryo:

Kullanım hatası yüzünden yazılım çalışmaz ve kullanıcı bunu geliştiricilere/support’ a sorar:

  • Ticari Yazılım:
    ”O sistemin doğru çalışması için parametrelere –X i de eklemeniz lazım.”

    Daha sonra da oturup dizaynda nasıl bir değişiklik yaparsak insanlar –X eklemeleri gerektiğini doğal olarak farkederler diye düşünürler. Ya da –X i eklemeyince hata veren yerlere neden ve nasıl –X eklemeleri gerektiğine dair bir mesaj eklerler.
  • Beleş Yazılım (açık, özgür, parasız vs.)
    ”RTFM kardeşim, –X i eklemezsen o çalışmaz, kaç defa yazdık burada.”

Aynı süreç bilinen bugları raporlama da oluşur. İstisna yazılımlar iki kategoride de var ama bu pattern o kadar yaygın ve rahatsız edici ki farketmemek mümkün değil.



Takım Arkadaşı Arıyoruz @ 08-02-2012 16:06

Başvuran ve ilgilenen herkese teşekkürler aradığımız arkadaşı bulduk, Henüz başvuranlara email’ları gönderemedim umarım bu hafta içerisinde onu da göndereceğim.

 

Netsparker’ ın geliştirme ekibine katılacak yeni bir arkadaş arıyoruz, bu arkadaş yoğun bir şekilde benimle birlikte çalışacağından dolayı ilanı direk buraya yazdım.

Netsparker' ın geliştirme ekibinde bizimle birlikte çalışacak:

  • Web güvenliği konusunda kendisini geliştirmek isteyen,
  • Evinden (Home Office) çalışacak
  • Part-time (haftanın belli günleri ya da belli saatleri)
  • Stajyer, öğrenci, kariyerine yeni başlayan ya da güvenlik sektörüne geçmek isteyen

bir arkadaş aramaktayız. Maaş dolgun olmayacaktır.

İş Tanımı

  • Netsparker' ın Q/A testlerini gerçekleştirmede yardım edecek
  • Güvenlik açıklarını bulup bulmaması konusunda analizler yapacak (bu konuda gerekli eğitimi biz vereceğiz)
  • Q/A ile alakalı bir dizi başka iş yapacak

Gereksinimler

  • İyi derecede teknik bilgi

Olsa güzel olurlar

  • İngilizce (özellikle okuma)
  • Web ve Yazılım geliştirme bilgisi (hangi dil olduğu önemli değil)
  • Web güvenliği bilgisi

İletişim

CV ve bir giriş yazısını şu email adresine atabilirsiniz : ferruh-at-mavituna.com

Email' ın konu başlığı [CV] AD SOYAD şeklinde olmalı. CV’ lere eğer varsa referans eklemeniz çok işe yarayacaktır.

 

Alım ve iş görüşmelerine CV’ ler gelir gelmez başlayacağız.



Karar @ 08-02-2012 16:06

Detaylara inmeden şu konuda anlaşalım: "Yanlış karar almak, kararsızlıktan daha iyidir". 10 senenin ardından diye kısa bir yazı yazmıştım aynı temada devam edeyim.

Uzun süre bulunduğum projelerde bir çok teknik veya teknik olmayan çıkan ürünü etkileyecek özellikler, dokümantasyon, kodlama vs. ile ilgili tartışmaya girdim, saatlerce ince detaylar üzerinde konuştuk, en iyi kararları vermeye çalıştık. Ancak sonraları fark ettim ki aslında kimsenin umurunda olmadığı saçma sapan şeyler üzerine saatlerce efor harcamış, tartışmışız. Eğer eşşek* kadar bir firmaysanız o zaman böyle saçma işler ile uğraşıp 8 kişi bir tane buton tasarlayabilirsiniz o da muhtemelen bir şeye benzemez ama küçük bir firma veya tek kişilik SWAT ekibiyseniz vaktinizi harcayacak daha iyi yerleriniz var.

Yanlış anlaşılmasın genelde birlikte çalıştığınız kişi ürün geliştirme hakkındaki kararlarda ateşli tartışmalara giriyorsa bu genelde iyi bir şeydir. Gerçekten yaptığı şeyi umursuyor, yaptıktan sonra gururla onu herkese gösterebilmek istiyordur, aksi takdirde "salla gitsin" der ve uğraşmazdı.

Bu yazıyı çok daha uzun yazmayı planlıyordum ama sanırım şunu yazmak yetecek:

"Önemli olmayan konularda vaktinizi harcamayın, kararı ertelemeyin, bir karara varın ve yapın. Bu tip kararların %99.99 u daha sonradan değiştirilebilir."

*eşek kadar değil eşşek kadar yani çok büyük



10 Senenin Ardından @ 08-02-2012 16:06

Bilişim sektöründeki iş hayatım 10 seneyi geçti, hala Küçükyalı’ da küçük ve yer yer çiğ köfte yapılan bir ofiste B2B sitesi yazmaya çalıştığımızı, dotmatrix yazıcılardan web monkey makaleleri bastırdığımı, okula giderken bu makaleleri okuduğumu, her defterime başka bir internet projesinin dizaynını, planını yaptığımı hatırlıyorum.

Güzel günlerdi, bilgiye açtım, materyal yoktu, etrafta anlayan adam yoktu, gelen herşeyi tüketiyordum, Amerika’ya iş yapıp karşılığında Amazon’dan kitaplar aldırıyor, sadece internete erişebilmek için ofiste kalıp, klavye başında uyuya kalıyordum. Gençtim ve salaktım ama güzel günlerdi.

Bu 10 sene boyunca düzenli olarak aklıma gelen tek şey eskiden ne kadar salak olduğumdur, sanırım ne kadar çok bilmediğimi düzenli bir şekilde öğrenmeye devam ettikçe seneler bilgi ekliyor gibi değilde eksiltiyor gibi hissettirmeye başladı. İkinci önemli husus ise bilginin ne kadar geçici olduğu, ilgilenmediğim konuların teknik detayları birer birer aklımdan silindi ve elimde sadece temelleri kaldı, hatta o kalanlardan bazılarının temelleri bile değişti.

Tarih bir şeyi kanıtladı ki doğru insanların nasihatlerini dinlemek ve deneyimlerinden faydalanmak önemli bir şey. Ben şahsen gereğinden daha çok deneme-yanılma yaptığıma inanıyorum, bunun iki nedeni var, 1)dinleyecek veya “mentor” diyebileceğimiz kişilerin piyasada, etrafımda olmaması, 2) Salak gençlik ateşinin verdiği herşeyi biliyorum havası.

Yeni nesil yeni bir internet ile karşı karşıya, herkes yazıyor, çiziyor her ne kadar herkes yazıyor olsa da takip edecek deneyimlerinden faydalanacak her konuda binlerce insan var. Sağolsunlar bizleri kendi yaptıkları hataları yapmaktan kurtarıyorlar.

Son olarak bulunduğunuz yerlerin kültürü çok önemli, doğru iş yerinde, doğru ekiple güzel kültürlerde bulunma Fikir Üretme ve Etki Tepki konusundaki gibi doğru adrese yönelmeyi sağlıyor, bugüne kadar farklı yerlerde teknik olarak kayda değer bir şey öğrenmemişimdir belki ama teknik olarak herşeyi değiştiren farklı kültürleri, çalışma yöntemlerini öğrendim, değişik karakterler ile tanıştım. Bunun yerini hiç bir şey tutamaz.

Muhtemelen on sene sonra tekrar bu yazıyı okuyup gülecek ve ne kadar salakmışım diyeceğim…



Ücretsiz Web Güvenliği Tarayıcısı @ 08-02-2012 16:06

Netsparker’ ın ücretsiz Community Edition’ ını yayınlamış bulunmaktayız,

İlerleyen günlerde fırsat bulunca daha detaylı bir blog post daha yazacağım.



Bir sonraki bariz adım @ 08-02-2012 16:06

Sanırım ilk defa bir kitapta okumuştum, yeni bir ürünün yeni bir özelliğinden bahsediyordu geliştiricisi ve ön plana çıkan bir özellik için "It was the next obvious step" demişti. Çok basit bir cümle olmasına rağmen bende bir ışığın yanmasına neden oldu. Bir sonraki bariz adım. Çünkü elimizdeki süreçlerin bir çoğu belli, hiç bir şey bir gecede çıkmıyor, genelde beslendiğimiz kaynak aynı.

O zaman fark ettim ki önemli olan on sene sonrasını tahmin edebilmek değil "bir sonraki bariz iş" i görebilmek ve diğer görebilenlerden önce yapabilmek.

Gene bu yüzden bana biri bilmediği bir konuda proje getirince ya da bahsedince pek dikkate almıyorum, çünkü o kişinin o sektör hakkında hiç bir fikri yok, her ne kadar bu ona daha serbest bir düşünce şansı tanısa da %90 o işi beceremeyecek. O sektörün bir sonraki adımlarını takip etmesi mümkün değil, çünkü önceki adımlar hakkında hiç bir fikri yok. Gene aynı nedenlerden dolayı 2000' li yıllarda bilişime başlamış herkese şiddetle Accidental Empires kitabını (ya da belgeselini) öneririm, bu sayede bu sektörün nereden, nereye, kimler ile ve nasıl olaylarla geliştiğini görebilirler.

Aynı borsada hisse senedi tanımak gibi, bir hisse senedinin ne kadar tanırsanız, geçmişini ne kadar biliyorsanız başına gelebilecekleri daha rahat tahmin edebilirsiniz. Mesela geçen senenin başında krizlerden sonra sağlam bankaların hisselerinin uzun bir süre yükselişte olacağı barizdi çünkü ya batacaklardı ya da çıkacaklardı, nitekim aylarca tüm banka hisseleri yükseldi.

Bunun yanında "Black Swan" teorisi her zaman orada olacak ama açıkçası bu teori hiç bir şeyi değiştirmiyor, aynı yarın uyandığınızda evinize bir uzay gemisi girmesinin umurunuzda olmadığı ya da buna karşı hazırlık yapma gereği duymadığınız gibi.

Sektörün her noktasına baktığınızda bir sonraki bariz adımı çok rahat görebilirsiniz, YCombinator' un yeni 26 startup' ına bir göz atın kaç tanesi gerçekten orijinal, hemen hemen hiç biri, hepsi bir sonraki bariz adım...



Yapılacaklar Listesi (todo list) Sanatı @ 08-02-2012 16:06

Umarım zaten hepiniz neden bir yapılacaklar listesi tutmanız gerektiğini biliyorsunuzdur, özetlersek:

  • Ne yaptığınızı bilmek
  • Ne yapacağınızı bilmek

ama en önemlisi:

  • Binlerce şeyi aklınızda tutmak yerine bir yere not alıp beyninizden silmek

Bu son maddenin önemini yıllarca anlamamıştım, yeni yeni anlıyorum. Eğer yapılacak bir işi bir yere not almadıysanız o iş her zaman aklınızda kalacak, aynı çözemediğiniz bir bilmece ya da nedenini bulamadığınız bir bug gibi. Dolayısıyla yaptığınız işe odaklanabilmek için  o an yapmadığınız her şeyi, aklınızdan çıkarmanız lazım. Bunun da en pratik yolu bir yapılacaklar listesi tutmak.

Yapılacak listesi tutmak

  • Sistem belli olmalı ve güvenlir olmalı
    Hep aynı sistemi kullanın, küçük bir defter, todo list, tada list, remember the milk, sekreteriniz vs. Ne olduğunun önemi yok ama güvenilir ve pratik olmalı.

  • Listenizi açıklayıcı bir şekilde yazın
    Asla
    ve asla anahtar kelimeler yazıp ne de olsa sonra hatırlarım demeyin, zaten bu işin amacı aklınızdan bu konuyu çıkarmak. Aynı kod yazarken başka bir objeye verdiğiniz referansı silmezseniz memory leak olacağı gibi beyninize de o iş ile ilgili anahtar kelimelerden referanslar kurarsanız o iş aklınızdan tamamen çıkmayacak. Ya da aklınızdan çıkacak ve o işe tekrar döndüğünüzde o işin ne olduğunu hatırlamayacaksınız.

  • Adımlı detaylandırma
    Özellikle teknik konularda bazen listeye yeni bir madde eklerken çok fazla detaylara kaymak mümkün olabiliyor. Mesela “Blog’ a CAPTCHA ekle” maddesinin altında teknik olarak nasıl bir CAPTCHA kullanacağınızı dokümante etmenize ya da düşünmenize gerek yok. Bunu o maddeye gelince detaylandırabilirsiniz. Özetle önce ana notu alın, ondan sonra o işe geldiğinizde elinizdeki işi maksimum 2 saatlik yeni parçalara bölün. Eğer bir parça iki saati geçiyorsa muhtemelen gereğinden büyük bir parçadır demek ve onu da küçük parçalara bölmelisiniz. Bu yüzden ben ağaç yapısı ile girdi desteği olmayan bir todo list yazılımı kullanamıyorum, bence bu çok önemli.

    Çok büyük parçaları yapmaya çalışmak kötü sonuçlar verecektir. Mesela “Yeni CMS sistemi yaz” gibi bir madde tamamen işe yaramayan bir maddedir. Çünkü bu işin altında ne yapacağınız belli değil, ama bunu 2 saatlik işlere bölerseniz tam olarka ne yaptığınızı biliyor olacaksınız. Mesela “Database’ i tasarla”, “Yeni üye kayıt sayfasını yaz” vs.

  • Revize edin
    Düzenli bir şekilde listenizi gözden geçirin, bazı şeyleri hali hazırda yapmış olabilirsiniz, hemen listeden silin. Bazı şeyler artık gereksiz olabilir, hemen listeden silin vs. Ne kadar güncel olursa o kadar iyi çünkü bu sizin sisteminize güveninizi arttıracak bu da beyninizi rahatlatacak.

  • Önem  Sırası
    Yapılacaklar işler listenizde her bir işin ne kadar önemli olduğunu bilmeniz gerekli. Eğer işlerin önemi belli değilse planlama yapamazsınız ya da “Yeni üye kayıt sayfası“ nı bitirmeden “Google Maps API ile twitter’ ı bağlayıp, iPhone’ dan site hakkında twit gönderen kişilerin pie chart’ larının gösterilmesi“ işini yapıyor olursunuz. Ben bunu çok yaptım, klasik hata. Teknik konularda bu önem oranı 1-10 arası olabilir, genelde 1-3 arası o kadar iyi çalışmayabiliyor.
  • Kaynama yapmayın
    Bazen çalışırken aklınıza bir şey gelecektir eğer çalıştığınız konu ile bire bir alakalı önemli bir şey değilse onu yapılacaklar listenize alın ve daha sonradan o işe geçin. Direk o işe zıplamayın ya da önemsiz işler için zaten bu işi yapıyorum onu da aradan çıkartayım diye düşünmeyin.

Çalışırken şu 2 soruya cevap veriyor olabilmeniz lazım:

  1. Şu an tam olarak ne yapıyorsun ve niye? Neyin parçası, hangi işin bitmesine nasıl yardımcı olacak?
    “Kod yazıyorum” ya da “CMS yazıyorum” geçerli bir cevap değil, Doğru cevap “CMS’ i bitirmem için gerekli olan yeni kullanıcı kaydı sayfasının girdilerinin client-side kontrolü için JavaScript yazıyorum” olmalıdır.

  2. Bundan sonraki adımlar neler?


Odak @ 08-02-2012 16:06

Senelerce bir çok farklı işte çalışıp küçüklü büyüklü bir çok proje yaptıktan sonra fark ettim ki bir projenin en büyük düşmanı içimizdeki diğer projeler. Ne zaman bir işe başlasam daha henüz başındayken başka projeler gelip odağımı çalıyor.

Başka projelerin odağı çalması tamamen motivasyon ile alakalı. Eğer elinizdeki iş henüz yayınlanmamışsa, yayınlanmışsa ama henüz yeterince kişi ilgilenmediyse, beklediğinizi bulamadıysanız başka projelerin odağınızı çalması çok daha basit hale geliyor.

Bunu çözmek için bir kaç yol:

  • Projelerin ayağa kalkmasının belli bir vakit süreceğiniz kabullenin. Bu vaktin genelde sandığınızdan daha fazla süreceğini de bilin.
  • Aklınıza gelen tüm diğer fikirlere şiddetle karşı çıkın
    • Bu fikirleri bir yere not alıp, unutabilirsiniz
    • Bu fikirleri blog, twitter gibi yerlerde açık açık dokümante edip kurtulabilirsiniz

Her zaman "süper" fikirler aklınıza gelecek, bunu durdurmak mümkün değil ama o fikirleri kovalamamak mümkün.

İyice Odaklanın

Elinizdeki işe odaklanmak için diğer tüm gereksiz projelerden, işlerden de kurtulmanız lazım. Vaktinizi veya aklınızı alan gereksiz tüm projelerinizi ya elden çıkartın ya da çizgi çekin.

Elden çıkart: Sat, kapat.
Çizgi Çek: Bir daha dokunma, güncelleme, tanıma.

Nasıl birden çok şeyi aynı anda yapmaktan iyi verim alınamıyorsa, birden çok projeyi aynı anda yapmak da işe yaramıyor.



Nasıl soru sorulur ve cevap alınır @ 08-02-2012 16:06

Son günlerdeki öğreten adam temama yıllardır yazmak isteyip bir türlü yazamadığım bu yazı ile devam ediyorum...

Blog yazmaya başladığım ilk günden bu yana düzenli soru e-mail' ları alıyorum. "Hangi antivirüs' ü alayım?" dan tut "Erkek arkadaşım bilgisayarı benden çok daha fazla seviyor ne yapayım?" a kadar. Ciddiyim ikinci soru ve farklı varyasyonlarını bir kaç defa gördüm.

Kişisel sorulardan hiç bahsetmiyorum bile...

Henüz daha toyken hemen hemen tüm bu emaillara cevap veriyordum. Daha sonradan fark ettim ki bu emailların yarısı cevabı bile hak etmiyor. Ben de bizzat tanımadığım kişilere email ile soru soruyorum, bunların bazıları çok meşgul ya da günde 100 tane email alan kişiler. Kitap yazarları, teknik adamlar, blog yazarları vs.

Bu soruları sorarken şu kuralları izlemeye çalışıyorum:

Altın Kural
Soru sorduğum kişi bana cevap vermek zorunda değil.

Kural 1
Kendi yapabileceğim bir şeyi başkasından istemem. Mesela Google' da arama yapmak gibi!

Kural 2
Sorduğum sorunun cevabını verecek kişinin eforunu minimuma indirmem gerekiyor.

  • Soru hakkında kişinin neleri bilmesi gerektiğini düşünüp bunların hepsini daha o istemeden ilk emailda göndermeye çalışırım. Dolayısıyla sorduğum kişi bana dönüp 10 soru daha sormak zorunda kalmaz.
  • Emailı mümkün oldukça kısa tutmaya çalışırım. Kısa yazı yazmak kolay bir iş değil, dolayısıyla göndermeden sorunun üzerinden defalarca geçip yeterince kısa mı?, anlatmak istediğimi en efektif şekilde anlatabildim mi? diye düşünürüm.
  • Emailları adam gibi dil bilgisi ile yazmaya çalışırım. Yazım kuralları olabildiğince doğru olmalı. En azından bir "spell checker" kullanalım değil mi? Eğer ben yazdığım emaila 5 dakika harcayamıyorsam cevap verecek kişi neden 20 dk. uğraşıp cevap versin ki?

Kural 3
Kibar ol. Bkz: Altın Kural

Tanımadığınız insanlara tanımadığınız insanlar gibi yaklaşın. Askerde birlikte bot bağlamış gibi değil. Burada herkesin tipi farklı tabii ki, benim blog üslubumdan dolayı genelde aldığım emaillarda insanlar senli-benli hitap ediyorlar ki bence hiç bir sorun yok, hatta siz diye gelen emaillar biraz tuhafıma gidiyor ama bu durum herkes için geçerli olmayacaktır.

Buna rağmen daha kendinin kim olmadığını söylemeden, selam sabahsız emaillarda genelde anında siliniyorlar. Aradaki farkı iyi bilmek lazım.

Kural 4
Karşıdaki kişinin konusu ile alakalı bir şey sormaya çalışırım.

Mesela bana Java konusunda teknik sorular geliyor. Acaba bugüne kadar Java' yı küfretmek dışında cümle içerisinde kullandığımı kaç defa görmüşler ki?

Kural 5
Elimden gelen her şeyi yapmama rağmen kişi cevap vermezse kızmam. Dolayısıyla emailları yazarken varsayılan olarak cevap almayacağımı düşünürüm, cevabın gelmesi beni sevindirir. Bkz: Altın Kural

Altın Kural, altın kural, altın kural.... Karşıdaki kişi bana cevap verme yükümlülüğünde değil bana cevap veriyorsa bu büyük bir kıyaktır. Bunu unutmadan yazdıktan sonra gönül rahatlığı ile bir yabancıya email atıp soru sorabilirsiniz.



Flash Uygulamalarının Güvenliği @ 08-02-2012 16:06

2008’ de RIATalks’ da flash güvenliği ve web 2.0 uygulamalarının güvenliği üzerine konuşmuştum.

Sanırım daha önce kimsenin pratikte bunu görmemiş olmasından dolayı özellikle Flash sunumunda gösterdiğim Crossdomain.xml’ i exploit etme işini herkes çok beğendi. Bu sunumdan sonra özellikle bir çok güvenlikçi arkadaşım bunun kodunu istemişti, ben de kodları kaybettiğimden dolayı verememiştim. Bugün backup’ larım arasında buldum bu kodları. Kodlar, sunum ve sunumun videosu aşağıdaki gibi.

Video

 

 

Sunum

Kod Download

http://drop.io/ycek5is



Bilimsel Cevaplar @ 08-02-2012 16:06

Her zaman insanları okumak konusunda iyi olduğumu düşünmüşümdür ve bu hislerime güvenmediğimde başıma gelenlere bakarak sandığımdan daha da iyi olduğumu söyleyebilirim, ama zaten kendi hakkımızda ne biliyoruz ki?

Eğer birine Evet / Hayır noktasına gelebilecek bir soru sorarsanız iki farklı bilgiye dayalı iki farklı cevap gelme ihtimali var.

Mesela "Zafer evde mi?"

  • Evet, Zafer evde. Çünkü cevap veren kişi Zafer' i az önce evde gördü.
  • Hayır, Zafer evde değil. Çünkü cevap veren kişi Zafer' in evden çıktığını ve geri gelmediğini gördü.
  • Evet, Çünkü cevap veren kişi Zafer' in evde olduğunu tahmin ediyor, çünkü kendi çapında nedenleri var ama aslında Zafer' in evde olup olmadığını bilmiyor.
  • Evet, Çünkü cevap veren kişi Zafer' i gördüğünü zannediyor ama aslında hayal gördü, dolayısıyla tüm dürüstlüğüyle cevap veriyor ama aslında Zafer evde olmayabilir.

Genelde bir kişi cevabı malum yerinden atıyorsa bunu anlamak pek zor olmuyor, ki bu durumda ilk işim kanıt aramak oluyor "Zafer' i en son ne zaman gördün?" , "Eve kaçta geldi?" vs.

Örnek olarak basit bir konuyu seçtim, ben aynı diyalogu bir çok konuda yaşadım. Normal diyaloglarda insanların bunu yapmasına çok alışkınım, mesela saçma bir istatistik konusunda sanki kendileri 1000 kişi ile bizzat röportaj yapmış gibi konuşurlar. Kendilerine kaynak sorunca Hürriyet' i, amcalarının oğlu Muzaffer' i ve Wikipedia' yı gösterirler ama aslında konu hakkında sadece fikirleri vardır, buna rağmen cevapları her zaman kesindir.

Aynı komik diyalogu tarih kitaplarında da zaman zaman görülür "Padişah zötterö kendisine hastır oradan diye yeni çerinin ağlamasına kulak asmadan Mehmet ve Ahmet ile birlikte, zöttöre ağacında sallandırdı, çünkü Katerina onu gaza getirdi." Tarihçilere sorduğunuz da çok gülerler bunlara.

Açık konuşmak gerekirse bu tip kesinlikle bir şey aktaran ya da cevap veren insanların becerilerine hayranım, çünkü gerçekten bilmediğin bir konuda kesin konuşmak etkileyici bir yetenek ve iş dünyasında adam kafalamaya çok yarar, tabii ki karşında senin bunu attığını ya da gerçekten yeterli derecede bilmediğini anlayabilecek birisi yoksa. Bkz: fizzbuzz yazamayan programcı işe alan bir dünya firma.

Buna rağmen özellikle teknik konularda bunu yapmak feci bir hatadır. Ben birlikte kod yazdığım birine 10.000 elemanlık bir datayı "SortedList" te mi daha hızlı buluruz yoksa "List" te mi dediğimde kişinin cevabı ya "SortedList" ve "List" bilgisinin çok iyi olmasına dayanmalı ya da kendi bizzat bu işi denemiş ve benchmark' larını yapmış olmalı. Aksi takdirde "Bilmiyorum" ve "Emin değilim" dışında vereceği tüm yanıtlar faydadan çok zarara neden olacaktır.

Özetle tahmin ettiğiniz şeyler konusunda denemeden "Budur" ya da "Değildir" demeyin, ya da bunu söylerken çıkış datanızı belirtin. Benimle çalışmış olanlar bilirler genelde bir bilgi elime ulaşır ulaşmaz, bir sakatlık olduğunu hissedersem klasik sorularımdan biri şudur "Neye dayanarak?", bakalım boktan bir dayanak noktan mı var? Yoksa gerçekten söylediğini biliyor musun? Bazen söyleyen kişide bunu irdelememiş olabilir, normaldir, siz söyleyince düşünür o da hak verir.

İlginç bir şekilde bunun insanlar arasında inanılmaz yaygın bir davranış olduğunu gördüm, bizzat ailem, akrabalarım bir sürü arkadaşım hepsi bu şekilde ve şahsen beni deli ediyorlar. İlginç bir şekilde sanırım işin doğal bu. Eğer %50 üzerinde bir şeye inanıyorsan %100 biliyormuş gibi "Evet" veya "Hayır" deme hakkına sahipsin. Normal hayat üzerine bir uzmanlığım yok ama teknik konularda bunu yapıyorsanız ciddi sorunlar var demek.

Masanın söyleyen tarafındaysanız söylediklerinizi ve söyleyiş biçiminizi iki defa düşünmeye başlayın eğer dinleyen kısmındaysanız "all input is evil until proven otherwise" deyişindeki gibi gelen girdinin doğruluğunu onaylayın ve insanların tonundaki o emin olmama tınısını tanıma konusunda kendinizi geliştirin.

Bu aralar "öğreten adam" modunda yazmaya başladığımı fark ettim, buradaki her yazı benim naçizane deneyimlerimin çıktısıdır (doğru, yanlış, hatalı), ben kendi kişisel balonumdan yayın yapıyorum, öyle kabul edile.



Motivasyon @ 08-02-2012 16:06

Dün bir e-mail aldım, bir arkadaşımız şöyle bir soru sormuş:

"Kendini bu kadar nasıl motive ediyorsun?"

Her şeyden önce motivasyon insandan insana inanılmaz derecede değişen bir şey. Kimi insanı motive etmek için gaz vermeniz lazım, kimi insana ödül göstermeniz lazım, kimisine küfretmeniz, hırslandırmanız lazım vs. vs. Mesela çoğu insan baskı altında daha iyi çalışırken ben baskı altında genelde dökülürüm ve iş yapamam.

Sizi sizden iyi bilen biri yok. Bu konuda ilk iş kendinizi neyin tetiklediğini öğrenin, hayatınız boyunca kendinizle yaşadınız, herhalde daha önceden hangi faktörlerin sizde çalışma isteği uyandırdığını bulabilirsiniz.

Motivasyon bir kaç faktöre bağlı, benim gözümde 2 ana faktör var ve onları etkileyen 2 önemli parametre var:

Faktör I - Ödül

Mesela açık kaynak kodlu bir uygulama yazıyorsanız, 2-3 ödül olabilir:

 

Faktör II - İhtimal

Eğer size günde iki saat çalışarak bir sene içerisinde ciddi bir futbol takımında oynayabileceğiniz garantisini verebilseydim, siz de bu konuda ciddi derecede motive olurdunuz, çünkü ödül büyük, çalışma mantık dahilinde ve sonuç kesin.

Gerçek hayatta sonuç hiç bir zaman kesin olmuyor onun yerine ihtimaller üzerine konuşuyoruz. Mesela yukarıdaki örnekten devam edersek açık kaynak kodlu bir yazılım yazdığınızda eğer bir sene içerisinde toplam üç milyondan fazla kullanıcıya ulaşabileceğinizi bilseydiniz bu tip bir uygulama yazarken çok daha motive olurdunuz. Tabii ki ödül seçiminizin bu olduğunu varsayıyorum, eğer derdiniz para ise üç milyon kullanıcının yüz bininin paralı bir destek alacağını umuyor olacaktınız vs.

Olaya gel, geyiğe bağladın gene

Bunlar haricinde ödül' ü etkileyen ödülün size ne anlam ifade ettiği faktörü var. Mesela para size bir anlam ifade etmiyor olabilir ama ünlü olmak çok önemlidir gibi.

Son faktör de ödüle ulaşmak için gerekli efor. Bu kritik çünkü eğer beş sene boyunca günde on iki saat çalışınca başarılı olacağınızdan emin olsanız bile bunu yapmayabilirsiniz. O yüzden gerekli efor da kritik faktörlerden biri.

Psycho Folder

Mesela Psycho Folder isimli küçük yazılımım için benim motivasyonumu inceleyelim:

  • Ödül
    Kişisel bir işi çözmek. Bunu çözünce çok büyük bir şey kazanmayacağım. O yüzden ödülün büyüklüğü az.
  • Önem:
    Bunu çözmek hayatımda ciddi bir değişiklik sağlamayacak, günde bir saat tasarruf etmeyeceğim. Dolayısıyla ödülü çok da umurumda değil.
  • İhtimal
    Başarı ihtimalim çok yüksek, çünkü yapabileceğimden eminim. Ne kodlayacağımı biliyorum, dile hakimim, teknik olarak ne yapılması gerektiğini biliyorum. 
  • Efor:
    Çok düşük bir efor ile çıkabilecek bir iş.

Dolayısıyla Psycho Folder için motivasyonum vardı ama iki günde yayınlayıp bitirecek kadar. Artık üzerinde çalışmıyorum, çünkü bundan fazla efor sarf ettiğimde alacağım ödülü karşılamaz hale geliyor.

Aynı mantık üzerinde ilerleyince neden kendi işini yapmayan bir çok kişinin çalıştığı iş yerlerinde motive olamadığını hemen anlıyoruz.

Sonuç

Motivasyon tamamen yaptığınız iş ve faktörler ile ilgili, ben son zamanlarda hayatımda hiç olmadığım kadar motive olmuş durumdayım, çünkü üzerinde çalıştığım proje için yukarıdakilerden ihtimal, ödül ve önem ciddi bir şekilde yükselişte.

Son olarak not düşmek lazım insanın kariyerinde 15m2 ofislerde tek ödülü internet ve yazıcıyı kullanabilmek olduğu zamanları da oluyor, ve ilginç bir şekilde inanılmaz bir motivasyonda da olabiliyor, dolayısıyla kariyerin belli noktalarında iniş ve çıkışlar boyunca uzun vade planlara bakıp motive olmak lazım.

Soruya cevap vermedin?

Tüm yazıyı yazmama neden soru şuydu:

"Kendini bu kadar nasıl motive ediyorsun?"

Sevmediğin işi yapma

Her şeyden önce zevk almadığım işleri yapmıyorum, bu yüzden "Efor" faktörüm genelde düşük oluyor, çünkü yaptığımdan zaten zevk alıyorum.

Bazen sevmediğiniz işleri bir süre yapmak zorunda kalacaksınız bu kaçınılmaz, bunu bir adım olarak saymak lazım. Nedenleri maddi olabilir, kariyer gereksinimi olabilir vs. Sadece sevmediğiniz bu işi çok uzun yapmayacağınızdan ve bir planınız olduğundan emin olun.

İnsanları önemseme

Ben çok fazla insana fikir sorarım ama aldığım fikirleri kullanmadan veya onlara inanmadan çok iyi analiz eder ve sorgularım. Kimseden "X böyledir" gibi bir açıklamayı kanıt olmadan kabul etmeyin. İnsanlara neden diye sorduğunuzda bir çok kişinin neden sorusunu cevaplayamadığını ya da saçma bir nedenleri olduğunu göreceksiniz. Hatta bazen onlar nedenlerini söylerken söylediklerinin saçma olduğunu anlayacaklar. Çünkü yıllardır akıllarındaki o fikri tekrar sorgulama gereği duymamışlar.

Ben bir çok insanın aksine fikirlerini, planlarını ve hayallerini paylaşmayı seven ve bu konularda açık olan biriyim. Şahsen yaptığım bir çok kariyer seçiminde çok yakın çevrem harici bir çok insan bana inanmadı. Kimi açık açık söyledi, kiminin söylemesine bile gerek olmadı, belliydi.

Genelde yanıldılar, 6 ayda bir iş değiştirmek iyi bir fikirdi, 15m2 lik boktan bir ofiste çalışmak ve kariyerimin başında tüm şerefsizlerle tanışıp daha sonradan şerefsiz ve şerefli insanları 10 dk. içerisinde birbirinden ayırma yeteneğini kazanmak iyi oldu, o firmanın bana kazık atması insanların kişisel yüzleri ile iş hayatlarının farklı olduğunu öğretti, sadece "networking" olsun diye kişisel özelliklerini sevmediğim insanlar ile takılmamak, konuşmamak iyi bir fikirdi... vs.

Özetle insanların %90' ı salaklık bariyerinde, posizyonları, durumları ve popülerlikleri ne olursa olsun. İnsanlar her projenizde bok atacak, laf sokacak sizi demotive edecekler. O durumlarda bu insanların bariyerin diğer tarafında olduğunu kendinize hatırlatın, ben öyle yapıyorum. Bu bazılarına züppemsi gelebilir ama çivi çiviyi söker. Salak insanlara karşı ya züppe olmak ya da salak taklidi yapmak gerekiyor, ona göre duruşunuzu seçin.

Çok dertliymişim bu konuda çok uzattım, özetle:

  • Başkalarında bilgi ve fikir kabul edin ama onu analiz edebilecek tek kişi sizsiniz
  • İnsanların genelde salak olduğunu unutmayın
  • Bir çok büyük ve iyi fikre bir çok insanın kafasının basmaması doğal bir şey, ne kadar zeki olurlarsa olsun, aynı şeyi göremiyor olabilirler. Bazı fikirlerin olgunlaşması için gerekli aynı şeylerden beslenmek lazım.
  • Son olarak "kalın kafalı" olmayın bazen gerçekten de haklı olabilirler, dolayısıyla insanlar genelde salak diye subjektifliği kaybetmenin bir anlamı yok.

Hedefleri büyük tut

Benim her zaman adım adım hedeflerim vardır, çok kesin şeyler değil ama kafamda büyük bir planın olması en dandik noktalarda, kısa vade ödüllerinin çok kötü olduğu zamanlarda bile devam etmemi sağlıyor.

JFRI - "Just Fuckin' Release It"

JDI ve JFDI versiyonlarından sonra bu da benim versiyonum JFRI. Bir şey yapıyorsanız ne olursa olsun onu olabildiğince hızlı şekilde yayınlayın. Kapalı bir grupta yayın yapıyor olabilirsiniz ya da tüm dünyaya açabilirsinizö önemli değil ama yaptığınız işi yayınlamak ciddi bir şekilde motivasyonunuzu arttıracaktır.

Bu da benim düzenli olarak yaptığım şeylerden biri, bence "Release Often Release Early" motto' sunun es geçilen en önemli avantajlardan biri budur. Hatta bir çok kişi motive olabilmek için projelerini bloglarında tarih ve detayları ile yazıyorlar. Bu sayede "herkese rezil olma korkusu" onları motive ediyor. Bu benim motivasyon kriterlerimden biri değil "bkz. insanları önemseme başlığı" ama sizin için işe yarayacaksa neden olmasın, kullanılabilir.

Özetle yaptığım işleri en kısa sürede yayınlamaya çalışıyorum.

Felsefe

Son olarak felsefik tipler için ödül konsepti çok havada kalacaktır, çünkü insan ödülü takip ederken hızlı şekilde "Hayatın amacı nedir?" noktasına ulaşıyor. Balıkçı kasabası adamıysanız profesyonel anlamda hemen hemen hiç bir halttan kolayca motive olamazsınız, çünkü ödül' e verdiğiniz önem sıfır olacak. O zaman esas ödülü düşünün ve hayatınızdaki öncelikleri ona göre belirleyip doğru şeylere motive olun.



Mükemmellik @ 08-02-2012 16:06

Sene 1998, Duke Nukem’ in patladığı seneden bir sene sonra. 3D Realms Duke Nukem Forever’ ı duyurmuş ve E3’ de Quake II oyun motoru ile geliştirilmiş ve bir çok kısmı bitmiş olan oyunun demosunu yapmış.

Unreal oyun motoru bu dönemde çıkıyor ve Quake oyun motorundan daha gerçekçi, daha güzel grafikler sağlıyor. Bu demonun hemen ardından bir toplantıda programcının biri ”Unreal’ a geçsek nasıl olur?” diyor. Duke Nukem’ in başarısını Duke Nukem Forever ile tekrar yakalamak isteyen Broussard bu fikre katılıyor.

10 sene sonra 3D Realms hala Duke Nukem Forever’ ı yayınlayamıyor, oyunu durduyor, herkes işten çıkartılıyor. 3D Realms hala yayıncılarına karşı milyonlarca dolarlık bir dava ile uğraşmakta.

Bana Hayatınızı Değiştirecek 62 Öneri yazısı konusunda bir çok kişi neden ”Mükemmeliyetçi olmayın” dediğimi sormuştu, sanırım bu güzel bir cevap. (Duke Nukem konunun bu kısmını ben de Wired USA Ocak’ dan okuyup, yeni öğrendim.)



Hayat Nasıl Gidiyor… @ 08-02-2012 16:06

Soran olmadı ama ben söyleyeyim…

Bu aralar yeni şeyler öğrenmeye çalışıyorum. Bunların başında "pazarlama" geliyor. Bu konuda kazmayım hala da aynı şekilde devam ediyorum, bu benim için gerçekten sıkıcı bir iş. İnsan ilişkileri ile aram bir noktaya kadar iyi ama onun dışındaki konular gerçekten sıkıcı… Neyse bu işi daha uzman birine devredene kadar cezamı çekeceğim galiba.

Software Project Survival Guide (Pro -- Best Practices)

Organik gelişmiş bir yazılımı ticari hayata sokmanın etkisiyle gelmiş geçmiş en iyi programlama kitabı olan Code Complete’ in yazarı Steve McConnell’ ın Software Project Survival Guide’ ı okumaya başladım. Biraz eski, bazı şeyler benim uğraştığım projelerle ve yapılarla tutmuyor ama çok ilginç bilgiler var. Steve’ in en sevdiğim yanlarından biri çok fazla gerçek data ile anlattıklarını destekliyor olması. Yani bazıları gibi oturduğu yerden üretmiyor ya da kendilerinin başından geçen bir olaydan yola çıkılarak olayı genelleştirip sonuçlara varmıyor.

Steve’ in adam gibi blog yazmaması ve artık bir “iş adamı” olması bizim için büyük kayıp. Eğer yazılım işi ile uğraşan her kişi bir defa Code Complete’ i okusa ve uygulasaydı muhtemelen dünyadaki yazılımın kalitesi %15 ya da daha fazla yükselme gösterirdi. Neyse özetle Code Complete güzel bir kitap. Steve hakkında son bir not, eğer kitap yazsaydım herhalde o tip bir aksan ile yazmak isterdim, tam anlamıyla harika.

Hayatımın nasıl gittiği ile ilgili bir özet geçecektim ve farkettim ki son zamanlarda başıma gelen en ilginç seç Zuma’s Revenge’ te 50. level’ e geçmiş olmam! Onun harici sanırım işkolik ve internet kolik olmuş durumdayım. Twitter, FriendFeed ve Email kontrol oranım sağlıksız bir şekilde yükseldi.

Arada oturup yazmak istiyorum ama yazmak çok zor, daha doğrusu iyi yazmak çok zor. Yazmak için de bir şey yapmak gerekiyor, bu aralar yaptığım şeyleri yazmak da çok zevkli bir iş değil. Ya da zaten yazılmış şeyler. Neyse hiç yoktan nasıl bir şey yazamadığımı yazarak ve koca yazı boyunca aslında anlamlı hiç bir şey söylemeyerek bir blos postunun daha sonuna geldim...



VB.NET Developer Arıyoruz @ 08-02-2012 16:06

Biz Kimiz?

Mavituna Security isimli Netsparker yazılımını geliştiren bir firmayız. Web uygulaması güvenliği konusunda aşmış derecede know-how’ ı olan, bu konuda diğer firmaların yapamadığı işleri yapabilen, dinamik ve hızlı şekilde iş bitiren İngiltere temelli bir firmayız.

Size Faydamız Ne?

  • Güzel maaş veriyoruz
  • Evden çalışıyorsunuz
  • Dünya pazarında cirit atan ve web uygulaması konusunda uzmanlaşmış bir firmada deneyim kazanıyor ve bilgilerinizi geliştirebiliyorsunuz
  • Konferans, kitap vs. gibi kişisel gelişim konularında size yardımcı oluyoruz
  • Çalışma saatlerinizi seçebiliyorsunuz

 

Geliştirme ekibimize katılacak şu şekilde güzel bir arkadaş aramaktayız:

Şu konuları çok iyi bilen:

  • .NET Framework
  • Winforms
  • Multithreading

Bunları bilmesi tercih sebebi olacak:

  • Web Uygulaması Güvenliği
  • Design Patterns
  • COM-Interop
  • Web Development

Şu konseptleri anlayıp, uygulayabilen:

  • RTFM
  • DRY
  • GTD
  • TDD
  • JFGI

Şu becerilere sahip:

  • İletişebilen
  • Leb demeden leblebi’ nin dünyadaki satış oranlarını Google’ dan bulabilen
  • Geliştirme takımı ve insanlarla iyi geçinebilen
  • İleri seviye İngilizce yazma/okuma ve yeterli seviyede İngilizce konuşabilme
  • Verilen işin hakkını verebilecek
  • Ev ofisinden çalışabilecek
  • Bir sorumluluk aldığında tekrar dürtülmeye gerek duymadan sorumluluğunu yerine getirebilecek
  • Yönetilmeye ihtiyaç duymayacak
  • Şu 62 öneriyi okumuş olan : http://ferruh.mavituna.com/hayatinizi-degistirecek-oneri-oku/

Başvururken şunları yapmalısınız:

  • CV’ lerinizi contact-at-mavitunasecurity.com a göndermeli,
  • E-mail başlığı “[İSMİNİZ] - NETPROG“ olmalı,
  • Bugüne kadar .NET ile yazdığınız en iyi ve en az 300 satırdan oluşan kodu eklemeli veya linklemeli,
  • E-mail’ ın girişini bir paragrafta neden bizimle çalışmak istediğinizi İngilizce olarak yazmalısınız.

Ne Zaman?

Bu pozisyonu 2010 Mart ayına kadar doldurmayı planlıyoruz, dolayısıyla başvuru cevapları en geç 2010 Mart ayında verilecektir.



Netsparker Satışa Çıktı @ 08-02-2012 16:06

Web uygulaması güvenliğinde daha önceden yapıl(a)mamış bir çok yeniliğe imza atan yazılımımız Netsparkertm, Next Generation Web Application Security Scanner bugün itibariyle satışa çıkmış bulunmakta.

Ürünün en dikkat çeken özellikleri:

  • False-Positive raporlamaması
  • Entegre exploitation desteği
  • SQL Injection, XSS gibi açıklarda diğer tarayıcılardan daha iyi olması

Şahsım ve tüm Mavituna Security ekibi adına 3 senelik bu çalışmanın, ar-ge ve geliştirme sürecinin en sonunda hayata geçmesinden büyük gurur duyduğumuzu söylemeliyim.

Ek olarak IBM, HP gibi büyük firmaların elinde tuttuğu çeyrek milyar dolarlık bir sektöre mütevazi takım ve yapımız ile girmekten ve bir çok konuda bu büyük rakiplerimizden çok daha iyi bir iş çıkarmış olmaktan da çok büyük bir gurur duyuyoruz.

Beta süresince bize katkıda bulunan 500 ‘ den fazla Beta Tester’ a da çok teşekkür ederim, onlar olmadan eksiklerimizi bu kadar iyi görebilmemiz, düzeltebilmemiz mümkün olamazdı.

Destek ve dualarını eksik etmeyen dostlara da tekrar teşekkür etmeyi borç bilirim.



Bayramımız Mübarek Olsun @ 08-02-2012 16:06

Kurban bayramımız mübarek olsun, gidin büyüklerin ellerinden öpün, küçüklerin gözlerinden öpün, kendi yaşınızdakiler high-five yapın.

Bu sene pek bayram havasına giremedim, inşallah seneye bayramları Türkiye’ de geçireceğim. Bu bayramda kendimi Uncharted 2 Multiplayer’ a ve IstSec’ e hazırlanmaya vereceğim.

Bu bloga eskisi gibi düzenli ve güzel bir şeyler yazmak istiyorum ama inanın ne yazasım var ne de blogla ilgilenesim var. O yüzden sanırım bir süre daha bu şekilde devam edecek.



IstSec ‘09 @ 08-02-2012 16:06

Türkiye’ de en güzel ve en açık şekilde organize edilen tek güvenlik konferansı olan İstSec’ in ikincisi 12-13 Aralık’ ta yapılacak.

2 gün boyunca ben de dahil olmak üzere Mavituna Security ekibi de orada olacak, ek olarak konferansın ilk günü ben web uygulaması güvenliği konusunda 30 dk. lık çok aşırı teknik olmayan bir sunum yapacağım.

Katılım ücretsizdir ama kayıt yapmanız gerekli. Bir önceki konferans çok keyifliydi bu daha da güzel olacak gibi gözüküyor. Son olarak konfrerans boyunca inşallah standımızda Netsparker demosu yapıyor olacağız, ilgileniyorsanız uğrayıp bir selam vermeyi unutmayın.



OWASP AppSec DC 2009 @ 08-02-2012 16:06

12 Kasım’ da Washington DC’ deki OWASP AppSec DC 2009’ da One Click Ownage hakkında konuşacağım ve bir de Web Raider isimli küçük bir program yayınlayacağım inşallah.

One Click Ownage muhtemelen SQL Server’ da komut çalıştırmak, reverse shell, reverse VNC vs. almak için geliştirilmiş şimdiye kadarki en hızlı yöntem. Ek olarak CSRF + SQL Injection durumlarını da işe yarar şekilde exploit etmek için de bilinen tek yöntem. Bunun değişik bir implemantasyonunu Netsparker içerisine de ekledik.

Ek olarak 13 Kasım’ da konferansta olacağım, eğer katılacaklar varsa bana bir e-mail atın, orada görüşelim.

10 saat uçak çektikten sonra hemen geri dönmek olmaz diye konferans sonrası New York’ a geçip biraz orada olacağız. O yüzden site’ deki yazma ve e-mail cevaplama performansım bu süre zarfında biraz düşebilir.



Verimli Bilgi Takibi @ 08-02-2012 16:06

Eskiden bilgi yok diyen bizim artık yeni bir sorunumuz var, bilgi fazlalığı.

Sorun büyük, çözüm basit değil ama bazı huyları değiştirerek verimli şekilde hem yeni bilgiyi takip edebilir, hem bilgiye yetişebilir hem de çok kısa süreler harcayarak yapabilirsiniz.

  1. RSS okuyusu kullanın, hiç bir blogu ziyaret etmeyin, blogları ziyaret etmek bir çok nedenden dolayı oradan alacağınız bilgiye gereğinden daha fazla efor vermenize neden olur.
  2. RSS okuyusunda herşeyi okumayın, başlıkları okuyun, konu ilginizi çekiyorsa devamını okuyun.
  3. Bilgi kaçıtrmaktan korkmayın, eğer bir şey gerçekten çok iyiyse takip ettiğiniz başka bir kanaldan onu duyacaksınız ne de olsa. İnternet sandığınızdan çok daha küçük, çok fazla kişi aynı konu hakkında konuşuyor. Hepsini okumanıza gerek yok birini okumanız yeterli.
  4. Eğer bir RSS ilgilendiğiniz konudan çok ilgilenmediğiniz konularda yazıyorsa, o RSS’ i takip etmeyi bırakın. (Benim rasgele değişik konulardan yazmam bir çok kişi için bu blogu da bu kategoriye sokuyor olabilir. Eğer öyleyse korkmayın silin. Çok iyi bir şey yazarsam bir şekidle duyarsınız zaten.*)
  5. İkna olduğunuz konuları tekrar tekrar okumayın. Eğer “LinkedIn” in kariyerinize yardım edecek bir kanal olduğuna inandıysanız LinkedIn’ in neden çok iyi olduğuna dair 5 yazı daha okumanıza gerek yok.
  6. Aynı bloggerlar aynı konuları çok yazarlar, bunu gördüğünüz anda o yazıyı es geçin. Bir de bunların kendilerine “technology evangelist” falan diyenleri vardır ki onlardan koşarak kaçın.
  7. Çok az yazı baştan sonra dikkatle okumayı gerektirir, değer. Önce yazıları hızlı bir şekilde okuyun. Hızlı okuma teknikleri ile ilgili bir çok kitap ve makale var. Bunları deneyebilir ya da kendi kendinize pratik yapabilirsiniz. Mesela bunun gibi bir makaleye maksimum 4-5 dk. harcamanız gerekli. Genelde 2 dk. yeterli olacaktır. Mesela girişteki paragrafın hiç bir amacı yok, bunu geçebilirsiniz. Bir yerden sonra bu doğal bir davranış olacaktır.
  8. İlginizi çeken konuları hemen okumayın Read it Later, Evernote ya da InstaPaper gibi bir sistem kullanın. Bu sayede konsantrasyonunuzu da bozmadan ve bulduğunuz kaynağı kaybetmeden ilginizi çeken konuyu daha sonra okuyabilirsiniz.
  9. Eğer mümkünse Pocket PC, iPhone gibi bir cihaz edinin ve daha sonra okumak için işaretlediğiniz yazıları bu cihazda okuyun. Bu sayede yolculuk, sırada bekleme, köprü trafiği, berber koltuğu, ramazan pidesi sırasını verimli bir iş için kullanmış olursunuz.
  10. Twitter, FriendFeed vs. gibi sistemler bilgi takibi için tasarlanmış sistemler değiller. Geyik ve sosyalleşme harici bilgi için kullanmaya çalışmayın, verim alamayacaksınız.
  11. Kitap okurken, kitabın heryerini okumayın. 400 sayfalık bir kitapta en az 200 sayfa boşluk doldurma sayfası vardır. Bunları tespit etmek bazen zor olur ama ufak bir eforla en azından 100 sayfayı okumadan ama içindekini anlayarak geçebilirsiniz. Buna rağmen her sayfasını okumaya değecek çok az kitap vardır, o kitapların hakkını vermek lazım. Bu kitaplar genelde yazarlardından anlaşılabilir.

Bu yazıyı sevenler hayatlarını değiştirecek şu 62 öneriyi de sevdi.

* Kayıtlara geçsin diye yazıyorum, şu anki RSS üyesi 3351, bu yazından sonra bir değişiklik olacak mı bakalım göreceğiz.



Netsparker @ 08-02-2012 16:06

Sitenin düzenli takipçileri uzun bir süredir adam gibi yazmadığımı farketmişlerdir. Bir süre önce çalıştığım firmadan ayrıldım ve gene Londra’ da yeni bir firma kurdum – Mavituna Security Ltd.

Uzun bir süredir de bu firmanın ana ve tek ürünü olan Netsparker’ ın geliştirilmesi ve firma işleri ile uğraşıyorum.

Startup’ lar konusunda önceden çalışan ve kurucu olarak deneyimim olsa da bu önceki deneyimlerimin ötesinde çok daha farklı bir deneyim. Ölçek daha büyük, market çok daha büyük, rekabet çok daha büyük. HP ve IBM gibi firmaların başı çektiği bir markete yeni bir yazılımla girmek kolay bir iş değil. Daha önceden bu kadar kalabalık bir ekip hiç olmamıştı. (çok fazla değil, en kalabalık günümüzde altı kişiyiz)

Özetle bir süredir yazmamamın nedeni bu iş yoğunluydu, bu yoğunluk devam ediyor o yüzden ben de burada daha az yazıyor olacağım.

Netsparker Nedir?

Netsparker bir web uygulaması güvenlik tarayıcısı. Otomatik olarak bir web sitesini uygulama seviyesindeki güvenlik açıklarına karşı analiz edip güvenlik açıklarını raporlar. Ek olarak raporlamanın bir adım da ötesine geçip güvenlik açıklarını kullanarak aynı bir saldırgan gibi sistemden data çıkartabilir ya da sisteme tam erişim sağlayabiliyor.

Bu sayede SQL Injection, Cross-site Scripting gibi açıkları başkaları bulmadan siz bulabiliyorsunuz.

Bu süreç içerisinde bir çok beta tester' ın desteğini aldık ve almaya da devam ediyoruz. WGT ekibinin hemen hemen her üyesi bunun içerisinde, onlara da çok teşekkürler.

Burayı reklam alanına çevirmeden ilgilenenleri Netsparker Blog’ una davet ediyorum.



OWASP Top 1 @ 08-02-2012 16:06

Popülerizm ve marketing sevmediğim şeylerdendir ama maalesef hayatta bazı gereksinimler var, genelde güçlü olmayan biz, akımları ve normları takip etmekten çok kabul ederiz.

OWASP’ ı severim, bazı abuk-subuk şeyleri olsa da genel olarak web uygulaması güvenliği konusunda bilinçlenme adına dünyada en çok işi yapmış topluluktur. OWASP Türkiye’ de de zaten aktif olarak bulundum, bulunuyorum, OWASP Guide' v3’ te yazdım vs. Dolayısıyla lafım OWASP’ a değil ama OWASP  Top 10’ e.

Genel olarak Top 10 listelerinden nefret etmiştirim, bloglarda gördükçe gıcık olurum ama OWASP Top 10 bunlardan da kötü. OWASP Top 10 yapmak nedense bana “Top 10 Sex Offenders” gibi bir liste yapmakmış gibi geliyor. 2009 OWASP Top 10’ i ne olacak dedikoduları başlamış, Top 10 i bilmem ama ben size OWASP Top 1’ ü söyleyeyim.

Güvenlik hakkında fikri olmayan web programcıları.

İşin daha da komiği bu Top 10 güvenlik açığı gibi listelerin arkasında kayda değer hiç bir data bulunmamasıdır, ama sanırım herkes bunun insanlara bu konuda gaz vermek için aynı şeyi evirip çevirip söylemek olduğunu farkdındadır zaten.



Kavga, Dövüş, Güvenlik @ 08-02-2012 16:06

Son bloglarımda belirttiğim gibi bu ara işlerim ekstra yoğun, bir kaç gün önce de Meşgul bir sahur isimli yazı yazmıştım.

Yazının yazılma sebebi benim bulunduğum ve iki arkadaşımla paylaştığım sunucuya birilerinin girmiş olmasıydı, girmişler sonra da oradan benim sitemin ana sayfa dosyasına ulaşmışlar, değiştirmişler. Ben önce konu hakkında kısa bir şey yazmıştım, sonra prim vermeyeyim dedim, daha sonra herkes anlat anlat diye tutturunca FriendFeed’ de anlattım şimdi de burada anlatayım.

Olayın teknik detayına inersek:

  • Bir kaç sene önce sunucuya arkadaşlarımdan biri bir güvenlik açığı olan bir script yüklemiş, tabii ki güvenlik açığı olduğunu bilmeden
  • Bu sırada biz kullanıcı hakları birbirlerine erişemesin diye kullanıcı haklarını düzenlemiştik, ancak bu arkadaş bir de arada kendi IIS kullanıcısını admin kullanıcısı haline getirmiş. Benim de bundan haberim yoktu.
  • Daha sonradan bu arkadaşlar da benim sitemi hacklemek isteyince direk sunucudaki diğer siteleri araştırmaya başlamış. Komiktir benim siteye saldırmayı denememişler bile, direk diğer sitelere saldırmışlar.
  • Ondan sonra bu güvenlik açığı olan ASP dosyası üzerinden, birinden çarpma bir ASP shell yükleyip onunla sunucudaki diğer sitelere erişmişler. Erişebilmişler çünkü script saçma bir şekilde “yönetici hakları” ile çalışıyormuş.
  • Tam onlar dosyaya eriştiler ben zaten sunucuyu bastım, durumu toparladım ama arada sanırım 15-25 dk. kadar o dosyalar o şekilde kaldı.
  • Sistemin log analizlerini yaptık, IP leri aldık, ne yaptıklarını inceledik, nerelerine eriştiklerine baktın, sistemleri düzelttik ve sahurumun içine ettikleri için bu arkadaşlara küfür edip, hayatımıza geri döndük.

Dedikodulara cevap vermek gerekirse:

  • Evet hacklendim, 8 seneden sonra bu da başımıza geldi, sunucuyu paylaştığım arkadaşlar sağolsun!
  • Hayır benim kodumda güvenlik açığı yoktu (olamaz değil, o da olur ama bu saldırı tamamen başkasının, eski ve salakça yazılmış bir ASP kodunun eseridir)
  • Hayır onları ya da TTNet’ i hacklemeyeceğim (gerçi başkaları onları hacklemiş bile)
  • Evet bende de büyük eşşeklik var, 3 senedir Shared Hosting’ ten çıkacağım deyip çıkmadığım için, düzenli olarak sistemdeki hakları kontrol etmediğim için.

Günün sonunda çıkarılacak dersler:

  • Güvenlik sistemin en zayıf halkası kadardır, bu zayıf halka sizden başka biri olabilir
  • Derinlemesine defans’ ı boş vermemek lazım
  • Güvenmediğiniz sistemlere kişisel data koymamak çok mantıklı bir hareket olduğunu tekrar öğrendik

Şimdik, nerede kalmıştık?



Çeviklik @ 08-02-2012 16:06

“Agile” kelimesi her ağıza sakız olmuş durumda, ben de parmağımı pastaya bulaştırmak istedim.

Çevik yapılar, duruma göre kendi adapte edebilen, hızlı şekilde çözüme ulaşan, durumu daha kompleks bir hale* getirmeyip basitleştiren yapılardır. Bu birey olabilir, bir yazılım geliştirme metodolojisi olarak düşünülebilir ya da bir kurumun yapısı olabilir.

Çevikliği maksimum düzeye kavuşturmak için yapılması gereken iki kritik şey var.

Al, Çal, Kaçır

(Ç)almak ya da outsourcing.

Outsourcing

Outsourcing tüm sorumluluğu başkasına atmak olarak kabul edilebilir.

Mesela bir blog açacaksanız “Wordpress” kullanmak çalmaktır. Kendiniz wordpress’ i download edersiniz, sunucunuza kurar ve kullanırsınız. Hazır bir sistemi çalıp kullandınız. Outsourcing ise blogger.com’ dan blog açmak ya da Wordpress.com üzerinden bedava bir blog almaktır.

Outsourcing çeviklikte her zaman ilk adım olmalı, buradaki kritik nokta devrettiğiniz işin üzerinde ne kadar kontrole ihtiyaç duyduğunuzdur. Örnek olarak eğer kendinize özel bir web suncusu kullanmak zorundaysanız basit bir hosting firmasından, basit bir hesap almak işinizi görmeyecektir. Outsourcing’ de yapabileceğiniz en büyük hata “ana işinizi” başkalarına devretmektir.

Mesela bir web tarayıcısı geliştiriyorsanız rendering engine’ ini geliştirmek yerine başka bir yerden alıp kullanmak yanlış olacaktır. Not düşmek gerekir iş modeli sadece devretmek üzerine kurulu firmalar istisnadır, mesela IE’ nin altyapısını kullanıp arabirimini geliştiren ya da farklılaştıran firmalar var. İkinci bir not düşecek olursak bu tip firmaların hiçbirinin uzun vadede bir başarısı olmamamıştır.

Aynı şekilde rendering engine’ ini dışarıdan programcılara outsource etmekte bir o kadar yanlış olacaktır, buna rağmen Gzip encoding’ i oturup yazmanız da bir o kadar saçma olacaktır. Gzip library’ sini outsource etmek değil çalmanız gereklidir ama o konuya biraz sonra geleceğiz.

Web 2.0 hikayesinin sosyal medya’ yı hayatımıza sokması, kişisel bilgilerin öneminin azalması, insanların internet sitelerine daha fazla güvenmesi ile SaaS (software as a service) konsepti ve oursourcing / devretme olanakları inanılmaz şekilde yükseldi. Yükselmeye de devam edecek. Bu yükseliş bizim için iki anlam ifade ediyor;

1. SaaS işinin geleceği çok iyi olduğundan dolayı bu sektörde iş yapmak

2. Kendi işimizde olabildiğince bu yüksek kalite hizmetleri kullanmak

SaaS’ ın büyümesi ve outsourcing kavramının popülerleşmesi belki son senelerde gördüğümüz internetteki kaliteli iş modellerinin ve firmaların çoğalmasındaki kritik nedenlerden biri olabilir. Yeni model firmalar kendi CRM sistemlerini kurmuyorlar, SalesForce kullanıyorlar, SVN Serverlarını kurmuyorlar, xp-dev’ den SVN server ediniyorlar, artık proje yönetim sistemi kurmuyorlar, BaseCamp kullanıyorlar.

Bu da onlara enerjilerini geçekten umursadıkları işe yönlendirme fırsatı sunuyor. Ek olarak maliyetlerin düşmesi de cabası.

Kurumların, bu tip içerideki yönetim sistemlerinin kurulumu, bakımı ve güncelliği için inanılmaz vakitler harcadıkları dönemler vardı. Hala Microsoft, Adobe gibi firmalar bu tip sistemleri kullanmıyor. SalesForce gibi ekstrem uçtaki hizmetler çıkmadıkça kullanmayacaklar da.

Bunun nedeni bu tip büyük firmaların bu tip konularda yakabilecekleri paralara sahip olmaları ve burada ekstradan yakacakları 1M$, sistemin onlara özel olmasındaki avantajlardan dolayı zaten uzun vadede kendini amorti edecektir. Ancak bu tip firmalar ile 1-150 kişi arasındaki firmaları karşılaştırmamak lazım.

Firmaların doyum noktaları vardır, doyum noktasından sonra para harcama ve iş yapma modelleri değişir. Mesela bir yazılım firmasının doyum noktası ana yazılımlarının piyasadakilerden daha çok iş yaptığı ve yakın bir takipçisinin olmadığı noktalarda olur. Mesela Skype buna güzel bir örnek.

Bu noktaya gelmiş bir yazılım firması genelde yazılıma sadece saçma özellikler ekler, elindeki büyük kadroyu mütemadiyen çalıştırması gereklidir ama yapacak işi yoktur. Yazılıma tema, animasyon gibi kimsenin umrunda olmadığı sadece %1 için bir anlam ifade eden şeyler eklerler ya da bazı MS Office sürümleri gibi sadece görsel değişiklikler yapıp yeni bir versiyon daha satmaya çalışırlar.

Özetle küçük ve çevik bir firma artık en basit işten en komplike işe kadar herşeyi outsource edebilir hale geldi. Önemli olan outsource edeceğiniz şeyleri ve outsource edeceğini kişileri, firmaları iyi seçmek.

İlk başta outsourcing işi pahalı gibi gözükse de aksine çok daha ucuzdur. Yatırım daha azdır, yönetim istemez, değiştirmek basittir, disaster recovery gibi konular sizin değil başkasının derdi olur. Vakit ciddi bir kaynaktır ve bir şeye yatırım yapma, yönetme ciddi bir kaynak gideridir. Eğer hala vakit, bakım-takip ve para arasındaki ilişkiyi matematiksel olarak kuramıyorsanız zaten kişi veya firma olarak burada anlattıklarımdan daha ciddi sorunlarınız var demektir. Önce o noktayı kavramak lazım ama oradaki ilişki başka bir yazı konusu, burada detaylandırmayayım...

(Ç)almak

Çalmak outsource edemediğiniz de yapmanız gereken şey. Mesela bir blog’ a ihtiyacınız var bu ama hali hazırdaki blog sistemleri sizin siteniz ile iyi entegre olamıyor, bu durumda gidip baştan blog sistemi yazmazsınız, hali hazırda yazılmış bir blogu kullanır ve onun üzerinde özelleştirme yaparsınız, işte bu çalmaktır.

Bir iş yapacaksınız çalışan bir iş modelini alabilirsiniz. Baştan tüm modeli oluşturmanıza gerek yok, ama eğer kendiniz çok daha gelişmiş bir iş modeli geliştirdiyseniz ve işinizi buna dayayacaksanız tabii ki bunu yapın. Çalma ile Geliştirme arasındaki çizgiyi doğru çizmek lazım.

Son örnek olarak mesela kodlama standartları dokümanı oluşturacaksınız, kendiniz sıfırdan başlamayın gidip benzer bir doküman bulun daha sonra bunu kendi takımınıza göre özelleştirin.

Çalmayı küçükten büyüğe her boyutta yapabilirsiniz, hazır bir uygulamayı alıp değiştirebileceğiniz gibi bir algoritmayı kendiniz tekrar keşfetmeye çalışmak yerine pseudocode’ unu bulup onun üzerinden yazmanız daha mantıklı olacaktır.

Dikkat edilesi

Çalarken dikkat edilecek şeyler var,

- Gereksinimlerden daha kompleks sistemleri hazır diye entegre etmeye çalışmak
Eğer ana sayfada 3 haber başlığı ve metin göstermek istiyorsanız Wordpress’ i implemente etmeye çalışmayın, kendiniz yazın. Bedava her zaman bedava demek değildir. Sahipliğin getirdiği bir masraf vardır ve kompleks sistemler de bu yük ile gelir. Dolayısıyla **basit tutun.

- Çaldığın şeyi bilmek
Eğer bir kodu ne yaptığını tam bilmeden çalıyorsanız şöyle saçma durumlar oluşabilir.

Daha önceden Hayatınızı değiştirecek 62 öneri yazımda da söylemiştim “Mükemmeliyetçilik” outsourcing’ in ve çalmanın en büyük düşmanıdır ve bunu yenmek çok zordur. Mükemmeliyetçilik ile ilişkili diğer bir kötü huyda kontrolcülüktür. Koda sahip olmak, HTML çıktısını istediğin gibi kontrol etmek, herşeyi bilme ve kontrol etme arzusu da sizi bunları yapabilmekten uzak tutacaktır. O yüzden bu tip huylardan kurtulmaya çalışmak lazım.

Çalın, outsource edin, basit düşünün, üretin.

*over-engineering
** KISS - Keep It Simple & Stupid



Meşgul bir Sahur @ 08-02-2012 16:06

Sunucudaki bir kaç sorundan dolayı dün 4 saat kadar erişim mümkün değildi. Hayatımın güzel bir 5 saatini orada harcadım. Sahura kadar bir dizi salak sorun ile uğraşmak zorunda kaldım, neyse şimdi sorunlar çözüldü, eskisi gibi yazmaya(!) devam edebilirim.

Kişisel yoğunluğumdan dolayı pek blog yazamıyorum, bırakın blog yazmayı kitap okumaya bile vakit bulamıyorum. O yüzden yaklaşık iki ay daha bu blog çok düşük tempoda ilerleyecek. Bu sessizlik bahanesiyle RSS üyeleri de 3100’ e çıkmış, az yazmak RSS takipçilerini çoğaltmak için en iyi yol sanırım…



SANS Eğitimleri Türkiyede @ 08-02-2012 16:06

Bu haberi özellikle geçmek istedim, direk mesaja dokunmadan aşağıdan veriyorum. Bu güvenliğin Türkiye’ de daha güzel bir yerlere gelmeye başladığının bir göstergesidir.

SANS 560-: Network Penetration Testing and Ethical Hacking Eğitimi Türkiye’de.

SANS Organizasyonunun en popüler eğitimlerinden biri olan “Security 560: Network Penetration Testing and Ethical Hacking” eğitimi Ekim ayında  Mentor formatında İstanbul’da verilmeye başlanacak. Eğitim, içerik olarak “Reconnaissance” ile başlayıp “Scanning” , “Exploitation” ve “Password Attacks” şeklinde devam edip “Wireless Attacks” ve “Web Attacks” konularına değindikten sonra bütün anlatılanların bir CTF(Capture The Flag) uygulaması ile sonlandırılacağı bir eğitim olacaktır.

Bu eğitim de öğrenciye SANS’ın “Self Study” eğitiminde olduğu gibi kurs kitapları, kurs CD-DVD leri ve kurs MP3 dosyaları verilecektir. Bunun yanısıra Mentor eğitimine bağlı olarak online kurs materyali ve mentor “hands-on” lab notları öğrenciye verilecektir.  10 adet 2 saatlik oturumlar şeklinde oluşacak ve tamamen “hands-on” lablar şeklinde işlenecek olan eğitim, 10 Ekim 2009 tarihinde başlayıp 12 Aralık 2009 tarihinde sona erecektir. Bu oturumlar İbrahim Saruhan ve Halil Öztürkci tarafindan yönetilecek ve eğitime katılan tüm öğrencilerin lablarda aktif rol olması sağlanacaktır.

Eğitime kayıt detayları ve kayıt için http://www.sans.org/mentor/details.php?nid=19944 adresine bakabilirsiniz. Sorularınız için ibrahim.saruhan@adeo.com.tr ve halil.ozturkci@adeo.com.tr adreslerine mail atabilirsiniz.



Coder to Developer @ 08-02-2012 16:06

Coder to Developer: Tools and Strategies for Delivering Your Software by Mike GunderloyBir kaç ay önce Coder to Developer: Tools and Strategies for Delivering Your Software kitabını okudum. Ne bekliyordum bilmiyorum ama beklediğim herşeyin altında bir kitap.

Eğer yeni bir yazılımcıysanız işinize yarayabilir ama zaten yazılım geliştiren biriyseniz benim gibi kitabın hepsini okuyup yeni hiç bir şey öğrenmeyebilirsiniz.

Kitap hakkında yazmak istiyorum ama çok da yazacak bir şey yok, bir çok konuda bir çok temel bilgiden bahsediyor. “İçindekiler” kısmına bakın ve eğer bu konularda bilginiz yoksa sokuyun, o durumda işinize yarayabilir. Ama bu konudaların daha önceden ismini duymuş ve çok az baktıysanız bu kitabın size vereceği yeni bir şey yok.

Yazarın kendisinin de iyi bir geliştiriciği olduğu şüpheli lakin iyi ve deneyimli geliştiricilerin kitaplarında çok fazla ve harika gerçek dünya deneyimleri duyarsınız bu kitap böyle bir şey de yok, özetle uzak durun.



Bir Ramazan Daha @ 08-02-2012 16:06

Öncelikle ramazanınız hayırlı olsun. Ramazan dolayısıyla bir gece tarifesi açıyorum bir gündüz. Uyku düzenim alt üst olmuş durumda.

İstanbul’ dan döndüm ve eski hayatıma devam etmeye başladım. Bu aralar insan üstü eforlar ile çalışmalarıma devam ediyorum. Bu blogdaki ve bendeki sessizliği fırtınadan önceki sessizlik olarak kabul edebilirsiniz, güzel şeyler ile uğraşıyorum ama güzel şeyler yapmak vakit ve emek alıyor.



Bekle Beni İstanbul @ 08-02-2012 16:06

Web Uygulaması Güvenliği Eğitimleri için İstanbul’ a gidiyorum, bir hafta kadar yorumları onaylamayabilir, e-maillar’ a bakmayabilirim.



Zayıf Olduğunu Bilmek ve iPhone @ 08-02-2012 16:06

Zayıf olduğunu bil yazısında bir iş yaparken elde neyin olup olmadığını bilmek ve ona göre hareket etmekten bahsetmiştim:

Blair Witch filmi ve benzeri yapımlar bu konuya güzel bir örnek aslında. Hollywood gibi milyonlara film çekemiyorsunuz dolayısıyla taktik değiştiriyor, interneti, dedikoduyu ve farklı bir yolu seçip bir film yapıyor ve parayı kırıyorsunuz. Komiktir aslında bu filmin iki ilginç olgusu var. Birincisi filmin tüm konusu çarpma (eski 60 kadar ülkede yasaklanmış bir gore filmden – detayları inanınki bilmek istemezsiniz), ikincisi film gerçekten kötüydü. Buna rağmen para kazandı. Sonuca bakarsak muhtemelen onlar amaçlarına ulaştı. Sanırım yüz yılın sanat filmini yapmayı planlamıyorlardı.

Ben uslanmaz bir oyuncu olduğumdan dolayı düzenli olarak iPhone oyunlarına bakıyor beğendiklerimi alıyor, oynuyorum. İnsanların iPhone ve benzeri sistemler için 3D büyük oyunlar yapmasının nedenini hiç anlayamamışımdır. Sonuç itibarı ile bu oyunu oynayan kişiler bilgisayar dünyasından gelen ve gerçek grafiklere sahip oyunları oynamış kişiler, halbuki bu platform’ un grafik desteği zayıf, ekranı küçük ve kontrol için bir gamepad’ i yok vs. vs.

Muhtemelen işte bu yüzden Doom Ressurection’ den çok Drop7 isimli muhtemelen 3 haftada yazılmış bir oyun çok daha fazla satabiliyor. Bunun yanında Lucas Arts gibi zeki firmalar eski ve iPhone’ a port edilebilecek Monkey Island gibi güzel klasikleri piyasaya sürmeye başladılar ki bu da çok güzel bir mantık.

Özetle dostlarım, elinizdekinin ve hedef platformun zayıflıklarını bilmek lazım.



Web Güvenliği Dergisi @ 08-02-2012 16:06

Web Güvenliği Topluluğu olarak bir e-dergi çalışması yaptık. Dergi’ nin periyodik olarak yayınlanması planlanıyor ve ilk sayıda ben de uzun zamandır yapmadığım bir şey yapıp Web Güvenliğinde Otomasyon isimli bir yazı yazdım!

Tüm emeği geçen ekibe ve özellikle Onur Yılmaz’ a teşekkürler.



One Click Ownage @ 08-02-2012 16:06

I’ve been keeping this under my desk for ages now. It’s been about 6 months since I came up with a practical exploitation of this idea and even developed an application to automate the scanning and exploitation process.

This attack is all about SQL Injection for lazy minds. One of the classical SQL Injection attacks in SQL Server – SA connections is obviously trying to get reverse shell from the target database. There are some ways to do it, like sending hundreds of requests or using PERL scripts, executables etc. I didn’t like the current approach and decided to find a better way to deal with it.

I think I came up with the holy grail of the this attack. One request to get a reverse shell, can’t get any better than that. You can copy paste it, you can stick it into an src attribute of an img tag to carry out a CSRF attack etc.



Otomasyon, otomasyon, otomasyon... @ 08-02-2012 16:06

Sık söylediğim laflardan biri şudur : "If you can automate it, automate it". DRY (kendini tekrarlamamak/do not repeat yourself) sadece kod yazma sırasında değil bence hayatın her noktasında önemli bir şey. Özetle eğer bir şeyi otomatiğe bağlama şansın varsa hemen şimdi bunu yap. İlk internet sitemi yayınladığımda hayat çok farklıydı siteyi en ufak bir değişiklik için FTP ile her seferinde güncellemek ve tek kişilik CMS sistemi olmak rezil bir deneyimdi. İlk blog sistemimi yazdığımda da bazı şeyler fark ettim blog yazmaya başlamam ne kadar çetrefilli ise o kadar az blog yazıyordum, yani sistemin kendi limitleri veya gereksinimleri blog yazmamı engelliyordu.

Bu sadece teknik veya vakit ile ilgili bir sorun değil bu psikolojik bir sorun. İnsan doğası sıkıcı işleri sevmiyor ve rutin işler insana sıkıcı geliyor. Bir geliştirici olarak kendinizi bir rutin içerisinde bulursanız gidişatta bir hata var demektir. Belki Ruby On Rails' ın çıkışı veya binlerce framework' ün tetikleyicisi de budur.

Yazılım geliştirirken gerekli otomasyonu yapıyor musunuz?

  • Veritabanında değişiklik yaptıktan sonra ORM' de kodların belirmesi için kaç tuşa basman gerekli?
  • Yazılıma yeni bir eklenti eklendiğinde Unit Test' ler otomatik olarak çalışıyor mu?
  • Aynı kodu tekrar ve tekrar yazıyor musun?
  • Koddaki değişiklikten yazılım paketinin internette yayınlanması arasında kaç tane manuel işlem var?

Daha önceden büyük resmi görebilmek ile ilgili bir yazı yazmıştım, yazılım geliştirirken ve başka işler yaparken de büyük resmi görebilmek lazım.

  • Sisteminizde otomatiğe bağlayabileceğiniz şeylerin listesini çıkartın
  • Listedeki her başlık için "Otomatiğe bağlamak ne kadar sürer?", "Otomatik olmadığında hata oranı nedir?", "Bu işlemin ne kadar sıklıkla yapılması gerekiyor?" sorularını kendinize sorun ve cevaplarını düşünün. Otomasyona harcayacağınız vakit kendini 1 haftada amorti ediyor olabilir ya da hata çıkma oranından dolayı potansiyel bir hata da otomasyona harcayacağınız vakit kadar hatayı düzeltmeye ya da tespit etmeye vakit harcayacak olabilirsiniz.

Eğer programcı değilseniz hala hayatınızda otomatiğe bağlayabileceğiniz şeyler var:

Bunların hepsini otomatiğe bağladıktan sonra, para kazanmayı da otomatiğe bağlayınca Kuala Lumpur' da sahilde uzanıp otomatiğe bağladığınız her şeyi unutabilir ve belki de hayatın tadını çıkartabilirsiniz…



Abaküs @ 08-02-2012 16:06

İstanbul' dan döndüm ancak yoğunluk, konferans vs. derken siteye bir şey de yazamadım.

Türkiye' ye gidişimin birçok nedeni vardı;

Genel olarak İstanbul ziyaretim keyifli ve verimli geçti. Program ZTV' de yayınlandı, şuradan izleyebilirsiniz. Abaküs programının yapımcısı ve sunucusu Ziyahan Albeniz' de tekrar teşekkür ederim, kendisi ile programdan önce ve sonra çok keyifli sohbetler ettik. Birkaç gün ara ile diğer konular hakkında da yazacağım, bu arada blog' da çok yazmıyorsun diye sızlananlar FriendFeed üzerinden de beni takip edebilir.



İstanbul Semalarında... @ 08-02-2012 16:06

Yarın bir süreliğine Web Uygulaması Güvenliği Eğitimi, IstSec Konferansı ve başka bir dizi iş için İstanbul' a gidiyorum, sıcak hava ve Marmara' nın tadını da çıkartaya çalışacağım. Bu sırada pek yazamayacağım ve acil olmadıkça, e-mail' larımı cevaplamayacağım. İlgililere duyurulur.



.NET Yazılım Geliştirme Uzmanı @ 08-02-2012 16:06

Benim ile birlikte çalışacak .NET Yazılım Geliştirme Uzmanı aranıyor. Eğer benim tanıdığım birini tanıyorsanız referans olarak o kişinin ismini ve iletişim bilgilerini vermeyi unutmayın.

İngiltere' de ki bir güvenlik startup' ının Türkiye ofisinde (ve/veya home office' den) çalışacak ve yeni bir yazılımın geliştirilmesinde önemli rol oynayacak. NET yazılım uzmanı aranmaktadır. Firma bilgisi henüz startup aşamasında olduğundan gizlidir. İlgilendiğimiz adaylara ilk görüşmede bu detaylar verilecektir.

Gereksinimler
• .NET ve OOP konusunda en az 2 yıl deneyim,
• VB.NET kodu yazabilen, C# kodu okuyabilen
• Takım Çalışmasında başarılı ve Uzaktan Çalışabilecek
• Winforms, Unit Testing konusunda deneyimli
• İyi seviyede teknik İngilizce (okuma)

Tercih sebebi olacak ekstralar
• Web uygulaması güvenliği bilgisi
• Web uygulaması geliştirme deneyimi
• İyi derecede RegEx bilgisi
• İyi derecede İngilizce konuşma – yazma – okuma
• İyi derecede Visual Basic 8.0 +

İş Detayları
• Yeni bir yazılımın geliştirilmesinde kilit rol oynayacaksınız
• Maaş deneyime göre belirlenecek ve Sterlin (pound) olarak ödenecektir
• Esas olarak full-Time biri aranmasına rağmen part-time pozisyonda bulunmaktadır. Eğer part-time çalışmak istiyorsanız bunu başvurunuzda belirtiniz.

CV lerinizi ferruh(at)mavituna.com a gönderiniz. Konu başlığında "DEV-WG [ISIM SOYAD]" şeklinde yazınız. Başvurunuza en iyi kodlarınızdan biri olduğuna inandığınız bir VB.NET kodunu (öncelikli) veya C# kodunu eklemeniz gereklidir.
Kod göndermek yerine. NET ile geliştirdiğiniz bir open source yazılım varsa ilgili adresi de gönderebilirsiniz.

CV' ler ve ilgili tüm yazışmalar hiçbir 3. şahıs ile bilginiz dışında paylaşılmayacaktır. En geç 1 Ağustos' ta işe başlayabiliyor olmanız gereklidir.



FSF – Freakin’ Simple Fuzzer @ 08-02-2012 16:06

I've released my simple web application fuzzer and data scraper, FSF. It works under OSX, Windows, Linux. Hosted on Google Project, report bugs, write plug-ins, have fun.



IstSec – İstanbul Güvenlik Konferansı @ 08-02-2012 16:06

10 Haziran' da IstSec – İstanbul Güvenlik Konferansında konuşuyor olacağım. Türkiye de güvenlik konusunda bu çaptaki organizasyon sayısı çok az, o yüzden sakın kaçırmayın. Konferans ücretsizdir ve 10 Haziran ( Çarşamba ) 2009 da Levent' teki Microsoft Türkiye Ofisi' nde gerçekleşecektir. Hemen kayıt olun, yerinizi ayırtın.

Açıkçası ben konferansın çok keyifli geçeceğini umuyorum. Bu arada bir CTF (capture the flag) var, ona da kaydolmayı unutmayın. Organizasyonu yapanlara da emeklerinden dolayı teşekkürleri borç biliriz.



Konuşma Hakkı – Sertifikasyon @ 08-02-2012 16:06

Birinci yazı çok tutu diye ikincisini çekmedim! Bu daha çok birinci yazının ahengine kendime kaptırıp unuttuğum kısımları tamamlamaya çalışan bir yazı. Konuşma Hakkı henüz okumadıysanız on okuyup bu yazıya geri dönmeniz mantıklı olacaktır.

Hayat girdi ve çıktıdan ibaret, Konuşma Hakkı yazısını da yazmamın ana nedeni benim bilişim sektörü ve üniversite konularında konuşmaktan çekinmemdi. Ben üniversiteye gitmediğinden işin tek yönünü biliyorum, dolayısıyla biri bana "Ne dersin? 4 sene X' i mi okuyayım yoksa Y işyerinde çalışmaya devam edip sektörde deneyim mi kazanayım?" dediğinde benim bu kişiye vereceğim tek yönlü bir cevap var: "Ben gitmedim, halimden memnunum, gitseydim daha iyi olur muydum, bilemiyorum…"

Aynı şey sertifikasyon için de geçerli, benim hiç sertifikam yoktu ve o konuda konuşmuyordum, ama 2008' in sonunda "Application Security" konusunda ileri seviye bir sertifika olan CREST' i aldım. CREST bu konuda su götürmez şekilde alınması en zor sertifika, sınav tüm gün sürüyor, pratik + yazılı + çoklu seçim şeklinde gerçekleşiyor ve gerçekten de zor bir sınav. Artık bir sertifikam var dolayısıyla sertifika konusunda konuşabilirim1

Gel gör ki 5.000 TL sınav ücreti ödeyip 3 seneliğine bu sertifikayı almış biri olarak hayatımda hiçbir değişiklik olmadı. Olmasını da beklemiyordum.

Sertifika almanın birkaç nedeni vardır:

  • Almak zorundasınızdır, çünkü yaptığınız iş sertifika veya akreditasyon gerektirir
  • CV' nize koyarsınız iş bulmanıza yardım eder
  • İsminizin önüne, arkasına sağına soluna koyup hava basarsınız(!)2

Şimdi sanıyorum ki en popüler neden 2. neden. Bir çok noktada gayet geçerli bir neden. Mesela şu an bu sertifika bana bir sonraki işimde çok yardımcı olabilir ama zaten iyi olan her IT uzmanı çok seçici değilse 1 haftada iş bulur. Daha önceden de çok söyledim iş bulamıyorsanız suçu sektöre atmayın3. Özetle zaten iyi adamın iş bulması için sertifikaya ihtiyacı yok. Benim alma nedenim biraz farklıydı, bana firmadan alsana dediler ben de gittim aldım. Şimdi de çekmecem de kendi zarfının içerisinde duruyor.

Sanırım sertifikanın en iyi kullanımı bir konuda orta seviyedeyseniz CV' nize birkaç sertifika ekleyip daha rahat iş bulabilirsiniz. Şimdi bir çok kişi bana kızacaktır, onların yorumlarını da bekliyorum belki de tüm bu sertifika muhabbetinde benim bilmediğim başka işler de vardır.

 

1 Üniversite konusunda konuşabilmek için 4 sene okul okumak planlarım arasında değil.

2 Ben birinin isminde bu şekilde bir unvan gördüğümde akılma gelen tek şey "Demek ki kendi isminin bir önemi yokbu şekilde desteklemesi" gerekiyor diye düşünüyorum

3 Junior, stajyer vs. işleri hariç. Herkesin bir yerlerden yetişmesi gerekiyor ama maalesef kriz zamanlarında sadece deneyimli uzmanlar basitçe iş bulabiliyor.



Konuşma Hakkı @ 08-02-2012 16:06

Türkçe' de harika deyimler ve atasözleri var5

  • "Kelin merhemi olsa kendine sürer"
  • "Ağzı olan konuşuyor" gibi…

Özellikle köşe başındaki bakkal amcanın "Bir Bakkalın Deneyimleri – There is no spoon2" isimli bir blog açtığı şu Web 3.0-5.0-2.0 günlerinde kimin bir şeyler yazmaya, bir konu hakkında konuşmaya hakkı olduğunu incelemek gerekli.

"Konuşma Hakkı" derken bilmeyen konuşmasın gibi anlaşılmasın. Bilgi seviyesinden bağımsız "Konuşmak","Yazmak","Paylaşmak" güzel ve faydalı şeyler. Her şeyden önce insanların zaten bir "içini dökme" ihtiyacı var, genelde sevgili ev hanımları gibi hemen yan kapıdaki web startup' ına kahve içip komşunun AJAX kullanmasını çekiştirmeye1 gidemeyeceğimize göre biz de blog yazıyor, FriendFeed' de sağa sola laf atıyor, e-mail ile dedikodu yapıyoruz. Benim değinmek istediğim bu konu değil.

Öncellikle 3 paragraf yazıp hala bahsedeceğim konuya giriş yapamamış olduğumdan dolayı kendimi tebrik ediyor ve konuşacağım konuya giriş yapıyorum.

Mesela "zengin olmak istiyoruz" gittik Amazon' da kitap arıyoruz.

3 tane kitap bulduk:

  • Learn to become rich in 21 days, 2nd edition
  • How to become rich for dummies
  • Hashhash – Be a Professional assassin in a year

Bu kitaplardan hangisinin daha iyi olduğunu anlamak çok kolay, tüm yazarlara bakarız hangisi bu kitaptan önce zenginse o kişinin bu konuda bir kitap yazma ehliyeti olduğuna karar veririz. Eğer bir kişi nasıl zengin olunacağını anlatıyorsa ama kendisi zengin değilse bu denklemde bir hata var demektir3.

Özetlersek:

"Biri size bir şey anlatıyorsa, o kişinin anlattığı konuda otorite olmasa bile iyi seviyede biri olması gereklidir". Eğer birisi bana gelip ben harika SEO yaparım diyorsa o kişinin sitesinin Google' da ilgili aramalarda yukarıda olmasını beklerim.

En azından teorik olarak durum bu şekilde ama hayat ortadan beyaz boya ile ayrılmış iki yollu bir şerit değil. Bazen henüz adını sanını duymadığınız bir kişi bir konu hakkında inanılmaz bir fikir ile gelebilir, kişiler aslında yazdıkları konuda çok ileri seviyede olsalar da yayında bir şeyleri yoktur, gelecekte o konuda süper bireyler olacaklardır ve bunun ilk kıvılcımlarını gösteriyorlardır.

Blog okurken özellikle uzman olmadığınız konularda4 bu istisnalara düşme şansınız kaçtır tartışılır, makale, blog ve fikirle dolup taşan bu sanal ortamda değerli vaktinizi bu istisnalara ayırmanın yatırım olarak getirisi de tartışılır.

Haklı olarak ironiyi fark edip "Ferruh sen bu konuda yazmışsın ama senin bu konudaki otoriten nedir?" diyeceksiniz ben de size "Ben lafımı ortaya korum, beğenen alır, beğenmeyen Alt + F4 yapar" diyeceğim. Bir de işte bu tip yazılar var, yazar kendi beynindeki kişisel fırtınayı blog aracılığı ile yazıya döker ve ondan sonra diğerlerinin düşünceleri ile bir sonuca ulaşmaya çalışır.

1 Güvenlik sektöründe genelde piyasada tanınan, herkesin bildiği ama aslında kazma olan kişiler çekiştirilir, racon budur. Ek olarak abartılmış açıklar ya da aynı konuşma ile 10 güvenlik konferansına gidenler de bu arada kaynar.

2 Niye üç blogun iki tanesinin adında "There is no spoon" geçer hiç bilmiyorum. Bu sanırım MMORPG larda karakter isimlerden "Dark" kullanmak gibi bir şey olsa.

3 Eğer yazarlardan biri kitap sayesinde zengin olduysa aynı yazarın marketing kategorisindeki "How to sell every single shit in the earth" kitabını almanızı tavsiye ederim.

4 Eğer o konuda uzmansanız ne okuduğunuz önemli değil. İlk defa duymuş olsanız bile okuduğunuzun fikrin iyi, süper veya saçma olduğunu anlayabilirsiniz.

5 Türk dilisi ve edebiyası derslerinde "deyimler" konusunda uyuya kaşdığımdan hangisinin deyim, hangisinin atasözü olduğunu çözemedim. Ama eminim ki yardımsever(!) bir TDK şövalyesi önce ayrı yazmadığım "de" ve "da" lar için beni sorguya çekecek sonra da bu gizemli konuya bir açıklık getirecektir.



Web Uygulaması Güvenliği Eğitimleri @ 08-02-2012 16:06

Güncelleme:
6-7 Haziran eğitim tamamlandı. Yeni eğitimler 15-16 Ağustos' da verilecektir. Zerumax' ın sitesinden bu eğitime kayıt olabilirsiniz, ilginiz için teşekküler. Eğitimin detaylarını yazının devamında görebilirsiniz.

15-16 Ağustos günleri "Web Uygulaması Güvenliği Eğitimi" vermek için Türkiye' ye geleceğim. 2 günlük eğitimde birçok güvenlik açığının nasıl exploit edileceğini gösterecek ve öğreteceğim. Eğitimler aktif şekilde yapılacak ve katılımcılar da kurulacak test sistemlerini gösterilen teknikler ile bizzat hackleyebilecekler.

Eğitim seviyesi başlangıçtan – orta düzeye kadar olacak. Katılımcıların en azından "HTML Nedir?" gibi temel bilgileri bilmesi gerekli ama ön bir güvenlik bilgisine ihtiyaçları yok.

Eğitim İçeriği

  1. Web Güvenliğine Hızlı Bir Giriş
    1. Web aslında nasıl çalışıyor?
  2. Web Uygulamaları ve Oturumlari (Session) anlama
    1. Üye Giriş sistemleri, Cookieler ve Oturumlar
    2.   Session Hijacking (Basit bir şekilde oturum çalma)
  3. Basit numaralar: E-ticaret sistemlerindeki sepetleri hackleme
    1. Client-side korumaları geçme
    2. E-ticaret sitelerinde klasik güvenlik açıklarını exploit etme
  4. XSS - Cross-site Scripting i anlama ve exploit etme
    1. XSS Nedir? Nasıl kullanılır, XSS ile ne yapılabilir ne yapılamaz?
  5. SQL Injection ı anlama ve exploit etme
    1. SQL Injection nedir?
    2. SQL Injection üzerinden sistemi ele geçirme
    3. Blind SQL Injection ve Time Based SQL Injection Saldırıları
  6. Hedef Sistemde Kod Çalıştırma (Command Injection, RFI, LFI)
    1. RFI (Remote File Injection) açıklarını kullanma
    2. LFI (Local File Injection) ile kod Çalıştırma
  7. Upload Formlarını kullanarak sistemi ele geçirme
    1. Upload formlarındaki güvenlik önlemlerini geçme
  8. CSRF
    1. Cross-site Request Forgery Nedir?
    2. CSRF kullanarak sisteme erişim
    3. CRSF ve SQL Injection ı kullanarak sistemde kod çalıştırma

Özellikle web sitelerinin güvenliğinden sorumlu olan kişiler, güvenli kod yazmak isteyenler, hackerların sistemlere nasıl saldırdığını öğrenmek ve o şekilde kendi sistemlerine saldırmak isteyenler için eğitimin çok verimli olacağını düşünüyorum.

Kayıtlar Başladı

Eğitim Zerumax tarafından organize ediliyor, Zerumax' ın sitesinden eğitime kayıt olabilirsiniz, eğitim sonunda katılımcılara eğitim sertifikası verilecektir. Ek olarak eğitim yeri Taksim Oteller Bölgesi olacak ve çay – kahve, öğle yemeği fiyata dahildir.
2 günlük eğitimin toplam fiyatı 750 YTL + KDV' dir.

Eğitim konusunda herhangi bir sorun ya da sorunuz olursa yorumlara yazabilir ya da ferruh(at)mavituna.com adresinden e-mail ile ulaşabilir ya da Zerumax ile direk olarak görüşebilirsiniz.



Psycho Folder @ 08-02-2012 16:06

I've got a routine of extracting downloaded video files, appending subtitles where required and moving them to the server that my PS3 connects, so I can watch it on my TV. This process involves about 3 steps, 1-2 minutes waiting, worse I have to be in front of the computer (second floor) to do these.

This weekend I decided to put an end to my misery and developed a small application which watches a folder and carries out defined rules based on the created/renamed files in the folder. After about 2-3 hours of hacking I end up with Psycho Folder. Just modify the Rules.xml, define your own rules and let it do the job for you. After I saw it on action and really liked it and spent another couple of hours for polishing.

It's written .NET Framework 2.0, get the source code or get the installer to give it a try. Report a bug or request a feature.



ITUnderground 2009’ un Ardından @ 08-02-2012 16:06

Konferanstan döneli bir kaç gün oldu. Konferansta gayet güzel sunumlar vardı. Benim çok aktif olmadığım bir konu olan Layer 2 güvenliği ile ilgili üç güzel sunum izledim. Pek ilgim olmadığından dolayı bir tanesi gayet bilinir bir konu olsa da gene de ben eğlendim. DTP, STP protokollerini kurcalama ve genel Vlan saldırıları ile ilgiliydi. Demoların bir çoğu güzeldi ve biraz daha derin bilgi almak keyifliydi.

Alexander Kornbrust' ın ORACLE SQL Injection prezentasyonu süperdi. Kesinlikle BSQL Hacker' a ORACLE ile ilgili template ve SQL Injection tespit güncellemesi yapacağım. Yılda ancak 2-3 ORACLE testi yaptığımdan o kısımda biraz paslıydım, bu sunum ve sunumdan sonra kendisi ile ettiğimiz muhabbetten sonra ORACLE' ın için kendimi hazır hissediyorum. Sunumun başları çok temel olduğundan ilk 30dk. sını atladım diyebilirim, ama ilk yarıdan sonrası harikaydı. Yeni bir şey yok ama konuyu en iyi şekilde aktarmayı başardı.

Ben One Click Ownage isimli bir sunum yaptım. Temel olarak bir tıkla SQL Server' dan reverse shell alma ya da benzer bir kod çalıştırmayı gösterdim. Bu önceden CSRF saldırıları ile SQL Server' ı exploit etme olanağı da sağlıyor. Her ne kadar bu nadir bir durum olsa da daha önceden bu tip bir şey mümkün olarak gözükmüyordu ve bu yöntem ile artık yapılabilir. Ek olara otomasyonuda çok kolay olan bir saldırı. Ben bir süredir kendi testlerimde kullanıyorum ve TFT/FTP vs. gibi aksiyonlara girmeden 20 sn. içerisinde reverse shell' e düşmek gerçekten keyifli bir durum.

Kendi sunumum ile ilgili kod, script ve uygulamaları yakında yayınlayacağım.



IT Underground – Prague 2009 @ 08-02-2012 16:06

IT Underground Prague 2009' da bu salı günü (24 Mart) "One Click Ownage" isimli bir sunum yapıyor olacağım inşallah. Konferanstan dönünce bu sunum yapcağım konuda da bir blog yazmayı düşünüyorum.



Bir Mim, Bir Kitap, Bir Hayat @ 08-02-2012 16:06

Bu aralar blog performansım çok kötü ama bunun güzel nedenleri var. Yeni projeler peşindeyim, uzun süredir ertelediğim işleri canlandırma peşindeyim, o yüzden RSS okuyucunuzun ayarları ile oynamayın...

Bir Mim

Onur, Kitap Yazsaydım Ne Üzerine olurdu? diye sormuş, sonradan topu atıp kaçmış. Aslında her zaman gerçek ya da gerçek olabilecek teknikler kullanan bir grup hacker' ın kurgusal maceralarını yazmak istemiştimdir ama vakit ve kabiliyetsizlik gibi nedenlerden dolayı bir türlü fırsatım olmadı. How to Own The Box ama daha iyi kurgu ya da Dan Brown' un Deception Point' i ama daha iyi teknik gibi.

Mim' i yorum yapanlara paslıyorum, ilginizi çekiyorsa hemen sitenizde devam edin yorumlara da adresinizi yazın, biz de okuyalım.

Bir Kitap

Sevgili eşim bana The 80/20 Principle: The Secret of Achieving More with Less' ı almış. Onu okumaya başladım, Pareto Prensibi zaten bildiğim çok uzun zamandır da yer yer uygulamaya çalıştığım şeylerden biri ancak kitap olayı çok daha derin ve kanıtlarla, gerçek örnekler ile ortaya koyuyor ki, gerçekten etkileyici.

Equality ends in dominance

gibi direk damardan girdiği ve insanı derin düşüncelere sevkettiği bir çok yer var.

Bir Hayat

Evli insanlar için hiçbir zaman bir hayat yoktur, "iki hayat" desek dağa doğru olacak. Bu aralar her zamanki gibi hayatımda değişiklikler yapmaya çalışıyorum. Taşınmak, işimi değerlendirmek, projeleri hayata geçirmek vs. gibi şeylerle uğraşıyorum. Eşim' de Homeshowroom ' da "Evin Delisi" köşesinde yazmaya başladı, onu da buradan tebrik etmek istedim :)*

 

* Sanırım bir blog yazısında ilk defa smile kullandım, çok heyecanlıyım



Doğu Akdeniz Üniversitesi Bilişim Haftası @ 08-02-2012 16:06

Şimdi bu etkinliği son anda iptal edildiğinin haberini aldım, dolayısıyla Bu Pazartesi Kıbrısta olmayacağım. Yok ille de senin bir konferansına geleceğim diyen varsa bu ayın sonundaki IT Underground' a beklerim.



GROUP_CONCAT MySQL SQL Injection @ 08-02-2012 16:06

Apparently GROUP_CONCAT() is already known by many people, except me! I've just found it. It allows to get multiple rows as a string. This makes it a perfect candidate for one-row union SQL Injections. There is one catch though, by default it returns only 1024 characters (global option, can't be set via an SQL Injection) which is not enough for one query sql-dump sorts of tricks.

However this simple query can be useful for enumerating tables and columns together in fewer requests:

  • SELECT CONCAT(table_name,'>',GROUP_CONCAT(column_name)) FROM information_schema.columns WHERE table_schema=database() GROUP BY table_name LIMIT 1,1
  • SELECT CONCAT(table_name,'>',GROUP_CONCAT(column_name)) FROM information_schema.columns WHERE table_schema=database() GROUP BY table_name LIMIT 2,1
  • SELECT CONCAT(table_name,'>',GROUP_CONCAT(column_name)) FROM information_schema.columns WHERE table_schema=database() GROUP BY table_name LIMIT 3,1
  • SELECT CONCAT(table_name,'>',GROUP_CONCAT(column_name)) FROM information_schema.columns WHERE table_schema=database() GROUP BY table_name LIMIT n,1

 

Output will be look like:

  • 'db>Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Grant_priv'
  • 'help_category>help_category_id,name,parent_category_id,url'
  • 'help_keyword>help_keyword_id,name'

Damn! I should update SQL Injection Cheat Sheet and SQL Injection Wiki , lots to catch up...



Yazılım Geliştirmenin İki Yolu @ 08-02-2012 16:06

Diyelim ki bir uygulama için raporlama fonksiyonu geliştiriyorsunuz. Bu raporların CVS ve HTML formatını desteklemeleri gerekiyor. Bu durumda iki seçeneğiniz var:

  • İki fonksiyon yazmak
    • Rapor datasını alıp CSV çıktı üreten bir fonksiyon,
    • Rapor datasını alıp HTML çıktı üreten bir fonksiyon.
  • Bir raporlama sistemi yazmak;
    • CSV ve HTML için iki şablon tasarlanır,
    • Raporlama sistemine Rapor Datası verilir,
    • Raporlama sistemine Rapor Şablonu verilir,
    • Raporlama sistemi bu iki bilgiyi birleştirip raporları oluşturur,
    • Bu altyapı kullanıcıdan gizlenir içeride kullanılır. Gerekirse gelişmiş kullanıcılarda bu rapor sistemini kullanarak daha sonradan yeni rapor tipleri üretebilirler. Mesela XML rapor alabilirler.

Birinci yolun avantajları ve dezavantajları:

  • Hızlı bir şekilde sonuca ulaşmak, kodun çok daha basit olması.

İkinci Yolun Avantajları

  • Prezantasyon ile datanın temiz şekilde ayrılmış olması,
  • Daha sonradan yeni bir rapor formatı gerektiğinde tekrar kod yazmaya gerek olmaması,
  • Daha sonradan bu fonksiyonun kullanıcılara açılabilmesi.


Şimdi geniş ölçekte farklı yolları seçen yazılımları görelim:

  • Internet Explorer
    Birinci yolu seçen yazılımlardan.
  • Firefox
    İkinci yolu seçen yazılımlardan. Firefox bir onlarca fonksiyonu XUL Framework' ü üzerine inşa etti. Dolayısla aynı raporlama sistemi gibi XUL sistemini yazdılar. Daha sonradan geniş bir API ile onu desteklediler ve aynı herhangi biri Firefox için eklenti (addon) yazarmış gibi Firefox' un iç sistemini geliştirdiler. Daha sonrada bunu kullanıcıya açtılar. Açılan API çok güçlüydü çünkü geliştiriler XUL ile bir şeyler geliştirirken API yüzünden tıkandıklarında API' ı geliştirdiler dolayısıyla tüm sistem çok daha güçlü bir hal aldı.


Benzer örneklerden gidersek Macromedia' nın hemen hemen tüm ürünleri de aynı şekilde geliştirilmiştir. Ana motor JavaScript + Macromedia' nın güçlü API larını destekler. Aynı XUL gibi JavaScript ve bu API' lar birleştirilerek extension' lar yazılabilir. Eğer Dreamweaver, Flash gibi yazılımların altyapılarını incelerseniz ana sistemden sonraki hemen hemen tüm yazılımın JavaScript ile yazılmış olduğunu görebilirsiniz. Yani bu kodları değiştirerek aslında tüm yazılım arabirimlerine kadar değiştirebilir ya da yeni fonksiyonalite ekleyebilirsiniz.

Burada bence unutulmaması gereken şey geliştirilen yazılımın boyutudur. Yani Macromedia ya da Firefox bu tip bir framework' ü destekleyebilir ama küçük bir takım için bu seçim büyük bir yanlış olabilir. Ama raporlama sistemi küçük olduğundan tek kişi olarak çalışan bir geliştirici bile raporlama sistemini özel bir çözüm yerine bu şekilde genel bir çözüm olarak geliştirebilir.

Benim naçizane fikrim iyi programcılar her zaman ikinci genel çözümü yapmak ister, ancak hayatın gerçekleri işin yönünü değiştirebilir.



Sakin @ 08-02-2012 16:06

Emre Yılmaz "Genç Bir İşadamına" kitabında bir koltukta oturup hiç bir şey yapmadan durmanın ne kadar zor olduğunu anlatır.  Bu kitabı altı sene kadar önce okudum ama sanırım ne demek istediğini yeni anladım. 

Lise hazırlıktayken çok sıkı bir Fallout oyuncusuydum ve hafta sonu rutinim şu şekildeydi:

  • Saat 7:30 sularında uyanılır,
  • Bilgisayar başına geçilir,
  • Tuvalet ve Yemek molaları hariç tüm vakitte Fallout oynanır.


Hayatımı sanal bir dünyada yemiş, bitirmiş olmaktan gurur duyduğumu söyleyemem ama açıkçası yaşadığım dertsiz, tasasız kendini tamamen başka bir dünyaya kaptırmanın verdiği o keyfi hayatımda bir daha yakalayabileceğimi sanmıyorum. Gene altı sene kadar önce sıcak bir yaz gecesinde Marmara manzaralı balkonumun kenarına kurduğum bilgisayarımda, müzik dinleyip chat yaparken "Daha ne isteyebilirim ki?" dediğimi hatırlıyorum, bu da tekrar zor ele geçirilecek anlardan biriydi.

Artık o kadar çok "yapacak şey" var ki, her zaman bir şey yapmam gerekiyor. Derdimin dermanı David Allen değil, onu biliyorum, çünkü her şeyi yapmak özellikle de materyalist değil ruhsal açıdan da yaşayan bir insan için maalesef pek kolay değil. Gazze' dekileri görüp, Afrika' da açlıktan ölen insanları görüp, etrafımızda zorluklarla yaşayan insanları görüp, bir şey yapmamak kolay değil. Kendi rahatlığının "görünürde" verdiği avantajın altından kalkmak kolay değil, sen evde akşam yemeğinde hangi yemeği yesem diye düşünürken arkadaşının "akşam yemeğinde ne bulabilirim?" diye düşündüğünü bilirken sakin ve huzurlu bir hayat yaşamak kolay değil.

Her zaman yapacak bir şeyler:

  • Yapmadığım dini görevlerimi yerine getirmeye başlamak, yapıyorsam daha iyisini yapmaya çalışmak,
  • Hafta 2-3 gün çalışarak istediğin şartlar altında yaşamanın yolunu bulmak,
  • Haftalık çalışma vaktini azaltabilmek için bir proje geliştirmek,
  • X Projesini yapmak,
  • Y Projesini geliştirmek,
  • Z işine girmek,
  • Q konusunda bilgi sahibi olmak,
  • Hal - hatır sormak, dostları bulmak,
  • Aileye daha çok vakit ayırmak vs. vs.


Bu tam anlamıyla sonu olmayan bir liste, işte bu yüzden insan koltuğa yatıp 30 dk. hiç bir şey yapmadan duramıyor, çünkü biliyor ki yapılması gereken bir çok şey var. Bir çok çözüm var, yeni nesil  (özellikle avrupadaki, amerikadaki yeni nesil ve Türkiye' de onları taklit eden yeni nesil) gibi hiç bir şeyi takmamak, inanmamak, salmak gitmek. Bunu her bünye kaldırmaz. O kültür ile büyümemiş bünyenin kaldırması daha da zordur, işte bu noktada tekrar iyi ve kötü tarafıyla "Ignorance is bliss" lafı akla geliyor.

Konuyu bağlayacak bir yerde bulamadım, bir nevi iç dökme olarak kabul edin artık.



Güle Güle Twitter ve FriendFeed @ 08-02-2012 16:06

Nedense ben bu süreçten çok fazla geçiyorum, her şey IRC ile başladı, daha sonra ICQ' ya geçti, sonra MSN, skype oldu vs. Ondan sonra IM olayından tamamen koptum. Bu süreç içerisinde forum kavramı bir dönem hayatımda oldu. Bu basit dönemlerde internette sosyalleşme de basitti.

Daha sonra Facebook ve MySpace gibi delilikler başladı ki Allah' a şükür Orkut' un ilk dönemlerinden dersimi almış olduğumdan onlara hiç bulaşmadan sıyrıldım. İnsanların okul arkadaşları ile, eski dostları ile diyalogunu bu tip bir platform üzerinden sürdürebilmesi her ne kadar kulağa çok güzel gelse de, o kişi okulda arkamdaki sırada otururken bile kendisi ile görüşmediğimden, bugün kendisini bir daha bulup neden görüşmek isteyebileceğimi bilmiyorum! Bu genel bir sorun değil bu benim sorunum, olayı yeterince sosyal ya da hümanist olmadığımı söyleyerek çözümleyebiliriz sanırım. Ya da diyelim ki yapılacaklar listemde on sene önceki arkadaşlarımın bugün hangi sosyal platformda kaç kız arakladığını takip etmek yukarılarda değil.

Bu dönem hala sürerken başka bir şey başladı, Twitter ve FriendFeed. Ben açıkçası Twitter' ı çok sevdim çünkü diyaloglar tamamen pasifti. Dolayısıyla dialogdan çok monolog vardı, bu da benim sevdiğim şeylerden biri. Ek olarak blog yazan biri olarak kısa şeyleri de paylaşmayı seviyorum ve bunun için de güzel bir platformdu. Yani microblogging dedikleri hadise... Twitter' da aktif olmaya başlayınca twitter' ın yapısı yetmez olmaya başladı, sonra bir çok kişi bana FriendFeed' i önerdi ve ben de ona geçtim.

Şimdi her zaman yaptığı gibi tarih tekerrür ediyor ve ben FriendFeed ile Twitter' dan da kopuyorum. Dolayısıyla diğer bir sosyal hoppalık maceramda bu şekilde sonuçlanmış oluyor.

Neden Kullanmıyorum

  • IM Kullanmama Nedenlerim;
    • Konsantrasyonumu etkilemesi
    • Aynı diyalogun telefon üzerinden 30 dakika yerine 2 dakikada çok daha verimli olarak çözülebileceğini bilmem
    • İnsanların istedikleri zaman size ulaşabiliyor olması (bu nedenle 2 sene boyunca cep telefonu kullanmadım ama maalesef onun yararları zararlarından çok olduğundan şu an gene mecburen kullanıyorum)
    • E-mail, forum ve bilumum pasif komünikasyonun birçok konuda daha verimli olması
  • Facebook, MySpace Gibi Sosyal Ağları Kullanmama Nedenlerim;
    • Herhalde buna ciddi bir cevap vermemi beklemiyorsunuz. Bunun cevabı bariz zaten. Belki de doğru soru neden kullanayım ki?
  • Artık Forum Kullanmıyor Olmamın Nedenleri;
    • Drama, polemik vs. ana nedenler ama bunun harici kaliteli forum bulmanın pek mümkün olmaması. Zoque Forum harici bir böyle bir forum görmedim, Zoque' un da altın dönemi maalesef kapandı, her ne kadar yeni bir nesil varsa da web tasarımı konusundan çok uzaklaştığımdan dolayı eski tadı alamıyorum. Gene de hala okuyor ve arada yazıyorum. Sadece eskisine göre çok daha az.
  • Twitter' ı Az da Olsa Kullanıyor Olacağımın Nedenleri;
    • Sinirlenince bir şekilde küfretmem gerekiyor,
    • Rasgele, hatta salakça ama çok derinmiş gibi gözüken cümleleri yazabileceğim bir yere ihtiyacım var,
    • Çünkü bağırmak, saçmalamak ve cevap almamaktan daha keyifli az şey var.
  • FriendFeed' i Az Kullanıyor Olacağımın Nedenleri;
    Zoque Forum' da seneler önce Din ve Siyaset konuları tamamen yasaklanmıştı. Önce bu bana çok saçma geldi. İnsanlara "O kadar tek hücreli beyinlere sahipsiniz ki bu konuları tartışmayı bile beceremiyorsunuz" demek gibiydi. Kısa sürede öğrendim ki insalar gerçekten de tek hücreli beyinlere sahipti ve bu tip konuları mantıksal ve saygı çerçevesi içerisinde tartışamazdı. Bunun ikinci ana nedeni ise bu iki ilmin de matematik gibi kesin cevaplarının olmaması ve tamamen kişisel olmasıydı. Tabii ki bu konulardaki hakaretlerin veya çirkefliklerin kişisel olarak insanları ciddi derecede rahatsız ediyor olması da cabası. İşte FriendFeed' den uzak duracak olmamamın ana nedeni bu. 
    • Signal - Noise oranının genelde kurtarmıyor olması, bunun bir nedeni de benim ilgili olduğum konularda ilgili olan insanların sayısının benim çemberimde çok fazla olmaması.
    • Çok fazla din ve siyasi konu geçiyor olması, Din bilmeyen kişiler ile tartışılabilecek bir şey değil, dolayisıyla din ile ilgili konular genelde bok atalım izi kalsın kıvamında, hakeza siyaset konusu da o şekilde. Siyaset ile zaten ilgilenmediğimden o konuların hepsi benim için çöp oluyor ama insanların 3,5 kitap, 2 televizyon programı ve 7 internet haberi ile her renkteki siyasi olay hakkında vücutlarının bilumum organları ile ileri-geri konuşmaları hakikaten eğlendirici. Ama bu tip bir diyalog görmek istersem zaten FailBlog ya da MySpace yorumlarını okuyorum.
    • Polemik, pire ve deve mevzuları. Ama her şeyden çok drama, drama ve drama. İnsan = Drama.  Benim hayatımda yeterince drama var, kotayı doldurmak için dışarıdan yeni drama ihraç etmem gerekmiyor. Gerektiği zamanlarda da Lorenzo' nun Yağı ' nı izleyip bir milenyuma yetecek kadar drama depoluyorum.


İnternet büzemeyeceğin milyonlarca ağızdan oluşuyor, dolaysıyla biz de büzmek yerine görmezden geliyoruz. Bu platformların hepsi kişisel veya markasal marketing için süper yerler ama herkesin bildiği iki gerçek var:

  1. Joey doesn't share food
  2. Ferruh doesn't do marketing


Hayat Denilen Arbede @ 08-02-2012 16:06

23 gündür blog yazmayınca "Aloo, Ferruh, yaşıyor musun?" kıvamında e-maillar almaya başladım. Dolayısıyla yazmak boynumun borcu oldu, ödeyeyim kurtulayım. Gene yazacak güzel bir şey, ben de ortaya karışık yapayım dedim. Şöyle kısaca hayatımda bu aralar nelerin IN nelerin OUT olduğunu ileteyim.

IN

  • Kitap Okumak
    Tekrar okumaya başladım (tekrar görmeye başladım gibi oldu!). Joel on Software' i bitirdim. Henüz bitiremediğim Secrets & Lies' ı tekrar okumaya başladım. The 80/20 Principle ile Haunted' ı da listemde beklemeye aldım.
  • Güzel Filmler İzlemek
    Rutin olarak haftada 3-5 film izliyorum zaten ama genelde 3-5 güzel film izlemek pen nasip olmuyor. Hollywood' da eşek kadar bütçe ile bu kadar boktan filmler çeken yönetmenleri de hayranlığımı da buradan bir defa daha iletmek isterim. Zaten bu yüzden Hollywood filmlerinden uzak durmaya çalışıyorum, Avrupa yapımları gibi olamıyorlar ama Avrupa' dan çıkan film sayısı da çok düşük. Geyiği geçer konuya gelirsem yakın dönemde şu süper filmleri izledim:
    • Freedom Writers
    • Pay It Forward
      Kevin Spacey' nin kötü filmi var mı?
    • Pride & Prejudice
      Klasik ingiliz romanının, İngiliz uyarlaması, süper bir eski İngilizce' nin tüm estantaneleri ile. Eğer bir film dram ya da romantik olacaksa böyle olabilir.
    • Slumdog Millionaire
      Diğer bir dram ama süper bir yapım, izlenmeli. Hayatınızı değiştirmeyecek ama keyifli bir iki saat geçireceksiniz.
  • Ar-Ge Yapmak
    Önümüzdeki ay Prag' ta olacak bir konfreransa konuşmacı olarak davet edildim, onun verdiği motivasyon ile bu aralar yeni birkaç konu üzerinde çalışıyorum. Konferans sonrası bu projelerin detaylarını yayınlayacağım inşallah.
  • Dil Muhabbetleri Etmek ya da EdememekDil yapıları hakkında muhabbet etmek her zaman hoşuma gitmiştir, bu dönemin konuları : İngilizce, zamanlar, Türkçe' deki kelime sayısı vs. İngilizce kelime zenginliği, ayrı yazılan de ve da' ların saçmalığı, yazı reformunun dili yozlaştırmasını yüzde vurulması, İngilizce' deki abuk ve sabuk kullanımlar, manyak zamanlar ve tuhaf olaylar.
  • Felsefe ve Demagoji Yapmak
    Ne konuda olduğu önemli değil, yapmak için yapmak.

OUT

  • Blog Yazmak
  • RSS Okumak
  • E-maillara Cevap Vermek!
  • FriendFeed, Twitter gibi sosyal hoppalıklarda aktif olmak

Son olarak bu aralar "her şey gereksiz ne de olsa" moduna girdim, sanırım Britanya' nın kara toprakları beni iyice kişisel ve bencil biri yaptı, etrafımda olan olaylar her gün daha da uzaklaşıyor ve anlamsızlaşıyor.

Özetle evet, yaşıyorum. Neden bilmiyorum ama aklıma şairin harika dörtlüğü geldi, spontane bir blog yazısı olması açısından onu da ekleyeyim:

Başım Belada,
Tabancamı unutmuşum helada,
Nereye gitsem çaresi yok,
Yalnızım…



Sevdiğim Web Uygulamaları @ 08-02-2012 16:06

Bazı web uygulamları var ki onlar olmadan işler çok zor olurdu, ufak bir liste yapayım dedim:

Olsa da olur olmasa da:

Bu aralar biraz başım karışık o yüzden pek yazamıyorum, yakında eski rutinime döneceğim inşallah.



iPhone’ da Ebook Okumak @ 08-02-2012 16:06

Siteyi takip edenlerin bildiği gibi kitap okumayı seven biriyim. Benim için en iyi kitap okuma zamanı seyahattir. Şehir içi, şehirlerarası, ülkeler arası, kısa bir otobüs yolculuğu fark etmez, her şekilde seyahat kitap okumak için güzel bir fırsat demektir. Eğer burada yeni kitaplardan bahsetmiyorsa bunun anlamı seyahat etmiyorum demektir. Yeni bir seyahat hazırlandığımdan iPhone' um ile en verimli kitap okuma yöntemlerini araştırmaya çalıştım.

Sanırım yıllarca bilgisayar üzerinde doküman okuduğumdan dolayı dijital ortamda kitap okumak bana çok pratik, basit ve hatta kağıt üzerinde bir şey okumaktan daha konforlu geliyor. Amazon Kindle, Pocket PC, BlackBerry ve iPhone gibi yüksek çözünürlüklü ekranlara sahip, güçlü işlemcilere sahip küçük cihazların popülerleşmesi ile e-kitap kavramı da daha çok hayatımıza girdi.

E-kitap için özel formatların yanında iki popüler format var:

PDF büyük ekranda kesin olarak CHM' den çok daha iyi olsa da CHM' in HTML altyapısı CHM' i küçük cihazlarda kesinlikle seçim nedeni yapıyor. iPhone CHM formatını desteklemiyor, bunu desteklemesi için iChm yazılımını almanız gerekiyor. 10$ civarında bir fiyatı var, yaptıklarını düşününce gayet makul bir ücret. Yalnız sorun şu ki hemen hemen hiçbir yayın firması kitaplarını CHM formatında yayınlamıyor. Bu yüzden sadece MSDN Magazine gibi yayınlar CHM formatında bulabiliyorsunuz.

PDF' i iPhone' da Nasıl Okursunuz

Eminim ki bazılarınız şunu düşünüyor:

Özel bir şey yapmamıza gerek yok, iPhone zaten bunu destekliyor!

Doğru ve yanlış. Doğru çünkü iPhone' un kendi içerisinde PDF desteği var, dolayısıyla ekstra bir PDF okuyucu yüklemeniz gerekmiyor ama bu PDF okuyucu "tagged" dokümanları desteklemiyor, ya da ben nasıl destekleyeceğini çözemedim, bu dokümanları desteklese dahi elinizde Adobe Acrobat gibi bir yazılım olmadan dokümanları taglayamazsınız. "tagged" en basit şekilde sabit bir genişliği olmayan, aynı Word ve Txt dosyalarda olduğu gibi "word-wrap" destekleyen PDF dokümanı demek. Eğer 200 px genişlikteki bir ekranda 600px genişliğe göre tasarlanmış bir PDF dokümanını okumaya çalışırsanız ne demek istediğimi anlarsınız.

Sorun şu ki, iPhone işletim sistemine PDF okuyucu yerleştirmiş ama bu okuyucu küçük ekranlara özgün olarak tasarlanmadığından dokümanlara resim gibi bakmaktan başka işe yaramıyor, ya da PDF özel olarak iPhone için üretilmiş olmalı. Apple zaten işletim sistemine bir PDF okuyucu koyduğundan dolayı kimse 3rd parti bir okuyucu geliştirme gereği duymuyor, dolayısıyla iPhone kullanıcılarının daha uzun süre bu kısıtlı PDF okuyucusuyla yaşamak zorunda olduğunu söyleyebiliriz. Küçük ekranlarda güzel çalışan bir PDF okuyucusu örneği şurada görülebilir.

Bu kadar geyikten sonra hareket zamanı geldi, iki adımda PDF dokümanlarını iPhone' a koyacağız.

  • PDF Dokümanını Word Dokümanına çevir
    Bir çok yazılım ve online siteden sonra bu işi en iyi yapan yerin PDF Online olduğuna kanaat getirdim. PDF dosyanızı yükleyin, 2-3 dakika içerisinde Word dokümanı olarak indirin. Dosyayı indirdikten sonra MS Office, Open Office vs. gibi bir yazılımla açıp .doc dokümanı olarak tekrar kaydetmeyi unutmayın.
  • iPhone' a transfer et
    iPhone dosya transferi için en pratik program Files Lite, ücretsiz ve WebDav üzerinden dosya transferi imkanı sağlıyor. Daha sonradan iPhone' un desteklediği formatları ekranda gösterebiliyor.

iPhone' un normal şartlar altında dosya sistemine erişimi yok, bundan ve diğer bir dizi salak kısıtlamadan ( daha doğrusu lock-in) kurtulmak için Quickpwn gibi bir yazılım kullanabilirsiniz. Bundan Cydia ya da Installer üzerinden terminal, OpenSSH ya da benzeri bir yazılım kullanarak dosyalara direk erişebilirsiniz. Ek olarak Windows kullanıcıları iPhone Browser isimli harika yazılımı da kullanabilir.

Benim deneyimlerimde 7MB' tan büyük dosyalarda Safari patlıyor ve kendini kapatıyor. Bu tip durumlarda kitabı Word üzerinde 3-5 parçaya ayırabilirsiniz, bu kitapların ekranda yüklenme hızını da yükseltecektir. iPhone' da kitap okumak için diğer bir seçenek PDF' i HTML' e çevirmek olabilir. Zamzar bunu destekliyor ve BookReader yazılımı da pratik bir çözüm sunuyor ama maalesef henüz bunu test etmeye fırsatım olmadı.



Durdu ve Yeter Dedi @ 08-02-2012 16:06

Okuduğunuz şeyler daha sık dejavu yapar hale geldiyse, yeni makalelerin başlıklarına bakıp tam olarak neden bahsettiğini tahmin edebiliyorsanız, aynı şeyi yeni metaforlar ile dinlemekten sıkıldıysanız, okumanın, öğrenmenin, daha fazla araştırmanın vakti geçmiş, harekete geçmenin vakti gelmiştir. Altı ay bir yıl sonra belki yeni bir şeyler filizlenmeye başlar o zaman tekrar dönüp, okumaya, öğrenmeye, araştırmaya başlayabiliriz… Sanırım gerçekçi kalmak için ne zaman durmak gerektiğini bilmek lazım.



The Triumph of the Nerds @ 08-02-2012 16:06

2 kelime, bulun ve izleyin.

Eminim hepimiz hikayenin bazı parçalarını biliyoruz, ama izleyince ben bazı eksik parçaları yerine oturttum.



Son Zamanlarda @ 08-02-2012 16:06

Her ne kadar FriendFeed' den kısa dalga yayın yapsamda, bazı şeyleri burada tekrar yazmak istedim:

  • SQL Injection Wiki Beta yayınına açtım,
  • Stackoverflow' u keşfettim, geliştiriciler için harika bir site. Ek olarak web projeleri geliştirenler içinde inanılmaz bir case study olur,
  • IPhone için gelmiş geçmiş en iyi yazılımın InstaPaper olduğunu anladım,
  • Hacker News' i takip etmeye başladım,
  • Paul Graham' ın tüm yazılarını okumaya başladım,
  • Önümüzdeki ay İstanbul' a gelmenin planlarını tamamladım,
  • Kendime yılbaşı hediyesi olarak şunlardan bir tane aldım, bu sayede dandik Philips 5.1' lerden kurtulmuş olacağım. Philips almamayı öğrendim,
  • Zeitgeist ve Zeitgeist Addendum' u izledim, Hem doğru, hem yanlış, yoğun şekilde tek taraflı propogandanın ve eski fikirlerin bilmeyen insanlara cilalanıp tekrar gösterilince viral etkisi yapabildiğini öğrendim. Yargılayarak izlenirse, tavsiye edilir.
  • Fringe' i keşfettim, süper. Doğru dozda bilim-kurgu, ne az, ne fazla. En azından Klington ile ilgili bir olay yok!
  • Crash Commando oynamaya başladım
  • Call of Duty 4 ve 5' in nin kesinlike gelmiş geçmiş en gerilim yüklü ("intense") multiplayer oyun olduğuna tekrar kanaat getirdim,
  • "Yerli malı yurdun malı, herkes onu kullanmalı zihniyetinin" ne kadar yavanca anlaşıldığını ve uygulandığını tekrar, tekrar ve tekrar keşfedip, sadece Sakaryalı hemşehrilerimden hosting hizmeti almaya karar verdim(!) İnsanlara bu zihniyetin hiç bir şeye yardım etmediğini hatta sektöre zarar verdiğini anlatmaya üşendim, "koy arka tarafına, gitsin" edası takındım.
  • ""Nerd" telefonu telefon hakkında konuşmak için kullanan kişiye" denir gibi acayip bir laf duydum, kendi kendime güldüm. Kendi kendime gülünce kendimi biraz a-sosyal hissettim, kendime bir social-bunny ısmarlayıp, b-sosyal konuma geçirdim.


Köle Olmayı Seçmek @ 08-02-2012 16:06

Bu yazı arada yazdığım gibi giriş – gelişme – sonuç kavramlarından uzak, daha çok bazı duyguları düşünceleri tetiklemeye eğimli bir yazıdır. Ek olarak yazı genel bir konu üzerinde dolaşmayı bile becerememekte. Dolayısıyla diğer bir kendi halinde yazı olarak Kabul edilebilir...

İnsanoğlu kendi elleriyle hayatı o kadar komplike bir hale getirdi ki bu dünyada hayatta kalabilmesi için artık 15 sene eğitim alması gerekir hale geldi. Yaşayabilmesi için hayatının %75' ini çalışarak geçirmek zorunda kaldı. Küçüklükten başlayarak bu durumu o kadar güzel bir şekilde yeni beyinlere empoze etti ki, kişiler kendilerinin köleliğini savunur hale geldi. Para, dünya, şan, şöhret için çalışmak önemli, değerli hatta saygı duyulacak bir iş gibi gösterildi. Daha sonra öyle bir noktaya geldi ki artık herkes bunlar konusunda hem fikir olmaya başladı.

Bir insan şunu söyleyebilir hale geldi:

Eğer zengin olsaydım da bu şekilde çalışırdım

Eğer siz de haftanın 5-6 gününü geri kalan 1-2 gününü yaşayabilmek için harcadığını hazmedeyenlerdenseniz, neden bahsettiğimizi anlıyorsunuz demektir. Çalışmak için çalışan insanların olduğu bir toplumda yaşar olduk, artık bizi köle yapmıyorlar biz kendimiz "özgür" irademiz ile köle olmayı seçiyoruz. Kendimizi kendimizden azad edebilecek miyiz?

Herkese yetecek bir dünyayı paylaşamıyoruz, 1500 somalilinin öldüğü bir operasyonda 18 amerikan askeri için film çekiyoruz (çünkü 1 yankee = 100 somalili değerinde!), neyi neden yaptığımızı bilmiyoruz, nereye gideceğimizi düşünmüyoruz. Bir kaç gün önce dünyayı değiştirecek fikirleri düşünüyordum, "Her iyilik yapılan kişi üç kişiye iyilik yapsa", "The Venus Project" vs.

Sanırım "Bill Gates' i müslüman yapmak" listenin başına konulabilir. Bunun anlamı dünyanın en zengin adamlarından birinin Zekat ödeyeceği yani her sene elindeki tüm değerlerin 40/1 ini fakirlere dağıtacağı anlamına geliyor. Belki sadece Bill Gates' i müslüman yapmak tek başına dünyadaki açlığı çözmeyecektir, ama ütopik bir şekilde tüm dünyanın zekat verdiğini düşünün. Bu ütopik dünyada fakirlik diye bir sorun olmayacaktı.

Bugünün global dünyasında yaşayan insanlar olarak her saniye suçluluk duygusu içerisinde olmamak mümkün olabilir mi? Benim doğduğum yer ondan daha iyi, o daha doğarken kaybediyor. Ben komşumdan daha çok kazanıyorum, benim şansım yaver gitti, kolum ve bacağım var, görebiliyorum ve konuşabiliyorum. Oradan insanlar savaşta ölürken ben MSN' de arkadaşlarımla muhabbet edip blogumda züppelik yapıyorum, suçluluk duygusu içerisinde olmamak mümkün mü?

Sanırım bunun tek çözümü İlahi Adalet' e inanmak, bilmek değil idrak etmek. Hiç bir şeyin kimsenin yanın kalmayacağını ve kimsenin sınavının başka biri ile aynı olmadığını anlamak.

Şimdi hepinize Happy Xmas, Hannukah ve new year...

* The Venus Project ve Zeitgeist Addendum -çok tek taraflı bir film, izlerken yargınızı kaybetmemeye çalışın- bunu tetikledi



Insecure Trends in Web 2.0 @ 08-02-2012 16:06

We are living the second dot-com craziness, although this time it doesn't look like a bubble, it works just fine and every month a new Web 2.0 application acquired for millions.

Couple of popular web trends appeared and revived in Web 2.0 applications:

  • Usability
  • Simplicity
  • Sociability
  • Integration
  • Outsourcing
  • Cutting Edge Technology
  • Trust

All sounds good but also they came with their sins. And their disease of being insecure just spreads.... New start-ups and all kind of Web 2.0 entrepreneurs following previously "worked" insecure practices for the sake usability, simplicity, sociability and money.

 

Usability & Simplicity

Usability is really important, everything should be so easy in Web 2.0 applications, such as:

 

Change password functionality

Why bother with requesting user's current password before changing their password, they've already logged in, right(!). Impact of this is quite obvious. Permanent account hijacking in shared computers or result of an XSS attack.

Guilty:  twitter

Give me your Hotmail password so I can get your contact list

Since when giving your e-mail password to a website is OK? Thanks to social websites now it's a common thing to give away your e-mail passwords to other websites. What's next, giving away your online banking password? (Didn't I tell you? Mint already did that!)

Guilty: Bebo, Facebook, Diigo, LinkedIn, slideshare and every single social Web 2.0 application out there

 

SSL

Big web 2.0 applications are so popular and they are generally traffic heavy. Which causes them to simply ignore SSL for performance reasons. Even if they supports SSL generally they don't mark cookies as 'secure' which allows an attacker to carry out successful session hijacking attacks.

Guilty: Most of the Web 2.0 applications and particularly Gmail for the last 4 years. They've recently introduced an option to force gmail to work over SSL. Funny enough it's still not over SSL by default.

Retrieving Password by E-mail

Almost all web applications can retrieve your password to your e-mail without requesting any other extra information like a "security question" or something.  This means if your e-mail account get hacked your identity has gone within moments.

Guilty: Almost all Web 2.0 Applications

Plain Stupid Simplicity

Couple of Web 2.0 application doesn't even allow you to choose a password more than 8 characters because they keep it simple(!) Forcing your users to choose insecure passwords is not simplicity it's stupidity.

   

Remember Me

We might forgive this one but now every single application allows this feature which makes them easier to exploit against Cross-site Scripting attacks or account hijacking in shared computers.

Guilty: Everyone!

 

Sociability

Social engineering was some kind of an art but now it's bloody easy. If you are trying to learn more information about someone such as "what colour of undies she's wearing" or "what's her birthday" or "who's her boyfriend" or "where was she last night" or "in which company she's working as personal assistant" just visit her profile in Facebook, myspace, bebo, read her twitter messages, learn her taste of music by checking out her last.fm profile. Don't stop there learn what she reads from librarything and what she eats from another social website, and see her resume in LinkedIn. Finally don't forget her blog where she writes every little totally useless information about her daily life. Funny enough you'll figure pretty soon her e-mail password is her dog's name.

Couple of years ago we were talking about how "out-of-office" replies leaks information, now we are talking about massive information leakage about everything. All employees blog about stuff, companies being "open" and "transparent". That's the Web 2.0 for you where your birthday is publicly available in 15 different social websites and your company's new and super project's first draft already published in one of your developer's blog.

Password cracking and Social Networks

Beside of the obvious potential social engineering attacks, identity theft or faking one's identity sort of attacks there are other issues. An attacker can use different social networks to find answers of "secret questions" to reset the password of his or her victims in different websites furthermore an attacker can gather all of this information and might use it in a dictionary attack against online accounts or an offline password cracking attack.

Integration

CSRF(able) Bookmarklets and Tool Integration

Bookmarklets are inherently vulnerable to CSRF attacks and most of the Web 2.0 applications which supports social integration provides several bookmarklets.

Guilty: twitter, Diigo

Overpowered APIs and Duplicated Code

To increase the integration between services most of the Web 2.0 applications provides powerful APIs. Generally the web application doesn't use these APIs internally which leads developers to common security pitfalls such as "duplicated code", "broken authorisation", "information leakage".

Features in the APIs provides more than the user interface and generally provides easier automation which can cause massive information leakage issues. Same things goes for different interfaces to access the same functionality. For example twitter protected itself against CSRF in the web interface although it was still vulnerable to CSRF in the mobile interface (which was in the same domain therefore vulnerable).

Guilty: Facebook, twitter (mobile interface)

 

Outsourcing

Since lots of things have been already built, why bother to build our own system. Let's just use others'. From productivity point of view this is one of the greatest things happened to web, just like programmers using external libraries now web developers can use external widgets. Instead of building your own photo gallery just use Flickr, instead of using your own flash player just embed it from youtube. Instead of rolling your own webstats just use "google analytics", add an "adsense javascript" or "google ad manager" so you don't need to manage your ads.

This is all good but it comes with a price, it increases the attack surface of the applications. Do you remember Fluffy Bunny's attack to SecurityFocus ? Every piece of javascript, flash animation, java applet, RSS feed is a potential vulnerability in your website. If an attacker can gain access to one of this external resources game is over in the client-side. Now your website is vulnerable to Cross-site Scripting because of this.

It's client-side, that's true, but what about attack opportunities such as stealing keylogs in login forms via JavaScript? After this an attacker might login as admin, and now it's a proper defacement.

Guilty: The Internet

Cutting Edge Technology

Everyday there is new buzz in Web 2.0. It can be AJAX, Flex, Adobe AIR, Silverlight, Comet, Flash & Web Services, Widgets, Crazy JavaScript libraries etc. When the technology is new that means "best practices" are not defined yet, they are "work in progress". Which generally results with issues such as "Premature AJAX-ulation", Javascript Hijacking, Flash XSS issues or plain stupid usage of the technology.

Beside of these all of these new technologies increase the attack surface of the client as well. Your website can be vulnerable to XSS because of an Adobe PDF file (Adobe Universal XSS) or a Flash File (clicktag XSS).

Trust

Even after massive number of phising attacks, fake websites, so called "legitimate business", it's quite impressive to see how much people still trust the websites.

Google wants your medical records with Google Health and another Web 2.0 application Mint wants your bank account details (no I'm not kidding) to manage your finance. We already knew there are crazy people out there who upload their private videos and pictures to websites by marking them as "private". Guess what, they're not that private after all as seen on a Facebook vulnerability which allows to see private photo albums of anyone.

Developers should be careful about these common but insecure practices of Web 2.0 and should be aware of the consequences of the technology they choose and design decisions.



Functional Testing vs Unit Testing @ 08-02-2012 16:06

Her ne kadar TDD ve Unit Testing' i bir boyutta uygulasam da yazılım geliştirirken XP (extreme programming) ya da benzer bir metodolojiyi sıkı sıkıya takip etmiyorum. Her konuda yaptığım gibi açık fikirli olup, değişik yaklaşımları analiz edip, haklarında bilgi toparlayıp kendi durumuma göre kendi hybrid modelimi kullanmaya çalıştırıyorum. Bu aralar özellikle yazılım geliştirme ile çok iç içeyim ve bunun sonucunda Unit Testing, TDD ve Functional Testing konularında denemeler yapıp en iyi birleşimi bulmaya, işimi en iyi görecek çözüme ulaşmaya çalışıyorum.

Devam etmeden Functional Testing ile Unit Testing' e ve aralarındaki farklara bakalım.

Unit Testing

  • Sistemin en küçük birimlerini test etmektir,
  • Hızlıdırlar,
  • İzolasyon kritiktir ve hiç bir testin diğer testleri ya bir dış kaynağın çalışan testleri etkilememesi gerekir. Bu amacı yerine getirmek için bir web server ya da file system erişimde, ya da diğer herhangi bir class ile konuşma noktasında Mocking devreye girer,
  • Kodda hata oluştuğunda kesin olarak hatanın nerede oluştuğunu saptamak çok kolaydır. (Çünkü sistemin en küçük birimlerini test ediyoruz),
  • Yüksek Code Coverage almaya uygundur,
  • Genelde koddaki her değişiklikten sonra çalıştırılır. Bu sayede kodda gözü kapalı değişiklik yapabilir ve bir sorun varsa anında farkına varabilirsiniz. Bunun anlamı sorun çok daha büyümeden ya da tasarımın içerisine girmeden sorunu çözmek demektir.


Functional Testing (Automated)

  • Sistemin parçalarını ya da sistemin bütün olarak işleyişini otomatik şekilde test etmektir,
  • Daha gerçekçi testler ortaya çıkmasını sağlar,
  • Yavaştırlar (izolasyonun az olması bunun ana nedenidir),
  • Kodun bir yerinde hata oluşması testlerin büyük bir kısmını geçersiz hale getirebilir,
  • Kodda hata oluştuğunda nokta atışı hatayı bulmak pek basit olmayabilir,
  • Bazı testler Unit Testing' e göre çok daha hızlı yazılabilir, çünkü çok daha az test yapmak gerekir. Mesela bir class' ın private method' ları vs. test edilmez. Class' ın geneli beklendiği gibi çalışması yeterlidir,
  • Code Coverage' i yükseltmek zor olabilir çünkü her durumu geniş perspektiften simule etmek mümkün olmayabilir ya da gereğinden çok efor gerektirebilir,
  • Yavaşlığından dolayı ve coverage azlığından dolayı her kod değişikliğinden ya da yeni koddan sonra çalıştırılmaya pek uygun değildir.


Functional Testing' i Unit Testing ile birlikte kullanmak popüler kullanımlardan biri, bu sayede en ince detayda ve tam bir bütün olarak kodun beklenildiği gibi çalıştığı otomatik olarak kontrol edilebilir.

Genel olarak insanların TDD (önce test, sonra kod) ya da klasik Unit Testing yapmamalarının nedeni testleri yazmanın getirdiği ekstra külfet. Özellikle Türkiye gibi agresif, kısa deadline' lı projeler ile dolup taşan yerlerde yazılımcılara Unit Testing önermek küfürmüş gibi algılanıyor. Açıkçası kimse gerçek bir getirisi olmayan bir şey için ekstra vakit ayırmak istemez ama bu işin gerçek ve gözle görülür bir getirisi var (kanıtlanmış mı? Hem evet hem hayır! o başka bir yazı konusu).

Hybrid Model
Eğer...

  • Yazılımınınız çok kritik bir iş yapmıyorsa, (örnek: Ayda cirit atacak robot kontrolü, Nükleer füze tetikleyicisi, Merkez Bankasının para-girdi çıktı düzenleyicisi, Britney Spears' a hava durumuna göre ayakkabı önermeciliği )
  • Geniş bir takıma ve uzun, rahat geliştirme planına sahip değilseniz,
  • Az koyup çok almak istiyorsanız...

bu model sizin işinizi görebilir. Pareto Prensibini bilirsiniz, hani şu 80/20 kuralı. Bir süredir bu mantığa dayanarak Functional Testing ile ve aralarda Unit Testing desteği ile bir proje geliştiriyorum ve otomatik testlerden alacağım faydanın %80' ini %20 efor ile aldığıma inanıyorum.

  • Private method vs. leri test etmiyorum,
  • Çok az mock objesi kullanıyorum,
  • Aşırı izolasyon yapmıyorum,
  • Küçük detayların harici uzun soluklu functional testlere odaklanıyorum,
  • Hata çıkarma olasılığı çok olan, kritik olan kod kısımlarını Unit Testing ile destekliyorum.

Bu modelin en ciddi sorunlarından biri kodun highly coupled (Law of Demeter) olmasına izin veriyor. Tabii ki bunu düzeltmek geliştirici olarak sizin elinizde ama TDD odaklı bir geliştirmede highly coupled class' lar bulmanız pek mümkün olmayacaktır. Açıkçası highly/tightly coupled olmayan kod yazmak gerçekten zor bir iş.

Bu benim yaklaşımım şu ana kadar benim için istediğim kıvamda çalıştığını söyleyebilirim. Eğer şimdiye kadar hiç yapmadıysanız bu şekilde hafif bir başlangıç yapabilir ve biraz tadını çıkartabilirsiniz.
Farklı deneyimleri duymak da hoşuma gider. Özellikle Unit Testing yapıp mutlu olanlar ya da yapmayı deneyip verim alamayanlar gibi.



Visual Studio’ nun Hakkını Verme @ 08-02-2012 16:06

Üç sene kadar önce silahını tanı başlıklı bir yazı yazmıştım. Dün Visual Studio ile biraz vakit harcayıp istediğim hale getirdim, Visual Studio konusunda bilmeniz gereken bazı temel şeyler var:

  • Visual Studio' nun Express Edition' ları tamamen ücretsiz, Yalnız bu Express Edition' lar aşadağıdaki gibi bazen çok önemli olabilecek şeyleri desteklemiyor:

    Class Designer
    FxCop Entegrasyonu
    Gelişmiş Debug Seçenekleri (özellikle condition dayalı breakpoint' lerin olmaması)
    VS.NET eklenti Desteği
    Multi-Thread Debugging Desteği
    Farklı .NET dillerinde projeleri aynı proje üzerinden yönetebilme

  • Tüm kendi özelleştirmelerinizi Export / Import edebilirsiniz. Bu sayede tüm özelleştirmeleri bir defa yapmanız yeterli. Daha sonra Tüm VS sistemlerine bunları basitçe taşıyabilirsiniz.
  • Pencereler iki ana durumda saklanıyor, birinci geliştirme süreci, ikincisi debugging yaparken. Bunlar her zaman son olarak kullandığınız şekilde saklanıyorlar. Mesela debugging yaparken "Immediate" penceresini ikinci monitöre taşırsanız, bir sonraki debugging' e başladığınızda "Immediate" penceresi gene ikinci monitöre geçecek ve debugging' i bitirdiğinizde geliştirme sürecindeki yerine geri dönecektir.
  • Visual Studio' da Bilmeniz Gereken Kısa Yollar

 

VS.NET 2008 Team System ve MBUnit

VS.NET 2008 Team System Unit Testing Framework' ü ile birlikte geliyor ama normalde bu sadece MS Unit Testleri ile çalışıyor. Eğer siz de benim gibi Row Testing' ten vazgeçemeyenlerdenseniz nUnit (son versiyonu) ya da MbUnit gibi bir framework kullanıyor olacaksınız ve bu durumda VS.NET' in Test çözümü yerine ekstra bir yazılıma ihtiyaç duyacaksınız.

MbUnit v3' VS.Net 2008 Team System için tam entegre bir çözüm geliştirmiş yani ekstra bir Unit Testlerinizi test edecek ekstra bir araç yerine VS.NET ile olan Test pencerelerini kullanabilir hale gelebilirsiniz. Bunun için şunlara ihtiyacınız var :

  • VS.NET Team Team System 2008 + SP1
  • MbUnit v3

Ek olarak MbUnit v3 yenilikleri, MbUnit ve VS.NET ve VS.NET' te test projelerini nasıl belirtebilirsiniz yazılarını okumanızı şiddetle tavsiye ederim. Şu an ben bunu kullanır hale geldi ve TestDriven.NET ya da ReSharper olmadan VS.NET içerisinde testleri çalıştırmak çok keyifli.

 

VS.NET 2008 Hızlı Kod Yazma Eklentileri

Bu konuda iki tane çok popüler eklenti var :

Maalesef bu iki eklentinin de tam verisyonu ücretli ve biraz da pahalı ama verdikler hız etkisini düşününce muhtemelen iki ay içerisinde paranızı geri almış olacaksınız. İkisi arasında benim tercihim CodeRush.

Bazı diğer eklentiler.

Şekil Yapma

VS.NET İpuçları

Bir sürü ipucu sitesi ve kaynağı var ama Sara Ford' un websitesi sanırım bu sitelerin içerisindeki en iyilerden biri. Şu an itibari ile 372 ipucu var, bazıları "File altında Open diye bir menü var, biliyor muydunuz?" derecesinde salakken bazıları gerçekten de çok güzel. Takibe ve arşivlerini analiz okumaya değer.

Visual Studio sandığınızdan çok daha güçlü, güzel ve gelişmiş şekilde. Son olarak ben de zamanında VS.NET' e küçük bir eklenti yazmıştım, The Guardian (download). VS.NET 2008 ile çalışığ çalışmadığını bile bilmiyorum ama ilginizi çekebilir. Süper dağınık bir yazının sonuna geldik, umarım siz parçaları birleştirebilir ve bu yazıdan işinize yarayan bir şeyler çıkartabilirsiniz.



Kurban Bayramınız Mübarek Olsun @ 08-02-2012 16:06

Hepimizin bayramı mübarek olsun.

Ben de bayram boyunca kendime tatil aldım. Buralarda Kraliçe' den başka el öpmesine gideceğimiz kimse olmadığı için yatıyor, yazılım geliştiriyor, oyun oynuyor ve blog yazıyor olacağım.



Blog Yazılarının Formatı @ 08-02-2012 16:06

Ben bu konuda süper bir örnek değilim ve benim de yapmadığım, yapamadığım bir çok şey var ama blog yazarken yazının formatı hakkında şunlara dikkat etmekte fayda olduğunu düşünüyorum.

Bunların bazıları mesela "paragraf kullanmak" bence ölümcülken bazıları "çok fazla smiley kullanmamak" sadece kişisel tercih. Liste büyüdükçe yazı formatı harici bir kaç konuyu da eklemiş bulundum.

  • Paragraf Kullanın, bol bol kullanın okunabilirliği inanılmaz derecede arttırıyor,
  • Çok küçük fontlar kullanmayın,
  • Okunaksız renk kombinasyonları kullanmayın, beyaz arka plan üzerine siyah yazı gibi temiz ve herkes tarafından sevilebilecek kombinasyonlar kullanabilirsiniz,
  • Linklerinizin link olduğu belli olsun, rengi değişik olsun ve mümkünse altı da çizgili olsun,
  • Uzun alıntılarda italik  kullanmayın, onun yerine CSS ile bu yazının alıntı olduğunu belirtin. İtalik olarakta okunaklı olan yazılar hariç.
  • Cümlenin sonunda "nokta" koyun ve noktadan sonra da "boşluk" bırakın,
  • Madde olarak listelenecek şeyleri HTML listeleri ile destekleyin,
  • Anlamsal sayıları yazı, matematiksel veya hesapsal sonuç içeren sayıları ise rakam ile yazın,
  • "Buraya Tıklayınız" tarzı linkler vermeyin, anlamı içeren yazı parçasına link koyun,
    "Hocus Pocus Yazılımı için buraya tıklayınız " yerine "Hocus Pocus uygulamaları hızlıca gizlemenize yarayan küçük bir uygulamadır." gibi.
  • Aynı linki aynı yazıda birden fazla defa vermeyin, Aynı şekilde diğer aynı linkleri de iki defa tekrar etmeyin,
  • Eğer kullandığınız terim çok az bilinen bir terim değilse bu terimi Wikipedia' ya veya benzeri bilgi merkezlerine linklemeyin. Bir web tasarım blogunda CSS terimini Wikipedia' ya linklemenin hiç bir anlamı yok. Gördüğünüz gibi Google ya da Wikipedia gibi yerlerden bahsederken de link atmanın pek bir anlamı yok, 
  • Eğer teknik terimleri Türkçeye çevirecekseniz ingilizcesini de belirtin,
  • Çok uzun parantez açıklamaları yerine dipnotlar oluşturun, yazıyı okuyan kişinin dikkatini dağıtmayın,
  • Kalın, İtalik gibi yazı tiplerini yazının içeriğine göre kullanın, bu sayede yazıyı daha takip edilebilir kılacaksınız,
  • Paragraflar arasında boşlukları çok bırakın yeni satır ile paragraf arasındaki farkı anlayın,
  • Yazının genişliğini 600px' den çok tutmamaya çalışın bundan sonra yazıyı takip etmek zorlaşabiliyor (tamamen kşisel görüşüm, genelde insanlar bu konuda ikiye ayrılıyor)
  • Türkçede ayrı yazılan de, da gibi tırı-vırı ama insanların takıntılı olduğu konulara dikkat edin, sonuçta okuyucuların yazıyı anlamasını istiyorsunuz, yazıyı okurken ufak şeylere takılmalarını değil,
  • Türkçe yazı editöründen geçirin,
  • Argo kelimelerden, MSN Türkçesinden uzak durmaya çalışın,
    Argo kelimelerde bence pek bir sorun yok ama "hadi yaw, kanka" gibi bir şey okumak pek keyifli değil. Tabii ki bazen yazı stili bunu gerektirebiliyor, o durumları saymıyorum.
  • Yazılara resim koyun,
    Açıkçası yazılara alakasız sadece resim koymak için resim koymayı ben kendime yediremiyorum, yani boyama kitabı ya da üçüncü kalite bir yapımı pazarlarmışcasına. Ancak aynı fiyat etiketlerini 0.99 YTL yapmak gibi bu da çalışan salak taktiklerden biri. Bunun harici eğer konuya yardımcı olabilecek resim veya video varsa kesinlikle blog yazısına ekleyin, yazıyı aşırı derecede canlandırıyor.
  • Yazılara etiket (tag) eklerken çok etiket eklemeye değil çok yazıya aynı etiketleri eklemeye çalışın, eğer etiketler gruplanamıyorsa etiketlemenin bir anlamı kalmıyor değil mi?
  • Yazılarda çok fazla "smiley (sırıtan küçük salak ikonlar, lolcatz' in yazı içerisinde hayat bulmuş hali diye de bilinir)" kullanmayın, hatta hiç kullanmayın.
  • (!) işareti cümlenin sonunda o cümlenin sarkastik bir şekilde söylendiğini belirtir, bunu bilerek kullanın,

Son olarak bütün bunların kendi tarzınızın, ya da yazma isteğinizin önüne geçmesine izin vermeyin ve unutmayın ki "içerik hala tahtta" *


Bu liste genelde diğer blog yazan kişileri okurken beni rahatsız eden konuları içeriyor, siz bu blogu okurken nelerden rahatsız oluyorsunuz? ya da bu listede olmayan ama başka blogların yaptığı ve sizi rahatsız eden şeyler neler?



Fikir Üretme, Etki ve Tepki @ 08-02-2012 16:06

Hiç dikkatinizi çekti mi bilmiyorum ama bir bakıyorsunuz altı tane aynı dönem şairi çok yakın arkadaşlar, çünkü hepsi aynı mahallede büyümüşler ya da bir dizi oyuncunun hepsi çocukluk arkadaşı ve hepsi de çok ünlü ve benzer projelerde çalışıyorlar. Mesela Türkiye de bir dönem çok popüler olan muhasabe yazılım firmalarının en büyük ikisinin sahibi üniversitede aynı sınıfta olmaları ya da bugünün internet ve bilgisayar dünmyasının bu hale gelmesinde MIT' nin büyük rolü ve o günün MIT' sindeki simaların bugün bu sektörde çok büyük imzalarının bulunması gibi. Örnekleri çoğaltabiliriz popüler IDS' lerin geliştiricilerinin oda arkadaşı olması gibi. [1]

Benim eski ve uçuk teorilerimden biri insanların etrafındaki kişilerin beyin dalgalarından etkilenip istem dışı olarak bilgi çalmaları ve aynı noktaya ulaşmalarıdır. A Scanner Darkly' de bir yatak muhabbetinde de bu felsefenin kırıntıları görülebilir. Yani bir nevi beyninizin diğer insanların beyin dalgalarını çalıp bilinçaltında kullanması. Tabii ki yıllardan sonra bu teorimi daha oturaklı bir hale getirdim ve şuna çevirdim:

İnsanlar çok gelişmiş makineler, lakin girdi olmadan çıktı üretemezler. Mesela henüz ergenliğe erişmemiş bir çocuğa cinsel ilişkiyi anlatamazsınız [5], o çocuk henüz o bilgiyi idrak edecek bir girdiye, içgüdüye sahip değildir. Rasgelelik konusuna hakim olanlar buradaki noktayı daha çabuk kavrayabilirler. Rasgele bir sayı üretmek için genelde bir "seed" kullanırsınız, yani rasgeleliğin temelini oluşturacak girdi. Bilgisayarlar tamamen tahmin edilebilir olduklarından bilgisayarın kendisi aslında hiç bir zaman rasgele bir şey üretemez, bu yüzden gerçek rasgelelik (TRNG) çok daha komplike bir sistem gerektirir mesela "evren" gibi, "dünya" gibi, bu tip planını yapamadığımız, bir sonraki adımını tahmin edemediğimiz sistemler bizim için rasgele olan girdiler sağlayabilirler. Bu yüzden bazı sistemler rasgelelik sağlayabilmek için dış dünya datalarını kullanırlar, sıcaklık, nem, ses, hareket, ışık vs.

Şimdi demek ki insan girdi olmadan çıktı üretemiyor, hayalgücünün belli limitleri ve şekillendiricileri var, demek ki gerçekte rasgelelik yok ama bir dizi etken ve sonuçlar var. Teoride buna dayanıyor. Eğer insanlar aynı kaynaklardan besleniyorsa ürettikleri şeyler ve ulaştıkları noktalar da benzer olacaktır. Yani aynı web sitelerinden, aynı bloglardan, aynı televizyon dizilerinden, aynı filmlerden, aynı müziklerden ve bazen aynı coğrafyadan, hatta aynı öğretemenlerden, aynı kitaplardan beslenen topluluğa dahil olan kişiler aynı ve benzer üretimler yapacaktır. Eğer yarın bir gün bir sosyal platform çıkar ve bu kaynakları tek bir yerde toplar ardından da aynı kaynaklardan beslenen kişileri eşleştirirse bu kişilerin benzer çıktılar ürettiğini gösterecektir.

Özellikle yakın dönem trendlerini tahmin etme ve bir sonraki adımı görme de bunun sonuçlarından biridir. Ancak buradaki kişi çok sevinmemeli çünkü sektörün bir sonraki adımını tahmin edebilmiş olsa da onunla aynı havuzdan beslenen diğer kişilerde bu bir sonraki adımı tahmin edebilecektir. İşte o noktada "Fikir x Harekete Geçirme x Hız" formülü sonucun değerini belirleyecektir. Fikir' i bu formülden çıkartırsanız gerçekten önemli olanın eyleme geçirme kalitesi ve bunu ne kadar hızlı yapabildiğiniz olduğunu göreceksiniz [2].

Aynı nedenlerden dolayı tarihe icatlar ile ya da yeni yaklaşımlar ile geçmiş bir çok kişi toplum tarafından "kopuk", "manyak", "deli", "sorunlu" olarak nitelendirilmiştir, ya da okuldan atılmıştır. Ressam, müzisyen ve benzeri sanatçılar olduğu kadarıyla teknik kişiler de bir istisna değildir. Ek olarak bazı bilim adamlarının büyük bir buluşa ulaşmalarını sağlayan neden onların "genel olarak kabul gören" bir şeyi kabul etmemiş olmalalarıdır. Bu da aynı "Balığa suyu anlatmak gibidir", Ne zaman balık kendini sudan bağımsız sayabilir o dakikada suyun ne olduğunu anlayabilir, aksi takdirde su onun için dogma bir bilgidir, bunu tekrar tanımlamak ve anlatmak mümkün olmayabilir.

Ana konuya dönersek iki tip girdi olduğunu görebiliriz:

Genel Girdi
Bu klasik genel kültür girdisidir, bunun sayesinde kahvede iyi bir konuşmacı olabilir ve hatta bir sonraki haftaki memleket gündemini bile çözebilirsiniz. Ek olarak bu tip girdi toplumların kanalize edilmesindeki en mükemmel yoldur, çünkü bilinçli ya da bilinçsiz (hem yayıncı hem izleyici tarafında) belli etkiler oluşur ve sonuçlar benzer çıktılara yol açar. On sene önce yayınlanan bir televizyon serisi on sene sonraki ülkenin belli yaşındaki insanları üzerinde etki yapıp, belli akımlara yol açabilir. [6]

Alternatif Girdi
Eğer "Genel Girdi" yi popüler kültür ve standart yaşam tarzı noktasına indirgersek "Alternatif Girdi" yi de normal şartlarda bulunduğun coğrafya, etnik kültürde pek bilinmeyen ve beklenmeyen bilgi ile beslenme olarak tanımlayabiliriz. Mesela İstanbul - Bostancı' daki bir adamın Afrika Etnik müziği dinlemesi tam anlamıyla o kişi için alternatif bir girdidir. Dolayısıyla bu kişinin her adımdaki çıktısını etkileyecektir. [7]


Aynı dalgadan girdiye maruz kalan insanlar istem dışı aynı şeyleri üretecektir. Mesela ben XSS Shell' i yayınladığım hafta Attack API ve BeeF te yayınlandı. 2005' te bu konunun ilk örneği geliştirilmesine rağmen tam iki sene sonra, üç farklı kişi aynı konsepti daha farklı bir şekilde birbirlerinden haberdar olmadan tekrar yaptı[3]. İlk bakışta bu her ne kadar tuhaf görünse de bu kişilerin hepsinin benzer arka plana sahip oldukları (yazılım geliştiriciliği, güvenlik ve web uygulaması güvenliği odağı),  aynı blogları takip ettiği, son zamanlardaki aynı makaleleri okudukları düşünülünce, sonuç biraz kaçınılmaz oluyor. [8] Sonuçların ikisi çok yakınken diğeri biraz farklıydı. Bunun da ana nedenini, o kişinin alternatif girdilerine bağlıyorum. Onun ürettiği yazılım tamamen JavaScript ağırlıklı idi ve kendiside diğer iki kişiye göre JavaScript ile çok daha yoğun şekilde uğraşıyordu.

Son zamanlarda okuduğum Paul Graham' ın Cities and Ambition yazısı[4] tüm bu anlattıklarıma başka bir açıdan yaklaşıyor. O da yaşadığı şehrin insana verdiği mesajdan ve insanın o mesajdan etkilenip hayat tarzını ona göre şekillendirmesinden bahsediyor ki bu da burada bahsettiğim girdi ve çıktı fikrini destekliyor.

Tüm bunlar sizin günlük hayatınızda bir anlam ifade ediyor mu? Anlam ifade ettiği tek şey nasıl bir "girdi" [9] istediğinizi tanımlamak olabilir. Bunun sonucunda da çalıştığınız iş yerini, okuduğunuz siteleri, kitapları, kaynakları, ilgilendiğiniz hobileri, gördüğünüz yerleri, yaşadığınız şehri, yaşadığınız odayı, yaşağıdınız ülkeyi değiştirmek, çeşitlendirmek olabilir.





[1] Bunların hepsini kişi ve örnekleri isimler ile detaylı vermek isterdim ama maalesef hiç biri detayları ile aklımda kalmadı, eğer benzer kesin ve güzel örnekler biliyorsunuz yorum olarak belirtebilirsiniz.
[2] Bundan sonra tabii ki bu işi pazarlama gibi noktlar var, onlara değinmiyorum
[3] Burada kimsenin birbirinden duyarak yapması mümkün değildi çünkü projenin geliştirilme aşaması bir haftadan kısa olamaz, dolayısıyla bu üç kişinin de bunu tamamen birbirlerinden bağımsız yaptıklarını söyleyebiliriz. Daha da uç bir örnek vermek gerekirse, 5-6 sene kadar önce bir web projesini henüz açmadan, aynı fikri, neredeyse aynı arabirim ile ve hatta aynı renkler ve aynı arkaplan ile (benim soldan sağa iken onunki sağdan solaydı) başka birisi benim yayın tarihimden bir hafta kadar önce açtı. Eminim sizin de bizzat tanık olduğunuz benzer örnekler vardır.
[4] Bu Paul Graham' ın diğer yazıları gibi harika bir yazı, İstanbul tam olarak ne mesaj gönderiyor, henüz ben çözemedim. Ama sanırım gönderdiği mesajlardan biri "Hayatta Kal!" .
[5] İmam-ı Gazali' nin enfes metaforlarından biri, maalesef orijinal kullanım konusu aklımda değil
[6] Sanıyorum ki açmıştır da, ama o gözlemi yapmak beni aşan konulardan biri, belki yirmi sene sonra gene bu konuda blog yazarsam, tekrar bu gözlemi yapabilirim!'
[7] Bu noktada Kelebek Etkisini unutmamak lazım, ama aynı şekilde bir zarı 1000 defa atarsanız tüm zarların ortalaması 3 olacağı gibi genel çıktılar belli ortak paydalarda buluşacaktır
[8] Burada muhtemelen çok daha fazla kişi aynı arka plana ve girdiye sahipti ancak, bir çok farklı etkenden dolayı tahmin ediyorum ki bir çok kişi bu projeyi hiç bir zaman hayata geçirmedi.

[9] Bu "girdi" kelimesi çok fena yanlış anlaşılmalara neden oluyor!



Reklam Korkusu @ 08-02-2012 16:06

Nedense bizde genel olarak bir reklam yapma korkusu var. Mesela üzerinde markanın büyük harflerle yazdığı kıyafetleri "Ben bedavaya adamın reklamını mı yapacağım?" diye giymeyen insanlar var. Sanki bizim arka mahallenin sidikli Murat' ı değil de David Beckham arkadaş. Bu o kadar büyük bir mevzu değil ama bu işin özü.

Olayın değişik çıktılarını farklı yerlerde görebiliyoruz;

  • Türk dizilerinde, filmlerinde markaların hepsi sansürlüdür, firma adları, ürün isimleri söylenmez,*
  • Microsoft Zirvelerinde konuşmacılar Linux değil, Linux ve türevlerini kastederken "Diğer İşletim Sistemleri" derler,
  • Firmalar resmi olmayan yerlerde diğer benzer ürün ve firmalardan bahsederken "rakiplerimiz", ya da "benzer ürünler" derler, rakip bariz ve tek olsa bile isim kullanılmaz, Öyle ya reklamın iyisi kötüsü yoktur,
  • Microsoft' un yabancı evangelistleri hatta direk o ürünler üzerinde çalışanlar bile ürünlerini benzerlere göre zayıflıklarını açık açık söylerken,Türkiye' dekiler bu tip şeyleri asla kabul etmez ve rakip firma, ürün ismi kullanmaz. Microsoft örneğini ikinci defa veriyorum çünkü çok tanık oldum ve MS' in diğer ülkelerdeki yaklaşımı ile Türkiye' deki yaklaşımı bireyler açısından çok değişik, dolayısıyla farkı görmek çok basit.
  • Çok fazla Türk roman okumuyorum, pek atmış olmayayım ama gördüğüm kadarıyla romanlarda da marka, ürün vs. isimleri geçmez.


Mesela Stephen King' te görürsünüz ki karakterler Seven Eleven' da Coca Cola içerler, bilmem ne markası ile ellerini yıkarlar. Ya da Big bang Theory de Penny Age of Conan oynar, her üç dizinin ikisinde karakterler XBox onar. Bizde ise Wii ürününü göstermemek için üç takla atılır, hele ismi ise kesinlikle zikredilmemelidir.

Her zamanki bu sonuçsuz daha çok neden böyle sorusunu akla getiren bir yazı. Henüz ben bunun neden böyle olduğunu psiko-analiz edemedim, edenler vardır. Herkesin "Türkler ..." diye başlayan şeylerden sıkıldığını biliyorum ama bence çok önemli bir konu çünkü bu tip şeyler toplum olarak nerelerde doğru nerelerde yanlış yaptığımızı ortaya koyacak şeyler. Global bir dünyadayız sosyal hoppalık hepimizi dünya ile burun buruna getirdi, farklılıkları görmek çok daha kolay. Başkalarının ne sorunları nasıl çözdüğünü, neyi yanlış yaptığını, ne tip bir tarihin onları nasıl iyi veya kötü etkilediğini görmemiz çok daha kolay. Bunların sonucunda rakı masasında ülkeyi kurtaracak halimiz yok ama her zaman kendimiz kurtarabilir ve dalgaya kapılmadan kendi yolumuzu çizebiliriz.

Son olarak bloglar gibi organik ve kurumsal olmayan yapılar her ne kadar bunu takmasa da orada da başka bloglardan bahsetme korkusu zaman zaman başgösterir, mesela yazıya link verilmez "alıntı" yapılır, bu "alıntı" lar o kadar büyükdür ki adeta yazıyı almış gitmişsin gibi olur. Gene de sanırım internetin doğal samimi yapısı bu olayı çok ciddi şekilde kırıyor ve çok değil yakında kurumsal anlamda da bu yapıların başka coğrafyalarda kırıldığı gibi bizde de kırılacağına eminim.

* Türk dizi, film vs. lerde gizli reklam yasasından dolayı bunların bir çoğu mümkün olmuyor olabilir, ama yegane örnek bu değil ve sanırım genel kanıyı değiştirmiyor, ek olarak eminim ki bununda kanuni olarak üzerinden gelmenin bir yolu vardır. Bu konuda daha bilgili olan birinde işin o kısmının detaylarını duyabilirsek güzel olur.



Obsesif Programcılık @ 08-02-2012 16:06

Programcılık kısa zamanda takıntıya dönüşen işlerden biri sanırım. Sitenin düzenli takipçileri farketmişlerdir bu aralar pek bir şey yazamadım. Genel mevzular dışında yoğun şekilde programlama yapıyorum. Son üç günüm tam anlamıyla feciydi. .NET ile SSL trafiğinede müdahaleyi sağlayacak bir proxy server yazmak ile uğraşıyorum. Aslında daha önceden XSS Tunnel için bir proxy yazmıştım ancak o proxy SSL, keep-alive desteklemiyor ve daima tek bir server ile HTTP objeleri üzerinden konuşuyordu.

Dolayısıyla TCP ile sadece tarayıcıdan proxy' ye gelen istekleri işliyordum, diğer taraf gene .NET' in HTTPWebRequest objelerini kullanıyordu. Gelen cevabı da değiştirip tarayıcıya geri gönderiyordum.

Bu yeni sistemde ise tam bir proxy implemantasyonu yapıyorum. Yaptığım iş tam olarak MITM – Attacking / Debugging proxylerin yaptığı işin aynısı. Bunun da bir çok gereksinimi var. SSL' e MITM yapmanız gerekiyor, HTTP Protokolünü kendiniz implemente etminiz gerekiyor. Son üç-dört gündür vaktimi harcadığım konular:

  • .NET' te TCPClient ile SSL bağlantısını self-signed bir sertifika ile kabul etme
  • TCPClient ile Chunked encoding' i destekleme
  • HTTP/HTTPS implementasyonu
  • Gzip, Deflate' i anlama, decode edebilme

Bazıları uzun, bazıları kısa sürdü ama bazı noktalarda ciddi derecede bunalıma girdim. Eğer 3 saat süreceğini planladığınız bir iş 2 gün sürüyorsa moraliniz bozuluyor ve bazen öyle bir noktaya geliyorsunuz ki "Acaba sonuçlar buna değecek mi?" ya da "Hiç bir zaman çalışmayacak mı?" gibi soruları kendinize sormaya başlıyorsunuz.

Ama Allaha şükür dört günün sonunda bir dizi hata ayıkladıktan sonra, tuhaf sorunlar ile karşılaştıktan sonra, HTTP RFC' lerini daha detaylı okuduktan sonra sistem çalışmaya başladı. Kodu deneysel aşamadan kurtarıp adam akıllı bir hale sokmak ve çeşitli şekillerde test etmek, performansı artırmak biraz daha vakit alacak ama bundan sonrası basit.

Bu arada programcılıkta akıcı noktayı yakalamak ile ilgili bu grafik çok hoşuma gitti. Neyse bu kadar işten sonra ödülü hakettim değil mi?

Yazar Call of Duty 5 Multiplayer' ı açar ve "Capture the flag" çığlıkları arasında çeşitli Yankee ve Japon askerlerini öldürür....



Bilgi ve YAGNI @ 08-02-2012 16:06

YAGNI - You Ain't Gonna Need It,  yazılım çevrelerinde kabul gören ve benim de şiddetle izlemeye çalıştığım prensiplerden biridir. Basit şekilde "bir şeye ihtiyacın yoksa yapma, ne zaman ihtiyacın olur o zaman yaparsın" diye özetlenebilir.

Bugün aklıma şu soru geldi: Bu prensibi bilgiye de uygulayabilir miyiz? Mesela "İspanyolca öğrenmeye henüz ihtiyacım yok, niye gidip İspanyolca öğreneyim ki?" Ya da "Ruby on Rails" seksi duruyor ama henüz benim bir işime yaramıyor gibi. Bu konu hafiften Genel Kültür Çağımızın En Büyük Yalanıdır konusu ile de ilişkili, henüz ben bir karara varamadım, karara varıp varmamak pratik yaşantıda ne kadar şeyi etkileyecek emin değilim ama ilginç sonuçlar getirebilir.



SSL İmplementasyon Güvenliği @ 08-02-2012 16:06
SSL İmplementasyon Güvenliği dokümanımı Web Güvenliği Topluluğu (WGT) altında yayınladım. Dokümanı daha önce ingilizce olarak SSL Implementation Security FAQ adı ile yayınlamıştım, Türkçe versiyonu biraz daha fazla bilgi içeriyor. Çevirirken tekrar üzerinden geçme fırsatım oldu. Eğer yazılım ve web uygulaması geliştiriyorsanız kesinlikle bir göz atın.


Yorgunum Dostlar @ 08-02-2012 16:06
Artık neden blog yazmadım, 15-20 gündür neden gözükmüyorum vs. gibi konuları yazmıyorum bile. Çünkü ben sıkıldım, sizin ne kadar sıkıldığını tahmin bile edemiyorum.

Herneyse şimdi hızlı şekilde neler oldu, neler bitti?

  • Sistemi yeniledim, yeni bir harddisk, yeni bir işlemci, yeni bir grafik kartı aldım,
  • Hazır o kadar şey yapmışken Vista x64' e de geçtim,
  • 10 senedir beklediğim Fallout 3 çıktı (bunun hakkında daha sonra detaylı yazacağım inşallah)
  • Yılbaşı nedeniyle onlarca süper oyun piyasaya çıkıyor ve çıktı onlarla vakit harcıyorum, şu aralar oynadığım oyunlar:
    • Mass Effect
    • Fallout 3
    • Call of Duty 5 : World at War (Multiplayer Beta)
    • Soul Calibur IV
  • Arada bir baktıklarım da:
    • King's Bounty
    • Mirror's Edge
  • Genel olarak sağlığım iyi olsa da inanılmaz bir halsizlik hali içerisindeyim, kansızlığım azdı herhalde,
  • İş yoğunluğum normalin üzerinde, bu dönem çok yoğunuz dolayısıyla pek kendime vakit ayıramıyorum,
  • Sitenin SSL' i nin yenileme tarihi geçti, bu da blog ekranlarının SSL desteğinde sorun çıkardı, vs. vs.
Bunların içerisinde sizi ilgilendiren bir şey var mı? Muhtemelen yok.

Bütün bu dönemde ben gene aktif paylaşıma FriendFeed, Twitter ve RSS Paylaşımından devam ediyordum. Dolayısıyla blog' ta yeni yazı yokken canınız sıkılırsa buraları takip edebilirsiniz.


Büyük Resmi Görebilmek @ 08-02-2012 16:06

Tatilim bitti, tekrar beyaz ekranlara döndüm ***. Uzun süredir kafamda dönen, herkesin bildiği lakin göze tekrar sokulmayı hakeden bir konuda yazmak istiyorum.

Büyük resmi görmek detaylardan kopup gerçek olayı görmek, getiriyi ve götürüyü analiz edebilmektir. Bu hayatın her yerinde karşı karşıya olduğumuz bir durumdur, elimizdekine odaklanıp gerçek amacı unutmak, bir projenin bir bölgesine yoğunlaşıp uzun vadede hataya dönüşen bir karar vermek, günü kurtarmak için 5-10 dakikadan kar edip işin sonunda günler kaybetmek ile alakalıdır.

Hatta genel olarak gizli servislerin ve devletlerin suni gündem yapması da bizim büyük resmi görmemizi engellemek içindir. Bu suni ya da gerçek ekonomik sıkıntı, savaş, magazin değerli bir haber ya da tamamen gerçek dışı bir olay olabilir. Bunlar sayesinde odağın kayması ve gerçekte, büyük çapta olan olayın farkedilmemesi sağlanır.

Büyük resmi görmeye bir kaç örnek;

Toplu Taşıma Sorunlarını Çözmek:

Bir metropolde toplu taşımanın geliştirilmesi ciddi maliyetlere çıkacaktır, ancak toplu taşımayı çözmenin tek amacı sadece insanların daha mutlu olmasını sağlamak için değildir, bunun getireceği güzellikler arasında şunlar da vardır :

  • Toplu taşımada kaybedilen insan gücünün ekonomiye geri dönmesi,
  • Toplu taşımanın kötülüğünden dolayı artan kişisel araç kullanımının artması
    • Bu hava kirliliği,
    • Daha fazla benzin harcanması (paranın yurtdışına çıkması) ve
    • Daha fazla kişisel aracın satılması (paranın yurtdışına çıkması) anlamına geliyor.
  • vs. vs.

Dolayıysıyla toplu taşımayı çözmenin kendini ne kadar sürede amorti edeceği hesaba katılmalıdır, bu sadece insanlar dah fazla oy versin diye yapılması gereken bir şey değil.

Çalışanların öğle yemeği vakti:

Yapılan araştırmalarda öğle yemeğine 30 dk. yerine 60 dk. ayıran firmalar çalışanlarından daha yüksek performans alıyorlarmış*. Burada büyük resmi gören firmalar 30 dk. kar etmeye değil bunun uzun ve orta vadedeki etkilerini görebiliyorlar. Benzer bir şekilde zamanında Hayalet Çalışan başlığı altında benzer bir konudan bahsetmiştim.

TDD, Test Driven Development :

TDD bir yazılım geliştirme metodolojisidir. TDD ile yazılım geliştirirken her yazılan kod için bir de test kodu yazılır, bu da tabii ki yazılan kod oranını ciddi şekilde yükseltiyor. TDD' nin özellikle Türkiye gibi sıkışık, aceleci, henüz tam oturmamış ülkelerde yerleşememesinin en büyük nedeni de gene büyük resmi görememektir. TDD konusunda yapılan bir çok araştırmada TDD' nin uzun vadede bakım, hata ayıklama ve benzeri proseslerden kazancından dolayı çok daha verimli olduğunu ortaya konulmuştur. Bugün bir çok firma ya TDD uyguluyor ya da sadece Unit Testing yapıyor. Dolayısıyla günlük yazılım geliştirme hızı düşse de sonuçta kazanç artıyor, bu noktada büyük resmi göremeyen yazılım firmaları da günü kurtarmaya devam ediyor **.

Maalesef hayatta da büyük resmi kaçırabiliyoruz, yegane amacı kaçıyoruz. Burada bir kaç nokta var, 

  • Yaptığınız şeyleri yaparken kendinize “Neden?” sorusunu sorun,
  • Yeni bir karar verirken sadece kısa vadeyi değil ana nedeni düşünün,
    Mesela üniversite sınavlarından sonra okul seçerken sadece iyi okul seçmeyi düşünmekle yetinmeyin “Neden Okuduğunuzu” u düşünün.
  • Her işinizi yaparken arada bir adım geri atın ve tüm olayı bir bütün olarak görmeye çalışın. Detaylarda kaybolmayın. Neden başladığınızı, şu an yaptığınızı neden yaptığınızı, bu yapılan ana sonuca yardımı olup olmayacağını değerlendirin.
  • Konunun içerisinde olmayan biriyi konuya çekip hızlı şekilde fikir alın.
    Programcılıkta bir yerde saatlerce takılır ve sorunu çözemezseniz hemen etraftaki bir programcıyı bulur ve ona sorunu sorarsanız, sizin iki saattir çözemediğiniz olayı genelde o bir dakikada tespit eder. Çünkü bu sorun genelde ya yazım hatasıdır, ya yazdığınız kod ile baktığınız çıktının farklı olmasıdır. Dışarıdan gelen kişi sizin kadar işin içerisinde olmadığından varsayım yapmadan en aptalca olan şeyleri bile kontrol eder. Yani size “Sunucunun prizi takılı mı?”, “Baktığın tarayıcı cache’ in de mi tutuyor?”, “Çalıştırdığın yazılım eski verisyonu mu son olarak compil ettiğin mi?” diye sorabilir. Siz ise bunları o noktada düşünemeyebilirsiniz (Hatayla Yaşamak ve Sorun Çözmek).

Konu bundan çok daha geniş ama siz zaten konuyu biliyorsunuz, bu ise size bir hatırlatma. Şimdi bir adım geri atın ve düşünün.

 

 

* Makalenin kaynağı BA Business Life dergisi, ancak online olarak bulamadığımdan kaynağı veremiyorum.

** Bu konuda bir çok istisna var, her firma illa TDD kullanacak diye bir şey yok, her projeye uygun da olmayabilir, ama TDD başarısı kanıtlanmış metodolojilerden biri.

*** “yeşil sahalara dönme” kelime grubuna yapılan göndermedir bu, bu noktada okuyucunun suratında bir tebessüm oluşması gerekiyor.



Eğer Başka Bir İş Yapacak Olsaydınız @ 08-02-2012 16:06

Bu zaman zaman aklıma gelir, eğer şu an yaptığım şeyi yapmıyor olsaydım olsaydım ne yapardım?

Ben genelde istediğim şeyin peşinden giden insanlardan biriyimdir ama buna rağmen hayatın rüzgarını, gerçekçi planları ve elimdeki kaynakları kararlarıma da dahil ederim. Dolayısıyla bir konuda 10 sene harcadıktan sonra bam başka bir konuya atlayacağımı sanmıyorum.

  • Oyun Programcılığı
    Oyun programcılığı içimde kalmış uktelerden biridir, hatta bundan 4,5 - 5 sene kadar önce oyun programcısı olarak bir firmada başlıyordum, sonra olmadı.

    Lakin C++ taki deneyimsizliğim, çok güçlü bir matematik hatta fizik altyapımın olmaması ve deneyim kazanacak imkan olmaması yüzünden sanırım hiç bir zaman bu konuda uzmanlaşamadım.
  • Oyun Yazarlığı
    Oyunlar benim en büyük hobilerimden biridir, sadece oynamak değil kültürü, tuhaf oyunları görmek, yeni akımları incelemek vs. O yüzden her zaman oyun tanıtım yazılarını profesyonel olarak yapmayı da düşünmüşümdür. Lakin kalemimin güçlü olmaması, sektörün maddi yönden tatmin edici olmaması gibi etkenlerden hiç ciddi olarak düşünmedim bile.
  • Web Girişimcisi
    Bir çok kişinin web girişimciliği sadece son senelerdeki patlamaya dayanırken benim hayallerim yaklaşık 9-10 sene önceye dayanıyor (dot-com bubble' ı ve sonrası). Hani şu Google' un henüz Google olmadığı günler. Kişisel bir sürü fikir yanında ilk çalıştığım firmalardan birinde Ali Baba benzeri bir sistem kurmaya çalışıyorduk, bu sırada Türk Ticaret.net açılması ile bizim projemizde hafiften elimizde patlamış oldu. Tabii ki projedeki teknik ve iş planındaki yetersizliklerden bahsetmiyorum bile. Bu dönemde Gitti Gidiyor' un kurucu ekibi ile de hem tanıştık hem de birlikte çalışmıştık. O dönemden bu zamana adam gibi pek internet firması da Türkiye de ayakta duramadı, duranlarda Gitti Gidiyor gibi gerçekten ciddi bir konuma geldiler.

    Bunun yanında bir çok startup' ın kurulum sürecinde teknik ekipte geliştirici olarak ya da güvenlik/yazılım danışmanı olarak bulundum, şu an da bir kısmı battı, bir kısmı ise keyfi yerinde devam ediyor. Dolayısıyla klavyede uyumayı, mcdonalds' larda plan yapmayı, evlerde switch' leri kurup yazılım geliştirmeyi, dışarıdan gelen pizzalar ile gün boyu hayat geçirmeyi ve günün sonunda multiplayer bir oyun atmanın tadını bilirim. Nitekim bazen sevdim, bazen nefret ettim...

    Web girişimciliği benim uzun soluklu hayallerimden, internet ikinci dot com furyasını yaşarken belki bir fırsat bulur ben de sızarım. Girişimcilik artık bir çok açıdan daha kolay, dolayısıyla hareket etmek için de güzel bir vakit.
  • Yazarlık
    Deneme ve kısa hikaye yazmak sevdiğim işlerden, özellikle bir bilim-kurgu/polisiye arası bir roman yazmayı isterdim ama gel gör ki yeteneğim yok (pardon şöyle ifade edeyim : dünya beni anlamaya hazır değil), yeteneğim de olsa kim yazarlıktan para kazanmış ki?

    Daha çok teknoloji ile alakasız olmak istediğim şeyler yazabilseydim keşke ...

Açıkçası hadi ben "meme" yaptım, gitsin herkes yazsın ya da "sen", "sen", "bir de o köşedeki ufak blog sahibi, sen" yaz demeyi sevmiyorum ama siz ben bunu memelerim yazarım derseniz de kimseyi tutacak değilim. Yaparsanız da adresi yorumlara link olarak bırakın lütfen.

Açıkçası benim merak ettiğim bir konu, okuyuclardan da yorumları bekliyorum. Şu anki işinizi yapmasaydanız ne yapardınız? Ya da şöyle dile getireyim "Büyüyünce ne olmak istiyorsun çocuğum?"



Paul Graham ve Girişimcilik Dersleri @ 08-02-2012 16:06

Bugün bir çok Paul Graham makalesi okudum, How to Start a Startup yazısında şu dikkatimi çekti.

...

So who should start a startup? Someone who is a good hacker, between about 23 and 38, and who wants to solve the money problem in one shot instead of getting paid gradually over a conventional working life.

..

The other cutoff, 38, has a lot more play in it. One reason I put it there is that I don't think many people have the physical stamina much past that age. I used to work till 2:00 or 3:00 AM every night, seven days a week. I don't know if I could do that now.

...

During this time you'll do little but work, because when you're not working, your competitors will be. My only leisure activities were running, which I needed to do to keep working anyway, and about fifteen minutes of reading a night. I had a girlfriend for a total of two months during that three year period. Every couple weeks I would take a few hours off to visit a used bookshop or go to a friend's house for dinner. I went to visit my family twice. Otherwise I just worked.

Doğal olarak yazıyı okurken kendimle kıyaslıyorum ve Graham' ın burada bahsettiği şeyleri ben 18-22 yaşları arasında yaşadım ve maalesef deneyimsizlik ve nasipsizlik yüzünden istediklerimi alamadım. Şimdi ise bunları yapmak bana çok uzak geliyor yani 23 yerine bu işe çok erken girmek beni henüz 38 olmadan 38 gibi hissettirmeye başladı. Tabii ki bu senelerdeki boşa küreklerimiz deneyim olarak geri döndü inşallah ama eğer bir defa daha cesaret eder ve bir startup denersem o zaman göreceğiz, bir daha böyle çalışabilecek miyim? Ya da önceki deneyimler işimize yarayacak mı?

Bu arada söylemeyi unuttum, biraz bariz ama gene de söyleyeyim "tatilden döndüm" :)



Hayat Detoksu @ 08-02-2012 16:06

Hayatın ticari toksinlerinden kurtulma amacı ile 15 günlüğüne hayat detoksuna gidiyorum. Bu süre içerisinde yorumlar mucizevi bir şekilde onaylanacak, ancak yeni bir yazı site semalarında gözükmeyecektir.

Şimdi ben 15 gün boyunca yazı yazmayınca tüm site okurları boykota gidecek, hatta insanlar sitelerini kapatıp benim 15 gün blog yazmamamı protesto edecek, imza toplayıp avrupa insan haklarına gidip "blogu okuma haklarının ellerinden alınamayacağını" belirtecek, fanatikler yeni bir worm yazıp Ferruh yazı yazmıyorsa internetin ne anlamı var diyerekten ünlü 13 hayalete DDoS saldırıları düzenleyecekler.

Lütfen arkadaşlar bu tip şeylere gerek yok, bakınız :

SELECT COUNT(*) FROM Article
1737

1.737 yazı sizi bekliyor...

Ben sitede yokken biraz yorum yazın da, site canlı gözüksün. Bir de ben yok hergün bir doz şu videoyu izleyin :

This isn't a seminar, this isn't a weekend retreat. You have to realise that someday you will die, Until you know that, You are useless.

26 Eylül 2008

Ailenizin ziyaretçi kaygısı olmayan, her telden çalan, cümle başına 17 yazım hatası yapan, ayrı yazılan de ve da' lar kan davası olan, sorunlu blogcusu.



iPhone Almamak İçin 22 Neden @ 08-02-2012 16:06

Bir ay kadardır IPhone 3G kullanıyorum, TR' de de herkes sanal kamp yapmaya başlamış o yüzden almadan önce keşke bilseydim dediklerimi yazayım dedim.

  1. Şarjı çok az gidiyor, Vasat bir kullanım ile 1-2 gün civarı,
  2. İnternet beklediğinizden çok daha yavaş, kapsama alanları aslında o kadar da kapsamıyor,
  3. Wireless desteği kötü ve yavaş,
  4. IPhone için kaliteli uygulama çok az, yazılımların yarısı arada bir kitlenip, uçuyor,
  5. Kırmadan (jailbreak vs.) yükleyebileğiniz yazılım sayısı az,
  6. Yazılım geliştirirken maalesef .NET ya da Java desteği yok,
  7. Bir çok video formatını desteklemiyor,
  8. Windows kullanıcıysanız ITunes + Quicktime kurmanız zorunlu ve bunların ikisi de birbirinden rezil ve Windows ortamında saçmalık derecesinde yavaş yazılımlar,
  9. ITunes' un backup alması 1-4 saat arasında sürüyor, genelde sıkılıp MobileBackup.exe yazılımını direk sonlandırmak zorunda kalıyorsunuz.
  10. GPS şaka gibi, internet olmadan çalışmıyor, çalıştığı zamanlarda da süper yavaş çalışıyor. Gerçek ve offline bir GPS yazılım ile gelmiyor, dolayısıyla eğer GPS özelliğini gerçek bir GPS gibi kullanmayı düşünüyorsanız şimdiden vazgeçin,
  11. IPhone içerisindeki dosya, klasörlere direk erişim yok. Herşeyin ITunes üzerinden yapılması gerekiyor bu da senkronizasyon vs. gibi işleri çok zorlaştırıyor. Kendi bilgisayarınızın başında değilken IPhone' unuza müzik, video atmanız imkansız hale geliyor,
  12. Pahalı,
  13. MMS desteği yok,
  14. Her ne kadar işim olmasa da kendi MP3 vs. dosyalarınınizdan ringtone yapmamanız başka salak bir limitasyon,
  15. Ses ile kontrol, Kulaklık üzerinden çağrı kabul etme vs. gibi özellikleri yok,
  16. Iphone 3G' nin bazı eski IPhone / IPod aksesuarları ile uyumsuz olması, Kendini şarj etmemesi vs. (bkz. IDragon)
  17. Safari' de Flash' ın çalışmaması, buna rağmen youtube videoları özel yazılım ile çalışıyor,
  18. PDF, CHM vs. adam gibi hiç bir formatı okuyamıyor olması. O kadarki aslında dosya transferi yapamadığınızdan ve dosya sistemine erişmedeğinizden HTML bile okuyamıyor diyebiliriz. Bu da e-book konseptini öldürüyor.
  19. Apple her zamanki gibi mouse' da 2 butona ne hacet mantığı ile, Kopyala / Yapıştır sizin neyinize diyerekten böyle bir özellik sunmayı da gereksiz bulmuş. Ne de olsa salak bir sanal klavye ile 15 karakter şifre girme çok doğal bir iş.
  20. Uzun listelerde scroll yaparken, parmaklarınızın ağrıması ve hayatınızın gözlerinizin önünde şerit IPhone uygulaması olarak geçmesi.
  21. Kontakları SMS ile gönderememe (Bundan emin değilim, ben henüz bulamadım bulan varsa söylesin),
  22. Video kayıt özelliğinin olmaması.

 

Yiğidi Öldür Hakkını Yeme Listesi

  1. Bir çok açıdan donanım ve yazılım çok kullanışlı,
  2. Seksi & İnce,
  3. Video kalitesi, müzik kalitesi ve genel olarak IPod fonksiyonu güzel,
  4. Telefon ile konuşurken IPhone' u kullanmaya pürüzsüz devam edebilme, IPod dinlerken gelen çağrıları vs. güzelce kabul edebilme ve yeni arama yapabilme.
  5. Text-render ve görüntü kalitesi,
  6. Ekranın kendini ışığa doğru ayarlaması, dönmesi, kulağınıza getirince ekranın kapanması çekince tekrar açılması ve benzeri sensör aksiyonları,
  7. Kaliteli kulaklık.

Keşke biri Windows Mobile' ı bu donanımın içine koyabilse o zaman dünya çok daha güzel bir yer olurdu...



Yeni Tasarımın Yapılışı - II @ 08-02-2012 16:06

Bu yazının ilk bölümü: Yeni Tasarımın Yapılışı - I

Tasarımı HTML’ e aktarmak - 07.04.08

Pazar sabahı, 9:45 gibi uyandım, önce sitenin tasarımını Fireworks üzerinde fena olmayan bir seviyeye getirdim. Bunu yaparken RSS ikonuna ihtiyacım oldu normal RSS ikonlarını Feed Icons sitesinden aldım. Ek olarak e-mail ile RSS’ e üye olacaklar içinde bir ikona ihtiyacım oldu. Onun için de E-mail Subscriptions Icons’ u buldum ve onu da oradan çarptım. Tabii ki ikiside ücretsiz ve serbest şekilde dağıtılıyor, dolayısıyla isteyen sitesinde kullanabilir. İkonları ve benzer dış kaynakları kullanırken lisansa bakmak her zaman önemli, aksi takdirde Süleyman Hocam canımıza okur :)

CSS Tasarımı

Önce istediğimiz yapı için bir CSS şablonu bulmak gerekiyor. CSS’ yi kendimiz de yazabiliriz ama yapılmışı tekrar yapmamak için hemen CSS şablon avına çıkıyoruz. CSS şablonu veren bir çok site var ama şu iki tanesi benim hoşuma gidiyor. Iron Myers – Pure CSS Layouts ve Layout Gala ikiside her tarayıcıda bu CSS’ lerin sorunsuz çalıştığını iddia ediyorlar. Ben de onlara inanıyorum ve CSS’ lerinin basit ve temizliğinden dolayı Layout Gala’ yı seçiyorum.

İlgimi çeken CSS’ yi yüklüyor, Edit+ ile HTML kodlamaya başlıyorum.

Arada bir dizi başka iş yaptım, saat şu an 15:27...

Alıntı CSS’ si oluşturmak

Blog yazarken sık sık gereken bir şey başkalarından alıntı yapmak. O yüzden güzel bir blockquote tagını çok kullanıyorum, bunu belli etmek için güzel bir CSS oluşturmam gerekiyordu. Bu iş için Design Meme’ de güzel bir örnek var ama sadece Firefox’ ta çalışıyor bu da bizim işimizi görmüyor tabii ki. Bende şu an ki sitedeki gibi basit bir şey yapmak istedim. Aşağıdaki gibi bir şey yaptım;

image

CSS ise şu şekilde;

blockquote{

background: url('mg/openquote.gif') no-repeat left top;
padding-left: 16px;
padding-top:2px;
color:#555;
margin-left:14px;

}

blockquote p,blockquote div,blockquote td,blockquote span{

font:italic 14px "Georgia", serif;

}

İlk İzlenimler

Sağ taraftaki hakkında kısmını da hallettikten sonra aşağıdaki gibi bir HTML’ e ulaştım.

image

Resimde görülen sağdaki navigasyon kısım başlıklarını şu şekilde bir CSS ile gerçekleştirdim.

div.section h2{
text-align:center;
background: url('/mg/blackdot.gif') repeat-x center;
margin-top:0;
}

div.section h2 span{
font: normal 24px Times, serif;
color:#333;
background-color:#FFF;
padding:0 10px 0 10px;
}

HTML kısmı ise gene çok basit;

ARAMA

Şimdilik güzel gidiyoruz.saat : 17:35. Bir kaç kek ve 330ml Coca Cola tükettim.

Yazı devam edecektir...



.NET Reflection, RCE and Hard Coded Keys @ 08-02-2012 16:06

Sometimes you need to extract some data out of another application but the data stored as encrypted. As you might guess generally keys are just hardcoded, but mostly algorithm is custom. Since there is no such a thing as "client-side security", there are so many ways to do decrypt this data.

You can go and reverse the code which is decompiling the application and copy, paste then tweak the code to compile. But this can be a real pain when dependencies and obfuscated code comes into the play.  Since new obfuscators taking the advantage of IL tricks, generally it's not easy to use decompiler generated high-level code without heavy modification.

Unless you are a masochist I'd suggest you to use the application's code to do the job.

  1. Find the decryption point and the DLL,
  2. Invoke the related decryption function using reflection.

We use reflection instead of simply referencing the dll because this way it's possible to call any method within any scope such as private and friend which wouldn't be possible otherwise. Also it allows us to easily bypass Strong Name restrictions without touching to the original binary.

Here is the code:

   1: Function Decrypt(ByVal data As String) As String
   2:     'Load Assembly
   3:     Dim CustomAssembly As Assembly = Assembly.Load("DLL.To.Load")
   4:     Dim CustomType As Type = CustomAssembly.GetType("DLL.To.Load.SecretClass", True, False)
   5:  
   6:     Dim CopyObj As Object = CustomAssembly.CreateInstance(CustomType.FullName)
   7:     Dim Res As Object = CustomType.InvokeMember("Decrypt", BindingFlags.InvokeMethod, Nothing, CopyObj, New Object() {data})
   8:  
   9:     Return Res.ToString
  10: End Function


DRM, Spore ve Korsan Yazılım @ 08-02-2012 16:06

Daha önceden söylemiştim "legal yazılım kullanmak zor iş" diye. EA şimdi Spore' da ve daha önceden de Mass Effect' te aktivasyon sistemi kullanmış. Yani oyun en azından 10 günde bir internetten kendini onaylamalıymış, aksi takdirde çalışmamaya başlıyormuş. Ek olarak sadece 3 defa aktivasyona izin veriyormuş.

Bildiğiniz gibi ben korsan yazılıma karşıyım ama korsan yazılıma karşı olmak salak olmak anlamına gelmiyor. Bir DVD' nin kopyasını sadece kendiniz için çıkarıyorsanız bile bu işlem bir çok ülkede kanuna aykırı. Şimdi bu oyunlarda da benzer bir durum sözkonusu. Ancak eğer filmin orijinal DVD' sinde bir sorun çıkarsa gidip yeni bir tane mi almanız gerekiyor?

EA' e göre de oyunu 3 defa kurduktan sonra gidip yeni bir oyun almanız gerekiyor (ya da kendilerini telefon ile arayıp derdinizi anlatmanız). Bu firmaların dertlerini anlıyorum ancak bu saçma bir durum ve bilinçli bir tüketici olarak iki defa düşünmeden oyunun crack' ini indirip kurarım -nitekim düzenli olarak yapıyorum-.

Benim teorim basit; firmaların bu şekilde önlemlere gitmesi uzun vadede onların işine yaramayacak ve eninde sonunda bundan vazgeçecekler. Çünkü paranla rezil  olmak tam da bu durum için söylenmiş bir söz.

Güzel bir örnek

ATV' nin iste & izle isimli bütün ATV dizilerini online izleyebileceğiniz bir sistemi var. Aylık fiyatı 15 YTL gibi bir fiyat. Bugün HBO' nun Lost' u web üzerinden HD kalitesinde ücretsiz yayınladığını düşünürseniz bence biraz cüretkar bir deneyim ama o kısım önemli değil. Sonuçta bir hizmet ve bence güzel bir adım, ama...

Avrupa Yakası son 3 senedir izlediğim tek yerli dizi diyebilirim ve ben de bu yüzden ATV' nin bu sistemine üye oldum.

  • ATV dizileri sadece online izlemenize izin veriyor (ve süper bir internet çıkışları yok)
  • ATV' nin online yayın kalitesi 260*200 gibi bırakın HD' yi NTSC/PAL kalitesine bile yetişmeyen bir kalitede.

Google' da iki tıklama ötemde olan site ise Avrupa Yakası' nı en iyi kalitede download edebileceğim bir formatta sunuyor. Benim çözümüm basit ATV' ye parasını öderim, giderim diğer siteden download ederim. Etik olarak kafam rahat. Çok istiyorlarsa bu akıl almaz hırsızlığım(!) için beni dava edebilirler.

Burada not düşmek lazım ATV' nin sitesinde şu slogan yok:

Satın al ve akıl almaz kötü bir kalitede tüm dizileri izle. Ya da youtube' a git onun kalitesi bile bizden iyi.



Yeni Tasarımın Yapılışı - I @ 08-02-2012 16:06

Bir süredir yeni tasarım yayında. Yeni tasarımı yaparken bir nevi geliştirme günlüğü tutmuştum. Ne yaptım, neler kötü gitti, neler güzel gitti, hangi kaynakları kullandım vs. gibi. Bu dokümanları parça-parça yayınlamaya başlıyorum. Bu serinin birincisi, çok uzun değil bunun gibi 2-3 bölüm daha var. Bütün seri bittikten sonrada genel olarak ne bekliyordum, ne buldum yazısı yazmaya çalışacağım.

Gereksinimler

  • Temiz ve kullanışlı bir tasarım
  • Geçerli XHTML Strict veya Transitional
  • Eskisi gibi tablosuz CSS temelli tasarım
  • 1024*768 ve yukarısı çözünürlüklerde verim
  • Ortada “fixed” 960px layout, bu şekilde okunurluğun daha yüksek olduğunu düşünüyorum
  • Geçerli XHTML Strict veya en azından XHTML Transitional kodu olması
  • Geçerli CSS 2.1
  • Tüm sitenin UTF-8 olması
    Şu anki sistemde sitenin yarısı UTF-8 ama hepsi değil bu hem teknik sorunlara neden oluyor hem de bazı durumlarda Türkçe karakterlerin doğru gösterilmesine engel oluyor.

Ekstra Eklenecek Özellikler

  • Tamamen yeni ASP.NET altyapısı, Sistemin bir kısmı zaten ASP.NET ama hepsini ASP.NET’ e geçirmek istiyorum
  • Yorumlar için CAPTCHA desteği
  • AJAX ile yorumları okuma ve yazma
  • Site arşiv sayfaları
    • Tag tabanlı arşiv
    • Tarih tabanlı arşiv
    • Ana konu tabanlı arşivler
      • Projeler
      • Araştırma Dokümanları
      • Download
  • Yeni yorumlardan e-mail ile haberdar etme
  • Trackback gönderme ve kabul etme
  • İngilizce arabirim desteği, ikinci adım

Tasarım – 06.04.08

Ben tasarımcı değilim ama tasarımcı olarak bir geçmişim var. Yeni tasarımdaki amaçlarımdan biri daha okunaklı ve daha temiz, curcuna olmayan bir tasarım sunmaktı. Bir şeye başlamadan önce ilham almak için beğendiğim blogların tasarımlarına ve güzel tasarımları listeleyen ilham sitelerine baktım. Kendi beğendiğim blog sitelerine bakarken komik bir şey farkettim, bu sitelerin hiçbirini aslında ziyaret etmiyorum sadece RSS’ ten okuyorum. Bu da “içerik kraldır” lafını tekrar onaylıyor. Tabii ki bunu kendime bahane etmiyorum!

Bu şekilde sağı - solu bir saat kadar dolaştıktan sonra, kendi arşivimdeki eski yaptığım çalışmaları incelemeye başladım. Grafik konularından o kadar uzak kalmışım ki bir şey yapmak çok zor geliyor. O yüzden daha formdayken yaptığım çalışmalardan çalmayı düşünüyordum. Eski PNG dosyaları arasında bir saat kadar harcadıktan sonra ve Fireworks CS3 ile de bir kaç deneme yaptıktan sonra eski materyalleri değiştirip güzel ve basit bir logo çıkardım kendime.

clip_image001Ben genelde tasarıma logodan başlarım daha sonra da tüm konsepti logo üzerine kurarım. Bu seferde gene o şekilde yaptım. Soldaki logoyu tasarladıktan sonra, bunun üzerine tasarımı geliştirdim.

Önce gazete benzeri bir konsept yakalamaya çalıştım, bu adımda bir kaç rasterize efektli fotografta denedim ama istediğim gibi olmadı, bu sırada daha basit bir aşağıdaki çalışmaya ulaştım.

clip_image002

Ama bu sefer siteyi aşağıdaki gibi, 960px, 2 kolon fixed istiyordum.

clip_image003

Bu şekilde istememin ana nedeni ise orta içeriğin 500px gibi sabit bir şey ile limitleyebilmekti. Dolayısıyla yukarıdaki tasarımı değiştirip, bu şablona uyacak bir hale getirdim. Son zamanlarda wordpress temalarında popüler olan alt kısmı farklı bir renk ile ayırma işlemi de çok hoşuma gittiği için bir de ek bir renk ile footer çalıştım ve ortaya aşağıdaki çıktı.

clip_image005

Deneyimli tasarımcılar çoktan farketmiştir istediğim şablon / CSS Layout ile yukarıdaki tasarımı birleştirmede temel bir arka plan sorunu var. Bu yüzden Logoyu tamamen transparan bir arkaplan ile çalıştım ve header ve footer arka planlarını da yatay olarak tekrar edebilecek bir hale getirdim. Orjinal resimler 1600px uzunluğunda dolayısıyla bir çok monitörde zaten tekrar etmelerine gerek kalmayacak ama tekrar ederlerse de bu tamamen gözükmeyen bir geçiş ile olacak. Basitçe resimlerin soldaki başlangıçları ile sağdaki bitişlerini aynı çizgi üzerinde tuttum. Düz olmadıklarından dolayı bu biraz vakit aldı ama sonunda oldu. Bu işlemi yaparken “Ruler” ve “Grid” leri görünür hale getirmek çok işinize yarayacaktır.

Bütün bunları yapmak ve yukarıdaki hale getirmek yaklaşık 6-7 saat sürdü. Cumartesi öğleden öncem bu işe gitmiş oldu. Pazar sabahı da tasarımdaki son detaylarla oynayıp HTML’ e aktarmaya başladım.

Bir sonraki yarın yazı Pazar sabahından devam edecek....



ASP.NET Güvenliği ve Platform Tasarımı @ 08-02-2012 16:06

Öncelikle genel yapılan geyiklerden birini kestirip atalım:

Tüm sunucu-taraflı (server-side) diller aynı seviyede güvenlidir, herşey kodu yazan kişiye bağlıdır.

Bunu unutun, yok böyle bir şey. Hemen açıkça söyleyelim mesela ASP.NET tasarımı PHP ye göre çok daha güvenlidir. Şimdi bir çok kişi yorumlara saldırmadan önce yazıya devam edelim. Mesela Struts (dil değil platform/framework) hatırı sayılır derecede bir çok platformdan daha güvenlidir.

Her dilde ve platformda güvenli olmayan yazılım geliştirebilirsiniz ama bazı platformlarda güvenli olmayan yazılım geliştirmek çok daha kolay. Şimdi bir dilin - platformun güvenlik noktasında nasıl analiz edilebileceğine bir bakalım.

Server-Side dillerin Güvenlik Analiz Kriterleri:

  • Yazılım güvenliği, platformun kendisinde çıkan açıklar (buffer overflow, yanlış çalışan encoding fonksiyonları vs.)
  • Platform tarafından sunulan güvenlik kütüphaneleri, fonksiyonlar
  • Platformun dokümantasyon ve eğitimlerin güvenli yazılım geliştirme pratiklerini teşvik ediyor olması. Güvenli kod yazmanın kolay olması
  • Güvenli varsayılan ayarlar ve fonksiyonlar varsayılan olarak güvenli şekilde çalışması

Burada bütün platformaları karşılaştırmayacağım zaten farklı platformlardaki teknik yetersizliğimden dolay bunu yapma imkanım da yok ama örnekler verip ASP.NET' in neleri başarılı bir şekilde yaptığını göstermeye çalışacağım.

Platformun Kendisinde Çıkan Açıklar

Bu tip açıklara şu örnekleri verebiliriz : ASP.NET Request Validation Bypass, PHP Global Overwrite, PHP Zend Hash Problemleri, Struts Validation Bypass vs.

PHP bu konuda tamamen sabıkalı, The Month of PHP Bugs bunu bize gösterdi zaten. Burada söyleyecek pek bir şey yok, ASP.NET in .NET Framework' ü üzerinde geliştirilmiş olması aynı Java gibi onu Buffer Overflow ve benzeri ataklardan tamamen korunmasına neden oluyor. Dolayısıyla .NET Framework' ün temelinde bir sorun çıkmadıktan sonra bir dizi güvenlik açığının ASP.NET te görülmesi imkansız hale geliyor.

Bunun harici foksiyonların kendilerinde çok ciddi sorunlar çıkmadı buna rağmen NULL karakterler ile string birleştirme operastyonları etkileme gibi açıkları çıktı. Dolayısıyla ASP.NET' te bu konuda mükemmel değil ama çok da kötü değil.

Güvenlik Kütüphaneleri ve Fonksiyonlar

ASP.NET tasarlandığı gibi kullanıldığında şu sorunların hepsini çözüyor :

  • SQL Injection
    Parameterised Query kullanımı
  • XSS, Cross-site Scripting
    Default olarak control' lerde encoding desteği, Request Validation desteği (bu sadece derinlemesine defans faktörü, sorunun çözümü değil). Bunlara rağmen ASP.NET' in control encoding desteğinin o kadar mükemmel olmadığını da belirtmek lazım.
  • Güvenli Kullanıcı Sistemi (Login/Logout, Role sistemi, şifre güvenliği vs.)
    ASP.NET Membership sistemi basit ve güvenli şekilde bir kullanıcı sistemi oluşturmanıza izin veriyor.
  • CSRF (Cross-site Request Forgery)
    ViewStateUserKey ile uygulama CSRF ataklarına karşı güvenli hale getirilebilir.
  • CRLF Injections
    İç fonksiyonların güvenli olması otomatik olarak CRLF açıklarından (HTTP Splitting) koruyor. Bazı fonksiyonlarda sorun olsa da en azından genelde güvenli diyebiliriz.
  • Parameter Manipulation
    ASP.NET istemci tarafına giden datanın modifiye edilmeden döndüğünü kontrol edebiliyor ama bu aslında pek iyi bir yazılım geliştirme pratiği değil. Eğer istemci tarafına giden datanın aynı olmasını istiyorsanız istemciden gelen parametreyi kullanmaz ve datayı session yada benzeri bir yerde tutarsınız. Buna rağmen bazı yazılımlar scability amaçlı buna ihtiyaç duyabiliyorlar.

    Ek olarak ASP.NET Validators var, bunlar sayesinde girdi denetimi yapmakta gayet pratik.

Bunun harici güvenlik ile ilgili bir çok hazır fonksiyon ve kütühane sunuyor:

  • Şifreleme ve Encoding Kütüphaneleri. Ek olarak bu kütüphaneler UTF8 ve UTF8 olmayan data ile de iyi geçiniyorlar.

Güvenli Yazılım Geliştirmeye Teşvik Etme

ASP.NET' in resmi dokümantasyonu güvenliğe çok önem veriyor. Bir çok güvenlik ile ilgili makale ve bu güvenlik özelliklerinin nasıl kullanılacağına dair dokümantasyon sunuyor. Bundan daha da önemlisi örneklerde Parameterised Query kullanımı gibi güvenli kullanımlar öneriliyor ve gösteriliyor. Bir çok işlem için gerekli fonksiyonlar zaten olduğundan kullanıcıların kendi kodlarını yazması gerekmiyor.

Güvenli Varsayılan Ayarlar ve Fonksiyonlar

Bu en önemli özelliklerden biri ve Microsoft' un güvenlik devriminden beri çok önemverdiği bir unsur. ASP.NET varsayılan olarak hata mesajlarını göstermiyor, debugging' i aktif hale getirmiyor.

Response.Redirect fonksiyonu da varsayılan olarak güvenli fonksiyonlara güzel bir örnek olabilir. Mesela PHP' de sayfa yönlendirme işleminden sonra manuel olarak sayfanın işlemin durdurmanız gerekiyor*. Bunu yapmdığınızda üyelik gerektiren sayfalara şifresiz erişim mümkün olabilir. ASP.NET ise bu fonksiyon varsayılan olarak işlemi durduruyor ama isterseniz ekstra bir parametre ile çağırıp sayafnın işlemesini durdurabiliyorsunuz.

Bu yazı bir karşılaştırma yazısı değil daha çok güvenli platform geliştirmeye güzel bir örnek olarak ASP.NET' i gösterme amaçlıdır. Şu an hangi penetration tester' a sorarsanız sorun ASP.NET sitelerinin genellemede çok daha güvenli olduğunu söyleyecektir**.

Güvenli Kod Yazmak Bunun Neresinde ?

Eğer kod güvensiz yazıldıysa maalesef sizi koruyabilecek bir platform henüz keşfedilmedi, ek olarak mantıksal açıklar da aynı şekilde. Hiç bir yazılım dili ya da platform sizi böyle delice bir şey yapmaktan alı koyamaz!

 

* Bunun ana nedeni bu fonksiyonun (header) çok jenerik olması.
** En azından 50 site üzerinde penetration testing yapıp, değişik platformlarda değişk siteler ile çalıştığını varsayıyorum.
*** Nihayet uzun bir aradan sonra teorik ama hala teknik bir yazı yazabildim.



Şeytan Yemini ve The Escapists @ 08-02-2012 16:06

Bir kaç gün İskoçya - Edinburgh' da olacağım ondan sonra da hafta sonu ufak bir tatile kaçıyoruz.

Şeytan YeminiBu arada bu yolculukları uzun süredir okumak için vakit kolladığım kitaplardan biri olan Jean-Christophe Grangé' ın Şeytan Yemini kitabına başlamayı düşünüyorum. Grange' ın bu harici tüm kitaplarını zaten okunuştum. Dolayısıyla bunun da süper olduğundan eminim.

Bu sırada bir hafta kadar önce The Escapists' i bitirdim. Süper bir çizgi roman (daha doğrusu graphic novel) değil ama fena da değildi. Bu aralar biraz nostalji yapıyorum ve nedense içimde ciddi bir çizgi roman okuma hissi var. Listemde de Hellboy v1, Watchmen, The Umbrella Academy gibi kitaplar var.

Dönünce bir kaç kitap ve programlama konusunda yazmayı planlıyorum. Bir de 10 sayfadan uzun bir tasarım dizisi yazısı var. Yeni siteyi yapmaya başladığımdan bu yana aldığım notlar ve site geliştirme süreci. Onu da yayınlanabilir formata getiririr getirmez 3-4 blog postu olarak yayınlamaya çalışacağım.

Şehir dışında olacağımdan bu hafta pek bir şey yazamayabilirim ve yorum onayları biraz gecikebilir.



White Papers @ 08-02-2012 16:06

Some of my published white papers in chronological order.

  • Hiding your identity in the Internet (Turkish) - 26.04.2003
  • Small XSS Paper - 28.07.2004
    Potentially the first paper ever talks about detecting and exploiting XSS vulnerabilities in HTML attributes and Javascript blocks.
  • A Practical Guide to PGP (Turkish) - 09.01.2005
    Practical introduction to PGP, explains basic of PGP with some real world examples.
  • Attacking and Defending Wireless Networks (Turkish) - 25.12.2005
    A Highly detailed document about attacking and defending wireless network.
  • SQL Injection Cheat Sheet - 15.03.2007
    The most comprehensive SQL Injection Cheat Sheet, includes lots of detailed information about SQL injection methods and covers several different databases. Translated into Japanese, Published in "Hacker Japan" Issue 05.2007.
  • XSS Tunnelling - 10.07.2007
    Cutting edge research about exploitation of XSS vulnerabilities. Explains the implementation and idea of tunnelling HTTP traffic through XSS channels to bypass several restrictions and gain a total control over the victim's session.
  • Deep Blind SQL Injection - 26.10.2007
    A new way to exploit Blind SQL Injections which allows attacker to get 16+ different answers at a time from Blind SQL Injections instead of 2 (true or false). Also it's implemented in BSQL Hacker.
  • SQL Wildcard Attacks - 12.05.2008
    A new attack vector against web applications and databases. Affects more than 70% of web applications with an MS SQL Server database. This attack is now documented in the OWASP Testing Guide v3 as well.
  • SSL Implementation Security FAQ - 14.05.2008
    Quite comprehensive FAQ for common SSL implementation security pitfalls.


  • Hayat, Bahama Adaları, Balıkçı Köyünde Yaşamak @ 08-02-2012 16:06

    Cable Beach - NassauBlog yazmaya ara verdiğim en uzun süre buydu sanırım. İşlere odaklanırken kafayı yememek için hayatımdaki bazı şeyleri listemden çıkartmıştım, bunlardan biri de blog yazmaktı. Sizin haberiniz yok, blog yazmadığım sürede çok olay gelişti.

    Son altı ayı Bahama Adaları’nda geçirdim, başkent Nassau’daydım. Adanın kuytu köşelerinden birinde klasik “Balıkçı Adasında Yaşama” teorisini test ettim. Hani şu kuytu adada tek başına yaşadığın, bir şey almanın gereksinim olmadığı, koşuşturmaca olmayan yerde yaşam sürmek. Hani şu işinizi yaptıktan sonra güneş kaçmadan sahile inebileceğiniz ve pembe kum – turkuaz okyanusun tadını çıkartma potansiyelini içeren yerde olmak. Hani şu etrafınızda hiç bir şey olmayan yerde Facebook olmadan, minimum Twitter ile yaşamak.

    Nassau klasik Karayipler. İklimi, yolları, agaçları, insanları. İlk geldiğinizde kendinizi Küba’da çekilen bir filmde hissediyorsunuz, bahçenizden ananas yemek gibi sürreal deneyimler yaşıyorsunuz.

    Altı ay sessiz sakin Bahamalar’da yaşadım, dünyanın en güzel sahillerini gördüm, yeni bir kültür tanıdım, conch salatası yiyip, Bob Marley dinledim. Cuma namazlarında Bahamalı müslümanlarla sohbet ettim, basket oynadım, komşuyla spearfishing’e gittim. Harika yeni arkadaşlar edindim, güneş gözlüğünü favori aksesuarım yaptım, 5 ay saçımı kestirmedim, turist şapkamı takıp jet-ski’ye bindim. Adadan sıkılınca Las Vegas’a (Black Hat için) gittik, Florida’ya gittik. Hatta ve hatta Hurricane Irene’i de gördüm. Sağ çıktığım doğal afet listesine kasırga’yı da ekledim, Allah başka göstermesin.

    Balıkçı Köyünde Yaşam

    İtiraf etmem gerekli ki Nassau bir balıkçı köyü değil ama benim bulunduğum kısmı daha sakin tarafıydı, bir de bu durum benim yaşam stilim ile birleşince balıkçı köyü hissiyatını aldım. İşin ironik kısmı şudur ki bu balıkçı köyü fantazisi tamamen fantazi. Şehirde büyümüş veya bir süre yaşamış birinin hayattan basit beklentileri bile o kadar yüksek ki maalesef güzel bir sahil bu açığı kapatamıyor. Ben hep kendimi Beliz ya da Karayipler’deki tuhaf bir adada yaşadığımı hayal ederdim ama o sadece bir fantaziymiş, gerçekte bu tip bir yerde altı aydan yaşamak herkesin harcı değil. O yüzden sizinde böyle fantazileriniz varsa bir gözden geçirin. Veni, vidi...

    NYC

    İnşallah Çarşamba günü New York’a gidiyoruz, sanırım İstanbul, Londra’dan sonra Nassau’yu denemek saçma bir fikirdi, bakalım Manhattan bu seriyi nasıl takip edecek.

    Bahamalarda geçirdiğim vakitte çok şey öğrendim, hayallerine ulaşmanın mümkün olduğunu ama hayallerini doğru seçmenin gerektiği, insanın aslında ne istediğini çoğu zaman bilmemesi, Martı Jonathon olmanın kolay olmadığı.

    İyisiyle, kötüsüyle bir maceranın daha sonuna geldik, yeni maceralara yelken açtık.

    Beni mi Bağlar Ferruh?

    Bağlamaz değerli okur sen de haklısın, bir gün gelecek senin de ilgini çeken şeyler yazacağım. Bu süre içerisinde senin ilgini çekecek şeyler de öğrendim. İş hayatını öğrendim, Predictably Irrational gibi acayip süper kitaplar okudum, hatta inanmayacaksın ama SEO konusunda bile söyleyeceklerim var. Belki bir gün bunlar hakkında da yazacağım, belki bir gün bu siteyi açtığınıda, RSS güncellendiğinde benim geyiğe bağladığım bir yazıyı değil de aylardır görmek istediğin o teknik konuyu göreceksin, bir gün o da olacak sevgili okur, bir gün o da olacak...



    Mutluluğun Anahtarı: Umursamamak @ 08-02-2012 16:06

    Sanırım 30 yaşına merdiven dayamış olmak, 10 yıldır evli olmak gibi faktörler kendimde belli arayışları tamamlamama yardımcı oldu. “Yolun yarısına geldim hala belli temel şeyleri çözemedim” dememek için son üç beş senede hayatınızı değiştirecek 62 öneriler gibi bir dizi kısa sonuca vardım.

    Mutlu olmayı da bu süreçte çözdüm ve çözümün aslında ne yapmakla değil ne yapmamakla alakalı olduğunu farkettim. Umursamamanın üç boyutu var, izolasyon, göz ardı etmek, tevekkül.

    İzolasyon

    Bu benim düzenli olarak bahsettiğim konulardan biri, haber, spor, politika, popüler medya, gündem, trend vs. sizi mutlu eden hobilerinizden değilse bunlardan izole kalmak en verimlisi. Japonya’ya bir şekilde yardım etmiyorsanız ve yardım etme durumunuz yoksa oradaki depremi takip etmenin bir anlamı yok. Genel  kültür çağımızın en büyük yalanı. Olabildiğince izole olmak hayatı daha kolay hale getiriyor. Sosyal ağlarda bu kategoride ve maalesef ben hala onlardan tam kopamadım.

    Göz ardı etmek

    İzolasyonu hep biliyordum ama pratik şekilde uygulamaya son senelerde yoğunluk verdim, göz ardı etmek ise çok daha yeni keşfettiğim şeylerden. Uygulaması çok basit, size gelen şeyleri göz ardı ediyor ve hiç bir şey yapmıyorsunuz.

    Mesela birisi size bir email gönderiyor, email’ın sonu iyiye çıkacak bir şey değilse herhangi bir cevap vermek yerine hiç cevap vermiyorsunuz, oradaki “Delete” butonunu boşuna konulmamış, bir amacı var. Mesela biri size salak bir soru soruyor, soruyu cevaplamıyor, göz ardı ediyorsunuz. Daha da ısrar ediyor, direk o insanı göz ardı ediyorsunuz. Telefonunuz çalıyor, cevap vermek istemiyorsunuz ve cevap vermiyorsunuz. Bu kadar basit. İnsanları, olayları, hatta çok aktif içinde bulunduğum durumları bile göz ardı edebileceğimi keşfetmek çok büyük bir şeydi benim için. Göz ardı ettiğiniz herşey için, hiç bir şey yapmıyorsunuz, hiç bir şey düşünmüyorsunuz ve hiç bir efor harcamıyorsunuz.

    Tevekkül

    Neyi kontrol edip, neyi kontrol edemeyeceğini bilmek. Yapabileceğinizi en iyi şekilde yapın, gerisi sizin elinizde değil. Kasmanın, tekrar tekrar aynı konular üzerinden geçmenin, her olasılığı irdelemenin hemen hemen hiç bir faydası yok. Bunu idrak etmek benim için çok uzun sürdü, hala beceremiyorum ama inşallah bir gün bu konuda daha da iyi olacağım.

    Bunları yaptığınızda hayatınızın ne kadar hızlı ve güzel değişebileceğini düşünün… ve yapın.



    IstSec 11 @ 08-02-2012 16:06
    istsec_1

    IstSec ‘11 İstanbul Bilgi Güvenliği Konferansı 3-4 Haziran’da İstanbul’da yapılacak. Bu sene maalesef ben katılamayacağım ama Netsparker ekibinden arkadaşla orada olacak inşallah.

    Mekan: Bilgi Üniversitesi Dolapdere Kampüsü

    Konferansın bu seneki ana teması “Yeni teknolojiler, yeni güvenlik riskleri” imiş.

    Daha detaylı ve katılım bilgisine IstSec sitesinden ve LifeOverIP sitesinden ulaşabilirsiniz.



    Startup Fikri Bulmaca @ 08-02-2012 16:06

    İnsanların yeni ürünler için fikirler bulamıyor olması bana çok ilginç geliyor. Her gün kullandığım yazılımlardan en az %50 si kötü, yanlış ya da tamamen saçma, eğer bunlardan bir tanesini bile daha iyi yapabileceğinizi düşünmüyor, eğer bu sorunların bir tanesini bile daha iyi çözebileceğinizi düşünmüyorsanız zaten ortada başka sorunlar var.

    Biz firmada bir süredir SalesForce müşteriyiz, SalesForce o kadar iğrenç, 90’lardan kalma bir yazılım ki SalesForce yerine Excel ile CRM yapmak bize daha mantıklı geliyor, nitekim biz de SalesForce’u bırakıyoruz. SalesForce sadece iğrenç bir yazılım değil aynı zamanda “süper-kapitalist” firma imajının altını doldurabilen firmalardan. Kendi ürünlerinin kötü olduğunu bildiklerinden SalesForce’a aylık ödeme yapamıyorsunuz, yıllık anlaşma yapmak zorundasınız. Bunun nedeni bariz olarak bizim gibi bir çok firmanın onların ne kadar kötü olduğunu hemen anlaması ve hesaplarını 1-3 aydan sonra kapatıyor olmalarıdır.

    Birine ben CRM yazıp satacağım deseniz muhtemelen size “Manyak mısın? Onlarca CRM yazılımı var piyasada.” der. Gel gör ki 2009’da Bantam Live bunu yaptı ve iki sene içerisinde başka bir firma tarafından satın alındı. O kadar bariz bir şekilde iyiydiler ki ben Kasım 2010’ da ben piyasadaki en iyi CRM yazılımlarından biri olacağınız yazmıştım. Gidip şu an SaaS CRM çözümü bulamaya çalışırsanız karşınıza 2-3  tane kabul edilebilir kalitede CRM çıkıyor ve hepsinin CRM’e bakış açısı farklı. Dünyada kaç firmanın CRM’e ihtiyacı olduğunu düşünürseniz CRM yazılımı yazmamak ya da CRM ile ilgili çözümlerde çalışmamak direk saçma gibi.

    Yeni bir şey bulmanıza gerek yok, yapılmamışı yapmanıza gerek yok, sadece daha iyi yapmanıza gerek var*

    Ben her gün kullandığım web siteleri, yazılımlara bakınca ağlamakla sinir krizi geçirmek arasında gidip geliyorum. Kaliteli yazılımlar kullandıkça, kalitesizliğe toleransınız azalacak, toleransınız azaldıkça bunları kullanırken daha çok acı çekeceksiniz, bu acıları dindirdiğiniz an elinizde yeni bir ürün var demek.

    *Aslında bazen buna da gerek yok ama bambaşka bir blog konusu



    Startup, Ürün, Reklam ve Para ama özellikle Para @ 08-02-2012 16:06

    Diyelim ki bir fikriniz var, hayata geçirdiniz ve şimdi de bunu ticari bir şekilde satmaya başladınız.

    Buraya kadar herşey basit, web sitesi geliştirmek kolay, kod yazmak kolay, ürünü piyasaya çıkarmak kolay, bedava bir şeyler vermek te kolay ama size para ödeyen müşterilere sahip olmak zor. Ya da yeterli sayıda müşteriye sahip olmak zor.

    Startup ve Rakamlar

    Firmanızda bilmeniz ve takip etmeniz gereken rakamlar;

    Aylık Gider (burn rate)
    Host masrafı, maaşlar, ofis giderleri, rutin ekstralar, reklam gideri, kullandığınız servisler, yıllık lisans ücretlerinin aylık ortalaması vs. Özetle her ay bankadan çıkmasını beklediğiniz para.

    Aylık Gelir
    İşin başında bilmediğiniz (iş planlarının feci derecede sıçmasının ana nedeni) ama her ay topladığınız data ile tahmin kalitesini yükseltebileceğiniz bir rakam.

    Örnek olarak son 6 ayda 100$’dan 120 ürün sattıysanız aylık geliriniz (120/6)*100$=2000$’dır. 6 aydan daha çok süredir satış yapıyor olsanız bile son 6 ayı almak genelde daha sağlıklı sonuç verecek çünkü tanınma oranınız genelde hızlı bir şekilde yükseliyor olacak ve 1-2 sene önceki rakamlar şu an gidişatı tam yansıtmayacaktır.

    Beklenen Büyüme Oranı
    Genelde satışlara baktığınızda bir ivme göreceksiniz, eğer yukarı doğru bariz bir trend yoksa zaten ciddi bir sorun var demek, eğer beklendiği gibi bir yükseliş varsa iyi bir yoldasınız demek. Bu trend kendi başına çok anlam ifade etmiyor olabilir özellikle internet dünyasının hızı ve iniş çıkışları düşünülünce dolayısıyla yeni bir yatırım yapacakken buna çok bel bağlamayın, gerçek data ile hesaplanmış Aylık Gelir üzerinden çalışın. Hayal kurarken buna istediğiniz kadar yüklenebilirsiniz :)

    Satış Tüneli

    İnternet üzerinden ürünü genelde 3 adımda satarsınız,

    1. Müşteri siteye gelir

    2. Ücretsiz Üye olur

    3. Para Öder ve Ücretli Üye Olur

    Burada 1.000.000 tane 2. Adıma gelmiş müşteriniz olabilir ama bu para kazanıyorsunuz anlamına gelmez (maalesef üye olduklarından dolayı ama hiçbir zaman paralı üye olmadıklarından dolayı para kaybetmenize bile neden olabilir. Reklam vs. gibi community üzerinden para kazanan firmalar hariç). Önemli olan müşteriyi gerçekten para kazandıracak adıma getirmek.

    Aşağıda örnek 1000 ziyaretçiden kaç kişiye satış yapabileceğinizi gösteren bir tünel var. Buradan anlaşılması gereken şu sitenize gelen 1000 ziyaretçinin 33 tanesine satış yapabiliyorsunuz.

    clip_image002

    Eğer ürününüz çok ucuz değilse (<10$) hemen hemen her zaman bir 3 adımlı bir tünel var demek. Ziyaretçi > (Deneme/Okuma/Başvruma/Ligth Version) > Satın Alma

    Yukarıdaki grafikterki iki rakam önemli,

    Üye Conversion’ı ve Satın Alma Conversion’ı. Özetle ürün fiyatınız 100$ ise bu örnek conversion oranları ile 1000 ziyaretçiden 33*100=3300$ kazanacaksınız. Bunun anlamı sitenize 1000 ziyareçi çekmek için 3300$ a kadar para harcayabileceğinizdir. Tabii ki burada kar oranını ve bir müşterinin size hayat boyu getirisini hesaplamanız gerekli.

    Mesela her ürün sattığınızda AWS üzerinde yeni bir cloud sistemde kod çalıştırıp 10$ harcıyorsanız maksimum harcayabileceğiniz rakam (100-10)*33=2970$ olmalı. Ama aynı zamanda bir müşterinin size hayat boyu kazandıracağı para (mesela aylık bir servis ise ya da ek servisler satma şansınız varsa) ortalama 250$ ise o zaman ürünün sadece ilk üyelik ücretini değil bu hayat boyu kazandıracağı ücrete göre hesap yapmanız lazım.

    Bu örnekteki ziyaretçiden satışa conversion oranınız ise şu şekilde: 0.12*0.28=%033

    Bu oranların hepsini takip edip bulmanız gerekli, bunları verimli tahmin etmek genelde mümkün değil. Conversion oranlarını takip edebilmek için Adwords, Google Analytics, GetClicky gibi ürünleri kullanabilirsiniz.

    Satışı Arttırma

    Birkaç temel konuyu yazdıktan sonra esas olaya gelelim, elinizde rakamlar var, yukarıdaki oranları da buldunuz. Aylık ne harcadığınızı, ne kazandığınızı, büyüme oranınızı, conversion oranlarını biliyorsunuz. Nasıl daha çok satabilirsiniz?

    Yukarıdaki tünele bakarak şunu anlayabiliriz, tünelde ya ilk adımın rakamını yükselteceksiniz (yani daha çok ziyaretçi çekeceksiniz) ya da 2. veya 3. adımdaki conversion oranını yükselteceksiniz.

    Tünelin Ağzı, Daha Fazla Ziyaretçi

    Otomatik olarak aklınıza şunlar gelecek:

    • Adwords / Banner ve benzeri reklam yöntemleri
    • “Ücretsiz” Inbound Marketing ( blog vs.) / Sosyal Medya

    Bunlar kesinlikle önemli ama unuttuğunuz bir şey var

    • ÜRÜNÜN KENDİSİ

    Adwords vb. CPC tabanlı reklam

    Adwords, Banner reklam gibi klasik reklamcılık yöntemlerinde ROI hesabı basit bir iş, tıklama başına 2$ ödediniz, 1000 tıklama satın alıp, 2000$ verdiniz, gelen tık sayısını ziyaretçiden satışa conversion oranınızla çarpın 1000*0.033=33 kişi satın alacak, bunu da müşterinin hayat boyu kazandıracağı para ile çarpacaksınız.

    2$ CPC den 2000$ lık internet reklamı yatırımında (33*100$)-2000$=1300$ kar ediyor olacaksınız. Dolayısıyla bir müşteriyi bu conversion oranı olan bir reklam kanalından kazanabilmeniz için harcamanız gereken para:
    (1/Müşteri Conversion Oranı)*CPC
    (1/0.033)*2$ = 60$

    Farklı reklam kanallarının conversion oranları ve CPC oranları değişebilir, dolayısıyla farklı kanalları deneyin ve ona göre hangi kanal en iyi çalışıyorsa oraya daha çok para yatırın. Bu farklı kanallar içerisinde farklı reklam metinlerinin de conversion kalitesinin değişebileceğini unutmamak lazım, o yüzden Adwords’de de birden farklı reklam metnini deneyip hangisinin daha iyi conversion oranı sağladığını saptamak mantıklı bir hareket.

    “Ücretsiz” Inbound Marketing / Sosyal Medya

    Herşeyden önce “ücretsiz marketing” diye bir şey yok, bu sadece bir şehir efsanesi. Henüz kimse “ücretsiz marketing“ ile tanışmadı, olduğu iddia ediliyor, hep bir arkadaşın bir arkadaşı ücretsiz marketing yapmış oluyor…

    Teorik olarak sosyal medyada reklam yapmak, blog yazmak, SEO ile ziyaretçiyi çoğaltmak ücretsiz gibi gözükse de ücretsiz değil. Ücreti sizin değerli vaktiniz ve vakit bir internet startup’ının en az elinde olan şeylerden bir tanesi hatta ilk aylarınızı geride bırakmışsanız muhtemelen vakitten çok paranız var demek.

    Dolayısıyla SEO, sosyal medya, blog vs. vs. gibi reklam kanallarını kullanırken elinizdeki limitli vakti başka işler yerine bunlara yatırdığınızı bilin, bunun sonucunda ürünü daha az geliştirebildiğinizi, müşteri desteğini geciktirdiğinizi, dokümantasyondaki sorunları düzeltmediğinizin bilincinde olun. Eğer değer hesabı olarak bu kanallardan reklam yapmak mantıklı ise o zaman yapın. Ama sakın o hayatının 18 saatini twitter’da her haltı twitleme ile geçiren ve “Doçent Sosyal Medya Uzmanı” ünvanını kendine yapıştıran arkadaşın “ücretsiz” reklam hikayelerine inanmayın.

    Tünelin Devamı, Giriş Adımı

    Bu tüneldeki ikinci adım, bir nevi müşteriye kanca attığınız adım. Ürünün demosunu download etmek olabilir ya da ücretsiz üyelik olabilir. Bu adım genelde öyle bir adımdır ki müşterilerinizin %95’i bu adımdan geçer.

    Kaçınız hiç kullanmadan Photoshop lisansı satın aldınız? Ya da kaç kişi daha hiç LinkedIn’e üye olmadan LinkedIn PRO satın alır? Sıfır.

    Ziyaretçiden bu adıma geçerken ki conversion oranını yükseltmek için yapılması gereken şey üründen ürüne ve siteden siteye çok farklı. Muhtemelen yapılabilecek en iyi şey yapabildiğiniz kadar A/B Splitting yapmak ve gerçek müşterileri izlemek, rakamlar yükselene kadar bu döngüyü devam ettirmek.

    Tünelin Sonu

    İkinci adımdaki ürününüzü denemeye karar veren kişileri gerçekten para ödeyen müşterilere çevireceğiniz bu üçüncü adımdaki en önemli faktör kesinlikle ürünün kendisi.

    Eğer ürün gerçekten dandikse buraya kadar zar zor getirdiğiniz potansiyel müşterilerin bir çoğu deneme süresinden sonra çekip gidecek. Eğer buradaki oran düşükse ürünün kalitesi ve buraya kadar gelen müşterilerde oluşturduğunuz beklentiler üzerine ciddi şekilde düşünmeye başlamalısınız.

    Ürün

    Satışı arttırmak için tüneldeki üç adımdan birini arttırmanız gerekiyor, burada en mantıklı adım ürün adımı yani ürünün kensini geliştirme. Ürünü geliştirmek sadece “yeni özellikle eklemek“ demek değil hatta bazen özellik çıkarmak anlamına geliyor.

    Ürünü geliştirmenin bariz ikinci adımdan üçüncü adıma geçerken ki faydaları harici birinci adıma yani daha fazla ziyaretçi çekme adımına da ciddi bir katkıları var.

    Ürünün güzel olması insanların birbirlerine tavsiye etmesi anlamına geliyor, bu da daha çok ziyaretçi anlamına geliyor hem de bunların conversion kalitesi daha yüksek ziyaretçiler olması mümkün, bunun anlamı ürünün kalitesinin tüm tünel adımlarını etkiliyor olması.

    Bununla da yetinmeyip ürün kalitesi sosyal medya, blog gibi ortamlarda otomatik reklama neden olacak. Ürününüzü çok seven kullanıcılar twitter,linkedin gibi yerlerde ürünü tavsiye edecekler hem de bu kanallar sizin firmanız tarafından oluşturulmadığından etkisi daha çok olacak. Her ürünün buradan alacağı nasip farklı, B2B uygulamaları bu işten daha az verim alacakken B2C uygulamaları her zaman “viral” olma ihtimalini taşıyor olacak.

    Son bir rakam

    Son olarak birkaç diğer takip edilmesi faydalı rakam,

    Ölüm Günü
    En önemli rakamlardan biridir,
    Kaç Yaşayacağınız = Bankadaki Nakit Para / (Aylık Gider - Aylık Gelir)

    Mesela bankada 10000$ varsa ve ayda 2000$ gelir, 3500$ gider varsa, 10000/(3500-2000)=6.6 ay sonra paranız bitecek demek. Bu rakam eksi ise, Oooo Happy Day….

    Daha öncelerden siteden yazmadığım bir konuda konuşma hakkımı kullanarak yazmak istedim, bu bahane ile aylar sonra bir blog yazmış oldum.



    AnkaSEC '10 - Ankara Bilgi Güvenliği Konferansı @ 08-02-2012 16:06

    AnkaSEC 2010’dan haberi olmayan arkadaşlara duyurmak amaçlı:

    Türkiye'de eksikliği hissedilen ürün/teknoloji bağımsız güvenlik  anlayışına katkı amacıyla her yıl Bilgi Güvenliği AKADEMİSİ tarafından Aralık ayında gerçekleştirilen  Ankara'ya özel Bilgi Güvenliği Konferansı AnkaSEC bu yıl 23 Aralık'da Tubitak'ın ev sahipliğinde yapılacak.

    Türkiye'nin her köşesinden konusunda söz sahibi bilgi güvenliği uzmanları ve BT meraklılarını buluşturacak olan AnkaSEC '10 bu yıl "Güvenlik lüks değil, gereksinimdir" ana temasıyla gerçekleştirilecek.

    Konferans Programı:
    Konferans boyunca sanallaştırma güvenliği, bulut bilişim güvenliği, siber istihbarat toplama yöntemleri, adli bilişim analizi , mobil telefon güvenliği, yeni nesil tehditler ve çözüm önerileri, ve yeni nesil hacking yöntemleri gibi konular yer alacaktır.

    Konferans programı http://www.ankasec.org/?page_id=24 adresinden edinilebilir.

    Etkinlik Sponsorlarımız:
    AnkaSEC '10 Bilgi Güvenliği Konferansı HP, Verisign, Microsoft, EnderSYS, Labris, Kaspersky,  ADEO , Teknoloji Bilgilendirme Platformu ve Bilgi Güvenliği AKADEMİSİ sponsorluğunda gerçekleştirilmektedir.
    Katılım & Kayıt:
    Konferansa katılım ücretsiz olup kayıt yaptırılması gerekmektedir. http://www.ankasec.org/regform.html adresinden kayıt işlemi tamamlanabilir.

    İletişim:
    Konferansla ilgili tüm geribildirimler için web sayfamızdaki iletişim formunu kullanabilirsiniz.

    Katılımcılara konferans katılım belgesi dağıtılacaktır.

    Ulaşım:
    TÜBİTAK Başkanlık Binası
    Feza Gürsey Salonu
    Tunus Cad. No:80
    Kavaklıdere / Ankara

    AnkaSEC Düzenleme Kurulu
    http://www.ankasec.org

    Ek olarak Netsparker takımından Onur Yılmaz’da orada olacak ve 2 tane de Netsparker Professional hediye edeceğiz.



    Okuduklarım @ 08-02-2012 16:06

    Drive: The Surprising Truth About What Motivates Us by Daniel H. PinkSon 6 ay süresince çok fazla kitabı yarım-yarım okudum, geçen gün gaza gelip kendime bir de Kindle edindim, öyle olunca Kidnle’ın tadını daha çok çıkarabilmek için elimdeki yarım kitapları bir an önce bitirmeye çalışıyorum.

    Şu an yarısında kaldığım 3 kitap var:

    Drive zevkli bir kitap zaten bitirmeme az kaldı, özellikle psikoloji ile ilgileniyorsanız gayet keyifli gelebilir. Coders at Work, Founders at Work’ün aksine dandik bir kitap çıktı (sanırım bunun nedeni programcıların genelde girişimcilerden daha sıkıcı insanlar olması). Henüz çok okumadım çünkü okuduğum kadarının geneli çok sıkıcıydı. Gene de bir defa daha zorlayacağım. The Undercover Economist bayağı ilginç bir kitap, özellikle benim gibi ekonomi temeli sıfır olan biri için gayet faydalı da. Onun da sonlarına gelmiş durumdayım zaten.

    Yakın dönemde de şunları okuyup bitirmiştim:

    Ek olarak başlamaya hazır kitaplıkta bekleyen bir sonraki okuyacaklarım;

    dün de şu kitabın ilk bölümünü okudum

    Gayet hoşuma gitti, onu da okuma listeme aldım. Okunacak listemdeki son kitap ise, 50 Great Myths of Popular Psychology.

    Bu arada not düşmem lazım Kindle kitap dağıtım modeli ve Electronic Paper dikesinlike kitap sektörünün geleceğini şekillendiriyor. Sanırım bir noktada iPad / Electronic Ink Display arası güzel cihazlar kullanıyor olacağız.



    Fikir - Açık Todolist @ 08-02-2012 16:06

    EpicWin iPhone için geliştirilmiş zekice bir todo list uygulaması. Yapılacak listenizi oluşturuyor sonra da yaparak puan kazanıyorsunuz, arka planda da RPG havasında bir hikaye devam ediyor.

    Todo List olayının ne kadar önemli olduğunu biliyoruz, aynı zamanda bir şeyleri tamamlamanın ve bunun karşılığında hızlı şekilde sanal dahi olsa bir başarı hissi almanın bağımlılık edici olduğuna da biliyoruz (bakınız XBOX Achievements, FourSquare vs.), açık bir şekilde blog gibi yerlerde bir şeyi yapacağınızı ilan etmenin o işin tamamlanmasına pozitif etkisi olduğunu da biliyoruz. Bütün bunları birleştiren basit bir uygulama olsa mesela ne güzel olurdu.

    Küçük bir web sitesi, insanlar yapılacak listesiniz yazacak, daha sonra bunları tamamladıkça hem EpicWin / FourSquare / Stackoverflow tadında bir puan toplama olacak hem de bu tüm yapılacak listesi güncellemeleri de Facebook/Twitter/Blog Widget’ları gibi yollar ile açık şekilde gözükebilecek ve takip edilebilecek.

    Özetle EpicWin’i web’e koyup, üzerine sosyal ağ etkisini yapıştırmak lazım. Bundan sonrası zaten zekice gelişebilir, mesela basit keyword analizler ile en popüler listeler ortaya çıkabilir ya da ünlü bir kaç celebrity/web celeb’in listelerini featured todo list’ten insanlar izleyebilir. Hatta sistem open source yazılımların road map’lerinin takibi için bile kullanılabilir.



    Korkuları Yenmek @ 12-03-2011 19:51

    Genelde arkadaşlar konferanslarda konuşma vs. konularında konuşurken benim çok cesur olduğumu söylüyor. Aslında bunun cesaret ile pek alakası yok, olay tamamen alışmak.

    Benim Hakkımda Bilmediğiniz ve Bilmek İstemeyeceğiniz 5 Şey de yazdığımı gibi alfabenin sadece 28 harfini kullanabilenlerdenim. Yaşınız 28 olunca “R“ leri söyleyememek ciddi bir sorun olmuyor* ama yaşınız 13 iken “R” leri söyleyemiyorsanız hayatınız o kadar kolay olmuyor, sınıfın karşısında konuşmayı sevmiyorsunuz, yeni insanlara isminizi yanınızdaki birinin söylemesi gerekiyor, insanlara küfrederken bile kurduğunuz cümleler kulağa komik geliyor. Bu durumda topluluk karşısında konuşmaktan otomatik olarak korkuyorsunuz. Dolayısıyla benim için topluluk karşısında konuşmak ilk başlarda çok zordu.

    Bu ve benzeri aslında korkutucu olayların üzerinden gelmek için iki şeye ihtiyaç var:

    İlk Adımı Atmak

    Genelde bir şeyi planlamak değil yapmak korkutucui bungee jumping yapmak için bilet alırken korkmuyorsunuz ama atlarken ödünüz gereksiz şeylere karışabilir. Gel görki o bileti aldıysanız son dakikada caymanız çok daha zor olacak. Dolayısıyla gidin o bileti alın, bir konferans’ta konuşmaya karar verin ve herşeyi planlayın, kendi işinizi kuracaksanız gemilerinizi yakın, istifa email’ini yazıp “Send” tuşuna basın.

    Yapmak istediğiniz şeyden eminseniz yapmanın ne kadar zor olacağını düşünmeyin ve sadece ilk adımı atın.

    Olabilecek En Kötü Şey?**

    Eğer gidip 1000 kişinin karşısında konuşmayı beceremezseniz olabilecek en kötü şey nedir? Rezil olmak? Komik duruma düşmek? Gerçekten bunların bir önemi var mı? Bu kadar basit bir kaç şey yüzünden istediğiniz bir şeyi ya da uzun vadede işinize çok yarayacak bir şey yapmayacak mısınız?

    Bunu zaten 1-2 defa yaptığınızda korkularınızın yersiz ve saçma olduğunu tamamen anlıyor, olaya alışır hale geliyor ve o korkunuzu yenmiş oluyorsunuz.

    JFDI.

     

    * İngilizce konuşurken böyle bir derdimin olmaması güzel bir olay ama isim sorununu hala çözemedim :)
    ** Bungee Jumping olayı için bu mantık ile düşünmek pek yardımcı olmayabilir :) Malum olabilecek en kötü şey 127 parçanızın olay yerinden toplanacak olması.



    Ferruh Mavituna

    Date: 27.10.2007
    Viewed: 2394
    Category: Technology
    Tag: web-guvenligi sql-injection yazilim gelistirme guvenlik

    Share
    Report


    Related RSSes
    Technology - Wordpress Theme
    Date: 27.10.2007
    Viewed: 318
    Technology - Popüler Teknoloji
    Date: 27.10.2007
    Viewed: 274
    Technology - JavaM
    Date: 27.10.2007
    Viewed: 1507
       
    Olmazmi.com