Ali Özgür


Coding and other software development stuff

BT Sektöründe Büyük İstifa Dalgası

Uzaktan çalışma, tükenmişlik sendromu, iş-özel hayat dengesi

COVID-19 pandemi sürecinin başlangıcından bu yana 2 yıl geçti ve bu 2 yıllık sürecin sonunda sadece BT ve diğer birçok sektörde çalışanlar iş yerleri ile olan ilişkilerini daha yoğun bir şekilde gözden geçirme eğilimindeler. Pandeminin ilk yılında BT sektörü yeni normlardan en önemlisi olarak kabul edilen uzaktan çalışmaya en hızlı adapte olan sektörlerden birisi oldu. Bu hızlı adaptasyon sayesinde BT alanında çalışan firmalar çevrimiçi hizmetlere artan talebin kesintiye uğramadan karşılanmasında ve günün koşullarının dayattığı yeni çevrimiçi servisleri üretmede çok iyi bir performans sergilediler. Ancak, bu süreç uzadıkça BT şirketleri uzaktan çalışmanın ve artan çevrimiçi ihtiyaçların neden olduğu yıkıcı sorunlar ile yüzleşmek zorunda kalıyorlar. BT sektörü açısından bu sorunlardan en yıkıcısı olma potansiyeli taşıyan ve 2022 yılında da artarak devam etmesi ön görülen sorun artan istifalardır.

Pandemic-Work From Home

Read More ...

Kestirimci Bakım Uygulamaları ve Anomali Tespiti

İmalat sanayiinde yer alan işletmelerin üretim etkinliklerinin en önemli göstergesi olan OEE değerinin hesaplanmasında dikkate alınan 16 büyük kayıptan en önemli kategori Ekipman Etkinliği başlığı altında ele alınan 8 büyük kayıptır. Bu 8 kayıp içerisinde yer alan arıza kayıpları doğrudan, hatalı ürün kayıpları ise dolaylı olarak kestirimci bakım uygulamaları ile azaltılarak OEE değerlerinde iyileşmeler sağlanabilir. Ekipman bakımlarının arıza oluşmadan tespit edilmesi maliyetlerin kontrol alınması açısından da önem arz etmektedir.

Kestirimci Bakım Uygulamaları

Read More ...

MES Uygulamalarında Çevrim Süresi Hesabı

.NET ile yüksek çözünürlüklü hesaplama

Özel olarak MES (Manufacturing Execution System/Üretim Yürütme Sistemi) ve genel olarak IIoT (Industrial IoT) uygulamalarında çevrim süresi hesabı üretim planlaması, üretim optimizasyonu ve verimlilik hesaplama gibi bir çok alanda doğrudan veya dolayılı olarak kullanılan önemli bir kavramdır.

Bu yazımda .NET ve C# ile bir sinyalin iki ölçümü arasında geçen süreyi ölçmek için kullanabileceğimiz yapıları ele alıyorum.

C# 7.0

Read More ...

C# 9 Records

What is wrong with records?

Microsoft released .NET 5 couple of days ago which comes with a new version of C#, namely C# 9. In this blog post I will not rant about the beauties of the record types in C# 9, rather I will try to warn my fellow developers about couple of issues I’ve noticed about the record types.

Read More ...

MIT Missing Semester Potpori

Arka Planda Çalıştırma, FUSE, Docker, GitHub ...

Bu yazımda, MIT tarafından açık kaynak olarak yayınlanan “Missing Semester” derslerinin Türkçeye çevirilmesi projesi kapsamında yaptığım Potpori dersinin çevirisini sizlerle paylaşmak istiyorum.

Diğer dersler için MIT Missing Semester Dersleri (Türkçe) sayfasını ziyaret edebilirsiniz.

Read More ...

Hata Ayıklama ve Ayrıntılı İnceleme

MIT Missing Semester

Bu yazımda, MIT tarafından açık kaynak olarak yayınlanan “Missing Semester” derslerinin Türkçeye çevirilmesi projesi kapsamında yaptığım Hata Ayıklama ve Ayrıntılı İnceleme dersinin çevirisini sizlerle paylaşmak istiyorum.

