За життя

When we first shipped Tlumach 1.0 last November, the goal was simple: give .NET developers a clean, type-safe way to handle translations without the boilerplate that usually comes with localization. Six months later, we're releasing version 1.6 — and the project has grown into something much larger than a library.

Tlumach is now an ecosystem. Starting with version 1.5, we introduced the Tlumach.Writers package — a full set of writer classes mirroring every parser we support. JSON, ARB, INI, TOML, CSV, TSV, ResX, XLIFF, and now Apple String Catalog can all be read and written by Tlumach. This opens the door to conversion tools, export/import pipelines, and the foundation for Tlumach Tools — a dedicated toolset aimed at translators and localization managers, not just developers.

Version 1.5 also brought a number of quality-of-life improvements to TranslationManager: a static list of all active manager instances, new overloads for loading translations by culture, and a dedicated LoadDefaultTranslation method tailored for file conversion scenarios. These additions make it much easier to build tooling on top of Tlumach — exactly what we needed as we expanded beyond the core library.

The headline feature of version 1.6, however, is the arrival of IDE extensions for Visual Studio and VS Code. These extensions let you trigger the Tlumach Generator directly from your IDE — without needing to build your project first. This is a significant productivity win: you can regenerate your strongly-typed translation classes the moment you update a translation file, with no extra build step. The extensions are designed for developers who live in their IDE and want Tlumach to stay out of the way.


Even more powerful is the Go To Definition integration in the Visual Studio extension. When you're working with generated translation keys in your C# code, you can press F12 (or Ctrl+Click) on a key and jump directly to the original translation entry in your default translation file. If you've ever had to hunt through a JSON or RESX file to find where a particular string lives, you'll appreciate how much time this saves. This brings Tlumach's developer experience closer to what you'd expect from first-class language tooling.


Also in 1.6: the Roslyn Generator now writes the source text value into XML documentation comments on each generated constant. Hover over a translation key in your IDE and you'll see the actual translation text in the tooltip — no more switching to the translation file just to check what a key says. For teams with long or non-obvious key names, this alone is worth the upgrade.


Rounding out 1.6 is support for the Apple String Catalog format (.xcstrings), making Tlumach a viable choice for cross-platform projects that target Apple platforms alongside .NET. Combined with the existing XLIFF support added in 1.5, Tlumach can now speak the file formats used by virtually every major platform's localization pipeline.


Looking back at the last six months, the shape of Tlumach has clarified considerably. The core library handles runtime translation management and type-safe code generation. The Writers package enables tooling and conversion. The IDE extensions bring the workflow into the editor. And new file formats keep expanding the range of projects Tlumach can serve. This is what a maturing localization library looks like — not just more features, but a coherent set of layers that work together.


Version 1.6 is available now on NuGet as AlliedBits.Tlumach. The Visual Studio and VS Code extensions are available in their respective marketplaces and can be installed from the corresponding IDE or via the above links. As always, the changelog has the full details, and we welcome feedback and contributions on GitHub.
Оскільки microsoft оголосив відмову від flat fee в планах CoPilot, вангую, що Claude скоро зробить те саме (а ChatGPT теж має проблеми з фінансами, тому й вони прикручуватимуть гайки). І все більше людей переходитимуть на локальні рішення. Отже, із залізом будуть проблеми.

Вирішив бути першим та, поки що для експериментів, замовив собі потужнішу відеокарту. Але не RTX 5090, а Radeon Turbo AI Pro R9700 (останній більш заточений на AI, тоді як перший - це ігрова відеокарта). Щось мені підказує, що їхня ціна піде значно вгору, тоді як загальноігрові RTX 5090 коштують вже в 2.5 рази дорожче (і за межами здорового глузду). Зауважу також, що нові поробки ябла працюють на рівні моєї робочої станції 4-річної давнини, тому сенсу платити за щось яблу немає геть.

