Під час оновлення eslint-plugin-unicorn до версії 62 я дізнався про String.raw. Він повертає «сирий» рядок без обробки escape-послідовностей.
Приклад коду:
Як же мені бракувало цього знання під час написання міграцій з регулярними виразами CHECK для PostgreSQL. У цих міграціях Unicorn покращив код додавши String.raw
Приклад коду:
// без String.raw
const file = `C:\\windows\\temp\\myapp-${process.pid}.log`;
const re = `\\d{4}-\\d{2}-\\d{2}`;
// із String.raw
const file = String.raw`C:\windows\temp\myapp-${process.pid}.log`;
const re = String.raw`\d{4}-\d{2}-\d{2}`;
Як же мені бракувало цього знання під час написання міграцій з регулярними виразами CHECK для PostgreSQL. У цих міграціях Unicorn покращив код додавши String.raw
1👍22👀3😨2
Сьогодні мав Zoom-coffee з інженером, який перейшов у формат solopreneur (тобто працює самостійно, поєднуючи ролі інженера, підприємця та продакт-менеджера).
Він зараз шукає оптимальну бізнес-модель і активно автоматизує власні процеси за допомогою агентів, написаних на Python, використовуючи підхід vibe coding.
Знайомий поділився болючою історією: витратив понад 20 годин на пошук і виправлення бага, спричиненого тим, що в одних місцях було написано
Мій особистий висновок із цієї історії: у системному промті варто одразу вказувати, який саме варіант англійської мови (наприклад, USA, що є де-факто стандартом) слід використовувати для документації та коду. Інакше LLM може обрати власний варіант написання, виходячи з контексту.
Він зараз шукає оптимальну бізнес-модель і активно автоматизує власні процеси за допомогою агентів, написаних на Python, використовуючи підхід vibe coding.
Знайомий поділився болючою історією: витратив понад 20 годин на пошук і виправлення бага, спричиненого тим, що в одних місцях було написано
cancelled, а в інших — canceled. Зрештою з’ясувалося, що розбіжність походить ще з документації, де описувався план для coding-агентів. Тепер він проводить рефакторинг, щоб впровадити StrEnum для уніфікації.Мій особистий висновок із цієї історії: у системному промті варто одразу вказувати, який саме варіант англійської мови (наприклад, USA, що є де-факто стандартом) слід використовувати для документації та коду. Інакше LLM може обрати власний варіант написання, виходячи з контексту.
👍28🔥7🤔5❤4😁4
Для тих, хто у Львові — цікавий мітап FRONTEND CASE EVENING від Skelar
🗓 27 листопада, 18:30
💸 Участь безкоштовна (офлайн + онлайн)
📍Львів (офлайн + онлайн)
🔗 ЗАРЕЄСТРУВАТИСЯ
Я б сам сходив, тому короткий огляд доповідей:
🎤 Як ми інтегрували AI у процес код-рев’ю, Ігор Бойко (Liven)
Я теж використовую AI у код-рев’ю — цікаво дізнатись, як це працює в мобільній розробці.
🎤 Коли дизайн-система має стати окремим продуктом, Тетяна Мельник (Preply)
Як CTO я часто думаю, що дизайн-системи — це зайві витрати. Але бізнес і дизайнери хочуть вирізнятися, тож досвід Preply буде цікавим.
🎤 Тема: TBA, Юрій Артюх (Coderiver)
Його доповіді завжди технічно глибокі й натхненні. Що б не розповідав - буде варто почути.
🎤 Як ми побудували кастомний пошуковий двигун на Next.js, Юрій Куцин (RiseGuide)
Я уникаю Next.js через поганий DevExp, тож мені менш цікаво.
І, звісно, нетворкінг на афтерпаті. Офлайн зараз рідкість, але буде стрім та запис
🗓 27 листопада, 18:30
💸 Участь безкоштовна (офлайн + онлайн)
📍Львів (офлайн + онлайн)
🔗 ЗАРЕЄСТРУВАТИСЯ
Я б сам сходив, тому короткий огляд доповідей:
🎤 Як ми інтегрували AI у процес код-рев’ю, Ігор Бойко (Liven)
Я теж використовую AI у код-рев’ю — цікаво дізнатись, як це працює в мобільній розробці.
🎤 Коли дизайн-система має стати окремим продуктом, Тетяна Мельник (Preply)
Як CTO я часто думаю, що дизайн-системи — це зайві витрати. Але бізнес і дизайнери хочуть вирізнятися, тож досвід Preply буде цікавим.
🎤 Тема: TBA, Юрій Артюх (Coderiver)
Його доповіді завжди технічно глибокі й натхненні. Що б не розповідав - буде варто почути.
🎤 Як ми побудували кастомний пошуковий двигун на Next.js, Юрій Куцин (RiseGuide)
Я уникаю Next.js через поганий DevExp, тож мені менш цікаво.
І, звісно, нетворкінг на афтерпаті. Офлайн зараз рідкість, але буде стрім та запис
👍12🔥5
"Я уникаю Next.js через поганий DevExp" - розшифруйте будь ласка.
Next.js — це закрита екосистема, яка обмежує вибір технологій і підходів. Ось чому:
1️⃣ Деплой та залежність від Vercel
Для розгортання Next.js або потрібно використовувати Vercel, або вирішувати безліч додаткових завдань на власному хостингу.
Команда Next.js свідомо блокує покращення DevExp для сторонніх платформ. Я це розумію: вони не хочуть створювати конкурентів своєму основному продукту.
2️⃣ Складне усунення помилок
Дуже важко зрозуміти джерело проблеми: це Server Components, Turbopack, сам Next.js чи сторонній пакет.
3️⃣ Надмір кількох неявних конвенцій
У фреймворку багато прихованих правил (file-system conventions), які не перевіряються лінтерами або самим Next.js.
Було б логічно, якби команда дозволила явно зазначати в конфігурації: «ми дотримуємося цієї конвенції», і отримувати помилки або попередження, якщо її порушено.
4️⃣ Монолітність архітектури
Підхід “build APIs with Next.js” сприяє створенню монолітних застосунків замість модульної архітектури з окремими деплоями, як у монорепозиторіях.
Що я використовую натомість:
React Router v7 — дає більше контролю, прозорості й передбачуваності під час розробки.
👍55❤6🔥3
Рік тому Heroku Open Sources the Twelve-Factor App Definition
Я хотів би сказати, як це круто, що проєкт теперь з OpenSource/OpenContribution, а тому тепер рухається швидше.
Але, на жаль, це не так.
Приклади:
🤔 Питання з використанням файлової системи, яка монтується як Volume для збереження конфігурації, досі не вирішене. А це один зі стандартних підходів у Cloud Native/Kubernetes.
🤔 Чудова ініціатива Twelve-Factor for Generative AI and Agentic Systems за пів року так і не отримала жодного внеску.
Причина, як мені здається, банальна: в учасників немає матеріальної зацікавленості працювати. Тому й немає прогресу.
Я хотів би сказати, як це круто, що проєкт теперь з OpenSource/OpenContribution, а тому тепер рухається швидше.
Але, на жаль, це не так.
Приклади:
🤔 Питання з використанням файлової системи, яка монтується як Volume для збереження конфігурації, досі не вирішене. А це один зі стандартних підходів у Cloud Native/Kubernetes.
🤔 Чудова ініціатива Twelve-Factor for Generative AI and Agentic Systems за пів року так і не отримала жодного внеску.
Причина, як мені здається, банальна: в учасників немає матеріальної зацікавленості працювати. Тому й немає прогресу.
🥱2😐2👍1🤔1
Учора вийшла Gemini 3. Перше враження від Code generation with Gemini 3 Pro (High): краще до чого я маю доступ.
Як це спробувати?
- https://aistudio.google.com/ – vibe coding platform
- https://geminicli.com/ – coding agent that you can run locally from your terminal. Аналог OpenAI Codex CLI, Aider, Claude Code, etc
- https://antigravity.google/ – ще один VS Code з агентом, аналог Cursor/Windsurf/etc. Killer features: Browser Subagent, Artifacts
Як це спробувати?
- https://aistudio.google.com/ – vibe coding platform
- https://geminicli.com/ – coding agent that you can run locally from your terminal. Аналог OpenAI Codex CLI, Aider, Claude Code, etc
- https://antigravity.google/ – ще один VS Code з агентом, аналог Cursor/Windsurf/etc. Killer features: Browser Subagent, Artifacts
👍39
16-17 грудня буду на конференції WAWTECH із доповіддю: “AI Driven Development for the Sane”.
Розповім про здоровий глузд у розробці та чому Vibe Coding варто навчати менеджерів, а не інженерів.
Промокод на знижку 20% для підписників: NODEJSRECIPES20
Розповім про здоровий глузд у розробці та чому Vibe Coding варто навчати менеджерів, а не інженерів.
Промокод на знижку 20% для підписників: NODEJSRECIPES20
❤13🔥8
На співбесідах я завжди кажу щось на зразок:
I’m an expert in TypeScript, Node.js, AWS, but I’m not married to this tech stack and open to new approaches and tools.
Учора ця фраза з мого intro викликала у рекрутера уточнювальне запитання:
“Could you tell me more about this in detail?”
Відверто кажучи, тут я трохи розгубився. У мене не було заздалегідь заготовленої відповіді на таке запитання. Але мене врятувала кмітливість. За кілька годин до цього я заповнював опитувальник Auth0 (той, що на скрині).
Я просто сказав: “Let me share my screen”, відкрив опитувальник і пройшовся по пунктах, показавши, з якими інструментами працював і в яких проєктах. Фактично це був стислий переказ мого CV, але з tech stack focus.
Мораль дуже проста:
1) Ваше резюме, швидше за все, не читали детально.
Його переглянули, але не аналізували. Тому підсвітити ключові моменти ще раз це ефективна стратегія.
2) Коли не знаєш, як краще відповісти – покажи. Це економить час, знімає ризик непорозумінь і допомагає говорити по суті.
❤33👍21😁1🤓1🤷1
Принципи роботи з таймзонами
Ось набір принципів, які в мене сформувалися на практиці роботи з таймзонами:
1. Timezone, як і locale, — це частина UX, тому її обробка має виконуватися на client-side, а не на server-side.
2. Комунікація client ↔ server здійснюється виключно в UTC.
Формат серіалізації — передавати значення як string чи як timestamp — визначає команда FE, але timestamp зазвичай має менший розмір і економніший у передачі.
3. Server-time завжди в UTC. Це гарантується на рівні коду ось так:
4. Дані в базі зберігаються як timestamp without time zone.
5. Якщо бізнес-логіка цього потребує, server зберігає user-timezone у DB та використовує його для розрахунків. Наприклад, користувач запитує: “Покажи мої події за вчора”.
6. Усі обчислення, що залежать від timezone, виконуються на рівні запитів до бази даних. Для цього використовуємо SQL-запити з AT TIME ZONE
Ось набір принципів, які в мене сформувалися на практиці роботи з таймзонами:
1. Timezone, як і locale, — це частина UX, тому її обробка має виконуватися на client-side, а не на server-side.
2. Комунікація client ↔ server здійснюється виключно в UTC.
Формат серіалізації — передавати значення як string чи як timestamp — визначає команда FE, але timestamp зазвичай має менший розмір і економніший у передачі.
3. Server-time завжди в UTC. Це гарантується на рівні коду ось так:
process.env.TZ = 'UTC'
4. Дані в базі зберігаються як timestamp without time zone.
5. Якщо бізнес-логіка цього потребує, server зберігає user-timezone у DB та використовує його для розрахунків. Наприклад, користувач запитує: “Покажи мої події за вчора”.
6. Усі обчислення, що залежать від timezone, виконуються на рівні запитів до бази даних. Для цього використовуємо SQL-запити з AT TIME ZONE
👍88❤13
Forwarded from DOU
⚡ Стартувало зимове зарплатне опитування DOU і рейтинг мов програмування
Чекаємо всіх айтівців — тих, хто живе в Україні та за кордоном. І спеціалістів усіх напрямів: розробників, QA, менеджерів, DevOps, маркетологів, сапорт, сейлз, HR тощо. Гайда до анкети! На це потрібно не більше 10 хвилин: https://dou.ua/goto/HHph
Чекаємо всіх айтівців — тих, хто живе в Україні та за кордоном. І спеціалістів усіх напрямів: розробників, QA, менеджерів, DevOps, маркетологів, сапорт, сейлз, HR тощо. Гайда до анкети! На це потрібно не більше 10 хвилин: https://dou.ua/goto/HHph
❤3🔥1😁1
Адвент-календар для розробників — це щоденний грудневий дроп корисних інсайтів і челенджів для прокачки навичок.
Цього року в нас є:
🎄https://adventofcode.com/ – завдання в стилі LeetCode. Розв’язувати можна на чому завгодно - JavaScript, Python, etc
🎄https://tryhackme.com/adventofcyber25 – cyber security brand-new beginner-friendly challenges
На жаль, цього року немає адвент-календаря від typehero.dev. Ось Advent Of TS за 2024 – https://www.adventofts.com/events/2024
Цього року в нас є:
🎄https://adventofcode.com/ – завдання в стилі LeetCode. Розв’язувати можна на чому завгодно - JavaScript, Python, etc
🎄https://tryhackme.com/adventofcyber25 – cyber security brand-new beginner-friendly challenges
На жаль, цього року немає адвент-календаря від typehero.dev. Ось Advent Of TS за 2024 – https://www.adventofts.com/events/2024
🔥16👍4
Forwarded from GDG Cloud Kyiv (Nikita)
This media is not supported in your browser
VIEW IN TELEGRAM
👍17😁1
Декілька оновлень щодо конференції WAWTECH
🙋♀️🙋🙋♂️Організатори відкрили форму для волонтерів. Половину часу допомагаешь з організацією, іншу половину тусуешся на конференції. Більше деталей тут
Щодо моїх виступів, то їх буде два:
🎤 17-го числа я говоритиму про AI.
🎤 16-го ж проведу live-coding з генерації коду без AI.
Промокод на знижку 20% для підписників: NODEJSRECIPES20
🙋♀️🙋🙋♂️Організатори відкрили форму для волонтерів. Половину часу допомагаешь з організацією, іншу половину тусуешся на конференції. Більше деталей тут
Щодо моїх виступів, то їх буде два:
🎤 17-го числа я говоритиму про AI.
🎤 16-го ж проведу live-coding з генерації коду без AI.
Промокод на знижку 20% для підписників: NODEJSRECIPES20
👍7
Рівно рік тому вийшла книга:
Al Engineering: Building Applications with Foundation Models
За цей час вона не втратила актуальності. Раджу прочитати, щоб триматися на ринку.
Al Engineering: Building Applications with Foundation Models
За цей час вона не втратила актуальності. Раджу прочитати, щоб триматися на ринку.
👍35❤9🥱2
Cьогодні останній день конференції AWS re:Invent 2025.
Підсумки щодо оголошених новинок можна прочитати в блозі.
Також можна послухати AWS re:Invent Recap від @AWS_UG_Kyiv.
Онлайн-мітап відбудеться 16 грудня. У програмі 4 доповіді. Деталі та реєстрація — тут.
Підсумки щодо оголошених новинок можна прочитати в блозі.
Також можна послухати AWS re:Invent Recap від @AWS_UG_Kyiv.
Онлайн-мітап відбудеться 16 грудня. У програмі 4 доповіді. Деталі та реєстрація — тут.
👍4
📗📚📘Цікаві новина зі світу книжок:
Що сталося?
Юристи O’Reilly повідомили Amir Shevat автору Designing Bots, що компанія Anthropic використала його книжку для тренування AI-моделей і вже погодилася виплатити кілька тисяч доларів компенсації.
Чому це важливо?
Це формує прецедент оплати за використання авторського контенту, але водночас виглядає як “разове легальне піратство”: одноразова виплата — а цінність для моделі зберігається назавжди. Фактично маємо новий тип “видавничого контракту”, тільки без роялті й довгострокових прав автора.
А до чого тут розробка?
Код (включно з Open Source) масово використовується для тренування AI. Законність залежить від ліцензії.
Шкода, що GitHub/GitLab не діють так само проактивно, як O’Reilly, бо самі тренують свої моделі на базі відкритого коду.
Що робити нам?
1️⃣ Розібратися з актуальними типами ліцензій та їхніми обмеженнями.
2️⃣ Додати в README свого open-source проєкту явну заборону чи дозвіл.
Приклад
Наостанок нагадаю, що у комерційних проєктах в package.json треба робити
Що сталося?
Юристи O’Reilly повідомили Amir Shevat автору Designing Bots, що компанія Anthropic використала його книжку для тренування AI-моделей і вже погодилася виплатити кілька тисяч доларів компенсації.
Чому це важливо?
Це формує прецедент оплати за використання авторського контенту, але водночас виглядає як “разове легальне піратство”: одноразова виплата — а цінність для моделі зберігається назавжди. Фактично маємо новий тип “видавничого контракту”, тільки без роялті й довгострокових прав автора.
А до чого тут розробка?
Код (включно з Open Source) масово використовується для тренування AI. Законність залежить від ліцензії.
Шкода, що GitHub/GitLab не діють так само проактивно, як O’Reilly, бо самі тренують свої моделі на базі відкритого коду.
Що робити нам?
1️⃣ Розібратися з актуальними типами ліцензій та їхніми обмеженнями.
2️⃣ Додати в README свого open-source проєкту явну заборону чи дозвіл.
Приклад
You are prohibited from using this repository, its source code, documentation or artifacts to train AI models or datasets.
Наостанок нагадаю, що у комерційних проєктах в package.json треба робити
"license": "UNLICENSED"
❤20👍5