Diğer dersler için MIT Missing Semester Dersleri (Türkçe) sayfasını ziyaret edebilirsiniz.

Read More ...

Komut Satırı Ortamı

MIT Missing Semester

Bu yazımda, MIT tarafından açık kaynak olarak yayınlanan “Missing Semester” derslerinin Türkçeye çevirilmesi projesi kapsamında yaptığım Komut Satırı Ortamı dersinin çevirisini sizlerle paylaşmak istiyorum.

Diğer dersler için MIT Missing Semester Dersleri (Türkçe) sayfasını ziyaret edebilirsiniz.

Read More ...

Git ile Tarihi Yeniden Yazmak

Commitleri derleyip toplamak

Uzun süre üzerinde çalışılan git branch’leri (long lived branch) için doğal olarak çok fazla sayıda commit yapılıyor. Commit sayısının fazla olmasının temel nedenleri

  1. Gün sonunda veya güvenli anlarda yapılan değişikliği kalıcı hale getirmek olabilir
  2. Yapılan çalışmanın doğası gereği küçük ve anlamlı parçalar halinde geliştirilmesi olabilir.

Bu ipucu yazımızda özellikle 1. maddede belirttiğim durumda ortaya çıkan git history kirliliğini nasıl ortadan kaldırabileceğimizi paylaşıyorum.

Read More ...

XML ve HTML Auto Merge ve Hatalı Conflict Sorunları

Diff algoritmalarının başımıza açabileceği dertler

Aynı proje üzerinde devam eden iş sayısı artınca XML formatında olan resx, csproj ve sln uzantılı dosyalarda auto-merge nedeniyle yapısal hatalar veya normalde olmaması gereken conflictlerin oluşması ve bunların manul çözülmesi gerekn durumlar ile karşılaşabiliyoruz. Bu sorunların nedeninin Git olduğunu düşünenler olabilir ama konu tüm VCS sistemlerinin kullandıkları genel kabul görmüş diff algoritmalarının eksikliğinden kaynaklanıyor.

Read More ...

C# 7.0 Yeni Dil Özellikleri

Daha Basit ve Daha Yüksek Performanslı Kod

Microsoft, yayınladığı her majör C# versiyonu için genel bir tema belirliyor ve bu tema çerçevesinde yeni C# dil özelliklerini bizlere sunuyor. C#’ın Mart 2017‘de yayınlanan 7.0 versiyonun teması aşağıdaki üç konuya odaklanıyor;

  • Alışılagelmiş bazı dil yapılarının daha basit kod ile ifade edilebilmesi
  • Performans optimizasyonu yapmamıza imkan sağlayacak yapılar
  • Mikroservisler ve sunucusuz uygulama (serverless) mimarileri gibi yeni yapılar ile veri alış verişini kolaylaştırmak

Bu yazımda yukarıdaki tema çerçevesinde C# 7.0 ile birlikte gelen yeni dil özelliklerini örnekler ile ele alıyorum.

C# 7.0

Read More ...

SOLID Prensiplerine Bakış

Nesne Yönelimli Programlama'yı İyi Yapmanın Sırrı

SOLID kısaltması Robert C. Martin (Uncle Bob - Bob Amca olarak da bilinir) tarafından ortaya atılan bir dizi Nesne Yönelimli Programlama (OOP - Object Oriented Programming) prensiplerinden 5 tanesinin baş harflerinden oluşturulmuş ve ilk defa Michael Feathers tarafından ortaya atılmış bir kısaltmadır. Hem Bob Amca hem de Michael Feathers OOP yaklaşımının yaygınlaşmasında ve doğru bir şekilde kavranmasında önemli rolleri olan kişilerdir. Bu yazımda iyi bir yazılım geliştiricinin mutlaka bilmesi gerektiğini düşündüğüm SOLID prensiplerini en yalın hali ile ve kısa C# örnekleri ile size aktarmayı hedefliyorum.

SOLID Prinsiples

Read More ...

F# ile Fonksiyonel Programlama Kitabı

Yazım Süreci

