Göksel Köksal | Software engineering experiments 👨‍🔬
  • Home
  • Discover
  • About
Improve your tests with this simple trick
Testing

Improve your tests with this simple trick

Writing human-readable tests using BDD
Apr 2, 2021 3 min read
Performing optimistic updates
API Design

Performing optimistic updates

Don't stop me now
Feb 20, 2021 4 min read
Testing Analytics Events
Testing

Testing Analytics Events

Since we make lots of important decisions by looking at the analytics data (if not, you should), I will not go into "why" having accurate analytics data is extremely important. You probably also know that it is extremely painful to manually test if analytics events are being reported correctly. It's
Oct 19, 2020 5 min read
A New Home 🏡

A New Home 🏡

I finally moved from Medium to a personal blog powered by Ghost.
Apr 14, 2020 2 min read
Reactive Code and Component Design
API Design

Reactive Code and Component Design

Functional Reactive Programming (FRP) is almost an industry standard on mobile today. If you're not familiar with it, here's a great read by Daniel Lew on fundamentals. In the first part, he explains the difference between passive and reactive components. I find this really interesting. I think we should talk
Apr 13, 2019 4 min read
JSON Wars: Codable ⚔️ Unbox
Swift

JSON Wars: Codable ⚔️ Unbox

Codable got everyone excited because we all love parsing JSON and it’s nice to have this tool as a part of the standard library. Now it’s time to test if it’s worthy enough to be our favorite one.Let’s see how Codable performs under rough conditions.
May 26, 2018 3 min read
Blurring the Lines Between MVVM and VIPER
Software Architecture

Blurring the Lines Between MVVM and VIPER

If you have been developing mobile apps for a while, you’ve probably heard of MVVM and VIPER. While some people say MVVM does not scale well, some others say VIPER is an overkill. I am here to explain why I think they are very similar and we don’t
Apr 20, 2018 6 min read
Using Channels for Data Flow in Swift
API Design

Using Channels for Data Flow in Swift

Apple frameworks use delegation and observer pattern (NotificationCenter) heavily to pass information around. Although there is nothing wrong about these patterns, the actual implementation always looked a bit inconsistent to me. Let’s look at the basic traits of these patterns first: * Delegation: Supports 1-to-1, two-way communication. * Observer: Supports 1-to-many,
Mar 4, 2018 4 min read
Lightning Read #2: Optional String Pitfalls
Swift

Lightning Read #2: Optional String Pitfalls

I was trying to build a URL the other day. Check the following code block: init?(userId: String?) { guard userId != nil else { return nil } self.path = "/user/\(userId)" self.url.appendPathComponent(self.path) } Seems legit, right? Assume that we’re passing 23940 as userId to this initializer. Depending on the
Dec 6, 2017 2 min read
Lightning Read #1: Lazy Collections in Swift
Swift

Lightning Read #1: Lazy Collections in Swift

I was planning to write “short” and simple articles about my findings from day-to-day Swift experiments for a while now… 🕵 Here goes the first lightning article! 🚀 Problem: Intermediate clutter that comes with map, flatMap and filter functions Let’s say we have the following requirements in an imaginary project: There
Nov 22, 2017 3 min read
Architecting iOS Apps with "Core"
Software Architecture

Architecting iOS Apps with "Core"

In the last two years, I’ve had chances to experiment with architectures like MVC, MVVM and VIPER. What’s common among those is the V component, which represents the views in our application. In a perfect world, view component should only do the following: 1. Delivers any user action
Jul 31, 2017 7 min read
Swifty Tips ⚡️
Swift

Swifty Tips ⚡️

Subtle best practises that Swift developers are keeping secret. When I first started iOS development, I was always curious about best practices used by giant companies. How does their project structure look like? What architecture are they using? Which third party libraries are the most popular? This was my urge
Apr 25, 2017 8 min read
Identifying Side Effects in Swift
API Design

Identifying Side Effects in Swift

This is a hard problem in any language. When we are interacting with APIs, we are constantly making requests on objects. Let’s say we have an object x. If we say x.doSomething(), this will create a new state on this object. We can only assume what parts of
Jan 23, 2017 3 min read
Routing with MVVM on iOS
Software Architecture

Routing with MVVM on iOS

I have been using MVVM for a while in several projects and I really like its simplicity. Especially, if you are moving from MVC, like many people, you only need to add one more layer to your architecture; view model. That really makes things easier if you find too many
Oct 23, 2016 3 min read
Using Redux with MVVM on iOS
Software Architecture

Using Redux with MVVM on iOS

Before we start, what is Redux? From redux.js.org: Redux is a predictable state container for JavaScript apps. So if you are not a web developer, it’s totally normal that you don’t know what Redux is. But it’s really easy to understand and the concept can
Aug 24, 2016 4 min read
Styling with Swift
API Design

Styling with Swift

I am developing iOS apps for over 3 years now. I am asked to apply complete re-designs for 3–4 huge projects in these 3 years, in addition to small once-a-week changes. So I want to state the obvious; requirements and design patterns change really fast and you need to
Jun 19, 2016 3 min read
Page 1 of 1
Göksel Köksal | Software engineering experiments 👨‍🔬 © 2025
Powered by Ghost