Mustafa Yemural
Yazılım Mühendisi
Programlama ile Tanışma
Programlamaya olan ilk ilgim aslında “Oyunlar nasıl yapılıyor?” veya “Bilgisayardaki görsel programlar nasıl yapılıyor?” gibi sorularla başladı. O zamanlar sınırlı internet ile çaşitli yollardan Visual Basic ile GUI programlamayı öğrendim. Bu benim ilk programlama deneyimidi.
3D Game Studio ile Tanışma
Oyunların nasıl yapıldığını araştırıken önüme Game Maker isimli bir program geldi. Bu programı biraz kurcalayıp kendimce ufak tefek oyunlar çıkardım. Ancak bu bana yeterli gelmedi ve 3D oyunların nasıl yapılacağı ile ilgili araştırma yaparken 3D Game Studio ile tanıştım. Bu program oyunların programlaması için Lite-C isimli özelleştirilmiş bir C dili kullanıyordu. Buna benim C programlama dili ile ilk deneyimim de diyebiliriz.
C Programlama Dili
Bir yandan oyun yapımı tekniklerinde kendimi geliştirirken, diğer yandan da orijinal C programlama dilini öğrenmeye çalıştım. Bu yıllarda 3D Game Studio ile ilgili çeşitli forumlarda çalışmalar yapıp insalara yardımcı olmaya çalıştım. Ayrıca kendime bi blog sayfası açıp burada modelleme ve oyun yapımı ile ilgili çeşitli yazılar paylaştım.
Web Tasarımı ve PHP
2010’lu yıllarda Web tasarımı konusuna merak saldım. O zamanlar Microsoft Office’in içerisinde yer alan FrontPage ve Adobe Dreamweaver gibi yazılımlar ile çalıştım. Daha sonra HTML ve CSS öğrenerek sıfırdan çeşitli Web sayfaları yapmaya başladım. Bunun yanında PHP ile de uğraştım. Bütün bu bilgileri o zamanlar açtığım blog sayfama uyguluyordum. Bir yandan da oyun yapımı ile uğraşmaya devam ediyordum. Kişisel küçük projeler ile kendimi geliştirmeye çalışıyordum.
Java
Üniversite zamanına kadar nesne yönelimli programlama hakkında hemen hemen hiç bir bilgim yoktu. Üniversitede Java ile tanıştım. Bu dil ile ufak tefek uygulamalar yapıp nesne yönelimli programlama paradigmasını anlamaya çalıştım. Ancak dile olan ilgim fazla sürmedi ve yaklaşık 1-2 sene sonra kendime daha yakın hissettiğim C++ diline geçmeye karar verdim.
C++
C++ ile tanıştıktan ve yeteneklerini kavradıktan sonra bu dil ile devam etmeye karar verdim. Böylelikle hangi programlama dili üzerinde uzmanlaşacağım konusu kapanmış oldu. Yine bu yıllarda hem 3D Game Studio’nun yavaş yavaş desteğinin sonlanması hem de belki de çok fazla elle tutulur bir çalışma ortaya çıkaramamamdan dolayı oyun yapımına ara verdim.
Linux Dünyasına Geçiş
Aslında üniversite öncesinde de Pardus ve Ubuntu gibi çeşitli dağıtımları bilgisayarıma yükleyip kullanmıştım. Ancak üniversite yıllarında tam bir geçiş yapabildim. Artık C ve C++ öğrenimimi tamamen GNU/Linux dağıtımları üzerinde devam ettırecektim. Bu dönemde Ubuntu, Mint, CentOS, OpenSUSE ve Arch gibi çeşitli dağıtımları denedim. En fazla ilgimi çeken Arch Linux ve onun paket yöneticisi olan Pacman olmuştu.
Unity ve C#
Oyun yapımına 2 sene ara verdikten sonra Unity oyun motorunu denemeye karar verdim. Zaten biraz da C# bilgim vardı. Bunun üzerine Unity öğrendim ve bu bana hem ilk stajım hem de ilk işimde faydalı olacaktı. Bu esnada C ile Shell yazımı, Multithreading ve derleyici tasarımı gibi konularda da çeşitli çalışmalar yaptım. Arkaplanda C++ bilgilerimi geliştirmeye devam ediyordum.
Qt Framework
2017 yılımda ilk stajımı yapmıştım. Bıurada C++ dilini ve Qt Framework’ünü kullanarak JPEG Compressor/Decompressor projesi yapmıştım. Ayrıca Microsoft’un Kinect aracını kullanarak Unity’de çeşitli projeler gerçekleştirdim. Bu stajımda yine arttırılmış gerçeklik (AR) ve sanal gerçeklik (VR) alanları ile tanışmış oldum.
Makine Öğrenmesi ve Bitirme Projesi
Üniversitedeki bitirme projesini makine öğrenmesi üzerine yapmaya karar verdim ve aklıma FaceFill System adını verdiğim bir proje geldi. Bu projede ben ve iki arkadaşım çok çeşitli teknolojileri kullanarak hem pratikte güzel bir proje çıkardık hem de kendimizi geliştirdik. Bu proje Marmara Üniversitesi Bilgisayar Mühendisliği bölümünde 2018 yılının birinci bitirme projesi seçildi. Ayrıca bu proje ile TÜBİTAK etkinliklerine katılıp Marmara bölgesi genelinde de birincilik elde ettik. Projenin Client kısmında ağırlıklı olarak C++, Server kısmında ise Python kullandık.
İlk İş Deneyimi
Sektördeki ilk işim, ilk stajımı yaptığım yerdeydi. Burada yine C++, Qt (+QML), OpenCV, FFMpeg ve Unity gibi teknolojiler ile uğraştım. Ayrıca VR/AR ortamları için çok çelşitli uygulamalar tasarladım (VR ile bakım ve onarım sistemi, AR ile tarihi yapılan yeniden inşa edilmesi vb.). Burada 1 buçuk seneye yakın çalıştım. Son projem video konferans sistemi üzerineydi ve burada Docker ve Kubernetes teknolojilerini öğrendim. Ayrıca başka bir firmanın donanım ürününe QML ile bir mobil uygulama yazdım (hem Android hem de iOS için).