Articles

App Review Request in iOS

An important task that mobile app developers often face is encouraging users to rate and write reviews of their apps on the App Store or Google Play Store. In addition to increasing the popularity of the app, this can help you improve your app by getting users feedback. In this article, we will learn the best methods to request user ratings and reviews on the iOS platform. We will also look at how you can implement this process in both development frameworks with UIKit and SwiftUI.

Automatically Delete Screenshots on macOS

If we regularly take screenshots on our desktop or in a particular folder, these images can accumulate over time and consume unnecessary disk space. Additionally, these screenshots can be difficult to find and edit later. However, setting the default screenshot folder on macOS and clearing this folder regularly can help solve these problems. In this article, you will learn how you can set the default screenshot folder and set an automatic task to clean this folder regularly.

Higher Order Functions in Swift: A Guide to Improving Code Reusability and Readability

Higher Order Functions (HOFs) are powerful tools in Swift that can greatly improve the readability and reusability of code. These functions allow developers to pass functions as parameters or return functions as values from other functions, enabling the same functionality to be used across different functions. This can significantly reduce code repetition and make it easier to maintain and scale the codebase. Additionally, HOFs can make code more readable by using simple, concise functions with meaningful names.

How I Became an iOS Developer?

“I wrote this blog in Turkish about 1.5 years ago and it attracted a lot of attention. I wanted to share the English version with you again.” Last week, I posted a tweet to share my happiness, receiving more attention than expected, reaching 70,000+ people. Many people who have gone through similar paths or who want to start this journey have reached out to me and the questions were quite similar.

Hangi Dijital Araçları Kullanıyorum?

Teknoloji alanında hayatımı bir noktada kolaylaştırdığını düşündüğüm araçları kullanmayı oldukça seviyorum. Bu yüzden yeni çıkan araçları sürekli olarak deneyimleyip işime yarayanlar ile hayatıma devam ediyorum. Bu blogda yer alan araçların tamamını bir süredir (min. 2 ay) kullanıyorum ve bu deneyimlerimi sizlerle paylaşmak istedim. Blogu okumayı bitirdiğinizde, bahsettiğim toollardan bir tanesi dahi hayatınızı kolaylaştırmaya yardımcı olursa yazı amacına ulaşmış demektir. Araçları tanıtmaya başlamadan önce telefon ve bilgisayar tarafında Apple ekosistemini kullandığımı belirtmek isterim, bu bağlamda araçların bazıları diğer işletim sistemlerine uygun olmayabilir.

Swift'te Değer ve Referans Tipleri

Merhaba, bu blogda value/reference (değer/referans) tiplerinin özelliklerini, benzerliklerini ve farklılıklarını öğreneceksiniz. Aynı zamanda bu soyut kavramları aklınızda daha iyi canlandırmak için kod örnekleri ile pekiştireceğiz. Swift’teki türler iki kategoriye ayrılır. İlk kategori olan değer tipinde (value type) struct, enum, Tuple, Int, Bool, String ve Dictionary bulunur. Bu tiplerden biri ile tanımladığınız verilerin her biri hafızada benzersiz (unique) bir değer ile eşitlenir. Diğer kategori olan referans tipine örnek olarak class verilebilir. Class’tan oluşturduğumuz bir nesneyi farklı onlarca değişkene atasak bile hafızada karşılık geldiği değer aynı kalacaktır.

iOS Geliştiricilerinin 2022'de Odaklanması Gereken 5 Başlık!

Yeni bir yıl başladı ve çoğumuz muhtemelen bu yıl alanımızla alakalı neye odaklanmamız gerektiğini düşünüyoruz. iOS geliştirme dünyasında öğrenilecek ya da tekrar edilecek pek çok konu var. Donny Wals’un yazmış olduğu ve topluluğa katkı sağlayacağını düşündüğüm bu blogu Türkçeye çevirdim, keyifli okumalar! Bu kısa blogda, 2022’de daha iyi bir geliştirici olmanıza yardımcı olacağına inandığım beş şeyi listeledim. Daha doğrusu, 2022’nin ilk yarısı. Apple’ın bu yılki WWDC’de yeni ilginç şeyler yayınlamasını bekliyorum, yılın ikinci yarısı için yeni özelliklere göz atmak daha iyi olabilir.

