static-site41 hugo21 jekyll19 linux14 bash11 liquid9 dev-ops5 latex5 pagination5 workflow5 data.yml4 rmarkdown4 docker3 math3 statistics3 code-highlighting2 rstudio2 seo2 sitemap2 windows2 cplex1 customization1 data-science1 gis1 integer-programming1 markdown1 plotly1 python1 resume1 set-covering1 visualization1
published on 10.07.2022

Previously, I’ve published a blog post about deploying static content on heroku with basic authentication. The main purpose was to get basic auth for a freely hosted static website. In that post, we hosted the source code on GitLab and configured a CI/CD pipeline to render the static content …

published on 28.05.2022
edited on 29.12.2025

Each git commit has a field called Author which consists ‘user.name’ and ‘user.email’. We usually set these variables once, after installing git, with git config --global so that each repo gets the variables from the global definition. We can also set them locally for a …

published on 25.05.2022

In this post, I’ll first walk through hosting static content with basic authentication. Then, we’ll look into deploying to Heroku using GitLab Pipelines, more specifically deploying a certain sub-directory within the project instead of pushing the whole project. Also, I’ll share …

published on 17.04.2022
edited on 29.12.2025

Önceki bölümde, markdown formatını LaTeX formatına dönüştürmek için kullanılan Pandoc yazılımından bahsetmiştik. Şimdi konuyu bir adım daha ileri taşıyıp ve bookdown’a geçiyoruz. Bookdown; Rmarkdown kullanarak teknik dökümanlar, kitaplar yazabilmemizi sağlayan, Yihui Xie tarafından yazılmış …

published on 10.04.2022

I have been using WSL-2 on Windows for over a year. It’s very useful because some Python packages are just a headache to install on Windows. Also, docker. It’s just better on Linux. Yet, WSL-2 can also be problematic. I remember trying a dual-boot setup when things just went way too much …

published on 03.03.2022

In this post, I’ll share how to install geopandas and some other gis related packages on Windows. If you are on Mac or Linux you can probably just pip install those without any issue. I usually had to do a google search every time I wanted to install these packages on Windows environment. Of …

published on 19.02.2022

Önceki yazıda LaTeX kullanmanın avantajlarından ve zorluklarından bahsetmiştim, MS Word gibi WYSIWYG programlar ile karşılaştırıp tavsiyelerimi yazmıştım. Bu yazıda Pandoc yazılımı üzerine konuşacağız. Pandoc’un da yardımıyla LaTeX’in avantajlarını alıp zorluklarını biraz geri de …

published on 12.02.2022

LaTeX bir çeşit döküman hazırlama sistemidir, ancak çoğumuzun alıştığı arayüzlerin aksine bu döküman içerisinde kod yazar gibi bazı komutlar kullanırız. Daha sonra derleyici (compiler) bu dökümanı bizim tanımladığınız kurallara göre PDF’e dönüştürür. […] 1978 yılında, Donald Knuth TeX …

published on 02.01.2022

