
Senior Desktop Engineer (Electron.js)
Primary stack
Nice to have's
Job description
Senior Desktop Engineer (Electron.js)
Про посаду
У Ruby Labs ми шукаємо Senior Desktop Engineer, щоб взяти на себе відповідальність за новий кросплатформний десктопний продукт від першого коміту до випуску. Це роль з високим рівнем відповідальності і незвично глибоким системним компонентом. Додаток не є обгорнутим веб-додатком: він захоплює аудіо з системи та мікрофону в реальному часі, рендерить завжди видимий оверлей через робочий простір користувача, реєструє глобальні ярлики і інтегрується з операційною системою на рівні, який вимагає нативного коду як на macOS, так і на Windows.
Наша архітектура - це Electron для додаткового та UI шару, з нативними модулями і допоміжними процесами на Swift і C++, де це вимагає платформа. Ви будете відповідати за цей кордон - вирішувати, що належить до TypeScript, що належить до нативного коду, і робити так, щоб ці дві половини працювали як надійний продукт.
Ви також будете відповідати за все, що відбувається після створення: підпис коду, нотаризація, права, онбординг дозволів, автоматичне оновлення і звітування про крахи. Для цього продукту це не післядумка; це значна частка інженерної роботи, і якщо зробити це неправильно, користувачі ніколи не запустять додаток.
Ви будете діяти як старший технічний голос для десктопної платформи у вашій команді, встановлюючи інженерний стандарт для платформи.
Обов'язки
Якість десктопного додатку та інженерії
- Взяти на себе відповідальність за архітектуру Electron від початку до кінця - основний, рендерер і допоміжні процеси, дизайн IPC, ізоляція контексту, життєвий цикл процесів - і доставити основні функції в узгоджені терміни.
- Створити прозорі, безрамкові, завжди видимі вікна оверлею, які правильно поводяться в повноекранних просторах, на кількох дисплеях і змішаних налаштуваннях DPI, поряд з глобальними ярликами, наявністю в треї і низькою латентністю UI при постійному фоновому навантаженні.
- Створити чистий абстракційний плагін в TypeScript, щоб реалізації для macOS і Windows залишались ізольованими і незалежно тестуваними, і написати ідіоматичний код на Swift і C++ в нативному шарі.
- Зберігати продукт надійним: оборонне поводження з нестабільними API платформи, тести і огляди коду, продуктивність, пам'ять і бюджет акумулятора, і виправлення висновків безпечного огляду та тестування на проникнення в межах узгоджених SLA серйозності.
Інтеграція з нативною платформою
- Створити і підтримувати нативний шар: додатки Node (N-API / node-addon-api) і допоміжні процеси поза процесом на Swift і C++.
- Реалізувати збір аудіо в реальному часі - Core Audio process taps і ScreenCaptureKit на macOS, WASAPI loopback на Windows - включаючи обробку зміни пристрою, домовленість про формат і ласкаве відновлення від збоїв на рівні драйвера.
- Інтегруватися з API доступності (AXUIElement) на macOS і UI Automation на Windows для надійного зчитування контексту додатку.
- Взяти на себе протокол IPC і життєвий цикл між Electron і нативними допоміжними програмами, і зберігати додаток робочим, коли Apple і Microsoft змінюють свої платформи.
Дистрибуція, дозволи та надійність випуску
- Взяти на себе підпис коду і нотаризацію на macOS - загартований час виконання, права, вкладене підписування бінарних файлів, профілі надання дозволів - і підпис Authenticode, репутацію SmartScreen і помилкові позитивні результати антивірусу на Windows.
- Створити потік онбордингу дозволів - мікрофон, системне аудіо, запис екрану, доступність - так, щоб рівень надання дозволів залишався високим, а стани невдач були відновлюваними.
- Створити і підтримувати випусковий конвеєр: CI матричні збірки, підпис з CI з сертифікатами, підтримуваними HSM, автоматичне оновлення, поетапне розгортання і зворотне відновлення.
- Взяти на себе звітування про крахи і телеметрію виробництва для десктопного клієнта, і діяти відповідно до того, що це говорить.
Вимоги
- 6+ років досвіду в програмуванні, включаючи виробництво на TypeScript/Node.js.
- 3+ роки створення і випуску додатків Electron для реальних користувачів кінцевих користувачів - не внутрішні інструменти або докази концепції.
- Практичний досвід нативного розробки для macOS на Swift і/або Objective-C, з AppKit і принаймні однією системною рамкою, такою як Core Audio, AVFoundation, ScreenCaptureKit, або API доступності.
- Практичний досвід написання нативних додатків Node (N-API / node-addon-api) або упаковки і комунікації з нативними допоміжними програмами поза процесом.
- Доведений досвід з підписом коду macOS, нотаризацією, правами і моделлю дозволів TCC - ви займалися налагодженням відхиленої нотаризації і знаєте, як читати журнал.
- Робочий досвід з платформою Windows для десктопу: Win32 API, підпис Authenticode, і практичні реалії репутації SmartScreen і антивірусу.
- Міцне розуміння багатопроцесної архітектури, IPC, і налагодження проблем, які відтворюються лише на машині користувача.
Буде плюсом
- Піплайн реального часу аудіо - буферизація, ресемплінг, змішування кількох джерел або потокове відтворення до сервісів розпізнавання мови.
- Підпис з CI з апаратно-підтримуваними сертифікатами (Azure Key Vault, DigiCert KeyLocker або подібними), і білий список антивірусу або нарощування репутації SmartScreen для нового продукту.
- Інфраструктура автоматичного оновлення, така як Squirrel, electron-updater або Sparkle, включаючи поетапне розгортання.
- Звітування про крахи і символізація для нативного коду (Crashpad, Sentry або подібні).
- Попередній досвід випуску споживчого десктопного продукту в значущому масштабі.
Місцезнаходження
Ruby Labs працює в часовому поясі CET (Central European Time). Кандидати з будь-якої країни можуть претендувати на посаду, якщо вони знаходяться приблизно в межах ± 4 годин від CET. Це забезпечує оптимальну співпрацю і комунікацію під час робочого часу.
Ми пропонуємо
- Середовище роботи в режимі віддаленого доступу: Насолоджуйтеся свободою працювати з будь-якого місця, в будь-який час, сприяючи здоровій робочій ланці.
- Необмежена відпустка: Насолоджуйтеся необмеженою оплаченою відпусткою, щоб відновити сили і ставити першочерговим своє здоров'я, без урахування днів.
- Оплачені національні свята: Святкуйте і відпочивайте в національні свята з оплаченою відпусткою, щоб відновити сили і відпочити.
- Комп'ютер, наданий компанією: Досвідчуйте безперешкодну продуктивність з першокласними MacBook, наданими всім працівникам, які цього потребують.
- Гнучна угода про незалежного виконавця: Розкрийте переваги гнучкості, автономності та можливостей для підприємців. Скористайтеся податковими перевагами, можливостями для мережування, зменшенням обов'язків працедавця і свободою працювати з будь-якого місця. Дізнайтеся більше про це тут: https://docs.google.com/document/d/1nkrN76JlZkbKj9WSOhlT1_mni_CZeDkHdwfIjPXVwvk/preview?tab=t.0#heading=h.ndsdl4wapxtt
Про компанію
Ruby Labs є провідною технологічною компанією, яка створює і експлуатує інноваційні споживчі продукти. Ми пропонуємо різноманітний спектр можливостей у сфері охорони здоров'я, освіти та розваг. Наші інноваційні команди ведуть майбутнє споживчих продуктів, і ми завжди шукаємо захоплених людей, які б приєднались до нас. Дізнайтеся більше про нашу історію за посиланням: https://rubylabs.com/about-us/
Процес співбесіди
Після подання заявки ми проводимо ретельний відбір, який зазвичай займає 3-5 днів, але іноді може зайняти більше через обсяг отриманих заявок. Якщо ми бачимо потенційного кандидата, ми продовжуємо наступними кроками:
- Скринінг рекрутером (40 хвилин)
- Технічна співбесіда (60 хвилин)
- Фінальна співбесіда (40 хвилин)
Життя в Ruby Labs
У Ruby Labs ми рухаємось швидко, ставимо високі цілі і очікуємо того ж від нашої команди. Ми тут не для того, щоб грати в маленькі ігри - ми тут, щоб будувати, зростати і перемагати. Це означає, що ми шукаємо людей, які є амбіційними, мотивованими і готовими давати все найкраще кожен день.
Це місце для людей, які процвітають під тиском, сприймають виклики і бачать можливості в кожній перешкоді. Якщо ви жадаєте досягнень, мотивовані впливом і хочете рости з швидкістю власної амбіції, Ruby Labs пропонує платформу, щоб це стало можливим.
Тут зусилля відповідають винагороді. Ми визнаємо тих, хто йде на все і досягає результатів, і створюємо простір для людей, які хочуть більше - більше відповідальності, більше зростання і більше успіху.
© Ruby Labs. This job description was sourced from the employer's public career page. TheJob is not the employer — we index the posting and route candidates to the source. All content rights and hiring decisions belong to the employer.
Ruby Labs creates cutting-edge consumer products that innovate across health, education, and entertainment, designed to enhance lives and make a positive impact.
More at Ruby Labs
All 27 roles
Lead Creative Producer
Ruby Labs · Turkey +4

Accounting Automation Engineer
Ruby Labs

Senior Growth Product Manager
Ruby Labs · Albania +3

Lead Data Analyst
Ruby Labs · Ukraine