Yazılım geliştirme profesyonelleri, fonksiyonel programlama kavramlarına ve ilkelerine ağır akademik yönleri ve ihtiyaç duyulan matematiksel alt yapı nedeni ile genelde çok mesafeli yaklaşırlar. Ben de 17 yılı bulan profesyonel kariyerimin bazı dönemlerinde fonksiyonel programlamaya ilgi duymama rağmen kimi zaman tembellikten kimi zaman da incelediğim fonksiyonel programlama dilinin aşırı matematiksel yaklaşımı ve kısıtlamaları nedeni bu mecarada kendimden istediğim verimi alamadım.
Read More ...

Yeni Bir Kitap Hazırlığı

F# ile Fonksiyonel Programlama

Uzun zamandır çok beğendiğim ve kullandığım zaman oldukça keyif aldığım F# programlama dili ile ilgili Türkçe bir kitap hazırlama fikrim vardır. Sonunda bu fikri hayata geçirmek için çalışma fırsatı buldum. Kitabın içeriğine aşağıdaki linkte yer alan ön izleme sürümünden göz atabilirsiniz.

Read More ...

Git ile Versiyon Kontrolü Yazım Süreci

Türkiye'nin ilk ve şimdilik tek Türkçe Git kitabının yazım hikayesi

Yazılım geliştirme kariyerim boyunca lise ve üniversitede aldığımı İngilizce eğitimin de yardımı ile neredeyse tüm teknik bilgileri İngilizce kaynak ve kitaplardan takip ettim. Bu konularda incelediğim kısıtlı sayıdaki Türkçe kitap ve kaynağı da teknik terim çevirileri nedeni ile özümsemem daha fazla çaba harcayarak mümkün oldu. Genel görüşe benzer şekilde madem biz bu teknolojiyi üretip terminolojisini oluşturmuyoruz o halde yazılım geliştirme alanında öncelikle herkes İngilizce öğrenmeli/bilmeli şeklinde bir kanaate sahiptim. Ancak bu kanaatim Bilgi Üniversitesi bünyesinde Yazılım Geliştirme Yöneticisi olmam ile birlikte iki temel etken nedeniyle değişmeye başladı ve bu değişimin ilk meyvesi olarak da Git ile Versiyon Kontrolü kitabı ortaya çıktı.

Read More ...

Hurry! You must teach coding to your kids

A tough journey you can't resist

Within last couple of years teaching how to code to kids has become a very popular topic. Tech guys, educators, schools and governments started to invest more on this topic and they try to sell the idea to the parents. In this post I will share my own experience with my 8 year old son Arda and try to formulate couple of gotchas.

Read More ...

How to keep coding?

A personal take on career management

Software development and all related stuff is a joy you will never want to give up. But the truth is, you will sometimes feel exhausted and need to head to different directions in your career. This post is mostly about my personal experience and I will try to share couple of advices with you.

Read More ...

How is Microsoft doing with .NET Core?

A short hands on experience with an OSX guy

In this blog post I will tell you a story and share my couple of cents on .NET Core, Microsoft’s last gig.

Read More ...

Jenkins Kurulum ve Yapılandırma Notları

This post is in Turkish

Bu yazımda daha önce sizlerle paylaştığım “Environment Branching With Git” yaklaşımında adı geçen deployment otomasyonu için Jenkins’i nasıl konfigüre edebileceğmize ilişkin notlarımı paylaşıyorum.

Read More ...

Environment Branching With Git

Bilgi Software Development Team Git Workflow

In this blog post I will give you some details about the Git Workflow we are using at İstanbul Bilgi University.

Bilgi Git Workflow

Read More ...

Farewell Subversion, Hello Git

Subversion to Git Migration

At Istanbul Bilgi University Software Development Team we have been using Subversion for nearly 10 years. I was the person who introduced Subversion to the team in 2005. During all those years we have created lots of repositories, to give you the exact number we have 121 repositories. Around 100 of these repositories include source code for different systems, applications or modules. Around 20 of those repositores are just junk. We have a repository per system, application or module. I guess this bit of information is enough to give you an idea about the overall migration work we need to perform.

Read More ...