Elektrikli Araçla İlk Tatilim
By Gökmen Görgen, on October 27, 2024
Bir haftalık Türkiye tatilimde şehirlerarası yolculuklarda denemek üzere elektrikli araç kiraladım. Şunu gördüm ki, gelecekteki değişim sadece aracın özellikleriyle sınırlı kalmayacak. Kişisel alışkanlıklarımız, beklentilerimiz, yol ve otopark düzenlemeleri, mola yerleri; kısaca yola çıktığımız noktadan varacağımız noktaya kadar uğradığımız veya muhtaç olduğumuz her şeyde bir değişikliğe hazır olmamız gerekiyor.
Yazımın sonuna geldiğinizde şaşırmayın diye şimdiden belirtmek istiyorum. Ben elektrikli araçları da, içten yanmalı araçları da seviyorum. Mümkün mertebe araç kiralayıp farklı markalar denemeyi de seviyorum. Elbette tercihlerim var; ancak burada bahsetmeyeceğim.
Ne Planladık?
Aracı Ankara Esenboğa Havalimanı’ndan teslim aldık, Tekirdağ’a yakın bir bölgede tatilimizi yapıp geri dönmeyi planladık. Haritadan baktığımızda yolla ilgili herhangi bir endişemiz yoktu, zaten bu kadar çok sık kullanılan bir yolda da elektrikli araçla ilgili bir sıkıntı yaşayacaksak bu yazıyı burada kesip konuyu kapatabilirdik, elektrikli araç almak deli cesareti olurdu. Benim beklentim oldukça basitti:
The Future of Mobility
By Gökmen Görgen, on September 1, 2024
I wanted to repost the part about the mobility of an article I wrote in Turkish for 2024 Trends in the Software World on my blog. The topic of mobility is still in my focus and I am still following the developments closely.
… Now I will end my article with a topic I haven’t mentioned before: Electric vehicles, or in general terms, automobiles. We have entered a strange period that will closely concern the software industry. It is like the Quartz revolution in watches (or the Quartz crisis if we look at it from the Swiss perspective).
To put it simply, a Japanese wristwatch company called Seiko produced the first commercially mass-produced quartz wristwatch in the world, the Astron model. In appearance, there were still hour and minute hands on the dial, but instead of mechanical parts, it was powered by an electrical technology. These watches could show the time accurately for longer periods of time than mechanical watches, were lighter, and as production became easier and costs decreased, they took over the watch market. Mechanical watches currently have a certain user base, and there are very valuable companies that produce these watches.
Kısmetimde başka oyun türü mü var?
By Bahadir Kandemir, on August 14, 2024
Oynama sıklığım her sene biraz daha azalsa da, 25 senedir RPG'lere olan hayranlığım diğer oyunların çok ötesinde. Karakter özelleştirme, haritada mitik yaratıklara ve ejderhalara denk gelme, animasyonlar ve büyüler yüzünden başka tür oyun geliştirmeye niyetim olmadı. Zamanım da yoktu, deneme amaçlı bile bakmadım başka türlere.
Lakin bu sene, sıradışı bir fikir sayesinde farklı bir tür oyunun mekanikleri hakkında kafa yormam gerekti: Otomobil yarışları.
Oyun geliştirmeye haftada birkaç saat ayırıyorken, fikrin orjinalliği ve insansı karakterlere hiç benzemeyen hareket mekanikleri yüzünden haftanın yarısı uyumadan önceki birkaç saati araştırma ve geliştirmeye ayırmaya başladıktan sonra o meşhur soruyu sordum kendime: Yanlış şeyin peşinden mi koşuyordum yıllardır?
Vakitsizlikten, enerjisizlikten ama en çok da tembellikten hackweek ve gamejam'lerden uzak durunca, farklı oyun türleri üzerinde çalışmaya zorlayan bir dış etken de olmadı. Oyun sektörünün daha da içinde olsam (profesyonel olarak reklam tarafındayım, hobi olarak neresindeyim bilmiyorum) gamejam'lerde kendime yakın hedefler koyup farklı türlerde oyun geliştirmeyi pratik edip, "işte bu" dediğim oyun türünü bulmak isterdim.
Modifiye Gameboy Color
By Bahadir Kandemir, on August 13, 2024
Çocuğu uyuttuktan sonra bol bol Gameboy Color oynadım bu yaz. Aileyle çıktığı yolculukta kulaklığı takıp Gameboy'uyla dünyadan kopan Amerikan gençliği gibiydim. Şunu 90'larda yaşamak vardı diye bol bol söylensem de, o dönem mantar gibi türeyen internet kafeler ve arkadaş bilgisayarları yüzünden, bir kere yakından gördüğümü ve ilgimi çok çekmediğini hatırlıyorum.
Az renkli TFT ekranın Akdeniz güneşinde ya da balkon ışığında oldukça iyi görüntü vermesi garip geldi. 90'larda CRT haricinde ekran görmemiş biri olarak orijinal Gameboy kalitesinde (dot matrix display) performans bekliyordum sanırım.
Hal böyle olunca sıkıntıdan elin telefona gitmesi, gitmişken epostalara bakma, mesajları okuma ve tatil sonrası için aklın bir ucunda iş düşünme döngüsünden de kurtulabildim. Ekran saatim, aletin aynı anda yalnız ve yalnız bir iş yapabilmesi ve elbet bu işin bir süre sonra bıkkınlık yaratması sebebiyle de epey sınırlı oldu ve Gameboy Color'ın her işi yapabilen telefonlardan daha iyi bir yol arkadaşı olduğuna karar verdim.
Tetris Etkisi
By Bahadir Kandemir, on July 25, 2024
Bıkkınlık ve yorgunluk yüzünden eskisine göre çok daha az vakit harcıyorum hobi projelerine. Mightland'in unutulmuş projeler arasında yer almasının sebebi de bu. Arada sırada editörü açıp haritayla oynasam da, mesai saatlerinden sonra kalan enerjimi bilgisayar başında geçirmek istemiyorum.
Hobilerim son birkaç seneye kadar genellikle bilgisayar gerektiren aktivitelerdi. Tam tembel işi. Bir yere gitmen gerekmiyor, fazla masraf yapman da. Ancak ekran ışığı, fan uğultusu, tekrarlanan pratikler bazı hobileri işten farksız kılıyor. Hele, o hobi bilgisayar oyunu geliştirmek, ya da oynamaksa.
Maymun iştahıyla daldan dala atlaya atlaya, kendimi eski Gameboy oyunlarını incelerken buldum. Apple TV'deki Tetris'i izlememin de etkisi oldu elbet, tak ve oyna türü oyun konsolları ile böylece tanışmış oldum. Emülatörle bile olsa.
mGBA adlı emülatörle Ruby, Greenleaf ve Emerald gibi 3. nesil Pokemon oyunlarını kurcalaken, izlediğim YouTube videoları da değişmeye başladı. YouTube Shorts da gereğini yaptı, ve karşıma bol bol Gameboy inceleme, tamir ve modifiye etme videosu çıkarmaya başladı. Ne tesadüf.
Apple Passwords, Finally!
By Gökmen Görgen, on July 14, 2024
Authy was my bad decision to use it for two-factor authentication. I remember that I chose it because of its ability to work on both PC/Mac and mobile phone, so if I work on a PC, I don’t need to use my phone to see the validation code. The GUI was very bad on all platforms, but it was working at least. Authy is sunsetted, the team explained on their website and stated that it will no longer be supported after March 19, 2024.
On the other side, I was using KeePass for storing passwords, backup codes, and other secret texts. The reason for the choice of KeePass was the same: it works on multiple platforms and devices. But there were some problems:
- I need to find a way to sync the passwords myself. All KeePass clients have their options, and keeping the files in iCloud is one of them.
- Every client comes with a missing feature or a bug. The fact that the application was paid was not a problem for me, but it’s not a good idea to make payment for each client. Some clients support multiple platforms, but they don’t work as well on all platforms.
- I was using KeePassXC on MacOS and KeePassium on iPhone. If I decide to go back to Windows, I will have to find a client for that too. I really don’t have time to investigate it…
In short, I was not happy with either of them and I started to search for an alternative app. My expectations are:
Ev Sunucusu ve Yeni Kurulumlar
By Akın Ömeroğlu, on June 3, 2024
İlk tek kart bilgisayarlar çıkmaya başladığından beri bu küçük arkadaşları severek kullanıyorum. Raspberry'nin ilk modelleriyle başlayan bu heves zaman içinde akıllı ev sistemlerine bulaşmamla birlikte bir amaç kazandı ve çok uzun süredir evde kullandığım her şeyi bu tek kart bilgisayarlar üstünde çalıştırdım. Geçmiş zamanla konuşuyorum çünkü bu durum artık değişmek üzere.
Tek kart cihazlar çıktıklarından beri bazı büyük avantajlara sahipler. Bir kere rakiplere karşı çok daha ucuzlar, çoğunluğu ARM kullandığı için form faktörlerine nazaran çok hızlılar, yine çoğunluğu aktif bir soğutmaya ihtiyacı olmadığı için yattığınız odada dahi kullanmaya uygunlar. Hal böyle olunca evde her zaman elimin altında bu arkadaşlardan mevcuttu. Bu yazı dizisine başlayana kadar da evin ihtiyacı olan tüm servisleri bir Raspberry PI 400 üzerinde çalıştırıyordum.
Peki ne oldu da çalışan sistemimi değiştirmeye karar verdim. İlk olarak beni rahatsız eden şey bu cihazlarda disk kullanmanın zorluğu oldu. Her ne kadar Raspberry PI 5 modeli ile üstünde NVMe disk takabileceğiniz bir pci express portuyla gelse de bu arkadaşlar kahir ekseriyetle hafıza kartı üzerinden çalışıyorlar. Hafıza kartı dediğimiz cihazlar ya bu kadar gigabyte bu kartın tam neresine sığıyor diye insanı şaşırtsa da hem sürekli bir bilgisayarı çalıştırmak için yapılmamış olmaları hem de rastgele erişimde performans olarak temenni seviyesinde çalışıyor olmaları nedeniyle ağır yükler altında istediğiniz gibi çalışmıyor.
Ben her ne kadar kendi evimde bir SSD cihaz bağlamış olsam dahi bunun da USB üstünden bir disk kutusuyla bağlanıyor olması ve diskin yavaş yavaş bozuluyor olması beni bir cihaz aramaya itti.
Oyun Yapmak İsteyenlere Tavsiyeler
By Bahadir Kandemir, on May 18, 2024
Hangi oyun motoru seçilir, ufak bir oyun nasıl yapılır kısımlarını geçiyorum. Yüzlerce güzel kaynak var. Naçizane taviyelerim, oyun yapmaya başlayan, bir şekilde "build alıp" hedef platformda çalıştırmış bağımsız, çoğu zaman yalnız geliştiriciler için.
Tavsiyeleri, uzmanından değil, mağdurundan gözüyle okumanızı öneririm. Yazıyı kısa tutup, ara ara aklıma gelenleri microblog şeklinde yayınlayacağım. Bu yazıya zorlama 100 tavsiye bulmak yerine, bloga Twitter muamalesi yapacağım.
Konudan sapıp, derinlere inip oyun geliştirme ile ilgili travmalarımla tanışmaya da hazır olunuz :)
Editörü açtığınızda, ne yapacağınızla ilgili bir planınız olsun.
Eski bir DNS kaydı ve yeni bir isim
By Akın Ömeroğlu, on May 17, 2024
Aklımevde çeşitli dönemlerinde farklı farklı işlere bürünmüş ve aklıma ilk geldiğinden beri ismini sevdiğim bir alan adıydı. Daha çocukken fotoselli lambalardan ne kadar etkilendiğimi şimdi tarihin derinliklerine gömülmüş blogumda anlatmıştım.
Çocukken nerede bir fotoselli lamba görsem lambayı bir şekilde kandırmaya çalışırdım. Hızla koşarak adım adım yürüyerek ya da kör noktalardan yaklaşarak yaptığım tüm denemeler tahmin edeceğiniz gibi başarısız olsa da otomasyonla çalışan ev aletleri ve ışıklar her zaman ilgimi çekti.
Bu ilgi seneler içinde benim için bir hobiye dönüştü ve oradan da Aklımevde doğdu. Çok fazla yazamasam da epeyce uzun bir süre sanıyorum home assistant'ın kurulumu için en fazla okunan Türkçe içerik bu sitedeydi. Geçmiş zaman kullanıyorum zira bu güzel hikaye üç beş ay önce birbirinin peşi sıra gelen bir talihsizlik ve ihmal zinciriyle dibi boylayana kadar.
Malumunuz olduğu gibi seneler önce tesadüfler zinciri sayesinde bir Linux dağıtımı projesinde çalışma fırsatım oldu ve burada geçirdiğim kabaca üç yıl içerisinde zekamın aşık atmaya yetmeyeceği pek çok insanla iş arkadaşı olma şerefine nail oldum. Bu arkadaşların sayesinde de kendime yetecek kadar Linux kullanmayı öğrendim ve ite kaka kendi web sunucumu yönetebilecek hale geldim.
Less Configuration for More Freedom
By Gökmen Görgen, on May 16, 2024
I’m very conservative to avoid changing my routines, habits about my preferred software and hardware. But on the other hand, I always follow the new tools and try them as much as possible. It’s not easy to change habits, but if I think that the new alternative is better than my current one, and if I think that the new tool will increase my work quality, then I take a risk and replace it.
Sometimes I’ve made the wrong decision, for example I was a KeePass user and switched to the Pass CLI application because I thought I didn’t need such features. But then I noticed that pass app doesn’t have a good client for desktop and it’s not easy to configure GPG, repository access for iOS. Then I decided to use Apple Passwords to get rid of installing extra password and two-factor authentication applications.
Many developers have a repository that contains their public configuration files, and most of these are open to the public. I often look at these repositories, but unlike many people, I prefer to keep my config files as simple as possible, because it’s like adding a dependency to your project, every new dependency comes with a maintenance cost. The other main reason is that I want to keep flexibility. I don’t have specific requirements for any tools, but I always expect consistency between GUIs, keyboard shortcuts. And I also want to have all the features I need without adding a lot of plugins, or if that’s not possible, I expect the plugins to at least be officially supported.
So when I discover a new tool, or want to replace my existing tool with another, I follow these steps:
Helsinki Notları
By Bahadir Kandemir, on April 25, 2024
Finlandiya'da, ve Unity'de, yedinci sene bitmek üzere. Eşimin çalıştığı araştırma grubunun Helsinki'ye taşınma kararının ardından Finlandiya'daki IT sektörü varlığından bihaber, onlarca şirketin remote pozisyonlarına başvurmuş, sonuç alamamıştım.
Eğitimde dünya lideri, hatta dünyanın en mutlu ülkesi diye duysam da, birkaç Avurpa ülkesi ve ABD dışında IT sektöründe iş bulmak mümkün olmaz gibi geliyordu, ve buradaki şirketlerde iş aramak aklımın ucundan geçmedi. Ta ki Gökmen Görgen, Unity Helsinki ofisinde çalışan bir Türkten bahsedene kadar.
Ardından Unity dahil üç yazılım şirketine yazdım, mühendislik ekibinin yoğunluğu yüzünden on-site görüşme olmadan teklif almamın ardından kendimi oyun içi reklamlar dünyasında bulmuştum. Mühendislik ekibinin neden o kadar meşgul olduğunu işe başladıktan bir süre sonra anlayacak, ve sorun yaşadıkları servisin emekli edilişini görmek için uzun seneler çalışmam gerekecekti.
The Simplest Car Delivery Experience
By Gökmen Görgen, on April 23, 2024
I really like Japanese cars. There are Japanese brands that are durable, safe and have very good parts and service support. Toyota and Lexus are my favourite brands. But on the other hand, I was looking for value for money and I knew that Tesla was unbeatable in that regard. My beloved wife and eldest daughter loved the Tesla, while I, as a gourmet car guy, preferred the Lexus.
My wife suggested that I test drive both the Lexus and the Tesla. I tested the Lexus ES350h first and fell in love with the car. Everything was just as I wanted, I never had to change my old habits and because it was a hybrid, the fuel consumption was very low. Most importantly, it was not an SUV, which for me is a great opportunity that sedans are still being produced.
Then we tried the Tesla Model Y. I felt I had to change all my habits. I had to get used to knowing when to charge it, where to charge it on the way, that I couldn’t just park it anywhere because it was a bit big, that it didn’t even have a physical key and a simple start button, and I had to get used to those innovations. On the other hand, I was convinced that it made more sense to buy an SUV for my little daughter’s pram and lots of other stuff, and I respected my wife’s choice.
I’m not very good at communicating because I’m hearing impaired. However, the Tesla sales people were very understanding and I was able to complete most of the process virtually via the Tesla app and email. In fact, I can say that the most difficult part for me was registering the car and getting a licence plate. I was able to do that with a little bit of effort.
How did I Meet Pardus?
By Gökmen Görgen, on April 18, 2024
When someone asks me about the starting point of my career, I always tell them about my Linux/BSD adventure. These operating systems still exist and most people know them, but not everyone knows about Pardus, and even if they do, it is not the same Pardus I mean.
I grew up in a house without internet and the only connection to the world was through technology and gaming magazines. I used to rewrite the articles in magazines that I liked and wanted to understand on my typewriter because I read too fast and didn’t understand anything, so the typewriter was kind of slowdown for me. Sometimes codes were shared in magazines and they would also write what the output would be when we compile and run these codes. That’s something a typewriter could never do. So I grew up dreaming of owning a personal computer until I started university.
When I got my first computer, I remember that the operating system installed on it was FreeDOS. Honestly, I didn’t even know how to connect to the internet, so I looked into installing another operating system instead. Windows was a very nice alternative, but it was expensive and I had to buy a license. Then I had heard a lot about Linux from magazines, but before that I want to try FreeBSD first, I don’t know why but I thought that it may easier than Linux. There were many distributions of Linux and I couldn’t decide which is better for me. But FreeBSD is already a ready-to-use operating system. I already had magazines with information on how to install FreeBSD and how to connect to the internet. I managed with that for a couple of months.
Then I discovered some great Linux communities: forums, rooms on Freenode, events, new friendships, spontaneous meetings, and so on. The strongest of these communities, in my opinion, was Pardus. It’s a Linux distribution that is developed by TÜBİTAK, and I did my intern in this significant instituon. TÜBİTAK means “Scientific and Technological Research Council of Türkiye”, is the leading agency for management, funding and conduct of research in Türkiye.
IKEA LÅNESPELARE Mikrofon Kolu: Ucuz ve İyi
By Akın Ömeroğlu, on April 17, 2024
Evden çalışmaya başladığımdan beri kendi ortamımı daha konforlu ve daha iyi hale getirmeye çalışıyorum. Öte yandan online toplantıların sayısı inanılmaz arttığı için daha kaliteli bir mikrofon ve kameraya yatırım yapmanın iyi olacağı kanaatindeydim. Bunun için bir iki yıl önce mikrofon olarak pek de araştırmadan HyperX'in Quadcast modelini almıştım. Hem sadece karşıdan gelen sesi alması hem de mikrofonun aktif olduğu zaman ışıklı bir uyaran vermesi kalbimi çelmişti.
Neredeyse o zamandan beri masa üstünde yer kaplayan bu mikrofon için bir ayak almak istiyorum. Bunun iki nedeni vardı. İlki "cool" göründüğünü düşünüyor olmam. İkincisiyse genelde bu mikrofonların konuşan kişiye yakın durduğu zaman daha iyi performans vermesiydi.
Tabi ihtiyaç duyacağımız şeylerin %99,86'sı gibi bu mikrofon kolu denen kardeşimiz de ülkemiz şartlarında epey pahalı olan bir eşya. Bunun bir nedeni kolun kolayca eğilip bükülürken 400-500 gram kadar bir ağırlığı taşıyacak kadar rijit olması gereği. Hem estetik hem sağlam olsun dediğinizde iyi bir şey bulmak çok kolay değildi. Ta ki geçen gün IKEA'ya gidip bu yazının konusu olan Lanespelare ailesinden satışa sunulan kolla tanışana kadar.
Malum IKEA son yıllarda farklı farklı alt kültürlere yönelik çok sayıda sınırlı üretim koleksiyon sunuyor. Bunlardan biri de oyunculara yönelik sundukları masa, koltuk ve aksesuar serisiydi. Bu seriyi genel olarak karanlık bulsam da hem elektrikli yüksekliği ayarlanabilir masalarını hem de mouse pedlerini seviyorum.
Çubuklu Silolarında Bir Gün...
By Akın Ömeroğlu, on April 15, 2024
İstanbul kalabalık bir şehir. Kalabalık olmasından daha kötü olansa kitle büyürken kimsenin bu kitleyi nereye koyacağız diye bir plan yapmamış olması. Bundan dolayı herhalde boş bulunan her bir taşın, ranta, paraya ve eve çevrilmeye çalışıldığı bir şehirde yaşıyoruz. Ne mutlu ki arada birisi belki biraz değişiklik olur diye çıkıp herkesin nefes alacağı bir yer yaratıyor da biz de sebepleniyoruz.
Başlıkta yer alan Çubuklu Silolarının geçmişi ile ilgili internette pek bir bilgi bulamadım. Sağda solda yazan bilgi kırıntılarına bakarsak bu silolar şehre farklı boylarda 1940 yılından itibaren eklenmeye başlamışlar. Muhtemelen o zamanlar burası İstanbul'un epey dışında olduğundan şehrin sonuna böyle bir eklenti yapılması pek tepkiyle karşılanmamıştır. Silolar 1970'li yılların sonuna kadar zaman zaman akaryakıt zaman zaman farklı sıvıların depolanması için kullanılmaya devam etmiş ama daha sonra kaderlerine terkedilmişler.
Zaman zaman ben de Çubuklu iskelesini kullanırken bu siloları merak ederdim ama gidip görmek ve keşfetmek için bugünün gelmesi gerekiyormuş. İstanbul Büyükşehir Belediyesi ekipleri tarafından atıl halden çıkartılıp tekrar kullanılır hale getirilen silolar bir yandan tarihi depolama mirasını korumaya devam ederken öte yandan da hem seyir için görülecek hem de içindeki sergiyle gezilecek bir yer olma iddiasına bürünmüş.
Ben silolara 13 Nisan 2024'te gittim. Dolayısıyla gördüklerim ve yazacaklarım da bu tarihten notlar. Şehirdeki her mekan gibi buraya da erken gitmek en iyi tercih. İskele girişinde 40-50 araçlık bir otopark var. Azıcık sıra bekleyerek bu otoparkta yer bulduk. Mekanın biraz aceleye geldiği (bilindik nedenlerden) kendini girişten itibaren gösteriyor. Otopark, iskelenin izole alanı ve silo girişi aynı yerde ve giriş de biraz da dar.
Key Museum
By Gökmen Görgen, on April 14, 2024
I discovered a beautiful car museum in Izmir. I flew to Izmir at the invitation of my former colleague and we met at Adnan Menderes airport. We rented a car to avoid wasting time on public transport and drove straight to Torbalı and the museum.
The museum, which opened its doors in 2015, offers visitors a delightful journey through the evolution of automobile history. Upon entering, one is greeted by a fascinating array of iconic cars representing different eras, from the past to the present. The museum’s collection not only showcases well-known classic cars, but also includes rare gems that spark the imagination and transport visitors to bygone times. Apart from the impressive car display, the museum features dedicated areas for motorcycles, accessories, and intricate car mockups, adding depth and variety to the overall experience. Describing every nook and cranny of the museum would spoil the element of surprise for future visitors, but rest assured, there is much more to explore and marvel at. For those with an interest in automotive history, or simply a curiosity to witness the evolution of transportation, this museum comes highly recommended. Whether you’re a fervent car enthusiast or simply passing through the area, it’s an experience not to be missed.
Below are pictures of some of the cars I have chosen, along with a description and why they are special to me.
Alfa Romeo Giulietta
Outdated codebase, new team
By Güven Atbakan, on April 13, 2024
There is a big myth in the world of software development. If it works, don’t touch it. Although this statement seems to be very true, this approach harbors many dangers both technically and culturally. In this article, I will evaluate this danger not technically, but from the perspective of the software development team.
Good developers tend to continuously improve themselves. They learn new technology, they learn new principles, they do their best to apply “best practice”. The “new” here could be a language, a framework, an approach or the way other developers around the world write code. There are people or companies that influence the coding. These people shape the industry, and good developers take their share of the credit and set their own direction.
If you want to build a team of good developers, you need to provide them with an environment where they can develop themselves technically and evaluate new technologies. You should encourage them to use new technologies and update old codebases. You shouldn’t stifle development and change, and you shouldn’t insist on practices from years ago. You should give the team a technical challenge.
I will support this with an example that is constantly on the agenda. PHP has evolved over the years and has moved away from its old criticized structure. It has quality frameworks such as Symfony and Laravel. What makes PHP developers happy now is to use the approaches of these frameworks or to be a competitor to them. What I mean by competitor here is not a product. I mean the desire to do better on the criticized aspects of these frameworks. If you still want to apply these practices because the 2013 version of PHP “works” on your system now, I’m sorry, but you’re missing out on good developers. The programming world is discussing very different things and we can’t stay 10 years ago.
Gezegene İniş
By Bahadir Kandemir, on April 13, 2024
IRC yıllarının en büyük faydası, Linux From Scratch projesiyle tanıştırması sanırım. "Kendi sistemini tek tek inşa ediyorsun" diye anlatmıştı biri. Yüz küsür sayfa kitabın çıktısını almış, gerekli tüm tar.gz'leri bir diske (CD?) indirmiş ve birkaç gün bilgisayarı kapatmadan komutları gire gire, paketleri derleye derleye sadece komut satırının olduğu bir işletim sistemine kavuşmuştum.
Derlemesi daha kısa sürer diye Xfce derleyip minik bir masaüstüm olmuş, ama Firefox derlemek için birkaç gün harcayınca sıkılıp bir üst seviyeye geçmeye karar vermiştim: Gentoo Linux.
LKD ile bu sırada tanıştım. Derken olaylar gelişti, Gentoo'nun haftalık bülten çevirilerini yapmaya başladım, okudukça, çevirdikçe İngilizcem gelişti, tecrübem de, çevrem de.
Pardus'la tanışmam, gönüllü geliştiricilerden biri olmam ve sık sık yazmaya başlamamla devam etti bu yolculuk. Twitter yoktu o zamanlar, bildiğim çok insan blog yazardı. Planet adında bir araçla, üye olan herkesin bloglarından RSS feed'leri çekip tek sayfada gösterirdik, adına da gezegen derdik.
İnsan neden yazar? ya da benim örneğimde neden yazamaz?
By Akın Ömeroğlu, on April 9, 2024
Herhalde insanların yazıyı neden bulduğu geçmiş binlerce yıl içinde benden bu konuda kıyaslanamayacak kadar bilgi sahibi olan binlerce insan tarafından çok defa açıklanmıştır. İster söz uçar yazı kalır düsturunda olduğu gibi bilgiyi ölümsüzleştirmek olsun amaç isterse de farklı bir şey olsun tarih boyunca bildiğimizi bir sonraki nesle aktarmak için yazı her zaman en etkili araç olmuş. En azından şimdiye kadar.
İlginç ve her şeyin kısaldığı bir çağda yaşıyoruz. Çizgi filmler bile kısalıyor. Çocukluğumun sabah kuşağında bitmemesi için çok şeyi yapabileceğim çizgi filmler bile artık daha kısalar. Hal böyle olunca daha çocukluk çağından itibaren kısalığa alışmış bünyeler uzun uzun okumaktan da sıkılıyor. Tabi amca gibi bundan şikayet edecek değilim. Belki bu şekilde öğrenmek bizim gibi padişah tefrikası gibi kitaplara sürekli bakmaktan çok daha verimlidir. Onu zaman gösterecek. Neyse efendim biz konumuza geri dönelim.
Konu malum ben yazamıyor oluşum. Sanıyorum ilk blogumu gezegenlerin meşhur olduğu zamanlardan birinde açmıştım. O zaman çalıştığım proje olan özgürlükiçin ile ilgili gelişmeleri ve Pardus topluluğu ile ilgili yaptıklarımızı dilim döndüğünce anlatmaya çalışarak blog yazmaya başladım. Sonrasında Tübitak'ta işe girmemle birlikte daha profesyonel tuttuğum bir blogum olmaya başladı. O yıllarda yazdıklarıma bakıyorum da 2009 yılı ve yaşıma göre bazı şeyleri iyi okumuş ve görmüşüm aferin bana.
Daha sonrasında twitter kullanımımın artması ve blog yazmanın pek de eskisi gibi popüler olmaması nedeniyle ben de yazmaya yavaş yavaş ara verdim. Kısa yazmak ve anında etkileşim almak sonrasında platformun koyduğu flood araçları beni yazmak konusunda uzun ve dikkatli yazmaktan çok daha fazla cezbetti ve bir nevi köreltti. Geçtiğimiz hafta itibariyle son kez ve kesin olarak Twitter'dan ayrılma kararım ile birlikte kalan boş vaktimi doldurmak için yine blog yazma perileri bana konuk oldu.
Neden Twitter'dan "Ayrılmayı" Düşünüyorum
By Akın Ömeroğlu, on April 8, 2024
Bundan 17 sene önce, Kasım 2007'de ilk Twitter hesabımı açmışım. O zaman ki çalışma arkadaşlarımın Facebook durumu gibi ama sadece bunu paylaşıyorsun dediği, Bahadır'ın ofisten SMS atarak durum güncellediği zamanlardı.
Tabi ilk yıllarda Türkçe yazan insan sayısının az olması sayesinde aynı şeylerden bahseden insanların birbirini bulduğu ve takip ettiği hatta bot öncesi dönemde #TakibeTakip gibi kavramların olduğu bir yerdi Twitter. 2007'den bu yana pek çok konuda ilk haberi ya da yorumu Twitter'da gördüm ve okudum. İşimle ilgili çoğu insanın bilmediği ya da haberi olmadığı gelişmeleri bizzat o gelişmeyi ortaya çıkaran insanları bulup takip ederek yani daha havadis habere dönüşmeden öğrendim. Yıllar içinde diğer bağımlılığım gibi vazgeçemediğim kurtulmak istediğim ama dönüp dolaşıp yine geri döndüğüm bir yer oldu Twitter. Ta ki yakın zamana kadar.
Geçtiğimiz hafta sevgili dostum ve eski iş arkadaşım olan Fatih'in kendi blogunda yazdığı bir yazıya denk geldim. Kendisi benim gibi savsak ve dağınık olmadığı için düşüncelerini toplayıp sistematik bir şekilde yazmıştı ve o yazı sayesinde kafamda dönüp duran ama bir türlü oturtamadığım şeylerin bir miktar oturmasını sağladım ve ben de artık Twitter problemimi daha kesin bir şekilde çözmeye karar verdim.
Ben tembellikle savsaklık arasında bir dikiş tutturan ve bu dikişi de çok sıkı olduğu için bunların dışına çıkamayan biriyim. Hal böyle olunca savsakça davranmamı sağlayacak her şeye ön tanımlı olarak bağlanabiliyorum. Bu afyonların arasında en yoğun kullandığım şey de tahmin edebileceğiniz gibi Twitter. Zamanımın önemlice bir bölümünü Twitter'a girmeye ve başkalarının ilerlemlerini öğrenmeye harcıyorum.
Gündelik Şeylerin Tasarımı
By Recai Oktaş, on February 4, 2024
Üniversitelerin özellikle endüstriyel tasarım müfredatlarında yaygın olarak okutulan/önerilen şöhretli bir kaynak. Tasarım alanında bazı terimler (ör. sağlarlık) ve ilkeler (ör. keşfedilebilirlik) sunması yönüyle kıymeti haiz. Bu alana ilgi duyan bir kişinin okumazsa ayıp edeceği klasik bir kitap. "Klasik" kelimesini bir parça olumsuz bir özellik olarak, "tarihsel değeri daha fazla" anlamında kullandım. Bugüne kadar pek çok okumayla ortaya çıkan "kulaktan dolma" tasarım bilgimi biraz daha kitabî yapmakla birlikte kitaptan çok yeni şeyler öğrendiğimi söyleyemem. Bu "kulaktan dolma" bilgilerin kaynağı izlendiğinde yollar bir noktada bu kitaba ulaşacaktır ("tarihsel değer"), fakat (ispat etmeden fütursuzca iddia edeceğim bir yargı olarak ifade etmem gerekirse) tasarım sahasında spesifik alt alanlarda daha değerli kitapların da yazıldığını düşünüyorum. Kitap yer yer dağınık ve fazla tekrar içeriyor. Aynı içerik 300 küsur sayfa yerine çok daha kısa ve açık şekilde sunulabilirdi.
Kitabı bazen İngilizce orijinaliyle karşılaştırarak Türkçe çevirisinden okudum. Çeviriyi çok başarılı buldum. Örneğin "Affordance" karşılığı olarak "Sağlarlık" çok yerinde bir çeviri.
Kitaptan bana kalanları dağınık halde özetleyeyim...
-
Tasarım insan odaklı olmalı; insanların ihtiyaç ve kabiliyetleri dikkate alınmalı
-
İnsanlar hata yapar. Tasarım daima hatayı gözetmeli ve minimize etmeli. Özellikle yazılım ve donanım ürünlerinde hata iletileri azaltılmalı veya hata iletisinde kullanıcıyı yönlendirici bilgilendirme yapılmalı.
-
Asla sana verilen problemi (verildiği haliyle) çözmeye çalışma, kök neden çözümlemesi yap ve doğru problemi bulmaya çalış. (Bu aşamada başvurulabilecek bir metodoloji İngiliz Tasarım Konsülü tarafından oluşturulan Double-diamond design process model, yani "Çift elmas tasarım modeli".)
-
Bireye odaklanmak yerine etkinliğe odaklan (activity-centered design).
-
Bir tasarım, problemin doğasına uygun olarak karmaşıklık (complexity) içerebilir ama karışıklık (confusion) içeremez. Karmaşıklıkla mücadele için kavramsal modellerin gücünden yararlan. Karışıklığı ise mutlaka önle.
-
7 temel tasarım ilkesi:
-
Keşfedilebilirlik: Olası eylemler veya ürün/servisin durumu keşfedilebilmeli
-
Geri bildirim: Eylem sonuçları veya ürün/servisin durumu hakkında yeterli (aşırı değil) geri bildirim sağlanmalı
-
Kavramsal model: Deneyimsizlik veya sorun anında kullanıcıya yardımcı olacak bir kavramsal model sunulmalı
-
Sağlarlıklar: Uygun ve tercihen algılanabilir sağlarlıklar sunulmalı
-
İmleyenler: Uygun ve yanıltıcı olmayan imleyenler sunulmalı
-
Eşlemeler: Denetleyiciler ve ilişkili olduğu eylemler uzamsal ve zamansal olarak eşleştirilebilmeli
-
Kısıtlayıcılar: Hataya yol açan eylemleri önleyen/zorlaştıran kısıtlayıcılar sunulmalı
-
Görme Biçimleri
By Recai Oktaş, on January 16, 2024
Kitabın "görme biçimleri"ni deneyimleyebileceğiniz renkli resimler de içeren İngilizce orijinali herkese açık. Edebi niteliği yüksek eserde bazen kesifleşmekle birlikte sadeliğini genel olarak koruyan fasih bir İngilizce kullanılmış. Yazar özellikle kelime seçimlerinde çok titiz. Türkçe çevirinin kalitesi hakkında kararsızım. Özgün dilin kesifleştiği yerlerde çeviri bir parça mekanikleşmiş ve anlamayı zorlaştırıyor. Öte yandan bazı cümleler "daha iyi bir alternatif bulamıyorum"u düşündürecek kadar yerli yerinde. Kitabın mutad bir telif/çeviri tadı farklılığı yaşattığını söyleyebilirim.
Kitabın kategorisini sanat tarihi/eleştirisi ile sınırlamamak lazım. "Edebi nitelikli bir sanat ve toplum eleştirisi" kısmen uygun bir tanımlama olarak akla geliyor. Batı toplumuna ilişkin bu eleştiri Rönesanstan başlayıp kapitalizmin yaygınlaştığı zamanlara ulaşıyor. Yazarın siyasi geçmişi ve duruşunun bu eleştirilerde etken olduğu kesin, fakat bu durum eleştirileri subjektif kılmıyor.
Bu kitabı bir kaç kelimeyle özetlemem gerekseydi halihazırdaki başlıktan daha iyi kelimeler bulamazdım: "Ways of Seeing/Görme Biçimleri" (çevirisi de çok yerinde). Eser aslında bir BBC belgesinin kitaplaştırılmış hali. Belgesel mutlaka izlenmeli. Akış kurgusu, cümle vurguları ve görsel/işitsel zenginliğiyle kitabı pek çok yerde tefsir ediyor. Kitap hazmedilmesi yer yer zor pasajlar içeriyor. Bu nedenle ara vererek belki bir kaç kere okunmasında yarar var.
Kitaptaki ana fikirleri aşırı basitleştirilmiş gevşek bir dille aşağıda özetliyorum. Kitap gerçek gücünü bu yalın önermelerden ziyade bizi bu önermelere ulaştıran sorgulayıcı tavırda buluyor. Frans Hals'ın ilk bölümde sunulan resmi hakkında bir uzmanın yaptığı fazlasıyla mistik yorumu eleştirmesi bu tavra bir örnek olarak verilebilir. Belgeselde Caravaggio'nun "Supper at Emmaus"u üzerinde çocukların katılımıyla yapılan bir "görme" etkinliği de bir başka çarpıcı örnek (bu inceleme kitapta yok).
İnsanın Dört Zindanı
By Recai Oktaş, on January 13, 2024
Merhum Ali Şeriati'nin bir üniversitede yaptığı konuşmadan derlenmiş bu kitabı tek cümle ile özetlemem gerekseydi "İnsan olmak üzerine bir kitap" derdim. Kitabı değerlendirirken başlığa takılarak hemen dört zindan ayrımına girmek yerine sonda söyleneni başa alarak kitabın ana mesajını vermek isterim. Merhum yazar (hayvana yakın anlamlı) beşer ve (ilahi olana yakın anlamlı) insan farkını, insanı insan yapan hususiyetleri açıklarken anahtar kelimeleri veriyor: "ihtiyâr" (özgür irade), "aşk" (tasavvuf jargonundaki ilâhî aşk değil), "mantık ötesi" ("mantıklı" ve "mantıksız"a ilave üçüncü bir durum olarak) ve hususen "isâr" (başkalarını düşünerek benliğini feda etme). Birden fazla kelime kullanılmış olsa da aslında tüm bu kelimeler tek bir töze, insanî töze işaret ediyor. Anahtar kelimeleri bire indirmem gerekseydi seçimim "isâr" olurdu. "Başkaları için kendini feda etmek"liğin ne denli büyük bir erdem olduğu ne kadar çok erdemli insan tarafından ifade edilmiş? "İsâr"da büyük bir sır var, "Ne için varız, hayatımızın anlamı ne?"yi cevaplayan sır...
Kişisel olarak kitabın düşünce dünyamda bıraktığı izi yukarıdaki gibi ifade etmek için "dört zindan" ayrımına çok ihtiyaç duymadım. Yine de bu zindanları belirtmeden geçmeyelim, özellikle en tehlikeli olan sonuncusunun hatırına: Çevre/doğa, Tarih, Toplum ve Benlik zindanları. Makul bir günümüz bireyi çaba harcayarak ilk üçünden kurtulabilir ama hepimizin tutsağı olduğu "benlik zindanı"ndan kurtuluşun tek çaresi "insan olmak". Nasıl? Anahtar kelimeler yukarıda, ayrıntılar kitapta...
Kitabın çevirisini zayıf buldum. İşaret yayınlarından çıkmış olan Hüseyin Hatemi çevirisinin çok daha iyi olduğunu duyuyorum.
Curiosity in Children
By Gökmen Görgen, on September 12, 2023
This isn’t advice, but I’d like to share what I did to get my daughter interested in coding. Like any parent, I showed her all sorts of things to learn coding at a young age, it was zero curiosity. After a while I couldn’t understand why I had done this, I just put it on the shelf and let her do whatever she wanted, I just watched and expected her to ask for something. She said she wanted to write and draw on the walls of her room, I said yes, you can, on the other hand I was thinking about the price of repainting the walls. But anyway.
Then, while I was playing a game on my Nintendo, the good questions came. “Are you playing this thing?”, “Can it jump?”, “Can you change its clothes?”, “Does it have this function?”… That was a good point to start showing her something about coding. I started by showing her how to play Minecraft and Animal Crossing. She played the games in creative mode for a while. Even though what she can do in these games is very broad, she felt restricted in some places. For example, even though there was no cooking feature in Animal Crossing in the past, she thought she could put things in the fridge and cook with them.
Then the expected question came. She said, “How are these features added to this game, can I add them too?” I explained that it is not so easy, but there are ways to do it. First of all, you have to learn how to code, design, use programmes… In the meantime, she had already digitised her drawing on her own, using applications thanks to her tablet and pen, drawing what she wanted to do in the game, adding simple animations, even video and voice-over. But again, she realised that something was missing.
Her eyes were used to coding from my monitor since she was a baby. One day she came to me and said, “Dad, I want to code a game too. So I introduced her to Swift Playgrounds. We haven’t finished it yet, but I think she’ll be able to finish it when she has time from her homework.
Configuration Updates With Emacs 29
By Gökmen Görgen, on May 7, 2023
As I mentioned in my last post, I started using VSCode to see what I’m missing and I thought that it’s a good time to take all the risks and break my Emacs configuration. In the last changes, I tried to use the built-in alternatives of the packages like eglot instead of lsp-mode. Now I’ve made the decision to update Emacs to version 29.
When I first switched to Emacs 28, all my performance problems were solved thanks to native compilation support. Most of these problems were caused by LSP1 and it was very annoying to wait even half a second to see syntax errors in the code. Now I don’t close Emacs on the server for months. This was the most significant change to Emacs 28 that I can’t forget.
Now, if you ask what the equivalent important update is on Emacs 29, I guess I can claim that Emacs has become quite useful even if you don’t install any extensions. Many extensions I used are now included in the project, for example:
- Modus-Vivendi and Modus-Operandi, the themes I have been using for years and cannot give up, now come in.
- The package configuration tool use-package is now included.
- The internal LSP service eglot is now available. I’ve previously used the lsp-mode extension.
- For tree-sitter support, nothing needs to be installed any longer.
Status Update on Emacs
By Gökmen Görgen, on April 10, 2023
I’ve used Emacs for years, and it’s not easy to get rid of this archaic (what?) editor. Although it helped me do my job better, my setup was not as stable as in the editor. When I started working as a web developer, I was installing all the project requirements on the local machine, even though I was not using virtual environments. Emacs was good enough to make development possible.
Then, I started using tools like vagrant, docker, and virtual environments that made it easy to install the project but difficult to use Emacs because I needed to configure the editor to find the right Python interpreter, Node version, etc. Having the language server protocols (LSP) was a great help, but I still had to create a virtual environment for each project.
Then I switched to remote development; I had a remote server to access the same development environment from all my devices. I was using a good terminal emulator like WezTerm, connecting to the server using MOSH or Eternal Terminal, and running Emacs on the server remotely. This has never been as comfortable as working locally.
In each case where my setup has changed, I have updated Emacs and reconfigured it for the new environment. If you take a look at my Emacs configuration, you will see that I’m using vanilla Emacs with the minimum configuration, and I try to use built-in packages as much as possible. But now I’m at a new crossroads because I started using AI tools actively and am getting bored waiting for the tools to support my editor. I’m looking at the GitHub Copilot, and even they don’t have a plan to support Emacs officially. You can say that it’s a tactic to force them to use their own editors or that they don’t have time to support all the editors. Maybe it’s better to help the community take initiative for preparing the extension. But anyway, that’s not fair or helpful for maintaining the diversity of the editors.
Writing Command Line Applications – Tips & Tricks – Run the command in background
By Güven Atbakan, on January 12, 2022
Sometimes commands takes too much time to finish. And during its running process, your terminal should always be online! If you close your terminal or you lose your internet connection, process will interrupt.
To avoid this problem, there are many different approaches. If your command takes too much time and you afraid it gets terminated because of you, you can use nohup
to run command in background.
nohup php artisan command:name &
It will run the command in background and you can close your connection. When you run the command, you’ll see such message:
Writing Command Line Applications – Tips & Tricks – Lock the command
By Güven Atbakan, on January 11, 2022
Locking the command is basically a double run prevention.
Assume that you have a hourly email command and you’re sending e-mails to users one by one. If the command doesn’t finish until next hour, you may send multiple e-mails to some users. Or your colleague can try to start same command after you run it.
<?php
// RUN A:
$users = User::where('hourly_email_sent', false)->get();
// On above query, 10.000 users have been found.
// The command started and already processed 8.000 users in one hour. There are 2.000 users remaining.
// If you start command again, you'll send 2 emails for remaining 2.000 users. Because a command is already running and you started another one.
// RUN B:
$users = User::where('hourly_email_sent', false)->get();
// On above query 2000+ users have been found.
// RUN A and RUN B can contain same users!
I generally prefer to put a value to cache and check it before actually running the command. Here’s an example:
Writing Command Line Applications – Tips & Tricks – dry-run
By Güven Atbakan, on January 3, 2022
Testing command line applications is not easy. Dry Run, is a testing process usually used for command line applications. Also it allows you to simulate what will happen when you run the command.
It’s kinda like running SELECT statement on SQL before running DELETE/UPDATE statements and see which records will be affected.
I’m going to share an example use case. Assume that you have a command which deletes unused files from your S3 bucket.
<?php
$files = File::all();
$this->output->writeln('There are '.count($files).' file to be checked');
foreach ($files as $file) {
if (!$this->fileService->isFileInUse($file)) {
$this->fileService->deleteFile($file);
$this->output->writeln('File has been deleted from storage: file_id_'.$file->id);
}
}
Writing Command Line Applications – Tips & Tricks – Logging Outputs
By Güven Atbakan, on January 3, 2022
In this series, I’m going to tell you about my experience and best practices with command line applications. I’m sure these will help you to write better command line applications.
Log output or it didn’t happen!
Logging is fundamental for any kind of application. For a command, it’s too important to log whatever the command does and its results in detail. I generally output to a file so that in future you can check when the command ran and what it did.
/var/www/artisan some:command > $HOME/logs/some-command/
date +%Y-%m-%d-%H-%M-%S.log 2>&1
Calculate distance between 2 points (latitude-longitude) with Mysql ST_Distance_Sphere method
By Güven Atbakan, on October 30, 2021
If you want to measure distance between 2 points, you can use Mysql’ ST_Distance_Sphere method – comes with Mysql 5.7+.
Assume that, you want to get closest user to given point: 41.0049823,28.7319855
<?php
$latitude = 41.0049823;
$longitude = 28.7319855;
$sql = "
SELECT
users.id,
users.username,
ST_Distance_Sphere(point(users.longitude, users.latitude),point({$longitude}, {$latitude})) as distance
FROM users";
So you’ll get distance
as meter unit. Not that, this method uses longitude-latitude pair. Not latitude-longitude. It’s important :) I don’t know why but I always use lat-lng convention.
Samsung Prime Video uygulamasında “Internet Connectivity Problem”inin Çözümü
By Emir Karşıyakalı, on September 23, 2020
Yaklaşık 10 gün önce Amazon Prime 30 günlük deneme süresi ve aylık 7,90 TL gibi bir ücretle Türkiye’ye açıldı. Ben de Netflix’deki içeriklerden sıkılmış biri olarak hem Prime Video’ya erişebilmek hem de diğer özelliklerini kullanabilmek için(Aynı gün teslimat, Kampanyalar, Gaming) abone oldum.
Yalnız Samsung televizyonumdaki Prime Video uygulamasını her açtığımda Internet Connectivity Problem hatası alıyordum. İnternette biraz araştırdım ama çözüm bulamamıştım. Bugün son şans Twitter’dan da sordum ve bingo:
Yettim hanım! :pMenü > Genel > Sistem Yöneticisi Dil ayarlarından TV dilini İngilizce yapın düzeliyor. Beni de delirtmişti. :)
Özetle TV dilini İngilizce’ye çevirmek gerekiyormuş. Menü > Genel > Sistem Yöneticisi > Dil Ayarları yolunu takip ederek İngilizce’yi seçebiliyorsunuz. Dikkat edin: başka bir uygulama açıkken bu ayar değiştirilemiyor. Tüm uygulamaları kapattığınızdan emin olun.
Uzaktan çalışan şirketler için “ekip olmayı” oyunlaştırma
By Emir Karşıyakalı, on September 19, 2020
Bildiğiniz üzere Yelken(Sailing) ekip içi iletişimi arttırmak için şirketlerin çokça tercih ettiği sosyal ve sportif bir aktivite. Benim de birkaç kez katıldığım Yelken’de rüzgar, dalga, akıntı gibi faktörleri doğru şekilde yorumlamak gerekiyor. Yelken üzerinde herkesin ayrı ayrı görevleri olduğu için problem çözmenin yanında ekip olma, hızlı karar verebilme ve liderlik gibi becerilerin ortaya çıkmasını sağlıyor. Tabii bunları yaparken çokça eğlendiğiniz bir aktivite.
Moneo’da kurulduğumuz günden beri bir kültür olarak uzaktan çalışıyoruz(FREELANCER DEĞİLİZ). Yaklaşık 20 kişilik ekibimiz İstanbul, İzmir, Denizli, Trabzon, Alanya ve Malatya’da yaşıyor. Dolayısıyla her an birlikte olmak, aktivitelere katılmak İstanbul içerisinde bile bir uç Tuzla diğer uç Beylikdüzü derken pek mümkün olmuyor.
Bugün size daha önce defalarca duyduğum ama oynamaya yeni başladığımız bir oyundan bahsetmek istiyorum: Sea of Thieves. Windows(Steam) ve Xbox platformlarından oynanabilen bu oyun aynı Yelken gibi ekiple olmayı gerektiriyor.
2, 3 veya 4 kişilik(maksimum) gemi seçip oyuna başlıyorsunuz. Mikrofonunuz sürekli açık ve herkesin gemide ayrı bir görevi oluyor. Örneğin 4 kişilik bir gemi seçtiyseniz bir kişi dümen, bir kişi harita, bir kişi yelkenler ve bir kişi de gemideki diğer işlerden(gemiyi tamir etme, çapa atma, yangın söndürme, topları doldurma ve dahası) sorumlu.
Docker Diaries: Pinning-by-digest
By Emir Karşıyakalı, on March 20, 2020
One thing you need to know when using Docker is: tags are mutable. Thus, the latest tag is not always the latest version of the images. Latest just the tag which is applied to an image by default which does not have a tag. Maintainers(or bots) need to maintain the latest tag manually for their docker images.
About a week ago, we had to move an application that we previously deployed with Docker. We have followed a simple way, such as zipped and moving the folder to the new server. But we haven’t been maintaining this application for a while. When new versions were released and we tried to install it on the new server, we couldn’t get the application up because the latest tag pulled the new version. We had to find out which version the latest tag we installed was for. We found the solution in digests. An immutable identifier for the docker images. We found the digest of the image installed on the old server with the latest tag and replaced the image of docker-compose.yml on the new server with this digest. Bingo.
Digests time saver for that kind of scenarios.
Pull that image by digest guarantees that every instance of the service (on any node) runs exactly the same version of the image.
Laravel Testing Issue: Mocking Event Facade
By Emir Karşıyakalı, on August 9, 2019
Laravel provides helpers for mocking events, jobs, and facades out of the box. These helpers primarily provide a convenience layer over Mockery so you do not have to manually make complicated Mockery method calls.
Today first time I used Event::fake() and faced really weird issue when I run tests.
public function testPostCreating()
{
Event::fake();
$response = $this->json('POST', '/api/v1/posts', [
'title' => 'Example Post',
]);
Stop building websites with “infinite scroll”!
By Fatih Kadir Akın, on October 25, 2018
Scrolling is an every-minute action in our computer life. Since screens have a physical limit, we have to see a part of the whole content which is possible by scrolling.
I like etymology. To start to understand what to scroll really is, let’s see where the “scroll” term comes from:
In the past, and before the modern “books” exist, people need to write and read information. And when the information goes longer (like religious contents) it gets harder to manage, read and write. And somehow they invented “scrolls”. Which allows people to see a part of a long paper easily.
We met old scrolls when computers came to our lives, because our “scrolling” needs were very close which the ancient people have, and “books” (pile of pages) don’t really cover our need. Because the screen was practically very close to the a single piece of paper but not a pile of papers.
Managing Complex Waiting Experiences on Web UIs
By Fatih Kadir Akın, on July 3, 2018
Waiting is not a concept we like. We are usually stressed at every point where “waiting” touches our lives. And on the internet, “waiting” can be much more complicated than we thought it would be.
But apparently there is a long time we will have to “wait” until the tech guys solve the “speed” problem. ¯\_(ツ)_/¯
On the Web, we frequently face the expression “loading”. I experienced that managing the “loading” experience is much more complicated than I thought, and I really had to manage it.
In interfaces, “waiting” splits into 4 concepts which you can combine:
Automatically connect VPN and login server via whitelisted server
By Emir Karşıyakalı, on June 27, 2018
Moneo is a remote company that helps startups to turns their ideas to products. And because of security 101 our clients whitelisted one of our IP address for accessing their servers. That IP address is one of our cloud server(A) and we access that server via our VPN. So If our developers wants to access one of our client’s server they need to connect our VPN first, ssh to our cloud server(A) and another ssh to client’s server. It’s boring and I forgot to open VPN every single time.
Today I found some free time and thanks to Tunnelblick’s AppleScript support I automated that proccess.
Firstly, I need to add our cloud server(A) to my local config. moneo is our cloud server(A)
# .ssh/config
Quick Tip: Logging Mastery with Laravel
By Emir Karşıyakalı, on June 26, 2018
Putting unique id to requests one of my silver bullet while designing RESTful APIs. It provides an extremely easy way to follow each request’s lifecycle while debugging. In this guide I’ll show you how you can add it to your log files on Laravel 5.6.
Under the hood, Laravel utilizes the Monolog library, which provides support for a variety of powerful log handlers. Laravel makes it a cinch to configure these handlers, allowing you to mix and match them to customize your application’s log handling.
The tap array should contain a list of classes that should have an opportunity to customize (or "tap" into) the Monolog instance after it is created. (In this example we created LocalLogger)
This class only needs a single method: __invoke, which receives an Illuminate\Log\Logger instance. The Illuminate\Log\Logger instance proxies all method calls to the underlying Monolog instance:
Heroku: Copying environment variables from an existing app to another
By Emir Karşıyakalı, on June 20, 2018
After I promoted my staging app to production I need to copy my existing environment variables review and push to production. With Heroku CLI I solved that issue really easy.
heroku config -s -a existing-heroku-app > config.txt
cat config.txt | tr '\n' ' ' | xargs heroku config:set -a new-heroku-app
It’s just a note for future myself.
Implementing JWT Authentication to your API Platform application
By Emir Karşıyakalı, on April 28, 2018
API Platform allows to easily add a JWT-based authentication to your API using LexikJWTAuthenticationBundle. This bundle provides JWT(JSON Web Token) authentication for your Symfony API. But there's no official documentation for Symfony 4 (w/Flex) yet. This is a quick manual for implementing LexikJWTAuthenticationBundle.
According to the API Platform documentation:
I decided to go with Doctrine User Provider. Because of Security component comes with API Platform I only need to create an entity named User which implements UserInterface or AdvancedUserInterface:
$ php bin/console doctrine:database:create
$ php bin/console doctrine:schema:update --force
WordPress kullanıcıları dikkat! Otomatik güncellemeler bozuldu!
By Emir Karşıyakalı, on February 8, 2018
WordPress’in hafta başında yayınlanan 4.9.3 sürümünden bir gün sonra 4.9.4 sürümü de yayınlandı. Sistemini otomatik güncellemeye emanet edenler bu güncellemeyi alamadılar çünkü 4.9.4'ün yayınlanmasının sebebi 4.9.3'de bozulan otomatik güncelleme özelliğiydi. WordPress versiyonunuzu güncel tutabilmeniz ve bundan sonra yayınlanacak sürümleri otomatik indirmesini sağlayabilmeniz için manuel olarak güncellemeniz gerekmekte.
WordPress sitemi manuel olarak nasıl güncellerim?
- Opsiyon: WordPress panelinize girip Updates(Güncellemeler) bölümünden, Update Now(Hemen Güncelle)’a tıklayabilir
- Opsiyon: WP-CLI kullanıyorsanız wp-cli update komutunu çalıştırabilir
- Opsiyon: Buradan WordPress’in güncel versiyonunu indirip FTP üzerinden, wp-includes/update.php & wp-includes/version.phpdosyalarını değiştirebilir (Bu madde sadece 4.9.3 -> 4.9.4 güncellemesi için geçerli)
- Opsiyon: PHP komut satırından php -r ‘include “wp-load.php”; wp_maybe_auto_update();’ komutunu çalıştırabilirsiniz.
Bu adımlardan birini uyguladıysanız tebrikler! WordPress artık güncellemeleri otomatikman almaya devam edecek ve bir daha manuel olarak güncelleme yapmak zorunda kalmayacaksınız.
Laravel 5.5 (LTS): API Resources
By Emir Karşıyakalı, on October 2, 2017
RESTful API geliştirirken dikkat etmemiz gereken en önemli konulardan biri tutarlılık(consistency). Versiyonlama, HTTP durum(status) kodlarınının kullanımı, kaynakların(resource) isimlendirmeleri, çıktılarımızın(response) kapsüllemeleri ve çıktılarımızı oluşturan alanların(field) isimleri gibi tutarlılığı korumamız gereken farklı seviyeler var. Bu yazının konusu tutarlılığın çıktılarla alakalı olan kısmı kapsülleme ve alan isimlendirmeleri.
API Resources’ı tanıtmadan önce daha önce nasıl yaptığımıza bakalım. Problem çıktıları kapsülleme olduğunda birçok farklı yol deneyebilirsiniz. Laravel’in Controller’ından kalıtım alan bir BaseController oluşturup buraya respondSuccess, respondBadRequest vb. methodlar ekleyebilir ve bu methodlar içerisinde çıktılarınızı kapsülleyebilirsiniz:
//BaseController
public function respondSuccess(array $data): JsonResponse
{
return response()->json([
'data' => $data
], 200);
}
Laravel 5.3 change mail configuration dynamically
By Güven Atbakan, on January 7, 2017
If you are developing CMS software or a SaaS product, your customers needs to set their mail sending credentials for sending mails from their system. By default, you can set mail configuration to .env file.
But if your customer don’t have access to .env file and command line to execute artisan config:clear command, they need to change credentials from their panel. Here is an example:
I store these values at database. So, i need to change mail config before sending email. But, Laravel’s
My PhpStorm file watcher for php-cs-fixer
By Güven Atbakan, on October 20, 2016
I started using PHP Code Style Fixer long time ago for automatically fix my code style. You can use this tool via command line. But also you can add a file-watcher for PhpStorm. It runs php-cs-fixer on every file save. So you dont need to run php-cs-fixer manually.
Here you can download watchers.xml
: https://gist.github.com/shibby/6cb1fcafe3747ce8e2f7aa0e8dc2b516
All you need to do is import xml file from PhpStorm Settings->File Watchers and installing php-cs-fixer to /usr/local/bin
folder.
Running Laravel4 with PHP7
By Güven Atbakan, on August 10, 2016
I will not argue about Laravel’s shitty versioning system and dropping support for older versions. They are so excited, everyday adding a new feature to framework’s core. Yeah, thats really good thing but who cares fucking backward compability?
Anyway, if you are using Laravel4 and want to run it with PHP7, you have make some changes on framework’s core. So, you need to fork L4 and publish it as a new package OR (preferred) you need to use it as custom repository.
So, what do you need to change?
Here is a pull request, that contains full change for support PHP7: https://github.com/laravel/framework/pull/13338
How I implemented CSS Modules to Ruby on Rails, easily.
By Fatih Kadir Akın, on May 28, 2016
Front-end has grown up. It is not easy to maintain front-end projects as we were doing in 2000’s. There are so many technologies, so many techniques and paradigms. Front-end is more responsible part of an application now. And when you develop a front-end included project, it may become hard to manage.
Smart people realise this issues and try to make the front-end more modular and more maintainable. One of these attempts is CSS Modules approach. This basically aims to separate CSS management into modules (as we are doing in JavaScript for a while).
Me and Adem are working in a Rails based project and it become slightly confusing b/c of the CSS parts. For sure, we are separating CSS files into files to make it manageable, but it’s not too easy to maintain HTML side then.
Rails has awesome features that I still surprise when I learn about them. When I learn about I can write my own Sprockets Processors it made me feel powerful👌🏻
Google Drive Client For Linux
By Güven Atbakan, on June 7, 2012
Finally, Google Drive Client for Linux released. But publisher is not Google! That’s not suprise for me. There is no Google Talk client for Linux for long years that’s published from Google. Also Picasa is starting with Wine. There is so many Google’s product that are not running on Linux.
Thankfully, there is such thing as Open Source. Some contributors developed Google Drive Client for Linux that named grive. They uses oAuth. And because of client is open source and uses oAuth, we can use it without thinking of security.
Here is web page for grive: http://match065.github.com/grive/
Github page: https://github.com/match065/grive
How to install on Ubuntu: http://www.webupd8.org/2012/05/grive-open-source-google-drive-client.html
Hmm
By Recai Oktaş, on July 7, 2011
Bugün farklı yerlerde bir kaç şey düşündüm. Evde: "Oda niye bu kadar dağınık?", arabada: "Yürürken de bu kadar dikkatli misin?" Zihin gürültüsü mü desek bunlara, "sorgulama" mı? (bu da üçüncü soru oldu) Adı her neyse kemikleşmiş bir alışkanlık bu. Anormal vehimlerden, kuşkulardan bahsetmiyorum, yukarıdaki soruların hiç birinde "kuşku" yok, merak var. Kesif bir içe bakışı gizleyen masum (!) sorular...
"Oda niye dağınık?" Misal, bazı nefret hallerinin gizli bir muhabbete işaret etmesi gibi, bu dağınıklık da gizli bir düzen idealine işaret ediyor. Buna benzer bir cevap verdim. Sonra kendimi bir roman kahramanı olarak düşledim.
Bay R odasında nicedir gözlediği dağınıklığı ortadan kaldırmak yönünde hiçbir gayret sarfetmemesinin nedenleri üzerinde düşünürken kahvaltısını tamamlamak üzereydi. Bunun keyifli bir soru olduğunu hissetti. Daima ihtiyaçtan fazla miktarda demlediği taze çaydan bir bardak daha alırken "mükemmeliyet iştiyakı" diye mırıldandı. Odanın entropisi dahil pek çok şeyi ideal (ve tanım olarak mükemmel) bir geleceğe ertelediğini farketti.
"Yürürken de bu kadar dikkatli misin?" Bu kadar değil ama evet, dikkatliyim. Kalabalıkları sevmiyorum; insan sevmediği yerlerde dikkatli oluyor. Bu cevap kesmedi fakat. Yine eski bir alışkanlık... Bir probleme önerilen ilk çözüm yeterli bulunmadığında yeni çözümlerin arayışına girişmeden önce sorunun yasallığını veya nasıl diyelim, bizim gençlerden birinin tabiriyle "sorulabilitesi"ni sorgulamak lazım. Zira çözüm arayışıyla ilerleyeceğiniz yorucu güzergaha çıkmadan önce yeterli motivasyonunuz olmalı. Yani, yürürken de bu kadar dikkatli olup olmadığımı neden soruyorum?
Bayram
By Recai Oktaş, on November 1, 2007
Efendim, bir bayram daha geldi çattı ve, adet olduğu üzre, kendimizi bayram arefesindeki prokrastinasyonal, yani nasıl derler, "yapılmasa da olur, ama yapacağım" nev'inden meşgaleler arar hâlde bulduk. Bu jurnal cümlelerine hasbel kader gözü takılan cümle cemaatin Ramazan bayramını kutlayalım evveliyetle.
Kuşların getirdiği kimi haberler sayesinde, memleketin muhtelif medreselerinde verilmekte olan C
derslerinde bizce
"konayo" olarak bilinen, ecnebicesi conio.h
olan taşınamazların, dersleri deruhte eden muallimler indinde musallat
bir fikri sabite inkılâp ettiğini esefle öğrenmiş bulunmaktayım. Tabii ki bu mezalimde, inançları hilafında bir makama
râm olmak durumunda kalan istiklâl ve istikbal sahibi talebelerin haykırışlarına (ki cihan şümul bir mahiyet arz ettiği
kat'i olan bu çığlıkları sizin de duymanız pek
mümkün) kulaklarımı tıkayamazdım. Ez-cümle işte o "bayram arefesi eğlencelik demler"e konumlandırdığımız mütevazı bir
çalışmanın neticesi olarak course-goodies
yaşca
bendenizden küçük bu kardeşlerime bir bayram hediyesi olsun bakalım.
Package: course-goodies
Architecture: all
Description: Course goodies for C/C++ language courses
Nothing interesting here; only a few source files, notably 'conio.h',
to allow FLOSS-minded students to 'getch' or 'kbhit' while studying
some examples dictated by some lecturers.
Marifetlerini ifade etmeye birkaç satırın kâfi geleceğini de düşünmekteyim: