Kuba Suder šŸ‡µšŸ‡±šŸ‡ŗšŸ‡¦

Indie Mac/iOS & web developer • Currently building random fun things on ATProto using Ruby and occasionally JavaScript → https://blue.mackuba.eu "mostly-happy-but-occasionally-grumpy Ruby guy" - Why šŸŒ Kraków, Poland šŸ‡µšŸ‡±šŸ‡ŖšŸ‡ŗ • āœļø

42159 followers331 following88 stories

Longform Stories

The king is dead, long live the king šŸŽ

On Apple's CEO change

Apr 21Ā·4 min readĀ·689 words

Liquid Glass - first impressions

Man I hate changes

Mar 27Ā·1 min readĀ·140 words

Running Bluesky PDS undockered

A bit over a year ago, in the first week of January 2025, IĀ migrated my main Bluesky account to my own PDS on a Netcup VPS. It’s been quite easy to set up using the official installer, and it’s been r…

Feb 4Ā·15 min readĀ·2832 words

zzzzzzz

qqqqqq

Jan 26Ā·1 min readĀ·3 words

My 2025 review & plans for 2026

More ATProto stuff

Jan 6Ā·4 min readĀ·657 words

Skythread rewrite status

140 commits later

Dec 8Ā·2 min readĀ·358 words

November updates šŸŒ§ļø

Skythread, Svelte, blogs… and more

Nov 25Ā·7 min readĀ·1262 words

ATProto blog posts collection

IĀ come across a lot of blog posts about the AT Protocol and Bluesky technicals – both on Bluesky official blogs and those of the team members, and by independent developers from the community. So many…

Nov 18Ā·11 min readĀ·2124 words

Everybody has a Leaflet, so do I!

On switching from micro.blog

Nov 17Ā·5 min readĀ·872 words

Test post

for testing

Nov 15Ā·1 min readĀ·147 words

Launching Lycan - a search tool for your likes

About a new tool I've built, which lets you search for text in all the posts you've liked, reposted, quoted or bookmarked

Oct 27Ā·6 min readĀ·1057 words

How I ran one Ruby app on three SQL databases for six months

Since June 2023, I’ve been running a service written in Ruby (Sinatra) that provides several Bluesky custom feeds (initially built with a feed for the iOS/Mac developers community in mind, later expan…

Oct 15Ā·23 min readĀ·4465 words

Introduction to AT Protocol

Walkthrough of the various parts and concepts in Bluesky's AT Protocol (ATProto), the types of servers involved and how it all fits together

Aug 20Ā·51 min readĀ·10138 words

Skythread updates

A bit about what I've been working on in May/June

Jul 2Ā·3 min readĀ·594 words

Social media update 2025

So here we are, halfway through 2025, a bit over 2.5 years after the Eloncalypse… For better or worse, the Twitter as we knew it in the 2010s and the communities we had there are mostly gone. But it d…

Jun 30Ā·11 min readĀ·2120 words

Firehose go brrr

About some more optimizations in the firehose consumer, and the PR I made for the faye-websocket library

Jun 24Ā·4 min readĀ·717 words

Speeding up the firehose

About the recent changes I made in my code & database config to bring the firehose processing speed from ~2k evt/s to 4k+

Mar 18Ā·9 min readĀ·1660 words

MacBook Air vs. Pro

A comparison between the two MacBooks I've tested

Mar 6Ā·8 min readĀ·1490 words

Year 2024 review

Feb 10Ā·3 min readĀ·423 words

Micro.blog journal

Update 17.11.2025: I’ve migrated this journal blog now from Micro.blog to Leaflet, a new blogging service built on top of Bluesky’s ATProto. IĀ wrote about this here, the new URL is https://lab.mackuba…

Feb 4Ā·5 min readĀ·960 words

Postgress progress

Optimizing the Postgres database for my feed service

Jan 16Ā·4 min readĀ·723 words

March 2024 projects update

I’ve been still pretty busy with various Bluesky- and social-related projects recently, so here’s a small update on what I’ve been working on since my November post, if you’re interested: Skythread –…

Mar 27Ā·13 min readĀ·2422 words

Social media update - Elon's Twitter and Mastodon

Update 01.03.2023: Updated Mastodon address - my previous instance has been unexpectedly shut down and IĀ had to make a new account. I’ve decided to set up my own server to make sure it won’t happen ag…

Dec 22Ā·6 min readĀ·1127 words

New edition of the "Guide to NSButton styles"

Note (Oct 2023): The names of the buttons have been changed again in the SDK in macOS Sonoma - IĀ will update the blog post again once IĀ have Sonoma on one of my MacsĀ :) Back in October 2014 IĀ wrote a…

