Dealing with multiple version control systems

I love git and I use it all the time. For my personal projects, my dotfiles, my documents and even for my home directory. But for my work, I need to use mercurial, as well as git(mercurial for mozilla-central mono-repo and git for other repositories hosted separately in GitHub mostly.) I like mercurial too. But there’s a problem, whenever I switch between those version control systems, I always forget which one I’m using right now....

Mozilla'da işe nasıl girdim?

Merhaba arkadaşlar, sizlere bu yazımda üniversiteden Mozilla’da işe başlayana kadar olan hikayemden biraz bahsetmek istiyorum. Öncelikle kim olduğumdan kısaca bahsedeyim. Trakya Üniversitesi’nde bilgisayar mühendisliği okurken Mozilla’dan staj daveti alıp 3 ay boyunca Mozilla San Francisco ofisinde Quantum Research Intern olarak staj yaptım. Staj sonunda, açık pozisyon olmadığını ve eğer ileride bir pozisyon olursa iletişime geçebileceklerini söylediler(ki ben pek inanmamıştım o zaman). Okulum bittiği için Türkiye’ye döndüm ve İstanbul’da bir işe başladım....

Hello World! (well, again...)

Hi everyone! It’s been a while since I wrote my first post here. It was also a hello world but in Turkish. I was neglecting my blog for a while and wanted to come back and start to write again. Also my previous posts were all in Turkish. But I want to publish mostly English posts now, therefore this time I’m going with a Hello World instead. My blog was using Wordpress previously, but I wanted to convert it to a static site generator because I also want to be one of the cool kids :) So I chose Hugo and ported all of my previous blog posts....

Rust'ta Borrowing ve Referans Kavramları

Merhaba arkadaşlar, bir önceki yazımızda Rust’ta bulunan ownership kavramından bahsetmiştik. O yazıya buradan ulaşabilirsiniz. Bu konuyu anlayabilmek için bir önceki ownership kavramını da anlamış olmak gerekiyor. Bu nedenle bu yazıya başlamadan önce, eğer ownership kavramını bilmiyorsanız, diğer yazımı okumanızı tavsiye ederim. Ownership öğrendikten sonra yine aynı derecede önemli olan ikinci kavrama geçiş yapıyoruz, o da borrowing (ödünç almak) kavramı. Diğer yazımızda Rust’ın diğer dillere göre çok farklı bir kaynak yönetim mekanizması olduğundan bahsetmiş ve bir kısmını açıklamıştık....

Rust'ta Ownership Kavramı

Merhaba arkadaşlar, geçen seferki yazımda Rust programlama dili ile hakkında bir ön bilgi verip, onda bulduğum olumlu ve olumsuz gözlemlerimi ve düşüncelerimi aktarmaya çalışmıştım. Yazıya buradan ulaşabilirsiniz. Aslında ownership(sahiplik), borrowing(borçlanma) ve lifetime(kullanım süresi, yaşam) konularını o yazının içinde açıklamak istemiştim fakat daha sonra yazının çok uzayacağını ve ana konudan şaşacağını düşündüğüm için ayrı ayrı yazılar halinde yazmak istedim. Rust programlama dilini diğer dillerden ayıran özelliklerin başında bu üçü geliyor bence....

Rust Programlama Dili Hakkında Düşüncelerim

Merhabalar, yine blog yazılarıma uzun bir ara verdikten sonra kaldığım yerden devam ediyorum. Bu yazıda uzun süredir merakla takip ettiğim bir programlama dilinden bahsedeceğim. Bu programlama dilinin adı Rust. Yeni bir dil olmasına rağmen diğer dillerden farklı özellikleriyle sıyrılmasından dolayı, ben de Rust hakkında bir yazı yazmak istedim. Fakat unutmamamız gereken bir kısım var; Rust dili hala geliştirilmekte olduğundan dolayı, yazdığım şeyler ileride geçerliliğini yitirebilir. Ben bu yazıyı elimden geldiğince güncel tutmaya çalışacağım....

Firefox Eklentisi Nasıl Yazılır? - Kısım 1

Merhaba, Firefox’a eklenti yazmakla ilgili elle tutulur bir Türkçe içerik bulmak çok zor. Genelde olanlar da çok eski oluyor ve yeni teknolojiler içermedikleri için de öğrenmenin hiç bir anlamı kalmıyor. Bu nedenle benim de uzun süredir aklımda bulunan bir konuyu sonunda ele almam gerektiğini düşündüm. Bu yazıda; Mozilla tarafından hazırlanan Firefox Add-on SDK ile, HTML, CSS ve JavaScript kullanılarak nasıl bir eklenti geliştireceğimizi ve bu eklentiyi geliştirirken nasıl bir yol izlememiz gerektiğini anlatmaya çalışacağım....

Android, Java ve Python’da bulunan sıralama algoritmasındaki hata ve nasıl çözüleceği

Tim Peters adlı bir yazılımcı 2002 yılında Timsort adında bir melez sıralama algoritması geliştirdi. Bu algoritma merge sort(birleştirmeli sıralama) ve insertion sort(eklemeli sıralama) algoritmalarının akıllıca birleşiminden oluşan, gerçek hayat uygulamalarında çok güçlü bir algoritmaydı. Timsort öncelikle Python için tasarlandı fakat daha sonra Java Collections tasarımcısı olan Joshua Bloch tarafından Java’ya da port edildi(Şu anda java.util.Collections.sort ve java.util.Arrays.sort’un altında bulunuyor). Timsort şu anda ise Android SDK’da, Sun JDK’da ve OpenSDK’da varsayılan sıralama algoritması olarak kullanılıyor....

Güle Güle Action Bar, Hoşgeldin Toolbar!

Herkese merhabalar, Bu yazıda size Android SDK 21 ile gelen ve çok fazla esneklik katan bir Appcompat elemanını tanıyacağız. Hemen yazımıza başlayalım. Destek kütüphanesi(Support library) ve Appcompat nedir? Android’e, gelen api seviyeleriyle birlikte Android’e yeni özellikler dahil oluyor. Bu yeni gelen elemanlar veya özellikler önceki api seviyelerinde kullanılamaz oluyorlar. Google da bu sorunu ortadan kaldırmak adına, Support Library adını verdiği kütüphanesi ile, yeni gelen özellikleri eski api lerde kullanabilmemizi sağlıyor....

HTML5 Contenteditable Attribute'ü İle Değiştirilebilir CSS

contenteditable attribute’ü nedir? HTML5 ile birlikte gelen attribute’lerden biri olan contenteditable, hangi elemente eklenmişse o elementin içeriğinin değiştirilebilir olmasını sağlıyor. Tamamen client tarafında yapılan bu değişiklik, tarayıcının local storage’ında saklanıyor ve sayfayı yenilediğimiz zaman yaptığımız değişiklikler gidiyor. Contenteditable; true, false ve inherit olmak üzere 3 değer alabilir. Varsayılan özelliği ise inherit. Bir örnek vermek gerekirse: <!DOCTYPE html> <html lang="tr"> <head> <meta charset="UTF-8"> <title>Contenteditable Örneği</title> </head> <body> <div class="title" contenteditable="true">Merhaba Dünya!...