Nasıl iOS Developer Oldum?

Geçtiğimiz hafta yalnızca mutluluğumu paylaşmak için attığım bir tweet, “beklediğimden” fazla ilgi gördü ve 70.000+ kişiye ulaştı. Benimle benzer yollardan geçen ya da bu yolculuğa başlamak isteyen pek çok kişi bana ulaştı ve aslında sorular birbirine oldukça benzerdi. Ben de tüm bu yolculuğu ve soruları tek bir blog yazısında toparlayarak topluluk için daha yararlı ve kalıcı bir hale dönüştürmeyi amaçladım. İşte karşınızda Sıfırdan Bire — iOS Developer Olmak! iOS Öncesi Üniversitenin ilk yıllarından itibaren günümüzün en popüler alanlarından biri olan yapay zeka, makine öğrenimi konularına ilgi duyuyordum fakat bir süre geçtikten sonra bu alanda çalışırken çok da keyif almadığımı “belki de benim için doğru alan bu değildir.

Swift ve Sınıflar

Bu yazıda Nesneye Yönelik Programlama’nın temel kavramlarından biri olan sınıfların (classes) Swift dilinde nasıl kullanıldığından bahsedeceğim. Olabildiğince sade ve gerçek hayattan örnekler vererek açıkladığım bir yazı olacak, şimdiden keyifli okumalar. Sınıf Nedir? Sınıf, nesne yönelimli programlama dillerinde nesnelerin özelliklerini, davranışlarını ve başlangıç durumlarını tanımlamak için kullanılan şablonlara verilen addır. Evet bu tanım biraz soyut olmuş olabilir, daha somut hale getirmek için gerçek hayattan örneklersek bu konunun daha net anlaşılacağını düşünüyorum.

SwiftUI ve Butonlar

Apple, butonları “Bir eylemi başlatan kontrol.” olarak tanımlıyor. Bu yazımda sizlere SwiftUI’da butonların işlevini ve bu butonları özelleştirmeyi anlatacağım. SwiftUI ve Butonlar Kapak Fotoğrafı Button nedir? Butonların ne olduğunu uzun uzadıya anlatmaya gerek olmadığını düşünüyorum, hepimizin bildiği gibi kullanıcıların dokunmasıyla aksiyon alan bir kontrol. Daha önce UIKit deneyiminiz var ise orada bulunan “UIButton” ile oldukça benzer. Fakat daha esnek ve çok daha kolay özelleştirilebilir. Az sonra bir kaç satırda oldukça güzel bir buton oluşturduğumuzu göreceksiniz.

Hangi Dijital Araçları Kullanıyorum?

Markdown desteği, yeni buton stili, özelleştirilebilir listeler ve daha fazlası Apple’ın her yıl düzenlemiş olduğu Worldwide Developers Conference yani kısaca WWDC, 2021 yılında bizleri pek çok yenilik ile karşıladı. Bu yazımda SwiftUI 3.0 ile birlikte gelen yenilik ve geliştirmelerden bahsedeceğim. SwiftUI 3.0’ın iOS 15, iPadOS 15, macOS 12 ve watchOS 12 ve üzeri sürümlerle uyumlu olduğunu hatırlatmakta fayda var. Tüm bu güncellemeleri anlatmaya başlamadan önce minik bir değişiklikten bahsetmek isterim, bir Xcode projesinde Info.

Python 3.9 - Bilmeniz Gerekenler