This post is for fellow students who is studying Operations Research with CPLEX. If you don’t know already, IBM offers free academic license for IBM ILOG CPLEX Optimization Studio. […] First, you have to register IBM Academic Initiative with your academic instituion issued email. (e.g. …

published on 24.01.2021

Some time ago, I wanted to display images in a better way on my Hugo website. I searched for existing Hugo themes for photography and gallery tags. Can’t say I find much. Then, I met a javascript library called nanogallery2 which is using another javascript library as an image viewer …

published on 23.01.2021

Image processing may seem complicated at first but it’s actually easy and definitely worth implementing since it’ll help you decrease page load times. As you probably know, we don’t want to load raw images with huge sizes for small thumbnails or blog-posts. We want to load a small …

published on 31.12.2020
edited on 19.01.2021

I’ve, recently, published a blog post called Perfect Workflow for Publishing Python Notebooks. I tried to explain some of the benefits of using Rmarkdown and reticulate. In this post, I’ll try HTML widgets and explain how we can embed those in our blog post using nothing but R. …

published on 05.12.2020
edited on 29.12.2025

Resume A4 is a side project of mine. It’s one page Hugo Theme that allows you to write your resume in YAML format and keep track of it using git. Also, you can publish it online as a static site using GitLab, GitHub Pages, Netlify, or some other service you are familiar with. […] A few …

published on 30.11.2020

I have been searching for a good workflow for publishing Jupyter or RMarkdown Notebooks as static blog posts. I think, I found the optimal solution for my use case. In this post, I’ll explain my workflow and why chose this way with examples. […] Currently, I work with Python and usually …

published on 29.11.2020
edited on 05.12.2020

Plotly is a visualization library that allows us to write code in Python, R, or Julia and generates interactive graphs using Javascript. So, we don’t have to deal with Javascript. You can checkout Plotly gallery, there are interesting works. Anyway, last week, I’ve started learning …

published on 29.10.2020
edited on 29.12.2025

In this post, I am going to share quick steps that will help you customize your Windows Terminal. Because everyone needs a good looking terminal. I’ll use Powershell not bash (Linux subsystem). You may use other shells with Windows Terminal if you like to. […] Get Windows Terminal from …

published on 17.10.2020
edited on 10.04.2022

Looping through a dataframe row by row is not something you want to do. […] import pandas as pd t = pd.DataFrame({'a': range(0, 100), 'b': range(0, 100)}) C = [] for i,r in t.iterrows(): C.append((r['a'], r['b'])) C = [] for ir in t.itertuples(): …

published on 18.09.2020

First of all, if you don’t know about data files, you may want to start reading from data files in hugo. This post is about a solution for a very particular problem. How can we use “group by” for the data from data files? Let me clarify with an example. I was creating a single page …

published on 09.09.2020

In this post, I’ll explain a very simple yet useful concept. I’m using Docker to manage a couple of containers in a few servers without using any management software since the environment isn’t big and complicated. Creating the containers for once is easy, it requires only a single …

published on 30.08.2020

The question is clear. We need to pass variables or arguments in Hugo’s partials. We usually use only the dot when calling partials. {{ partial "foo.html" . }}. The dot means the current page’s context. All it’s variables like .Title, .Permalink, .Content and all others …

published on 30.08.2020
edited on 15.07.2022

Mainly there are two ways of syntax highlighting. One is server-side and the other is client-side. Names are already self-explanatory, client-side highlighting occurs on the user’s browser via javascript. Highlight.js is one of the popular libraries which covers crazy amount of languages. On …

published on 29.08.2020
edited on 17.01.2022

In Hugo and generally other static website generators, we are using data files to store data. These files can be in YAML, TOML, or JSON formats. You can always read more about data template in the original documentation. Yet, I want to give some examples from my blog. First of all, converting dates …

published on 29.08.2020

My experience with Hugo has been pretty good so far. It’s fast and flexible. Ever since I started using Hugo, I’ve been improving my website with small tweaks. In this post, I am going to share some tricks and workarounds I’ve found online while working with Hugo. Besides that, …

published on 23.08.2020

In Hugo, to loop through list of items we use Range function which comes from go language. range, iterates over a map, slice or array. […] {{ range .Site.RegularPages }} {{ .Title }} {{ end }} Also, notice inside range the scope is different. .Title refers to the page in current iteration. If …

published on 22.08.2020

We talked about rendering dates and the last modification date in the last post. Now, we’ll look into how can we convert month names into another language? I’ve had a similar experience last year with jekyll. The idea is the same, we need to map each month to their version of the …

published on 22.08.2020

I like to display “published date” and “last modified date” info for my posts. Date info comes from the date parameter and last modified info comes from the lastmod parameter, both defined in the front-matter. […] …

published on 22.08.2020

Tags in Hugo is a default taxonomy and we don’t need any special configuration to use tags. We just enter the tags in the post’s front-matter. This can be YAML, TOML, or JSON. I’m using the YAML format, just a personal preference. […] tags:["hugo","tags"]In …

published on 21.08.2020

Hugo için rss-feed-in-hugo yazısını paylaştıktan sonra fark ettim ki jekyll için yazmamışım. İki yol göstereceğim, birincisi eklenti ile ikincisi liquid kodu ile. […] Eklenti ile yapmak oldukça kolay. Gemfile’ınıza gem 'jekyll-feed' satırını ekleyin ve _config.yml dosyasına ise …

published on 21.08.2020

Math typesetting, or rendering LaTeX, in Hugo is not a hard task. We have two popular alternatives. First one is mathjax, I was using it before with jekyll. The other popular library for math typesetting is KaTeX. Since it’s faster, this time I’ll go with KaTeX. Implementing these …

published on 21.08.2020

“Overwriting default landing page for Hugo taxonomies”. What do I mean by that? By default, Hugo will create a home page or a landing page for your taxonomies. /tags/ or /categories are good examples. If you don’t have any specific templates for tags /layouts/tags/list.html Hugo …

published on 06.08.2020

Search engine bots or crawlers, use two files to crawl a website more intelligently. These are robots.txt and sitemap.xml. A robots.txt file tells search engine crawlers which pages or files the crawler can or can’t request from the site. This is used mainly to avoid overloading your site with …

published on 05.08.2020

This post will be very short and precise. In Jekyll, we had to create an .xml file using liquid templates to tell Jekyll that we want an rss.xml or similarly sitemap.xml. Luckily, Hugo creates these files for us under the hood. You can check them by going to /index.xml and /sitemap.xml pages in your …

published on 03.08.2020

In this post, I aim to explain this website. Template by template… The main purpose here is to create a document to myself for future reference. Templates are complicated and not easy to read. That’s why I’ll probably forget what I did and why I coded this way. […] We are …

published on 02.08.2020

A few days ago, I decided to migrate my website from Jekyll to Hugo. Instead of using a theme from the Hugo community, I wanted to port my existing website. Converting, markdown content and SCSS wasn’t hard. I read a few articles, blogs, and the original documentation to learn about …

published on 26.07.2020

This post contains nothing but notes that I took while experimenting Hugo templates. To understand each page and it’s variables (properties) I’ve created a partial called hugo_debug.html and used it in baseof.html, simply by adding this line: {{ partial "hugo_debug.html" . }} …

published on 01.05.2020

Containerlar ephemeral stroge kullanırlar. Yani container öldüğünde içindeki datada onunla birlikte yok olur gider. Bu yüzden, persistent volume‘ler kullanılır. Kalıcı olmasını istediğimiz datayı, containerın dışında tutarız. Ben, belli aralıklar ile bu volume’ü yedeklemek istiyorum. …

published on 20.11.2019

Fonksiyonlar, bölümünde argümanlardan kısaca bahsetmiştik. Peki, ya argümanı direkt scriptin dışından userdan ya da farklı bir programdan almamız gerekiyorsa ne yapacağız? Yine fonksiyona argüman gönderir gibi scripte argüman gönderebiliriz. […] ./foobar.sh "foo" "bar" # …

published on 19.11.2019

Her dilde kullandığımız, tekrara düşmemek adına kullanılan en temel yapı. Fonksiyonlar, bash scriptinde aşağıdaki örnekteki gibi tanımlanabilir. function anahtar sözcüğü ardından fonksiyon adı verilir ve küme parantezi içerisinde fonksiyon tanımlanır. […] #!/bin/bash function selamVer { echo …

published on 18.11.2019

Bu yazı docker nedir, container nedir ve temel operasyonları ve volume yapılarına dair genel bir bilginiz olduğunu varsayıyor. […] Bir sunucuda çalışan bir konteynerimiz olsun. Bu konteynere bağlı bir ya da birden fazla volume olsun. Konteynerı farklı bir sunucuya taşımak (migrate) istiyoruz …

published on 17.11.2019

Bu yazıda, bash scriptlerindeki dizi mantığına temel bir giriş yapacağız. Bir boyutlu indexed arrayleri ve associative arrayleri (key, value pairs) ele alacağız. Başlayalım… Bash üzerinde boş bir dizi oluşturmak için aşağıdaki syntax kullanılabilir. […] a=() # a is an empty array …

published on 17.11.2019

Bu yazıda, Bash ile script yazarken döngüleri nasıl kullanabileceğimizi ele alacağız. For, while ve until döngülerini karşılaştıracağız. […] #!/bin/bash i=0 while [ i" ((i++)) done until #!/bin/bash i=0 until [ i" ((i++)) done for for döngüsünün syntaxı biraz daha farklı. while ve …

published on 16.11.2019

val=a + a - a * a / a ** a % a > 27 let "a = 3 ** 3" echo $a > 27 Double Parentheses let, ile çalışabileceğimiz gibi çift parantez kullanarak da bash’e aritmatik operasyon yapılmasını gerektiğini anlatabiliriz.

published on 16.11.2019

Eğer test etmek istediğimiz bir durum varsa if statement kullanırız. Birden fazla durum varsa nested if statement kullanabiliriz ama sayı arttıkça if statement karmaşıklaşacaktır. Burada devreye case giriyor. Syntax’ı basit.

published on 16.11.2019

Bu yazıda, bash ile if sorgularını ve bu sorgularda kullanılacak karşılaştırma operatorlerini kısaca ele alacağız. […] Temel syntax aşağıdaki gibidir. […] a=5 b=2 if [[ a -gt b ]]; then echo "b" elif [[ a -eq b ]]; then echo "b" else echo "b" fi Noktalı virgülü …

published on 16.11.2019

Bu bölümde, bash ile string manipulasyonu ile ilgili temel konuları kısa örneklerle açıklayacağım. Concatenation, append, length, substring ve sık kullanılan cut komutu… […] String concatenation, için stringleri peş peşe yazmak yeterlidir. […] a="Hello" b="There" …

published on 16.11.2019

Değişkenler, herhangi bir dilde çalışırken ilk öğretilen konulardan biridir. Bash’e giriş yaparken, değişkenlerle başlayacağım. Nasıl değişken tanımlanır? Sık kullanılan built-in değişkenler hangileridir? […] Bash’de çalışırken aşağıdaki gibi değişkenler tanımlanabilir. […] …

published on 15.11.2019

Quoting, belirli karakterlerin veya sözcüklerin özel anlamlarını kaldırmak için kullanılır. Rezerve edilmiş özel sözcüklerin belirlendikleri gibi çalışmasının önüne geçer. Bash’de üç çeşit quoting mekanizması vardır: Single Quote, Double Quote ve Backslash. Aslında bu yazıyı yazarken, amacım …

published on 27.01.2019

Sitemap, sitemap.xml dosyası, bir websitesinin içeriğinin gösterildiği modeldir. URL’lerden oluşur. Search enginelerin crawl botlarla siteyi dolaşabilmelerine yardımcı olur. Sitemap, crawler’ın tüm sayfaları indexleyeceğini garantilemez; ancak yine de büyük arama motorları sitemap …

published on 21.01.2019

Jekyll’da varsayılan olarak gelen yapıda tüm postları _posts/ klasörü altında tutarız. Post sayısı arttıkça postları gruplama, alt klasörlere bölme ihtiyacı duyabilirz. Jekyll hâlâ postları görecek ve site.posts değişkeni, _posts/ ve altındaki tüm alt dizinlerdeki tüm postları getirecektir. …

published on 21.01.2019

Jekyll’da dosyalara front-matter eklerken çoğunlukla tekrara düşebiliriz. Örneğin, birçok dosyaya aynı layoutu, layout: default, layout: post, kategoriyi category: your_category veya koleksiyonunuza özel belirlediğiniz custom attributeları eklerken benzer dosyaların herbirine, aynı satırları …

published on 20.01.2019

Bir postun altına, sıradaki N adet postun linkini nasıl ekleriz? Pagination, ama previous ile next yerine next N post. N, sizin seçeceğiniz bir sayı. Pagination adlı yazıda, önceki ve sonraki yazıları nasıl elde edeceğimizi anlatmıştım. Bir de uzunca ve build time kötü etkileyecek ama teoride …

published on 20.01.2019

Tag Cloud. Bloglarda karşımıza çıkan klişe yapı. Wordpress kullananlar automatic generate ediyorlardır, Jekyll için ise belki vardır plugin ama biz kendimiz oluşturacağız. Öncelikle tag-cloud.html adı altında bir include dosyası oluşturalım. Böylece daha sonra arşiv sayfasında, tag ya da post …

published on 10.11.2018

Bir küme içerisinden seçilen her bir iki nokta için; bu iki nokta bir doğru ile birleştirildiğinde eğer bu doğru küme içerisinde kalıyorsa bu set convex settir. […] Any two convex set that don’t touch each other(don’t intersect) can be seperated by a simple straight line. …

published on 10.11.2018

m is the slope of the line. How to find the slope of a line or the equation of a line where you have 2 points? […] returns the slope of a tangent line to at . […] , Find the equation of the tangent line to graph at . Let’s say is the tangent line. This means the slope of …

published on 10.11.2018

Run jekyll site: jekyll serve If you have gem files use the below code instead: bundle exec jekyll serve Parameters Usage -o open the site in browser -w watch –port port, to run multiple sites locally. jekyll serve -o -w --port 8000 jekyll serve -o -w --port 4000 This way you can …

published on 10.11.2018

While the mean and standard deviation are descriptive statistics, the mean and standard error describes bounds for a random sampling process. This difference changes the meaning of what is being reported: a description of variation in measurements vs a statement of uncertainty around the estimate of …

published on 03.07.2018

Bu yazıda daha önce yazdığım Etiketlere Göre İlgili Yazılar konusundaki yapıyı eleştirip iyileştireceğiz. En azından başlangınçta öyle düşünüyordum. Kısaca hatırlayalım, ne yaptığımızı: […] Amaç: Tüm postlar arasından (all_posts) mevcut sayfanın etiketlerinden (page.tags) en az birine sahip …

published on 03.07.2018

Bu yazıda, liquid syntax’ı ile diziler üzerinde yapılabilecek bazı işlemler üzerinde duracağım. Etiketlere Göre İlgili Yazılar Devam konusundaki inadım üzerine liquid’in array yapısı ile epey içli dışlı oldum. Öğrendiklerimi burada not alacağım. […] Doğru cevap: …

published on 03.07.2018

Bu yazıda liquid syntaxında forloop’dan bahsedeceğiz. Yeni başlayanların da ilk karşılaştıkları klasik yapı, for döngüsü. {% for post in site.posts%} // Do something here {% endfor %} Hemen karşınıza çıkmayan bazı incelikleri var. Onları paylaşalım: {% for i in (0..10) %} {{i}} {% endfor %} …

published on 01.07.2018

Oldukça uzun, bir o kadar da gerekliliği tartışılır kod parçasını paylaşmak üzereyim. Baştan söyleyelim, biraz döngüler dönecek if statementlar kontrol edilecek. Bunlara bağlı olarak, eğer blogunuzda çok post varsa build time kötü derecede etkilenecek. Ne kadar etkisi olur, 11 postluk blogta şu an …

published on 29.06.2018

Bu yazının amacı linear regresyona detaylı bir giriş yapmaktır. Regresyon analizinin amacı, değişken setleri arasındaki ilişkiyi tanımlamaktır. Bir bağımlı değişkeni, bir ya da birden fazla bağımsız değişkene bağlı olarak tahmin etmek için kullanılan modellerdir. […] Linear Regresyon Nedir? …

published on 19.06.2018

Tanımlayıcı istatistiklerden ortalama ve ortanca. Analiz yapılırken iş bu ikisinden hangisinin anlamlı olduğuna geldiğinde sık sık hata yapılmaktadır. Hataların yanısıra, dünyada bu istatistiklerin manipüle edilerek kötüye kullanıldığı örnekler de ne yazık ki çoktur. (bknz: statistical lies) Ne …

published on 16.06.2018

Eğer yazılarımıza etiket ekleyip arşivimizi de etiketlere göre filtrelemek istiyorsak, ihtiyacımız olanlar; […] Oldukça kolaydır, aşağıdaki gibi oluşturulabilir: […] {% assign posts = site.posts | sort: "date" | reverse %} {% for post in posts %} <li><a …

published on 13.06.2018

Eğer, matematiksel bir şeyler yazıyorsanız matematiksel gösterimlere de ihtiyacınız olacaktır. Bu konuda akla ilk gelen belge hazırlama sistemi LaTeX‘dir. Peki, bir jekyll blogunda bu iş nasıl yapılır? Kullandığınız markdown işleyicisine göre farklı seçeneklere yönelebilirsiniz. Ben, kendi …

published on 10.06.2018

8x8 lik satranç tahtasına en az kaç at yerleştirilmeli ki tüm kareler korunsun? […] Eğer aklınıza hemen küme kapsama problemi geldiyse ve çözümü merak ediyorsunuz bu kısmı atlayıp sayfayı aşağı kaydırabilirsiniz ama varsayalım ki aklınıza küme kapsama problemi gelmedi. İlk başta benim aklıma …

published on 01.06.2018

Jekyll; static website generatorlar arasında önde gelen çözümlerden biri. […] Henüz konunun başındayken okuyucuyu farklı bir yere yönlendirmek saçma olsa da nasıl olsa kâr amacı gütmüyoruz burada. Onun için, sayın okuyucu seni yönlendiriyorum: henüz Jekyll kullanmıyorsan ve bir static website …

published on 31.05.2018

Daha önce Liquid: Sayfalandırma ve Dizi Filtreleme konusunda birkaç dizi operasyonundan ve döngülerden bahsetmiştim. Şimdi stringler ile oynayacağız. Öncelikle belirteyim, liquid syntax’ı kesinlikle matematikte iyi değil, zaten amacı da o değil. Buna bağlı olarak jekyll ile dinamik yapılar …

published on 21.05.2018

Jekyll’a yeni başlayan biri için, kod bloklarını görüntülemek problemli bir iş olabilir. En azından benim için epey problemli oldu. Bu yazıda, karşılaşabileceğiniz problemlere karşı birkaç ipucu vermeye çalışacağım. […] Eğer, yazılar kod bloğu içeriyorsa ve anasayfada postları …

published on 20.05.2018

Jekyll’da herhangi bir yerde (aynı ya da farklı dosyalarda) aynı kodu tekrar kullanacaksak bu kodu include.html dosyası içerisinde saklayıp oradan çağırırız. Böylece tekrarın önüne geçeriz. Bir nevi fonksiyon tanımlamak gibi düşünülebilir. Github’daki bloglarda görmüşsünüzdür genelde …

published on 19.05.2018

Liquid syntaxı ile tarihleri, eğer ki “19.05.2018” formatında elde etmek istiyorsak işimiz kolay. page.date | date: "%d.%m.%Y" ile sayılarla istediğimiz formatı elde etmemiz mümkün. Eğer istediğimiz format, “19 Mayıs, 1919” şeklinde ise page.date | date: "%d …

published on 18.05.2018

Pagination. Sayfalandırma. İsteğimiz her post için ‘önceki’ ve ‘sonraki’ postlara gidecek birer link oluşturmak ve bunu herhangi bir plugin kullanmadan yapmak. Aslında, postları tarihe göre sıralayıp önceki ve sonraki postlar için birer link ekleyeceğiz. Olduça basit bir iş. …