Monday, December 26, 2011

Mongotips #3 distinct count

bir alana göre unique count hesaplamak için uzun fonksiyonlar yazanları gördüm. Eğer alanınız indexlenmiş ise bence şöyle yapmanız daha kolay olurdu

db.operationsCollection.distinct("username").length;




Thursday, December 1, 2011

Mongotips #2 - Generate Unigrams in Mongo

Stackoverflow'daki bu başlık özellikle mongo ve kelime-kelime kökleri üzerine çalışırken dikkatimi çekti :

Most efficient way to generate a list of Unigrams from a text field in MongoDB - Stack Overflow http://bit.ly/vNcEvU

Monday, November 21, 2011

Mongotips #1

Try to use a single connection. Try to fetch data in a single query.
So try to strore all dependent fields in a document.

Friday, November 18, 2011

MongoDb : Delete from capped collections?


MongoDb'de harika bir özellik olan "Capped Collections"[1] stream benzeri yapılar için birebir.
Capped Collections belirlenen boyutların dışına çıkıldığında otomatik olarak FIFO mantığıyla maximum boyutu koruyor, eski kayıtları atıyor.

Ancak bir sorun var; capped collection içerisinde silme ve güncellemem yapamıyorsunuz (boyut sabit kalırsa güncelleme yapılabiliyor aslında).

Silmek için ben de boyutu sabit tutarak dokumanın "flag" adında bir değirini "1" den "0" a değiştiriyorum.
Ancak dikkat etmeniz gereken değerin integer olmaması. Çünkü integer değer değişimi dokumanın boyutunu değiştiriyor. Ancak string "1" ile "0" dokumanda herhangi bir boyut değişimine neden olmaz.

Php ile güncelleme yapıyorsanız (string) ile cast edin.Eğer konsoldan deniyorsanız da tırnaklara dikkat edin. Tırnak ile güncelleyin.

db.stream.update({"_id" : ObjectId("4ec62adfc469885f7e000026")},{$set : {flag: "1"}})

Capped collectionlarda silme özelliğinin gelecek versiyonlar olabileceğini düşünüyorum aslında. Issue listte kabul edilmiş bir madde var ve duruyor [2].


1. Capped Collections : http://www.mongodb.org/display/DOCS/Capped+Collections
2. Issue : https://jira.mongodb.org/browse/SERVER-751

Thursday, November 17, 2011

mongo statistics tool : mongostat

Şunu da not edeyim mongodb /bin dizininde "mongostat" aracını kullanarak anlık olarak mongo istatistiklerini takip edebilirsiniz. 


Size şu değerleri verecektir.

   insert       - # of inserts per second (* means replicated op)
   query        - # of queries per second
   update       - # of updates per second
   delete       - # of deletes per second
   getmore      - # of get mores (cursor batch) per second
   command      - # of commands per second (on a slave, it's local|replicated)
   flushes      - # of fsync flushes per second
   mapped       - amount of data mmaped (total data size) megabytes
   vsize        - virtual size of process in megabytes
   res          - resident size of process in megabytes
   faults       - # of pages faults/sec (linux only)
   locked       - percent of time in global write lock
   idx miss     - percent of btree page misses (sampled)
   qr | qw      - queue lengths for clients waiting (read|write)
   ar | aw      - active clients (read|write)
   netIn        - network traffic in - bits 
   netOut       - network traffic out - bits
   conn         - number of open connections
   set          - replica set name 
   repl         - replication type 
                    M    - master
                    SEC  - secondary 
                    REC  - recovering
                    UNK  - unknown
                    SLV  - slave
                    RTR  - router


http://www.mongodb.org/display/DOCS/mongostat

Saturday, November 5, 2011

sphinx get's dirty

Sphinx özellike main+delta seklinde calismalarda bazen indexlemeyi durdurabiliyor. Sonra baktığınızda index data dosyalarınız yerine sonuna '.new ve '.tmp'' eklenmiş hallerini gorebilirsiniz.
Tekrar indekslediğinizde başarılı bitebilir ama buyuk ihtimal ./search e query atayamayacaksiniz atsanizda eski gelecek.