Водночас, до відеокарти потрібен UPS, щоб та відеокарта не згоріла. І тут сюрприз. ChatGPT мені розповів, що не кожен UPS годиться. В мене був 900-ватний, але не такий як треба, і той склеїв ласти та був сьогодні відправлений в ремонт. Якщо не полагодять, то потрібен новий. Почав розбиратися щодо нових. Мені було сказано, що потрібен line-interactive (це коли струм йде з мережі, а не в батарею і назад з батареї) із Pure sine wave (а не simulated sine wave). А от із цим проблеми - таких моделей не дуже багато. І оскільки мені потрібен ще й потужний (900-1000 ватт мінімум), то єдина пристойна модель за адеватні гроші, це CyberPower CP1600EPFCLCD . І от їх немає в Словаччині взагалі. Закінчилися. Підозрюю, що як я кинувся купувати відеокарту, люди вже раніше розмели ці UPS'и. Є CyberPower CP1350EPFCLCD, але він слабший (850 Вт проти 1000 Вт), і мені не вистачить.  

Тому якщо ви плануєте апгрейд заліза, а зокрема відеокарти, орієнтуйтеся на ці вимоги та моделі.
Розрізнені нотатки для того, щоб ними ділитися.

Отже, ми почали активно використовувати Claude і зокрема Claude Code. Claude Code має доступ до файлової системи, а сам Claude - ні. Але Claude Code - поганий чатбот (він для іншого зроблений). І от мені знадобилося натравити Claude Chat на локальний проєкт. Причому не на один файл, а на каталог з підкаталогами.

В Claude Desktop є плагін filesystem, але в мене він відмовився працювати - запускається і вилітає. Я спитав в самого claude'а причину, надавши логи, але той нічого корисного не повідомив (те, що він запропонував, не допомогло). Тоді я спитав те саме в ChatGPT. І воно мені дало підказку - завести зовнішній плагін для доступу.

0) встановити node.js

1) встановити плагін:

npm install -g @modelcontextprotocol/server-filesystem

