MacKuba

🍎 Kuba Suder's blog on Mac & iOS development

Sitemap

General

Projects

About me

Corona Charts

2024

March 2024 projects update

A complete guide to Bluesky 🦋

2023

2023: Year of social media coding

2022

Social media update - Elon's Twitter and Mastodon

2021

New edition of the "Guide to NSButton styles"

2020

TypeScript on Corona Charts

WatchKit Adventure #4: Tables and Navigation

WatchKit Adventure #3: Building the App UI

SwiftUI betas - what changed before 1.0

Photo library changes in iOS 14

Notes from WWDC

I'm building an ad blocker

Coronavirus charts

2019

SwiftUI quotes

New stuff from WWDC 2019

SwiftUI on AppKit: Building a Dark Mode switcher

Thoughts on SwiftUI

WatchKit Adventure #2: Minimum Viable Complication

Setting up Piwik (Matomo) analytics on Ubuntu + Nginx

2018

WatchKit Adventure #1: The Big Picture

WatchKit Adventure #0: Intro

New stuff from WWDC 2018

Dark Side of the Mac: Updating Your App

Dark Side of the Mac: Appearance & Materials

What's new in notifications in iOS 12

2017

Changes to location tracking in iOS 11

New stuff from WWDC 2017

MacBook Pro 2016 - an iOS developer's review

2016

New stuff from WWDC 2016

2015

New stuff from WWDC 2015

Testing Retina images on an older Mac

Accessing user location data in iOS 8

How to add icons to the menu bar on Yosemite

Setting up an HTTPS site on Nginx

Making iOS apps compatible with iPhone 6/6+

2014

A guide to NSButton styles

2013

Backbone and Ember

Notes from Mobile Mobile Conf

What's new in ObjectiveC

Pick holes in your Gemfiles

2012

Extending asset pipeline with custom preprocessors

Notes from “The Passionate Programmer”

2011

How to fix NTFS support on OSX Lion

Tips for creating mobile sites

Psionides Blog: Sinatra Edition

On Open Source licensing

2010

Cocoa JSON parsing libraries, part 2

The longest names in Cocoa

Notes from the MongoBerlin conference

Cocoa JSON parsing libraries

RipTip - pretty tooltips for RightJS

Sharing code between projects with git subtree

2009

JSLint on Rails available as gem

Check your scripts with JSLint on Rails

My top 20 iPhone apps

Installing Sphinx on MacOSX from ports

JavaScript template libraries

JavaScript unit testing

Psionides presents: xBlip 0.1

Hello, iPhone!

The Dark Side of Cocoa

2008

Interface Builder tips and tricks

Code like a hobo

Generating scaffold interfaces in Cocoa

Missing controls in IB 3.1

Addicted to Cocoa

Learn Objective C in 30 minutes

"ls" on Mac and extended file attributes

To Cocoa or not to Cocoa, that is the question...

Bandwidth limiting in MacOSX

Notes

WWDC 22

The SwiftUI cookbook for navigation

What's new in AppKit

WWDC 21

Add rich graphics to your SwiftUI app

What's new in Foundation

Discover concurrency in SwiftUI

Customize and resize sheets in UIKit

Improve access to Photos in your app

Craft search experiences in SwiftUI

Direct and reflect focus in SwiftUI

What's new in SwiftUI

What's new in AppKit

WWDC 20

App essentials in SwiftUI

Explore logging in Swift

What's new in SwiftUI

Stacks, Grids, and Outlines in SwiftUI

Build document-based apps in SwiftUI

What's new in Swift

iPad and iPhone apps on Apple Silicon Macs

Design with iOS pickers, menus and actions

Build with iOS pickers, menus and actions

Build trust through better privacy

Meet the new Photos picker

Handle the Limited Photos Library in your app

What's new in location

Meet Safari Web Extensions

Streamline your app clip

Configure and link your app clips

Explore app clips

What's new in watchOS design

Adopt the new look of macOS

WWDC 19

SwiftUI on watchOS

Building Custom Views with SwiftUI

What’s New in AppKit for macOS

Advances in Foundation

Advances in App Background Execution

Implementing Dark Mode on iOS

Modern Swift API Design

Modernizing Your UI for iOS 13

Advances in UI Data Sources

Advances in Collection View Layout

Combine in Practice

Introducing Combine

Advances in Networking, Part 1

Advances in macOS Security

What's New in Safari Extensions

What's New in Core Location

What’s New in MapKit and MapKit JS

Creating Independent Watch Apps

Data Flow Through SwiftUI

Integrating SwiftUI

SwiftUI On All Devices

SwiftUI Essentials

Targeting Content with Multiple Windows

Introducing Multiple Windows on iPad

Architecting Your App for Multiple Windows

Window Management in Your Multitasking App

WWDC 18

Measuring Performance Using Logging

WWDC 16

CloudKit Best Practices

Unified Logging and Activity Tracing

WWDC 15

CloudKit Tips and Tricks

WWDC 14

Advanced CloudKit

Introducing CloudKit

Fix Bugs Faster Using Activity Tracing

WWDC 12

iCloud Storage Overview