Burada konuyla ilgili bug girilmiş
http://sphinxsearch.com/bugs/view.php?id=302

Bu durumla sık karsılasir oldum, ve karsilastigim zaman once searchd'yi kapatiyorum.
./searchd --stop
/opt/sphinx/var/log/searchd.pid dosyasini siliyorum. Bu sizde baska bir yerde olabilir veya olmayabilir, zira searcd kapanınca bu da silinmeli.

Ardından '.new' ve '.tmp' dosyalarini silip searchd yi tekrar baslatiyorum. Hepsi bu ancak can sıkıcı.

Thursday, November 3, 2011

bazen olur 'pecl.php.net is using a unsupported protocol error'

mongo pecl eklentisi kurarken aldım bu hatayı
“pecl.php.net is using a unsupported protocol” .
Aklıma ilk gelen pecl update-channels yapmak oldu ama işe yaramadı.

Fakat sonra biraz arayınca /usr/lib/php/.channels daki dosyaları silip tekrar  pecl update-channels  yapınca düzeldi. 

Monday, October 31, 2011

Term Extraction with Yahoo Api


Aslında bir kaç kez kapatıldı ve açıldı bu proje [1]. Şimdi günde ip başına  5.000 request sınırlama ile gayet güzel çalışıyor. Yahoo Term Extractor aslında temel amacı verdiğiniz bir metini etiketlemek.

Bir test yaptım 1000 karakterlik bir Türkçe metni 5000 defa gönderdim ve ortalama cevap süresi genellikle 0.5 sn ile 0.4 sn arasındaydı.


1. http://developer.yahoo.com/search/content/V1/termExtraction.html

Sunday, October 30, 2011

ZendCon 2011 Notları I, Learning CouchDB - Bradley Holt

İlgi çekici bir sunumdu. MongoDb varken CocuhDB kullanmaya başlayacağımı pek sanmıyorum [1] ancak yine de tanışmış olduk CouchDB ile.
Bradley Holt 1 saatlik sunumda [2] hem CouchDb'yi bizimle tanıştırdı hem de örnekler yaptı. Zaman kısa olduğundan kendi makinelerimize couchdb kurmaktansa http://www.iriscouch.com/ [3] üzerinden ücretsiz bir hesap açıp denemelerimizi oradan yaptık. Sunumdan aldığım notlar ile derlediğim ama henüz bitmemiş olan :) Türkçe sunumum aşağıda [4] :




1. Comparing MongoDB and CouchDB : http://www.mongodb.org/display/DOCS/Comparing+Mongo+DB+and+Couch+DB

2. Learning CouchDB - http://www.slideshare.net/bradley.holt/zendcon-2011-learning-couchdb

3. Iris Couch provides easy hosted CouchDB - http://www.iriscouch.com/

4. Sunuma doğrudan link : https://docs.google.com/presentation/pub?id=1xXQk0Jc8XqPHzO0sdb418U8OUgugFjYD0fhq-tTCbuQ&start=false&loop=false&delayms=15000

Thursday, October 20, 2011

CouchDb'ye Hızlıca Bakın

CouchDb merak edip şöyle bir bakmak ve denemek isterseniz hiç bir şey kurmadan iriscouch'dan [1] ücretsiz ve tatmin edici bir couchdb hizmeti alabileceğinizi unutmayin.

Tabi php+couchdb hızlı giriş klavuzu da faydalı olacaktır [2]
Ve bu geçen seneki ZendCon'dan alınan podcast de önerdiğim bir giriş klavuzu  niteliğinde [3]  

1. http://www.iriscouch.com/ 
2. http://www.slideshare.net/david.coallier/an-introduction-to-couchdb
3. http://devzone.zend.com/article/11583-The-ZendCon-Sessions-Episode-30-Introduction-to-CouchDB-with-PHP