Python, topluluğun ihtiyaçları doğrultusunda sürekli olarak güncellenmeye devam ediyor. Aynı zamanda yakın gelecekte en çok kullanılan dil olma konusunda da büyük bir aday. Python’ın yeni versiyonu olan 3.9 sürümünde pek çok yenilik mevcut. Bu yazımda bu yeniliklerden bahsedeceğim. Beta Versiyon Kurulumu Beta versiyonu kullanabilmek için bazı kurulumlar yapmamız gerekiyor. Bu kurulumları yapmak için ihtiyacımız olan adımlar şunlar: wget [https://www.python.org/ftp/python/3.9.0/Python-3.9.0a5.tgz tar](https://www.python.org/ftp/python/3.9.0/Python-3.9.0a5.tgztar) xzvf Python-3.9.0a5.tgz cd Python-3.9.0a5 ./configure — prefix=$HOME/python-3.9.0a5 make make install $HOME/python-3.

Flutter’da Dinamik Tema Oluşturmak

Flutter’da çok pratik ve hızlı bir şekilde mobil uygulamalar oluşturabiliyoruz. Aynı zamanda Flutter uygulamamız için dinamik temalar oluşturmak da bir bu kadar kolay. MaterialApp widget’ın içinde koyu ve açık renk temalar için renk paleti belirleyebilirsiniz. Ayrıca uygulamanızın bazı kısımlarında Theme widget kullanarak temayı özelleştirebilirsiniz. Bununla birlikte, uygulamanızı geliştirirken kendi özel temanızı uygulamak isteyebilirsiniz. Flutter’da bulunan yerleşik tema, daha gelişmiş Flutter projeleri için yeterli gereksinimleri sağlayamayabilir. Diyelim ki uygulamanızın bir bölümünde çok fazla metin kutusu (textbox) var ve hepsine belirli renkler tanımlamak istiyorsunuz.

En Çok Kullanılan Python Metod ve Fonksiyonları

En Çok Kullanılan Python Metod ve Fonksiyonları Fonksiyonların, Python’ın en büyük avantajlarından olduğunu söylesek yanılmayız sanıyorum. En azından Veri Bilimi ile uğraşırken bizlere pek çok kolaylık sağlarlar. Ben de bu yazıda sizlere Veri Bilimi’nde en çok ihtiyacımız olan fonksiyon ve metodları derledim. Bir çoğumuz bu fonksiyonlara hakim olsak da zaman zaman unutulan veya eksik kalan kısımlar olabiliyor. O yüzden en temelden başlayalım! Aşağıdaki gibi bir değişkenimiz olduğunu varsayalım: a = ‘selam!

VS Code ile Jupyter Notebook

Bir çok yazılımcının en sevdiği IDE muhtemelen Visual Studio Code. Gerek stabilliği, gerek bilgisayarı az yorması ve temiz arayüzü sayesinde gönülleri fethetmeyi başarıyor. VS Code sayesinde pek çok yazılım dilini tek bir IDE ile yazabilmek mümkün. Az sonra VS Code üzerinde Jupyter Notebook kullanımı için gerekli kurulumları sizlere anlatacağım. Öncelikle, neden Jupyter Notebook? Kodun sadece belirli bir kısmını çalıştırabilirsiniz. (Yüzlerce satırlık programın sadece revize ettiğiniz yerini çalıştırarak daha çabuk çıktıya ulaşırsınız.

Google Developer Student Clubs Yolculuğu!

Herkese selam, bu yazıda sizlere Developer Student Clubs maceramdan ve deneyimlerimden bahsedeceğim. Öncelikle, Nedir bu Developer Student Clubs nam-ı diğer DSC? Google Developers tarafından desteklenen öğrenci topluluklarıdır. Adından da belli olduğu üzere teknolojiyle ilgilenmeyi seven geliştirici öğrencileri bir araya toplamayı amaçlıyor. Ayrıca tüm lisans ve lisans üstü öğrencileri kapsıyor. Bir çok yerde bu şekilde tanımlanıyor DSC, fakat bu kadar mı? Hayır, çok daha fazlası. :) Developer Student Clubs sayesinde öncelikle kendinizi ve core ekibinizi, daha sonrasında ise topluluğunuzdaki insanları güncel teknolojiler, bilhassa Google Teknolojileri hakkında bilgilendirip, Study Jam olarak isimlendirdiğimiz workshoplar düzenleyebiliyorsunuz.

How I Became an iOS Developer?

Planted January 26, 2023

“I wrote this blog in Turkish about 1.5 years ago and it attracted a lot of attention. I wanted to share the English version with you again.”

Last week, I posted a tweet to share my happiness, receiving more attention than expected, reaching 70,000+ people. Many people who have gone through similar paths or who want to start this journey have reached out to me and the questions were quite similar. So, I wanted to sum up this journey and questions in a single blog post to make it more useful and lasting for the community. Here is Zero to One — Becoming an iOS Developer!

Before iOS Development

From my first years of university, I was interested in artificial intelligence, and machine learning, which are one of the most popular fields today, but after a while, I started to think that maybe this is not the right field for me while working in this field. Additionally, I should also mention that I had a brief encounter with Flutter, a cross-platform language, in 2019. Maybe my adventure with mobile was going to continue with Flutter, but because of the popularity of artificial intelligence in the industry, I took a break from Flutter.

As I decided that artificial intelligence is not suitable for me and I was in the process of looking for something new, I made a radical decision to switch from Gaming Notebook to Macbook Pro. I will explain in detail why I made such a transition in the question and answer section at the bottom of the blog.

The Beginning of The Journey!

I was aware that one of the biggest benefits of my new MBP was iOS development. Although I had a certain foundation in Flutter, I decided to pursue iOS development, taking into account the advice of experienced developers in the industry, who always say “native never dies.” When starting, I needed a roadmap, so I began searching for a beginner’s course on Udemy and similar platforms. Three different contents were recommended and generally well-liked.

  • The Complete iOS App Development Bootcamp — Angela Yu
  • Hackingwithswift.com — Paul Hudson
  • Raywenderlich.com

I bought Angela Yu’s course first and returned it after 10 days, so why? While working on this course, Angela Yu prepared the steps for creating the project from scratch, adding an icon to the application, and similar steps and a scenario was prepared that we wrote on by cloning the repo directly. Although the steps to create a project are easy for people who have spent a certain amount of time with iOS development, I think that it is permanent for beginners like me to repeat these steps every time. I also think most of the Udemy courses are rote-based, just type what you see in the video into the IDE and see the output. (I hope I don’t get lynched. 😶) In this context, this option has been eliminated.

To be honest, I don’t have much experience with Raywenderlich, so I ruled out this option because most of their content is paid. As far as I heard from the environment, it is a platform with quality content.

Finally, let’s come to hackingwithswift.com, which is the option I chose and recommend. There are two different challenges for beginners on this site. One is UIKit and the other is SwiftUI. I chose 100DaysOfSwiftUI because it is Apple’s most up-to-date framework, but I think it was a bit of a wrong start, I will explain this in detail in the question and answer section.

It seems to me that many features make 100DaysOfSwiftUI content different and efficient. To mention a few of them, the separation of the content into daily plans and creating a 100-day roadmap for you. At the same time, watching videos to learn something may not be the most suitable option for everyone, at this point, you can access the text of the videos. In addition, all the stories are progressing through the project and the last parts of the project include “challenge day”. During the Challenge days, you are expected to add something to the project with your efforts, and if you need, tiny tips are shared without “sharing any code”.

My Github Graph

Of course, these challenging days are not always completed successfully. At this point, your research on Stackoverflow and similar platforms also increase your research skills.

As I progressed through the 100 Days of SwiftUI program, I started to share what I learned daily on my social media accounts and at the same time commit to my GitHub account to keep my motivation. Remember, this process is a long marathon, not a sprint, so it’s much more important to keep your motivation calm and confident than to start with a sudden hype and stop after 1 month.

My advice is to adopt a single golden rule during this process. Even on your busiest days, spend at least one hour on any video, article, blog, or writing code related to Swift or iOS development. Even a conversation with a friend about iOS development can be included in this.

Getting Started with Interviews

When I got to 3/4 of the Challenge, I realized that I felt more comfortable and could at least write something. Since I am still a senior university student, I started to apply for internships and part-time postings. Since I don’t have any iOS-related experience in my CV, I tried to highlight the 100DaysOfSwiftUI repo in my GitHub profile. In this process, although I did not meet the requirements in most of the postings, I still did not hesitate to apply and tried my luck.

The study case created by many companies for juniors is similar to each other. In general, they expect you to create mobile applications that ask you to pull data from the API and reflect it to the list, and then navigate to the detail page. With what I learned in this process, I started to create similar projects, of course, at that time I was unaware of “design patterns”, “third-party libraries” and similar topics.

In addition to creating a working application, what companies expect from you is details such as creating the application with a design pattern such as MVVM and fetching images using “Alamofire” or a similar library. In addition, being aware of the codes you write is one of the important details. As you can imagine, none of these things I mentioned were present in the first applications I wrote. At this point, I took a break from the 100-day challenge and started researching the concepts I wanted to learn specifically.

I have been rejected multiple times during job interviews but I was aware that every time I made a project it was better than the previous one. Another advantage of interviews is that you can quickly research topics that you have not encountered or learned about when working on your own. Therefore, I believe that even if you fail an interview, it is still very beneficial for your development.

Additionally, during this process, I had the opportunity to meet with the leader of the mobile team of one of Turkey’s leading brands and our conversations increased my vision of mobile development. I would like to take this opportunity to thank him.

As a result of all these processes, my interview process with Appcent was completed positively and I took a “small step for mankind, a big step for me” in my iOS journey 6 months ago.

Furthermore, the welcome I received from the Appcent team from the moment I joined was amazing, I am very happy to be a part of such a team!

F.A.Q.

These are the most frequently asked questions me on Twitter and Superpeer, although the answers are not correct, I would like to add that I am just stating my opinion.

General Questions

I want to develop iOS but I don’t have a Mac, is it possible?

It may be possible with Hackintosh, but in the long run, you will need hardware with a MacOS operating system.

Should I start with SwiftUI or UIKit?

In my opinion, you should start with UIKit. Although many things have become easier with SwiftUI, it is still very difficult for a developer who does not know UIKit to find a place in the industry.

I want to be an iOS developer too, how should I go about it?

There are many roadmaps on the internet, you can source one of them and proceed. Also, 100 days of Swift content is a good roadmap for the first 100 days.

I want to buy a Macbook, which one should I get?

It’s a matter of your budget. All currently sold Macs (M1 and above) are quite suitable for iOS development, if your budget allows, upgrading the RAM to 16GB can be a good investment. It can also be used in old intel macs, of course, but it is useful to research in detail before purchasing.

I’m applying for the postings, but I’m not getting accepted, what can I do?

If you are rejected at the first stage, you can diversify the projects you have done on GitHub and highlight these projects in the CV. If you get rejected at the study case stage, as I mentioned in the article, you can learn the design pattern, cocoa pods, and similar details and improve your code.

Personal Questions

Did you have any background?

Of course, I had some background as I studied computer engineering. I was somewhat familiar with the OOP structure as I was interested in java, dart, and python languages before, but that doesn’t mean that I became this way thanks to this foundation. Whatever your department is, I think you will succeed if you put enough effort into it.

Why did you sell Gaming Notebook and buy a Macbook?

When I had a Gaming Notebook computer, I spent most of my time playing games. Although I had nothing to do with iOS development at the time, I can say that I banned myself from playing games by buying a Macbook. In this way, I made the time I spent playing games more productive.

Were there times when you lost your motivation?

Of course, it happened, I reduced my working times from time to time in this process, but the biggest reason for me to stay motivated in general was the daily commit and Instagram stories I posted. I would also recommend finding a study buddy for yourself, this marathon is not filmed alone. :)

I have more questions!

You can ask your questions on my Twitter or Superpeer account, I’ll be answering as soon as possible!

Conclusion

I tried to tell you about my whole adventure that started 6 months ago. I hope what is written here inspires someone. Do not forget that this journey is a marathon, it is a long but enjoyable marathon. In addition, all of the articles written here were written by a 4th-year university student, a junior iOS developer, of course, there may be details that I misunderstood, but my aim is only to convey the experiences of this journey to other people. I hope you enjoyed reading it. :)

For feedback and questions, you can reach me on Twitter, Superpeer, or hi@dogancan.dev.