Dec 30Ā·7 min readĀ·1258 words

TypeScript on Corona Charts

Back in spring IĀ built a website that lets you browse charts of coronavirus cases for each country separately, or to compare any chosen countries or regions together on one chart. IĀ spent about a mont…

Oct 15Ā·15 min readĀ·2820 words

WatchKit Adventure #4: Tables and Navigation

< Previously on WatchKit Adventure… Two weeks ago IĀ posted the first part of a tutorial about how to build an Apple Watch app UIĀ using WatchKit, using a WKInterfaceController and a storyboard. We’ve …

Sep 10Ā·25 min readĀ·4899 words

WatchKit Adventure #3: Building the App UI

< Previously on WatchKit Adventure… This is the third part of my series about building a WatchKit app that shows current air pollution level on the watch face (it started here). In this episode, we’r…

Aug 26Ā·31 min readĀ·6019 words

SwiftUI betas - what changed before 1.0

In the last few weeks I’ve been trying to catch up on SwiftUIĀ - watching WWDC videos, reading tutorials. Not the new stuff that was announced 2 months ago though - but the things that people have been…

Aug 17Ā·12 min readĀ·2204 words

Photo library changes in iOS 14

I’m the kind of person who cares a lot about their digital privacy. It makes me very uncomfortable when IĀ see ads on Facebook for something IĀ opened on another site a moment ago, and IĀ generally don’t…

Jul 7Ā·15 min readĀ·2905 words

Notes from WWDC