Ancak şunu da belirteyim MongoDb varkan CouchDb'yi kullanacağımı hiç sanmıyorum.
Bu 'MongoDb vs CouchDb' en sevdiğim karşılaştırma
http://www.mongodb.org/display/DOCS/Comparing+Mongo+DB+and+Couch+DB




Wednesday, October 19, 2011

ZenCon 2011'de en sevdiğim sunum


Az önce hadoop sunumundan çıktık. David Z. harika bir sunum hazırlamış.

Large-Scale Data Processing with Hadoop and PHP


Güzel bir demo ile noktalanan sunumun aynısı (ancak başka konferans için hazırlanmış olanı) şurada

http://t.co/w2HPgTMm

Thursday, October 6, 2011

Neo4j auto-indexing

Unutmayım diye not düşüyorum : 

Neo4j kullanalı bir aç gün oluyor ve rest api ile eklediğim her node için indexleme işlemini gerçekleştirmem gerektiğini sanıyordum ki lucene tabanlı indexer'ına auto_index atmak mümkün olabiliyormuş.
Şöyleki conf/neo4j.properties configürasyon dosyasına şu tarılar eklenmeli ve neo4j tekrar çalıştırılmalı

node_keys_indexable=name,phone
relationship_keys_indexable=since
node_auto_indexing=true
relationship_auto_indexing=true

Ardından node_auto_index üzerinden search atılarbilir ama exact match olmalı. Ben bunu "select by property" amacıyla kullanıyorum.

Örneğin
http://localhost:7474/db/data/index/node/node_auto_index/fbid/999761223232

fbid bir propery ve exact match halinde ilgili node'u getirecektir.

Auto-indexing konusunda Rest api dokumantasyonu





Friday, September 30, 2011

The IMDB Api

IMDB gibi bir data cevherinin api'sinin olmaması tam anlamıyla bir facia. Datalarını kullanmamız için sunduğu metot ise daha da çileden çıkarıcı http://www.imdb.com/interfaces#plain

