---
title: Omar Albeik
description: "Software engineer · product designer · digital transformation advisor"
author: Omar Albeik
language: en
canonical_url: https://omaralbeik.com/en
translation_url: https://omaralbeik.com/ar
source_url: https://omaralbeik.com/en.md
---

# Omar Albeik

Software engineer · product designer · digital transformation advisor

Building software since 2008, now at Booking.com. Before that, Spotify,
Backbase, and Udacity. I maintain open source libraries here and there.

I run [Harf Labs](https://harflabs.com), and
[Unblock Syria](https://unblocksyria.com) with a lot of help. I'm from
Aleppo, live in Amsterdam, and write here in Arabic and English.

## Now

Building something new at Harf Labs. Restoring digital access with Unblock
Syria.

Experimenting with water fasting. Practising thuluth, slowly.

Updated: 4 August 2026

## Latest posts

- [Binding libVLC directly from Swift 6](https://omaralbeik.com/en/blog/binding-libvlc-directly-from-swift-6): An IPTV client needed Picture-in-Picture, and the VLCKit line it ran on does not have it. Notes on owning a C engine rather than consuming one — pointer isolation, lifetimes nothing checks, a patch set carried against VLC's own source, and what that costs. (article, 3 August 2026) [Markdown](https://omaralbeik.com/en/blog/binding-libvlc-directly-from-swift-6.md)
- [Namespace your Swift extensions](https://omaralbeik.com/en/blog/protocol-oriented-extensions): SwifterSwift passed five hundred extensions and began colliding with other libraries. A member added to a type you do not own is not scoped to your library at all — it is global, and no module qualifier reaches it. (article, 19 February 2022) [Markdown](https://omaralbeik.com/en/blog/protocol-oriented-extensions.md)
- [Enforce SSH instead of HTTPS for Git operations](https://omaralbeik.com/en/blog/enforce-ssh-instead-of-http-for-git-operations): GitHub stopped accepting passwords for Git in August 2021. A token in a credential helper solves the typing but not the expiry; a key solves both, and reaches the HTTPS URLs you did not write yourself. (note, 23 August 2021) [Markdown](https://omaralbeik.com/en/blog/enforce-ssh-instead-of-http-for-git-operations.md)
- [Three comparisons the standard library already does](https://omaralbeik.com/en/blog/let-the-standard-library-compare): Finding the first match, ordering by more than one key, and checking an index against a range. The hand-written version of each is longer, and two of the three are also slower. (note, 16 December 2019) [Markdown](https://omaralbeik.com/en/blog/let-the-standard-library-compare.md)
- [Property observers already give you the old and new value](https://omaralbeik.com/en/blog/use-property-observers): willSet and didSet take a parameter, and both have a default name — so naming them explicitly is usually redundant. The rules about when they do not fire matter more. (note, 6 December 2019) [Markdown](https://omaralbeik.com/en/blog/use-property-observers.md)