When IĀ watch conference talks, IĀ like to take notes - either on an iPhone or iPad when I’m in the conference room, or on the Mac when I’m watching online like in case of WWDC (I’ve never seen it in pe…

Jun 22Ā·5 min readĀ·987 words

I'm building an ad blocker

Since my update to the iOS version of Banner Hunter was rejected by app review, the app’s been in a kind of Schrƶdinger state, both dead and alive. It’s still selling those few copies a week, and I’m …

May 26Ā·11 min readĀ·2075 words

Coronavirus charts

I’ve been tracking the growth of the new coronavirus ever since it first appeared in China in the last week of January, and even more since it spread to Europe around mid February. Initially I’ve been…

Apr 3Ā·7 min readĀ·1310 words

SwiftUI quotes

IĀ was going through some saved links and open tabs from June recently while finishing the WWDC collection post. IĀ found a lot of interesting quotes about SwiftUI, Catalyst and the future of Apple plat…

Dec 16Ā·11 min readĀ·2023 words

New stuff from WWDC 2019

As I’m writing these words, it’s the last day of November and the temperature has just dropped to close to 0°C here in Poland. But let’s move back to a better time for a moment, to the first days of J…

Dec 3Ā·37 min readĀ·7247 words

SwiftUI on AppKit: Building a Dark Mode switcher

IĀ spent a large part of last week learning and playing with SwiftUI. So far it’s been pretty frustrating at times since IĀ kind of feel like IĀ forgot everything IĀ knew, but I’m also very excited about …

Jun 17Ā·19 min readĀ·3675 words

Thoughts on SwiftUI

Like everyone, IĀ was shocked by Apple’s surprise reveal of SwiftUI at WWDC last week. We’ve heard rumors of some kind of declarative, multi-platform framework coming sometime in the future, but IĀ don’…

Jun 14Ā·11 min readĀ·2050 words

WatchKit Adventure #2: Minimum Viable Complication

< Previously on WatchKit Adventure… This post is the second (or technically third) part of my series about building a WatchKit app that shows current air pollution level on the watch face. If you hav…

Mar 6Ā·42 min readĀ·8385 words

Setting up Piwik (Matomo) analytics on Ubuntu + Nginx

I’ve used several website analytics services over the years, including Statcounter, W3Counter, Clicky and Gauges (Google Analytics always seemed kind of too complicated and pro-focused for me). IĀ don’…

Feb 2Ā·29 min readĀ·5655 words

WatchKit Adventure #1: The Big Picture

Update 03.07.2019: watchOS 6 has changed a lot of things that I’ve written about here, so IĀ went through the post again and updated all parts that got out of date. < Previously on WatchKit Adventure……

Dec 18Ā·25 min readĀ·4826 words

WatchKit Adventure #0: Intro

Ever since IĀ saw the first Apple Watch announced on stage, IĀ wanted to learn to write apps for it. IĀ bought my first Watch half a year later, when they finally appeared in Europe, with that thought in…

Oct 29Ā·9 min readĀ·1692 words

New stuff from WWDC 2018

For the last 3 WWDC’s I’ve been collecting ordered lists of all new features and APIs added in the new releases of Apple’s OSes, either announced in the keynote or one of the talks, or in release note…

Sep 7Ā·23 min readĀ·4486 words

Dark Side of the Mac: Updating Your App

(Part 1 is available here.) Last week IĀ posted an article here about how the ā€œDark Modeā€ in macOS 10.14 works behind the scenes and how such features as appearances, materials and vibrancy, which wer…

Jul 10Ā·26 min readĀ·5028 words

Dark Side of the Mac: Appearance & Materials

One of the most exciting announcements at this WWDC was the introduction of a long-awaited ā€œdark modeā€ in macOS 10.14 Mojave, which lets you use a whole desktop with all the apps on it in a dark theme…

Jul 4Ā·21 min readĀ·4171 words

What's new in notifications in iOS 12

One of the things that caught my attention in the WWDC videos IĀ watched last week were the improvements in the notification system, meant to on one hand give more control over notifications to the use…

Jun 11Ā·15 min readĀ·2989 words

Changes to location tracking in iOS 11

Apart from a whole bunch of new frameworks (see the whole list here), iOS 11 also makes some major changes to existing APIs. One of the affected areas is location tracking. If your app only uses locat…

Jul 13Ā·19 min readĀ·3643 words

New stuff from WWDC 2017

It’s that time of the year again - if you’re like me, you’ve probably spent a lot of time in the last few weeks following everything that’s been announced at WWDC, digging into release notes, watching…

Jul 5Ā·26 min readĀ·5084 words

MacBook Pro 2016 - an iOS developer's review

Here are some thoughts about my new MacBook Pro that I’ve been using for the last few weeks (the Santa Claus from DHL brought it to me just before Christmas), hopefully this will help someone who’s co…

Jan 18Ā·29 min readĀ·5712 words

New stuff from WWDC 2016

Following the tradition from last year, here’s my complete list of all interesting features and updates IĀ could find in Apple’s OSes, SDKs and developer tools that were announced at this year’s WWDC. …

Jul 12Ā·20 min readĀ·3905 words

New stuff from WWDC 2015

Here’s my own list of the interesting stuff announced during this year’s WWDC, collected from the keynotes, various Apple docs, blog posts and tweets. If you’re planning to watch the videos, IĀ really…

Jul 5Ā·12 min readĀ·2275 words

Testing Retina images on an older Mac

Update 7.12.2020: Added info at the bottom about a UserDefaults setting you can use instead. If you build iOS apps, you’re used to providing all icons and other images in @1x and @2x versions for old…

Apr 2Ā·6 min readĀ·1142 words

Accessing user location data in iOS 8

In iOS 8 Apple made some changes to how apps are supposed to request access to location data. If you use CLLocationManager and you don’t make any changes for iOS 8 compatibility, your app might stop r…

Mar 17Ā·10 min readĀ·1804 words

How to add icons to the menu bar on Yosemite

Mac applications often add their icons to the notification area on the right side of the menu bar. That way they can show you some status changes by changing the icon image, and they can also save som…

Mar 4Ā·8 min readĀ·1576 words

Setting up an HTTPS site on Nginx

This is my SSL configuration guide. There are many like it, but this one is mine… Last week IĀ needed to set up my first HTTPS site for Hive Mac [link removed - site has been shut down since then], an…

Feb 25Ā·17 min readĀ·3245 words

Making iOS apps compatible with iPhone 6/6+

This is the first part of a new (hopefully) longer series of tutorial-like posts. I’m planning to write shorter posts now but more often, based on specific things that IĀ learn while working on my curr…

Feb 17Ā·9 min readĀ·1639 words

A guide to NSButton styles

The NSButton class used for making buttons in Mac apps has as many as 15 different styles, not counting subclasses. But which should be used where? (Updated with new examples and Big Sur graphics)

Oct 6Ā·55 min readĀ·10960 words

Backbone and Ember

I’ve read a post comparing Backbone to AngularJS recently, and another that ended with similar conclusions about Backbone, and since I’ve been working with Backbone for the last year or so, IĀ thought …

Apr 25Ā·12 min readĀ·2228 words

Notes from Mobile Mobile Conf

Here are my notes from the Mobile Mobile Conf that took place in Kraków this week. IĀ just wrote down what IĀ heard, so it might not be completely correct, but IĀ figured it will still be useful. Day 1 …

Apr 22Ā·17 min readĀ·3249 words

What's new in ObjectiveC

This post is mostly based on a presentation I’ve done on the last CocoaHeads meeting in Kraków. (If you’re a Cocoa developer and you’re in Kraków on a 2nd Thursday of a month, come say hi!) Thea idea…

Apr 20Ā·14 min readĀ·2777 words

Pick holes in your Gemfiles

The beginning of 2013 was a really bad time for the Ruby community. In the first few weeks of the year a few separate security issues were found that made everyone run to their SSH consoles to update …

Feb 18Ā·8 min readĀ·1469 words

Extending asset pipeline with custom preprocessors

If you’ve read the Rails 3.1 asset pipeline docs, you’re probably aware that you can add preprocessors to your asset files by appending extra file extensions. For example, to write your JS files in Co…

May 6Ā·6 min readĀ·1111 words

Notes from ā€œThe Passionate Programmerā€

Last month IĀ read a great book from the Pragmatic Bookshelf - ā€œThe Passionate Programmerā€, another book in the not-directly-technical series of their books started with the original ā€œPragmatic Program…

Jan 9Ā·10 min readĀ·1808 words

How to fix NTFS support on OSX Lion

After IĀ upgraded my Mac to Lion this month, I’ve noticed that my NTFS drives stopped working. I’m using NTFS on my Windows XP partition and on a WD external drive. I’ve previously used MacFUSE and NTF…

Nov 20Ā·6 min readĀ·1107 words

Tips for creating mobile sites

I’ve recently updated my new blog’s layout to support mobile phones, iPhone in particular (since that’s what I’m usingĀ ;). Here’s how it looks now: IĀ decided to use the same HTML for both versions, a…

Jun 19Ā·9 min readĀ·1796 words

Psionides Blog: Sinatra Edition

IĀ started this blog almost 3 years ago. It was a bit of an experiment, as IĀ wasn’t sure if that actually made sense, if IĀ would want to keep writing it a few months later - so IĀ put it on Jogger (Poli…

Apr 14Ā·7 min readĀ·1299 words

On Open Source licensing

There are many posts and articles that compare available open source licenses. A lot of them aren’t objective and are biased towards some kinds of licenses based on author’s own preferences. Well, I …

Jan 15Ā·15 min readĀ·2985 words

Cocoa JSON parsing libraries, partĀ 2

A few months ago IĀ wrote a post about JSON parsing libraries for Cocoa. IĀ compared 4 libraries – BSJSONAdditions, JSON Framework, TouchJSON, and YAJL, IĀ ran a benchmark on all of them, and the conclus…

Dec 12Ā·5 min readĀ·826 words

The longest names in Cocoa

Ever since IĀ started coding in Cocoa, I’ve been wondering what might be the longest name used for any function or constant in the entire API. Cocoa names can get quite long in general, so the longest …

Oct 31Ā·5 min readĀ·892 words

Notes from the MongoBerlin conference

This week IĀ went to Berlin for 2 days to attend the MongoBerlin conference organized by 10gen, the creators of MongoDB. IĀ took a lot of notes from the presentations, and IĀ figured this may be useful f…

Oct 10Ā·15 min readĀ·2909 words

Cocoa JSON parsing libraries

Update: A new post from December 2010 with updated stats is available here. For a few weeks I’ve been working on a new iPhone application. Like most of other Cocoa apps I’ve written so far, this app…

Mar 4Ā·5 min readĀ·984 words

RipTip - pretty tooltips for RightJS

I’m working on a new version of this blog, in which IĀ want to use RightJS. This week IĀ wanted to add some kind of pretty JavaScript tooltips there; there is a Tooltip class in RightJS, but IĀ don’t lik…

Feb 11Ā·4 min readĀ·772 words

Sharing code between projects with git subtree

IĀ came across a problem recently. IĀ have a project called xBlip which I’ve described before – it’s an iPhone client for a Polish Twitter-like service Blip. This project has a backend part which IĀ keep…

Feb 4Ā·13 min readĀ·2516 words

JSLint on Rails available as gem

IĀ released version 1.0 of JSLint on Rails yesterday. It has a few new options (see Github project page for more info), but the biggest change is that it’s now available both as a plugin and as a gem, …

Dec 18Ā·2 min readĀ·270 words

Check your scripts with JSLint on Rails

This year, for several months I’ve been working on a project which involved quite a lot of JavaScript. I’ve already written about how this prompted me to start writing JavaScript unit tests. But as I …

Nov 23Ā·9 min readĀ·1637 words

My top 20 iPhone apps

Yeah, IĀ know that there’s already about 5.4 gazillions of such posts on the web. So whatĀ :) IĀ believe that cool apps – especially cool free apps – deserve promotion like this; and although some of the…

Oct 11Ā·18 min readĀ·3578 words

Installing Sphinx on MacOSX from ports

A few days ago IĀ spent a couple of hours trying to install the full text search engine Sphinx on my work computer in order to use it in my current project. I’m posting the details here, maybe this wil…

Sep 2Ā·7 min readĀ·1244 words

JavaScript template libraries

For the last 3 months I’ve been working on a new web application at work. It’s quite unique in some regards, from the architecture perspective; the biggest difference from other projects that I’ve wor…

Jun 15Ā·8 min readĀ·1557 words

JavaScript unit testing

I’ve read a lot about good programming practices recently. I’ve read the ā€œPragmatic programmerā€ book (which is awesome, one of the most useful books IĀ have read, seriously); I’ve watched a great prese…

May 9Ā·12 min readĀ·2376 words

Psionides presents: xBlip 0.1

As I’ve promised in the previous post, I’ve started working on my first iPhone application, the Blip.pl client, which I’ve given an extremely creative name, xBlipĀ :) (why ā€œxā€? that’s simple, because ā€œā€¦

Mar 23Ā·7 min readĀ·1261 words

Hello, iPhone!

For the last few months, I’ve been spending a lot of time learning how to create apps for the Mac. Since I’m slowly starting to run out of new tutorials to read, I’ve decided to find myself something …

Mar 19Ā·8 min readĀ·1489 words

The Dark Side of Cocoa

Photo by Alexander Staubo (CC) Some time ago IĀ wrote about all the things that IĀ loved in the Cocoa framework. This time, I’d like to write a bit about the worse side of Cocoa - the things that annoy…

Mar 14Ā·10 min readĀ·1868 words

Interface Builder tips and tricks

IĀ read Apple’s tutorial about Interface Builder this week. Most parts of it told about rather basic things and were quite boring, but I’ve learned several useful tricks from it. IB, like most of Apple…

Dec 6Ā·7 min readĀ·1379 words

Code like a hobo

For the last 2 months, I’ve been using a new Ruby framework at work. A very… interesting frameworkĀ :) It looked very promising in the beginning, only to become a complete disaster a few weeks later. I…