Third party bir api olarak bunu [http://www.deanclatworthy.com/imdb/] buldum.
Şimdilik işe yarıyor ama ben şu an sadece api görevi görecek ve old school tekniklerle imdb search, movie, artist sayfalarından regexle data alacak bir class yapıp kendi üst apimi yapmayı düşünüyorum.

Tuesday, August 23, 2011

delicious apisi ile link tagliyorum

delicious'un son durumunu bilmiyorum, kapanacak mı ne zaman kapanacak emin değilim ama elimdeki bazı linkleri onunla tagliyorum
Aşağıdaki official apisi bana bunu sağlıyor
http://feeds.delicious.com/v2/json/urlinfo/data?url=http://www.webrazzi.com

[
{
"hash":"b41ae64e2e80ba1806245c61179ad903",
"title":"Webrazzi",
"url":"http:\/\/www.webrazzi.com\/",
"total_posts":209,
"top_tags":
   {"blog":77,"web2.0":54,"internet":36,"web":33,"technology":29,"webrazzi":23,"news":19,"haber":17,"blogs":14,"webdesign":13}
}
]

Thursday, August 18, 2011

Google Profanity ile istenmeyen kelime filtreleme meselesi

wdyl.com açılalı epey oldu. wdyl altında bir basit servis ve google'ın resmi bir apisi olan profanity api ile bir kelimenin istenmeyen ifade olup olmadığını anlayabilirsiniz.
"xxx"
"porno"
gibi ifadeler

Kullanımı basit
http://www.wdyl.com/profanity?q=ankara
"q" parametresine kelimenizi verin "true" veya "false" alacaksınız. "true" olması istenmeyen bir kelime olması demektir.
örnek çıktı (json formatında veriyor)

http://www.wdyl.com/profanity?q=ankara
{"response": "false"}


http://www.wdyl.com/profanity?q=porno
{"response": "true"}


As Wade notes, a simple snippet of PHP code can be used with apps via a JSON call to query whether or not Google thinks any given text contains rude words.
meseleyi irdeleyin http://labs.phurix.net/posts/googles-official-profanity-api


Tuesday, August 16, 2011

ElasticSearch Geo Location Search

Daha önce ElasticSearch kullanmaya başladığımdan ve gelişmiş bir kaç özelliğinden bahsetmiştim.

ElasticSearch gelişmiş filtrelemesi ile son derece performanslı olarak polygonal geo search ve distance calculation yapabildim. Aşağıdaki örnekte ayrıca "distance" parametresi verilerek ilgili uzaklıktaki nokta kayıtları da getirilebiliyor. Test için oluşturduğum ElasticSearch indexinde 300.000 rasgele nokta vardı. Sorgu hızını raporlamadım ancak genellikle 0.01 - 0.03 sn civarında cevap aldım. ElasticSearch kurlu makineye ram'i az ayırdığımdan cevap süresi biraz uzamış oldu. Genel oalrak performansını sevdim ancak. Location bazlı aramalar için de ideal bir search engine.

{
    "filtered" : {
        "query" : {
            "match_all" : {}
        },
        "filter" : {
            "geo_polygon" : {
                "place.location" : {
                    "points" : [
                        {"lat" : 40, "lon" : -70},
                        {"lat" : 30, "lon" : -80},
                        {"lat" : 20, "lon" : -90}
                    ]
                }
            }
        }
    }
}


Meseleyi irdeleyin
http://www.elasticsearch.org/guide/
http://www.elasticsearch.org/blog/2010/08/16/geo_location_and_search.html

Friday, August 12, 2011

ElasticSearch advanced search

ElasticSearch search engine olarak hala gözümde son derece esnek ve hızlı. Benzer içerikleri veya duplicate içerikleri bulmak için de gayet hızlı bir tool olarak kullanıyorum.

ElasticSearch ileri düzey filtreme teknikleri var bunlardan birisi de FLT (Fuzzy Like This Query) . İleri düzey çünkü zaten var olan More Like This filtresinin Levenstain ile geliştirilmiş hali gibi.

Text verileriniz içinde benzer olanları veya duplicate olanları bulmak için oldukça ideal.

Örnek bir sorgu

{
"fuzzy_like_this" : 

  {
    "fields" : ["blog.title", "blog.tags"],
    "like_text" : "futbol ve sinema hakkında",
    "max_query_terms" : 20, "min_similarity" : 0.5
  }
}







Meseleyi irdeleyin : 


Thursday, August 11, 2011

error: Setup script exited with error: command 'gcc' failed with exit status 1

python modülleri kurarken, derlerken bu hata sıkça çıkabilir

error: Setup script exited with error: command 'gcc' failed with exit status 1

Bu durumda 
sudo apt-get install python-dev

python-dev kurmanız gerekmekte.

Wednesday, August 10, 2011

TOR force renew ip

TOR kullanırken ip adresimi tekrar yenileme ihtiyacım oldu.
İlk önce terminalden tor'un bendeki portu olan 9500 portuna bağlanıp burada bahsedildiği gibi  newnym komutu gönderdim. Bu ip adresimi yenilemeye yetmedi. Tek yapmam gereken toru yeniden başlatacak bir bash script dosyası yazmaktı aslında :

sudo /etc/init.d/tor restart

Yeniden başlatmanız yeni ip almanız için yeterli.

Telnet ile bağlanıp yenile komutu göndermek için önce torrc dosyanızı düzenlemelisiniz.

sudo vi /etc/tor/torrc

dosyada bu satırı bulun ve başındaki "#" işaretini kaldırın

#ControlPort 9051

Artık telnet ile bağlanabilir ve yenile diyebilirsiniz.


telnet 127.0.0.1 9051
AUTHENTICATE
signal NEWNYM
quit


veya bunu bir sh dosyasına yazar ve öyle çalıştırısınız şöyleki


#!/usr/bin/expect -f
# telnet into tor and get clean path using expect

spawn telnet 127.0.0.1 9051
expect "Escape character is '^]'."
send "AUTHENTICATE\r"
expect "250 OK"
send "signal NEWNYM\r"
expect "250 OK"
send "quit\r"



Konuyu irdeleyin https://trac.torproject.org/projects/tor/wiki

Saturday, July 30, 2011

Çalınan JSTOR dökümanlarından çıkan istatistiksel veriler ile ne yapılır

Geçen haftalarda 18,592 JSTOR makalesi "çalınmıştı" ve bir çok torrent listesinde yerini almıştı. Bu kadar fazla dokuman kitlesini ustelikte duzensiz bir sekilde paketlenmis bir kalabalıgı indirmek kimin işine yarar diye ben de düsünmedim degil. Tabi olayın özünde 'bilimsel calismalar satılamaz' ilkesi vardi.

Ancak mkrecny bunlarla güzel bir istatistik çıkarmış.

  • Ortalama cümle uzunluğu daha kısa olan dokümanlar daha fazla alıntılanmış.
  • Daha az unique kelime içeren dokümanlar  daha fazla alıntılanmış.
  • Daha fazla alfadebik olmayan semboller içeren (rakamlar dahil) dokumanlar daha fazla alıntılanmış.


meseleyi irdeleyin : mkrecny.com/entry/15/

Tuesday, July 5, 2011

Google Suggest Api

Aslında official olarak bir api değil.
Şu şekilde epey kullandım
http://www.google.com/complete/search?hl=tr&client=suggest&js=true&q=test

hl parametresi dil ayarıdır.

Bir kaç gündür test ediyorum ve fark sanırım bir gün için bir ip'ye 50.000 sorgu kadar limit verilmiş. Çünkü artık 403 hatası vermeye başladı.

Ayrıca Yahoo suggest de var o ise günlük bir IP'ye 5.000 sorgu limiti veriyor ve google kadar güzel sonuclar vermiyor

Friday, July 1, 2011

Artık Google Appscript

Çeşitli medya takip sistemlerimi artık google app script ile google docs a taşiyorum. İnanılmaz kolay. Javascript olmasi bir yana network islemlerinde cross-doamin sorunlari yaşamadan kodlayabiliyor, diger kullanicilarin scriptlerinden de faydalanabiliyorsunuz.
Online editor ve debugger'i ile pratik cozumler yaratabilirsiniz. Simdilik sadece twitter ve google dan cesitli datalari fetch ediyorum ve raporluyorum.


Konuyu irdelemek icin : http://code.google.com/googleapps/appsscript/

Bi kaç ekran görüntüsü.



Wednesday, June 29, 2011

Cok Ozetle MapReduce nedir derseniz

Resim 1 - Hadoop işleyişini anlatan bir görsel. Gelen datasetini daha kucuk chunklara bolerek isler ve sonucu verir [1]


(Konuyu şuradan da uygulamalı olarak irdeleyebilirsiniz [2] )

Mapreduce temelde büyük datasetleri işlemesi gereken sistemlerde datasetini daha ufak parcalara (chunks) bolup birden fazla birimin islemesini saglayan sistemlerdir. Ozellikle Facebook, twitter ve google oldukca ileri seviyede kullanıyorlar. Google bu konuda surada makele yayınlamış olabilir [3]. Evet yayınlamış hatta hem slide [4] olarak hem de makale olarak [5].
Mapreduce  calisma stratejisini ozetleyen bir gorsel yazının başındaki gorseldir.

Map ve Reduce katmanı vardır. Map katmanı gelen işi ilgili birimlere dağıtır ve çıktıyı verir. Reduce atmanı ise gelen çıktıları tek bir işlem sonucu olarak verir. Bu arada hem map hem de reduce katmanı birden fazla birimden olusuyor.
Teknik olarak detaya giremeyeceğim çünkü henüz hiç kullanmadım ancak akla şu soru takılabilir 'Eğer map veya reduce katmanlarından bir birim arızalanırsa ne olur?' .  Bu durumda islem devam eder ancak arizali birimin isi diger birimlere verilir. Scalability dendiğinde en önemli kısmı MapReduce almaktatır.


1. http://www.cs.berkeley.edu/~ballard/cs267.sp11/hw0/results/htmls/Muzaffar.html
2. http://michaelnielsen.org/blog/write-your-first-mapreduce-program-in-20-minutes/
3. http://research.google.com/pubs/papers.html
4. http://labs.google.com/papers/mapreduce-osdi04-slides/index-auto-0025.html
5. http://labs.google.com/papers/mapreduce-osdi04.pdf


İlgili olabilecek veya beraberinde incelenebilecek diğer anahtar kelimeler
Distributed computing <link>
Machine Learning

Thursday, May 5, 2011

Memcached : Deleting by Namespace

Bu tricki bilmiyordum. 


While memcached does not support any type of wildcard deleting or deletion by namespace (since there are not namespaces), there are some tricks that can be used to simulate this. They do require extra trips to the memcached servers however.Example, in PHP, for using a namespace called foo:

$ns_key = $memcache->get("foo_namespace_key");
// if not set, initialize it
if($ns_key===false) $memcache->set("foo_namespace_key", rand(1, 10000));
// cleverly use the ns_key
$my_key = "foo_".$ns_key."_12345";
$my_val = $memcache->get($my_key);
//To clear the namespace do:
$memcache->increment("foo_namespace_key");


Konuyu irdeleyin : http://code.google.com/p/memcached/wiki/FAQ#Deleting_by_Namespace

Thursday, April 7, 2011

cUrl proxy

İstek sınırı olan servisleri kullanırken cUrl' bir proxy listesi verip arada değiştiriyorum. Daha fazla kullanmış oluyorum. Bazen de bu yaptığım bu servisleri kötüye kullanmak mıdır diye düşünüyorum.


curl_setopt($ch, CURLOPT_PROXY, "http://proxy.gazi.edu.tr:2001");
curl_setopt($ch, CURLOPT_PROXYPORT, 2001);
curl_setopt ($ch, CURLOPT_PROXYUSERPWD, "user@gazi.edu.tr:password");

Tuesday, April 5, 2011

CKEditor IE9

IE9 ile CKEditor hatalar vermeye başladı. Günellemeniz gerek.
Js paketlenme metodundaki bir uyumsuzluk olduğu belirlenmiş.
http://ckeditor.com/download

Monday, March 28, 2011

kendime not : ffmpeg bir nimetin varlığını unutma




Ffmpeg hayat kurtarandir mesela kolayca şunlar yapılır
http://www.commandlinefu.com/commands/tagged/76/ffmpeg
Resmi sitesi şudur : http://www.ffmpeg.org/
Büyükçe dökümantasyonu vardır :  http://www.ffmpeg.org/ffmpeg.html

Ücretsizdir ama destek olabilirsiniz.

internet haftası etkin katılım çağrısı

Maili aynen yapıştırıyorum


From: Mustafa Akgul <akgul@bilkent.edu.tr>
Date: 2011/3/27
Subject: [akgul-duyuru-306] internet haftasi etkin katilim cagrisi
To: akgul-duyuru@inet-tr.org.tr

internethaftasi.org.tr,  bt-stk.org.tr

Merhabalar,

12 nisanda Turkiye İnterneti 18. dogum gününü kutlayacak.
Bilisim Sivil Toplum Kuruluslari olarak 11 - 24 nisani İnternet haftasi olarak kutluyoruz.
Ekte somut önerileri de içeren Etkin Katilim Cagrisi yer almakta.

Her Internet gönüllüsünden, her yurttaşdan mütevazı destek bekliyoruz.    Bu internethaftasi.org.tr webinde görüşlerini yazmaktan, banner ve logolari yaymaktan, kendi çevresiden interneti konuşmak, web, gazete, radyo ve televizyonlarda bu konularda okuyucu görüşü yazmak, makale yazmak, soru sormak; bir yerde konuşmak, tartışmaya katılmak, yeni bir şeyler öğrenmek, yeni bir şeyler öğretmek gibi geniş bir yelpazede olabilir.

...
internethaftasi.org.tr 

Friday, March 18, 2011

Güzel Kitap : "The Elements of Content Strategy"



Content strategy is the web’s hottest new thing. But where did it come from? Why does it matter? And what does the content renaissance mean for you? This brief guide explores content strategy’s roots, and quickly and expertly demonstrates not only how it’s done, but how you can do it well. A compelling read for both experienced content strategists and those making the transition from other fields.

Detay :  http://gel.io/1BP


Ancak bir sorun var, ilk sipariş verenlerden olmama rağmen siparişim tam 2,5 haftada geldi.

Tuesday, February 1, 2011

installing node.js - for lazy guys

Üşengeçseniz ve konuya yeniyseniz, vaktiniz yoksa vs Node.js kurmak ve hemen denemek için

sudo apt-get install g++ libssl-dev curl apache2-utils
sudo apt-get install git-core
git clone git://github.com/ry/node.git
git clone https://github.com/joyent/node.git
cd node
./configure
make
sudo make install

Wednesday, January 19, 2011

Analytics annotation bug?

Analytics'de annotation eklerken bazı html tagların geçerli olduğunu fark ettim.


1.

2.

Friday, January 7, 2011

telnet ile memcach'e bağanıp test etmek istersen

Bağlanmak için (host port):
telnet 192.168.200.12 11211
Bir key'e değer atamak :
set testkey 1 0 11 Hello world 
1 : flag (arbitrary metadata),
0 : expiry (ie. never expire) 
11 : expect the value 11 bytes long
bir değeri almak
get testkey
Çıkış
quit
Diğer komutlar
stats  
stats items  
stats slabs  
delete  
replace  
add
http://11x.blogcu.com/telnet-ile-memcache-test-etmek/9427166

Tuesday, January 4, 2011

Nokta'da 2 Ayda 4 Hayati Öğreti

Nokta'da 2 aydan çok daha uzun bir süredir çalışıyorum ancak ilk iki ay Nokta'daki organik gelişim modeline dahil olmamla bir çok yeni şey öğrenip bazı bildiklerimin de ne kadar önemli olduğunu fark ettim ve iki ayın sonunda "bir yazı yazayım bununla ilgili" dedim. Ancak benim tipik özelliklerimden biri olan "akademik ertemele isteği" yüzünden yeni yazabiliyorum (akademik erteleme diye bir şey varmış evet. daha güzel bu şekilde denmesi.)

1. JFRI
“Just Fucking Release It” Ferruh Bey'in JDI ve JFDI'dan uyarlaması (http://ferruh.mavituna.com/motivasyon-oku/).
Nokta'da ilerleme sürecindne çok kullanılan bir "öğreti" :). Bu öğreti yine Ferruh Bey'in bahsettiği gibi "Release Often Release Early" çağrısının en güzel avantajlarından (http://catb.org/esr/writings/cathedral-bazaar/cathedral-bazaar/ar01s04.html).
Yapılan bir proje veya yenilik olabildiğince erken yayınlanır ve gelişimene devam eder.

2. Kullanıcıyı Dinle - Gerçekten Dinle - İyi Dinle
Sıkça yapılan değerlendirme toplantılarında kullanıcıyı dinlemek üzerine fazla mı abartıyorlar dediğim zamanlar geride kaldı. Kullanıcının önemini henüz anladım. Yapılan işlerde kendi kişisel görüşümü zaman zaman minimuma indirip kullanıcı davranışları gözlemleyip değerlendirdikten sonra karar vermem gerektiğini "gerçekten" öğrendim.

3. Bilmiyorsan Öğrenebilirsin Demektir
Burada pekiştirdiğim bir slogan oldu. 

4. "That's my family Kay, that's not me." (Michael,  Godfather, http://www.imdb.com/title/tt0068646/quotes?qt0361856 
Ekip önemli bir kavram. Bunu herkes bilir ancak bu öğretiyi gerçekten öğrendiğim yer burası oldu. Ekip uyumu, ekip motivasyonu bunun gibi “ekip” ile başlayan şeyler... Aslında önemli şeylermiş.
"Finding good players is easy. Getting them to play as a team is another story." -  Casey Stengel (http://en.wikipedia.org/wiki/Casey_Stengel)