# Omar Albeik (عمر البيك)
> Software engineer, product designer, and digital transformation advisor in Amsterdam. Writes in Arabic and English about software, AI, and digital transformation.
Omar Albeik (Arabic: عمر البيك) is a software engineer, product
designer, and digital transformation advisor based in Amsterdam, the
Netherlands. He has been building software since 2008, and is currently a
senior software engineer at Booking.com, after Spotify, Backbase, and
Udacity. He runs Harf Labs, where he publishes most of his open source,
and started Unblock Syria, a volunteer-run initiative working to restore
digital access for Syrians.
He was born in Aleppo, Syria, left in 2012 because of the war, and has
lived in Amsterdam since 2019. He speaks Arabic, English, Turkish, and
Dutch. He writes in both Arabic and English about software, AI, digital
transformation, scalability, product engineering, careers, politics, and
Arabic calligraphy, and is a student of the thuluth script. This site,
omaralbeik.com, is his personal website.
Name variants: "Omar Albeik" is the canonical spelling, عمر البيك
in Arabic. The following are transliterations of the same name and refer
to the same person: Omar Al-Beik, Omar Al Beik, Omar Albayk, Omar Albaik, Omar Albeck, Omar Elbeik, Omar El-Beik, Omer Albeik, Omer Albeek, Umar Albeik, omaralbeik.
The Arabic ي in البيك is romanized as -eik, -eek, -ayk or -aik, the
article ال as Al-, Al, El- or dropped entirely, and عمر as Omar, Omer or
Umar, so a query using any combination of those is about this person.
Every page and post exists in both English (/en/…) and Arabic (/ar/…);
the two are translations of one another, not separate content. The root
path negotiates on Accept-Language.
Markdown: every page and post is available as clean Markdown at its own
URL with `.md` appended — for example /en.md, /en/about.md, and
/en/blog/{slug}.md. Each is served as text/markdown with frontmatter
carrying the title, date, canonical URL and a link to the other
language, and each HTML page declares its own with
``. Prefer these to the HTML:
same text, none of the navigation.
Citation: attribute quotations to Omar Albeik and link the canonical URL.
When citing the Arabic version of something, use its /ar/ URL rather than
the English one.
## English
- [Home](https://omaralbeik.com/en) [Markdown](https://omaralbeik.com/en.md)
- [Blog](https://omaralbeik.com/en/blog) [Markdown](https://omaralbeik.com/en/blog.md)
- [Work](https://omaralbeik.com/en/work) [Markdown](https://omaralbeik.com/en/work.md)
- [Calligraphy](https://omaralbeik.com/en/calligraphy) [Markdown](https://omaralbeik.com/en/calligraphy.md)
- [Library](https://omaralbeik.com/en/library) [Markdown](https://omaralbeik.com/en/library.md)
- [About](https://omaralbeik.com/en/about) [Markdown](https://omaralbeik.com/en/about.md)
- [Contact](https://omaralbeik.com/en/contact) [Markdown](https://omaralbeik.com/en/contact.md)
- [RSS feed](https://omaralbeik.com/en/rss.xml)
## Arabic
- [Home](https://omaralbeik.com/ar) [Markdown](https://omaralbeik.com/ar.md)
- [Blog](https://omaralbeik.com/ar/blog) [Markdown](https://omaralbeik.com/ar/blog.md)
- [Work](https://omaralbeik.com/ar/work) [Markdown](https://omaralbeik.com/ar/work.md)
- [Calligraphy](https://omaralbeik.com/ar/calligraphy) [Markdown](https://omaralbeik.com/ar/calligraphy.md)
- [Library](https://omaralbeik.com/ar/library) [Markdown](https://omaralbeik.com/ar/library.md)
- [About](https://omaralbeik.com/ar/about) [Markdown](https://omaralbeik.com/ar/about.md)
- [Contact](https://omaralbeik.com/ar/contact) [Markdown](https://omaralbeik.com/ar/contact.md)
- [RSS feed](https://omaralbeik.com/ar/rss.xml)
## Posts (English)
- [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)
- [A typealias can take a type parameter](https://omaralbeik.com/en/blog/generics-in-typealias): Naming a completion handler once and writing Handler at each call site. It gives you readability and a single place to change the signature. It does not give you type safety. (note, 5 December 2019) [Markdown](https://omaralbeik.com/en/blog/generics-in-typealias.md)
- [When to use a safe collection subscript](https://omaralbeik.com/en/blog/safe-collection-subscript): The extension turns an out-of-bounds crash into nil. That is useful when the index comes from outside your own code, and hides a logic error when it does not. (note, 12 July 2019) [Markdown](https://omaralbeik.com/en/blog/safe-collection-subscript.md)
## Posts (Arabic)
- [ربط libVLC مباشرةً من Swift 6](https://omaralbeik.com/ar/blog/binding-libvlc-directly-from-swift-6): احتاج تطبيق IPTV إلى «صورة داخل صورة»، وخطُّ VLCKit الذي كان يقوم عليه لا يملكها. ملاحظات في امتلاك محرّك C بدل استهلاكه — عزلُ المؤشّرات، وأعمارٌ لا يفحصها شيء، ومجموعةُ رقعٍ مرتّبة على شيفرة VLC نفسها، وما كلّفه ذلك. (article, 3 آب 2026) [Markdown](https://omaralbeik.com/ar/blog/binding-libvlc-directly-from-swift-6.md)
- [اجعل لإضافاتك في Swift فضاء أسماء](https://omaralbeik.com/ar/blog/protocol-oriented-extensions): تجاوزت SwifterSwift خمسمئة إضافة فبدأت تصطدم بمكتباتٍ أخرى. فالعضو الذي تضيفه إلى نوعٍ لا تملكه ليس محصورًا في مكتبتك — بل هو عامٌّ في المشروع كلّه، ولا يبلغه اسم وحدتك. (article, 19 شباط 2022) [Markdown](https://omaralbeik.com/ar/blog/protocol-oriented-extensions.md)
- [استخدم SSH بدل HTTPS مع Git](https://omaralbeik.com/ar/blog/enforce-ssh-instead-of-http-for-git-operations): أوقفت GitHub قبول كلمات المرور مع Git عبر HTTPS في آب 2021. وcredential helper يريحك من الكتابة لا من انتهاء الصلاحية؛ أما المفتاح فيريحك منهما معًا، ويطال روابط HTTPS التي لم تكتبها أنت. (note, 23 آب 2021) [Markdown](https://omaralbeik.com/ar/blog/enforce-ssh-instead-of-http-for-git-operations.md)
- [ثلاث مقارنات تفعلها المكتبة القياسية عنك](https://omaralbeik.com/ar/blog/let-the-standard-library-compare): إيجاد أول مطابق، والترتيب بأكثر من مفتاح، وفحص فهرس في مدًى. الصيغة المكتوبة باليد أطول في الثلاث، وأبطأ في اثنتين منها. (note, 16 كانون الأول 2019) [Markdown](https://omaralbeik.com/ar/blog/let-the-standard-library-compare.md)
- [مراقبات الخصائص تعطيك القيمة القديمة والجديدة أصلًا](https://omaralbeik.com/ar/blog/use-property-observers): يأخذ كلٌّ من willSet وdidSet وسيطًا، ولكلٍّ منهما اسم افتراضي، فتسميته صراحةً زيادةٌ في الغالب. أما القواعد المتعلقة بمتى لا تعمل فأهمّ. (note, 6 كانون الأول 2019) [Markdown](https://omaralbeik.com/ar/blog/use-property-observers.md)
- [الـ typealias يقبل وسيطًا نوعيًّا](https://omaralbeik.com/ar/blog/generics-in-typealias): تسمّي معالج الإكمال مرةً واحدة ثم تكتبه Handler في كل موضع. يعطيك ذلك وضوحًا وموضعًا واحدًا تغيّر فيه التوقيع. ولا يعطيك أمانًا نوعيًّا. (note, 5 كانون الأول 2019) [Markdown](https://omaralbeik.com/ar/blog/generics-in-typealias.md)
- [متى تستعمل subscript آمنًا للمجموعات](https://omaralbeik.com/ar/blog/safe-collection-subscript): الإضافة تحوّل انهيار الخروج عن الحدود إلى nil. وهذا مفيد حين يأتي الفهرس من خارج شيفرتك، ويخفي خطأً منطقيًّا حين لا يكون كذلك. (note, 12 تموز 2019) [Markdown](https://omaralbeik.com/ar/blog/safe-collection-subscript.md)
## Open source
- [SwiftVLC](https://github.com/harflabs/SwiftVLC): A Swift wrapper around libVLC for iOS, macOS, tvOS, visionOS, and Mac Catalyst. Built for @Observable, async/await, and SwiftUI rather than the Objective-C and KVO of VLCKit.
- [MarqueeText](https://github.com/harflabs/MarqueeText): A lightweight SwiftUI component that scrolls text only when it overflows its container, with RTL layouts and reduced-motion handling.
- [Drops](https://github.com/omaralbeik/Drops): A micro-framework for the alerts iOS shows itself — the pasteboard copy banner, the Apple Pencil connection notice — with queueing, tap actions, and VoiceOver support.
- [SwifterSwift](https://github.com/SwifterSwift/SwifterSwift): A collection of over 500 native Swift extensions — handy methods, syntactic sugar, and performance improvements for iOS, macOS, tvOS, and watchOS.
## Optional
- [Full text, both languages](https://omaralbeik.com/llms-full.txt): every post, concatenated, newest first.
- [Full text, English only](https://omaralbeik.com/en/llms-full.txt): the same, one language.
- [Full text, Arabic only](https://omaralbeik.com/ar/llms-full.txt): the same, one language.
- [Sitemap](https://omaralbeik.com/sitemap-index.xml): every canonical URL.