2) знайти файл %APPDATA%\Claude\claude_desktop_config.json та додати в нього (в кореневий об'єкт) таке:

  "mcpServers": {
    "my-files": {
      "command": "C:\\Program Files\\nodejs\\node.exe",
      "args": [
        "%USERPROFILE%\\AppData\\Roaming\\npm\\node_modules\\@modelcontextprotocol\\server-filesystem\\dist\\index.js",
        "%USERPROFILE%\\Documents",
        "C:\\Projects"
      ]
    }
  }


command - це шлях до локального nodejs. В мене він чомусь в Program Files (x86) опинився.
 "%USERPROFILE%\\Documents",
        "C:\\Projects"

це шляхи, до яких цьому серверу надається доступ. Це в мене мої шляхи, їх слід поміняти на ваші. Не забудьте при заміні, що backslash подвоюється (escaped encoding).

Після цього слід перезапустити claude, щоб він перечитав налаштування.
І далі цей my-files з'явиться серед конекторів.  
Під час листопадного shoopping frenzy купив собі мишу Logitech MX Master 4, яка тоді лише з'явилася. І це виявилося досить вдале придбання.

Миша (як і монітор, клавіатура та крісло) - це річ, з якою я проводжу більшу частину життя, тому вона має не лише задовольняти потреби, а й піднімати настрій.

Попередня миша в мене Logitech MX Master 2S, куплена ще в 2018-му році. Вона й досі працює (я завіз її на другу квартиру), але в неї є певні недоліки в порівнянні з MX 4.

В чому переваги нової миші:
-  додали одну кнопку та переставили положення бічних кнопок - в MX 2S вони одна над одною, а в MX 4 - одна за одною (горизонтально). Різниця суб'єктивна, але в моєму випадку грає роль.
- перейшли (ще в MX 3) на USB-C для заряджання.

Заряджання - проблема вторинна, оскільки в мене кабелі моделі "змій горинич" (три різні роз'єми на кінці, причому вони одночасно працюють на заряджання). А от додаткова кнопка дозволила мені полегшити роботу в умовах кота, що розлігся на колінах і заблокував ліву руку, поклавши на неї свою лапу й голову. Отже, на миші ми маємо кнопки Action Center (паралельна робочій поверхні), і на лівому боці Gestures + ще дві кнопки. На Mx2 горизонтальною є Gestures, а Action Center відсутня. Action Center використовується щоб викликати кільцеве меню на екрані. В цьому меню є 8 команд, що налаштовуються. Кнопка gestures дає п'ять операцій (натиснення та 4 * натиснення+рух), що виконуються безпосередньо, без жодних меню. Дві додаткові кнопки - в мене на них повішені Enter та Escape. Це дозволяє швидко закривати діалогові та певні інші вікна, не рухаючи рукою, а лише натискаючи кнопки пальцями (зручно, коли кіт блокує праву руку).  

Єдиний недолік конструкції - миша йде з власним Logi Bolt адаптером, і вона не сумісна по адаптерах з клавіатурою Logitech K860 . Тобто клавіатура не працює через адаптер миші, а миша - через адаптер клавіатури (а MX2 працює нормально). Чому би не використовувати Bluetooth? Тому що при активному використанні bluetooth стек глючить, і миша або клавіатура (або й обидва) можуть відвалитися, що унеможливить навіть вимикання комп'ютера. Тепер чекаю на нову ітерацію ергономічної клавіатури.
Вже більше десятка років існує технологія та продукти (теги та картки), щоб знаходити речі, які зникли.  Мені до таких раніше інтересу не було, але після пригоди з ключами замислився над тим, що не завадило би причепити теги на деякі речі та покласти картку до документів.

Про ябловий AirTag чув мабуть багато хто, але вони не були першими (ну, як і завжди, в принципі). Ще є пристрої від самсунгу та мотороли, та декілька незалежних гравців. Першими були Tile, другими Chipolo, всі інші - пізніші.

Ця технологія спирається на bluetooth та вимагає наявності додатку або вбудованої підтримки на мобільному пристрої. Ідея в тому, що якщо прилад випадає з видимості, то телефон про це сигналізує (я не певен, чи прилад сигналізуватиме теж - це, мабуть, залежить від пристрою). А також інші пристрої, що підтримують технологію, бачать тег навколо себе, повідомляють про це на сервер, і так власник може знайти втрачений тег (і, сподіваємося, загублену річ, до якої тег причеплено). І Apple і Google мають свої мережі для відслідковування "своїх" тегів, сторонні виробники або працюють через власну мережу (Tile) або через мережі ябла з гуглем. В випадку "своєї мережі", тег бачитимуть ті мобільні пристрої, які матимуть додаток цієї мережі (того ж Tile'а).


Я пішов вибирати між тегами та картками Tile, PebbleBee, Chipolo. Мені не дуже подобається ідея власної мережі Tile, а крім того, в них ще є підписки (хоча є й безкоштовний план), тому я вибирав між  PebbleBee та Chipolo. Останні дві працюють з мережами ябла та андроіда.

Chipolo роблять словенці, Pebblebee - не знаю. Це було одним з ключових факторів. Також, в chipolo в тегів більший вибір кольорів, що важливо (сірий тег - це не актуально, а затягнути його плівкою не вийде, бо він треться весь час, і жодна плівка не витримає). Картки в них обох чорні, але це неважливо - картка завжди схована.

З недоліків Cihpolo - в них немає QR кодів (наліпки з QR кодом, які можна наклеїти кудись, щоб якщо людина знайде цей предмет, то за QR кодом могла би повідомити власника), а також батарейка живе 6 місяців проти 12-18 в Pebblebee. Ще в chipolo картка на чверть товща за Pebblebee. Також в chipolo немає світлової індикації на приладах, але не впевнений, що це так важливо, якщо прилади видають дуже гучний звук, за яким їх можна знайти і так.  

Ціна приблизно однакова - Pebblebee може бути трохи дешевшим, але гадаю, що там залежить від того, скільки чого ви берете (якийсь набір буде дешевшим в одного, інший набір - в іншого).

Технологічно прилади схожі, і детально порівняти можна хіба що маючи обидва в руках.

Поки що я замовив Chipolo. Спостерігаємо.

Ще два неочевидні використання тегів:
- відстеження, де знаходяться члени родини (актуально для дітей)
- теги для тварин, якщо ті раптом загубляться. Хоча в Братиславі це менш актуально - собаки тут з металевими жетонами + коти і собаки обов'язково чіпуються та заносяться в базу.
Вчора виносив сміття (паперове) і потім пішли гуляти. Коли через пару годин повернулися, з'ясувалося, що ключів в кишені немає. В мене там лежать окремо ключі та окремо пульт від гаражних воріт + чіп від сміттєвого блока (там двері на чіпі, як багато в кого тут). Ну от пульт є, а ключів немає.

Це було кепсько - зайвих ключів в нас немає, і довелося би займатися створенням дублікатів, а заодно заміною замку в квартирі.

Почав думати, де ключі могли подітися, оскільки я дуже уважний, і випасти аби де вони навряд чи могли. Коли я викидав сміття, ключі та пульт були затиснені в руці, і виходячи від контейнера я їх клав в кишеню. Ба більше, якби я не поклав в кишеню ключі, то кладучи туди пульт, я помітив би відсутність ключів (кишеня маленька, і ключі та пульт там слід розміщувати так, щоб ключі не натисли кнопку пульта, що іноді трапляється).

Так чи інакше, ми переглянули територію біля будинку, де йшли, але далі шукати сенсу не було - ми ходили в ліс, і якщо ключі зникли там, то шукати їх годі. Тоді вирішили залізти ще в контейнер для паперу. На дні контейнер ключі й знайшлися. Чи могли вони випасти з руки? Могли, але це малоймовірно (див. вище). Я чомусь більше думаю, що матриця їх туди підкинула, щоб я їх все-таки знайшов.

А це призвело мене до придбання купки тегів, про які буде наступний допис.
Я трохи описував епопею з MS Store тут , і вона ще не завершилася. Але ABCalc Plus вони вже опублікували, і його можна придбати на сторінці ABCalc Plus в Microsoft Store.
Моїм другим pet project-ом (першим є nstamp) є калькулятор. Це є відтворення сучасними технологіями продукту EldoS AnyCalc, який ми продавали 25 років тому, поки його автор не прогуляв вихідний код. Прошу відвідати сторінку: ABCalc.  

Вигода калькулятора в тому, що він не просто калькулятор, а калькулятор складних виразів аж до міні-програм з можливістю створення власної бібліотеки функцій. Підтримуються умови, цикли, змінні, та функції.

Але цей допис не про вигоди, а про перешкоди. 25 років тому все було просто - створив додаток, поклав на веб-сторінку, розкидав по сторонніх сайтах, і маєш копійку. Зараз же можливість з нуля зайти в цей бізнес практично відсутня.

Створити додаток для Linux не є проблемою. А от з Windows та macOS проблеми великі. Насамперед Apple та Microsoft викручують руки розробникам, щоб ті публікували додатки через їхні Store'и. Як - наприклад тим, що додаток не зі Store'у складно завантажити і ще складніше встановити. Браузер видає купу попереджень та приховує шляхи для встановлення так, що пересічний користувач просто не знайде наявні в UI механізми для встановлення додатку. Також, при встановленні, якщо додаток не підписано, користувач отримує чергове попередження. Все для блага користувача, безумовно, але є нюанс (с) - сертифікат для підписування ще 10 років тому коштував біля $100, і придбати його можна було при вказанні базових даних що відповідали дійсності (наприклад, ім'я компанії, домен, та електронна пошта збігаються - все ок, отримуй). Зараз сертифікат коштує більше ніж $500 на рік, CA компаній лишилося три штуки (олігополія), а перевірки клієнтів в них виконують недоумки з недорозвинутих країн на аутсорсі, які не розуміють взагалі як працює бізнес в розвинутих країнах.

Але це ще початок :). Наступний крок в нас Microsoft Store. Додатки туди приймаються в певних запакованих форматах, і розібратися з процедурою досить складно. Зокрема, рекомендується протестувати додаток за допомогою Cert Kit, який є частиною Windows SDK. І все би ок, але він просто не працює навіть коли Windows SDK встановлюється з нуля. Довелося видалити якусь там DLL за порадою ChatGPT щоб запрацювало.

Далі гірше. Щоб засабмітити додаток в Microsoft Store, слід використовувати individual account (Work account AKA Entra ID tenant *не пускають*). Але якщо використати individual account, Partner Center не працює як слід і не дає власникові account-а всіх прав, вимагаючи Entra ID tenant. Якого немає, тому що Microsoft явним чином не дозволила його використати. Підтримка на питання "мені не дають всіх прав" відповідає "ми перевірили і дійсно, ви не можете мати всі права без tenant'а". Підтримка з тієї ж недорозвинутої країни, якщо що.

В Apple я восени місяць вирішував (схожим чином) схожу ж проблему, коли я не міг активувати обліковий запис не підписавши певний agreement, а посилання на agreement в мене на веб-сторінці не з'являлося. Після 4-го сапортера з тієї ж країни (ну ви зрозуміли ...) прийшов якийсь співробітник з європейським іменем і цю проблему вирішив на боці ябла.

Далі в мене ще пакування та сабміт в Apple Store та незрозуміло що з Microsoft Store. Спостерігаємо ...  
Я працюю у віртуальних машинах, тримаючи фізичні майже пустими з т.з. файлів та програм. Це дозволяє переносити роботу (віртуальні машини) між комп'ютерами - наприклад, брати ноутбук в дорогу, працюючи вдома на десктопній робочій станції. Також, зручно робити резервні копії віртуальних машин, які мене вже разів зо п'ять рятували.

Головна проблема з бекапами була в тому, що копіювання віртуальної машини розміром 400GB забирало кілька годин. А таких машин декілька (загалом чотири, але решта меншого розміру).

Коли я випадково побачив в магазині нові зовнішні SSD, я подумав, що мені все одно потрібен новий, бо на старі диски віртуальні машини не влазять у двох копіях. І я собі купив новий на 2 TB. Взяв якомога швидший, оскільки розміри віртуальних машин ростуть, а копіювати бекапи всю ніч не завжди зручно. Взяв Transcend ESD410C, але там ще були якісь Samsung'и з аналогічними параметрами.

І виявилося, що сучасні зовнішні диски аби не швидші за вбудовані! 450 GB віртуальна машина копіюється на такий диск лише за 15 хвилин - десь в 15 разів швидше, ніж на старий або через мережу на ноутбук (ну тут зрозуміло - мережа, навіть гігабітна, дає значно меншу швидкість, ніж нові SSD із USB 3.2).  

Тому всім раджу не лінуватися, а для бекапів брати нові свіжі SSD.  
As I described earlier, I played with different options for [not] delivering sounds to the ears at night. I tried various solutions, all of which have drawbacks. In particular, the Soundcore Sport X20 are uncomfortable if you lie on your side, and their advantage in normal conditions (the earloop) is annoying at night.

Then I waited for a discount and bought myself special headphones for sleeping, the SoundCore Sleep A30, for the night. Unlike the previous ones (A20), they have an optional active noise cancellation (ANC). But it turned out that they are really made for sleeping (who would have thought!).

The Sleep A30 have a number of advantages over the previously reviewed alternatives:

Читати далі...

  • Архів

    «   Травень 2026   »
    Пн Вт Ср Чт Пт Сб Нд
            1 2 3
    4 5 6 7 8 9 10
    11 12 13 14 15 16 17
    18 19 20 21 22 23 24
    25 26 27 28 29 30 31