Dec 1Ā·8 min readĀ·1570 words

Generating scaffold interfaces in Cocoa

IĀ discovered an interesting feature in Interface Builder a few days ago. It seems that it can generate a scaffolding UIĀ for you based on a CoreData model. It works like this: first you have to design …

Nov 20Ā·3 min readĀ·511 words

Missing controls in IB 3.1

I’ve upgraded XCode and Interface Builder to version 3.1 recently (the update doesn’t appear in the system update, you have to download it manually, and it’s deceitfully hidden - you have to register …

Nov 11Ā·3 min readĀ·485 words

Addicted to Cocoa

Photo by Sharyn Morrow (CC) For the last several weeks, I’ve been learning a lot about ObjectiveC and Cocoa programming. It’s really addictive… IĀ just can’t stop myself sometimesĀ :) I’m reading the ā€œā€¦

Nov 8Ā·9 min readĀ·1792 words

Learn Objective C in 30 minutes

Recently IĀ started thinking about writing something simple in Objective C - you know, that weird Apple language used for Mac programming… Not that I’m planning to switch from Ruby to ObjC - IĀ rather t…

Oct 5Ā·21 min readĀ·4151 words

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

It seems that starting a blog was not the only stupid idea IĀ had recently. I’m having more of those… For example, now I’m thinking about learning some Cocoa and writing some applications for the MacĀ :…

Jun 22Ā·3 min readĀ·566 words

Bandwidth limiting in MacOSX

IĀ played a bit with bandwidth limiting tools in MacOSX recently. The reason was that IĀ was uploading huge files to DivShare, and my Firefox took all the available upload bandwidth; and since upload ba…

Jun 20Ā·5 min readĀ·878 words