Не знайомий з паном Євгенієм, але дуже класно і зрозуміло пише про повсякденні важливі речі, ось тут - приклад ситуації XY, яка, буває виникає при вирішенні робочих питань
Forwarded from Євгеній Гизила
XY problem
Час від часу зустрічаю ситуацію, коли хтось приходить з питанням як щось зробити без пояснення того яку проблему він чи вона намагається вирішити. Після двох-трьох уточнючих питань з’ясовується, що початкову проблему можна вирішити кардинально іншим шляхом. В такого типу питань є навіть загальноприйнята назва XY Problem:
The XY problem is asking about your attempted solution rather than your actual problem
Помічати такі питання за собою і за іншими, це одна з soft-skill навичок, яку можна легко опануватине виходячи з дому.
Далі вигаданий приклад діалогу з таким питанням:
— як зробити декілька паралельних запитів в react-query?
— […поснює як це зробити…]. А для чого тобі це?
— у мене є API, щоб дістати інфо про користувача і мені треба для кожного повідомлення на форумі показати телефон автора цього повідомлення.
— давай краще в API, яке повертає список повідомлень, додамо потрібні тобі поля і тоді тобі взагалі не треба буде робити паралельні запити. Тим паче, що ми вже так повертаємо імʼя автора.
— точно! піду зроблю це на бекенді!
Час від часу зустрічаю ситуацію, коли хтось приходить з питанням як щось зробити без пояснення того яку проблему він чи вона намагається вирішити. Після двох-трьох уточнючих питань з’ясовується, що початкову проблему можна вирішити кардинально іншим шляхом. В такого типу питань є навіть загальноприйнята назва XY Problem:
The XY problem is asking about your attempted solution rather than your actual problem
Помічати такі питання за собою і за іншими, це одна з soft-skill навичок, яку можна легко опанувати
Далі вигаданий приклад діалогу з таким питанням:
— як зробити декілька паралельних запитів в react-query?
— […поснює як це зробити…]. А для чого тобі це?
— у мене є API, щоб дістати інфо про користувача і мені треба для кожного повідомлення на форумі показати телефон автора цього повідомлення.
— давай краще в API, яке повертає список повідомлень, додамо потрібні тобі поля і тоді тобі взагалі не треба буде робити паралельні запити. Тим паче, що ми вже так повертаємо імʼя автора.
— точно! піду зроблю це на бекенді!
Хто хоче виконувати js у python рантаймі, ваші мрії здійснилися:)
Всім гарного пʼятничного вечору та вихідних попереду!
https://github.com/Distributive-Network/PythonMonkey
Всім гарного пʼятничного вечору та вихідних попереду!
https://github.com/Distributive-Network/PythonMonkey
GitHub
GitHub - Distributive-Network/PythonMonkey: A Mozilla SpiderMonkey JavaScript engine embedded into the Python VM, using the Python…
A Mozilla SpiderMonkey JavaScript engine embedded into the Python VM, using the Python engine to provide the JS host environment. - Distributive-Network/PythonMonkey
Всім привіт! Якщо ви хочете щось намалювати в ретро стилі, чи зробити таку собі презентацію наче як з кінця 80-х минулого сторіччя (або ще кучу всього), ось додаток: https://internet-janitor.itch.io/decker
Трішки поклацав - інтерфейс як на маку 1984 року, результат - також ніби як з того самого маку, однозначно в букмарки, буде чекати свого часу;)
Трішки поклацав - інтерфейс як на маку 1984 року, результат - також ніби як з того самого маку, однозначно в букмарки, буде чекати свого часу;)
itch.io
Decker by Internet Janitor
A multimedia sketchbook. Available for Windows, macOS, Linux
Вийшла нова версія Python - 3.12
Деталі оновлення ось тут:
https://docs.python.org/3.12/whatsnew/3.12.html
Деталі оновлення ось тут:
https://docs.python.org/3.12/whatsnew/3.12.html
Python documentation
What’s New In Python 3.12
Editor, Adam Turner,. This article explains the new features in Python 3.12, compared to 3.11. Python 3.12 was released on October 2, 2023. For full details, see the changelog. Summary – Release hi...
Чи є щось спільне у вашого інтернет браузера з мушкою дрозофілою?
Виявляється, що так - блум фільтр, який дозволяє відповісти чи можливо елемент є у колекції, чи він точно не в колекції. Браузер може використовувати такий фільтр для того, щоб перевіряти веб адреси, чи вони у списку зловмисницьких. Якщо можлива небезпека - то ще виконає запит кудись за уточненням. А мушка дрозофіла за допомогою блум фільтра знає точно, що якийсь запах для неї точно новий, а якийсь - вона уже мабуть зустрічала раніше.
Дуже коротке і зрозуміле пояснення концепції блум фільтру з візуалізацією тут: https://www.jasondavies.com/bloomfilter/
Про мушку тут: https://www.pnas.org/doi/10.1073/pnas.1814448115
Виявляється, що так - блум фільтр, який дозволяє відповісти чи можливо елемент є у колекції, чи він точно не в колекції. Браузер може використовувати такий фільтр для того, щоб перевіряти веб адреси, чи вони у списку зловмисницьких. Якщо можлива небезпека - то ще виконає запит кудись за уточненням. А мушка дрозофіла за допомогою блум фільтра знає точно, що якийсь запах для неї точно новий, а якийсь - вона уже мабуть зустрічала раніше.
Дуже коротке і зрозуміле пояснення концепції блум фільтру з візуалізацією тут: https://www.jasondavies.com/bloomfilter/
Про мушку тут: https://www.pnas.org/doi/10.1073/pnas.1814448115
PNAS
A neural data structure for novelty detection | Proceedings of the National Academy of Sciences
Novelty detection is a fundamental biological problem that organisms must solve to
determine whether a given stimulus departs from those previously...
determine whether a given stimulus departs from those previously...
За цим посиланням, https://clig.dev/ - шикарний та доволі стислий посібник по побудові інтерфейсів командного рядка. Класно, що перша частина - принципи (Philosophy of command line interfaces), а друга - безпосередньо практичні поради (Guidelines). Дуже багато посилань на інші джерела якщо хочеться ще більше зануритися в історію та деталі.
Збережу тут, в нагоді точно стане рано чи пізно🤗
Збережу тут, в нагоді точно стане рано чи пізно🤗
clig.dev
Command Line Interface Guidelines
An open-source guide to help you write better command-line programs, taking traditional UNIX principles and updating them for the modern day.
Дуже сильно грубо кажучи, сучасна програмна інженерія - це або про інтенсивні обчислення, або про інтенсивну роботу з даними (а поміж цими екстрмумами - суміш одного з другим у різних пропорціях та ще й з суміжними дисциплінами комп'ютерних наук, але ключовим частіше за все як раз є або дані, або обчислення).
І от якщо ви хочете робити інженерію даних, яка зараз у тренді та дуже актуальна, то ось вам шалена підбірка ресурсів - https://github.com/DataEngineer-io/data-engineer-handbook.
Тут перелічені книжки, спільноти, ютюб канали, розсилки, лінкедіни, телеграм канали, твіттер, інстаграми і тіктоки (дожилися🙄), наведені посилання на компанії, курси та сертифікації що стосуються інженерії даних. Можна знайти на будь-який смак та потребу. В мене тільки одне питання до сучасного світу - коли це все встигати просто продивитися🤯, там книжок тільки з півтора десятки!
І от якщо ви хочете робити інженерію даних, яка зараз у тренді та дуже актуальна, то ось вам шалена підбірка ресурсів - https://github.com/DataEngineer-io/data-engineer-handbook.
Тут перелічені книжки, спільноти, ютюб канали, розсилки, лінкедіни, телеграм канали, твіттер, інстаграми і тіктоки (дожилися🙄), наведені посилання на компанії, курси та сертифікації що стосуються інженерії даних. Можна знайти на будь-який смак та потребу. В мене тільки одне питання до сучасного світу - коли це все встигати просто продивитися🤯, там книжок тільки з півтора десятки!
GitHub
GitHub - DataExpert-io/data-engineer-handbook: This is a repo with links to everything you'd ever want to learn about data engineering
This is a repo with links to everything you'd ever want to learn about data engineering - DataExpert-io/data-engineer-handbook
Ось тут за посиланням (https://www.inngest.com/blog/python-errors-as-values) коротенький текст, який узагальнює кілька підходів до обробки помилок в Python:
1) класичний спосіб, коли функція піднімає помилку і перериває потік виконання
2) спосіб як у Go, коли значення, яке повертає функція - завжди кортеж, де можлива помилка - останній елемент
До першого підходу, доволі класичного, більшість звикла, це найбільш популярний варіант , 2 і 3 підходи - концептуально дуже подібні, та, в принципі, часом зустрічаються в Python додатках.
Четвертий варіант - цікавий. Юніони - це популярно, але в іншому вигляді. Звичне та розповсюджене використання юніона це
Повертати помилку в юніоні - виглядає більш гнучко та інформативно, при цьому не так багатослівно як з кортежами і обгортками, проте функція не тільки інформує, що обʼєкт не знайдено, але ще й підказує чому. І це без try/except=) Що ж, це ще одна опція, тож маємо варіанти на будь-який смак;)
1) класичний спосіб, коли функція піднімає помилку і перериває потік виконання
2) спосіб як у Go, коли значення, яке повертає функція - завжди кортеж, де можлива помилка - останній елемент
def get_user(user_id: str) -> tuple[User | None, Exception | None]3) спосіб як у Rust, коли функція повертає обʼєкт обгортку. Навіть бібліотека для цього є - https://github.com/rustedpy/result, та й виглядає симпатично
def get_user(user_id: str) -> result.Result[User, Exception]4) підхід запропонований авторами - повертати юніон результату та помилки:
def get_user(user_id: str) -> User | Exception
До першого підходу, доволі класичного, більшість звикла, це найбільш популярний варіант , 2 і 3 підходи - концептуально дуже подібні, та, в принципі, часом зустрічаються в Python додатках.
Четвертий варіант - цікавий. Юніони - це популярно, але в іншому вигляді. Звичне та розповсюджене використання юніона це
def get_user(user_id: str) -> User | Noneщо тотожно опціональному типу, коли функція повертає результат, який може бути None типом.
Повертати помилку в юніоні - виглядає більш гнучко та інформативно, при цьому не так багатослівно як з кортежами і обгортками, проте функція не тільки інформує, що обʼєкт не знайдено, але ще й підказує чому. І це без try/except=) Що ж, це ще одна опція, тож маємо варіанти на будь-який смак;)
Inngest
Python errors as values: Comparing useful patterns from Go and Rust - Inngest Blog
Safer error handling, inspired by Go and Rust
https://twitter.com/Bertrand_Meyer/status/1742613897675178347
Спочивай з миром, легендо
Спочивай з миром, легендо
X (formerly Twitter)
Bertrand Meyer (@Bertrand_Meyer) on X
We lost a titan of programming languages, programming methodology, software engineering and hardware design. Niklaus Wirth passed away on the first of January. We mourn a pioneer, colleague, mentor and friend.
На днях Rust-ентузіасти у лиці команди Astral Software написали у своєму блозі про uv, черговий інструмент для екосистеми Python, написаний на Rust - https://astral.sh/blog/uv
Якщо коротко - прирости швидкості у визначенні та встановленні залежностей колосальні (від 7 до 115 разів!)
Як то водиться, поки що uv у стадії розробки, і для ваших важливих речей краще користуватися перевіреними рішеннями, в котрих фокус на стабільності та сумісності (я про умовний pip).
Але - у Astral Sofrware амбіційні цілі, роудмап та, начебто, непогано все поки виходить, тому можна стежити та (можливо) експериментувати в очікуванні нових версій uv та інших корисностей.
Якщо коротко - прирости швидкості у визначенні та встановленні залежностей колосальні (від 7 до 115 разів!)
Як то водиться, поки що uv у стадії розробки, і для ваших важливих речей краще користуватися перевіреними рішеннями, в котрих фокус на стабільності та сумісності (я про умовний pip).
Але - у Astral Sofrware амбіційні цілі, роудмап та, начебто, непогано все поки виходить, тому можна стежити та (можливо) експериментувати в очікуванні нових версій uv та інших корисностей.
astral.sh
uv: Python packaging in Rust
uv is an extremely fast Python package installer and resolver, designed as a drop-in alternative to pip and pip-tools.
Якщо матимете 20 хвилин на вихідних - ось цікава стаття про зліт і падіння операційної системи os/2, і, заодно, про взаємовідносини між Microsoft та IBM:
https://arstechnica.com/information-technology/2019/11/half-an-operating-system-the-triumph-and-tragedy-of-os2/
🙂
https://arstechnica.com/information-technology/2019/11/half-an-operating-system-the-triumph-and-tragedy-of-os2/
🙂
Ars Technica
Half an operating system: The triumph and tragedy of OS/2
From the archives: IBM doesn't make consumer desktop OSes anymore for a reason.
ByteByteGo-Big-Archive-System-Design-2023.pdf
60.2 MB
Доволі відомий автор, що пише про дизайн систем, Alex Xu в свому пості на linkedin написав, що безкоштовно віддає The Big Archive for System Design - 2023 Edition (PDF)
Всередині наступні теми:
🔹 Netflix's Tech Stack
🔹 Top 5 common ways to improve API performance
🔹 Linux boot Process Explained
🔹 CAP, BASE, SOLID, KISS, What do these acronyms mean?
🔹 Explaining JSON Web Token (JWT) to a 10 year old Kid
🔹 Explaining 8 Popular Network Protocols in 1 Diagram
🔹 Top 5 Software Architectural Patterns
🔹 OAuth 2.0 Flows
🔹 What does API gateway do?
🔹 Linux file system explained
🔹 18 Key Design Patterns Every Developer Should Know
🔹 Best ways to test system functionality
🔹 Top 6 Load Balancing Algorithms
🔹 Top 12 Tips for API Security
🔹 𝐀𝐧𝐝 100+ 𝐦𝐨𝐫𝐞
Забрав собі і ділюся з вами
Всередині наступні теми:
🔹 Netflix's Tech Stack
🔹 Top 5 common ways to improve API performance
🔹 Linux boot Process Explained
🔹 CAP, BASE, SOLID, KISS, What do these acronyms mean?
🔹 Explaining JSON Web Token (JWT) to a 10 year old Kid
🔹 Explaining 8 Popular Network Protocols in 1 Diagram
🔹 Top 5 Software Architectural Patterns
🔹 OAuth 2.0 Flows
🔹 What does API gateway do?
🔹 Linux file system explained
🔹 18 Key Design Patterns Every Developer Should Know
🔹 Best ways to test system functionality
🔹 Top 6 Load Balancing Algorithms
🔹 Top 12 Tips for API Security
🔹 𝐀𝐧𝐝 100+ 𝐦𝐨𝐫𝐞
Забрав собі і ділюся з вами
Хтось тут є, хто не грав в doom або принаймні не чув про цю канонічну гру? Тривалий час в тренді було запускати «думчик» на всьому підряд - на калькуляторах Texas Instruments, смарт-годинниках та навіть на якихось побутових приладах. А от нещодавно дослідники з Гуглу та університету Тель-Авіву змогли за допомогою AI моделі згенерувати ігрове відео, фактично - запустили doom на моделі AI:) На жаль, це поки що не повноцінна симуляція ігрового рушія, але дуже впевнена спроба. Якщо так далі піде, то через N років ви будете грати в 3d гру, яку вам на ходу буде промальовувати яка-небудь нейронна мережа у фотографічній якості.
В Arstechnica про це написали, і підібрали доволі цікавий заголовок. Посилання нижче, всім вдало закінчити тиждень і гарних вихідних!
https://arstechnica.com/information-technology/2024/08/new-ai-model-can-hallucinate-a-game-of-1993s-doom-in-real-time
В Arstechnica про це написали, і підібрали доволі цікавий заголовок. Посилання нижче, всім вдало закінчити тиждень і гарних вихідних!
https://arstechnica.com/information-technology/2024/08/new-ai-model-can-hallucinate-a-game-of-1993s-doom-in-real-time
Ars Technica
New AI model can hallucinate a game of 1993’s Doom in real time
Dobos: “Why write rules for software by hand when AI can just think every pixel for you?”…
Якщо не пробували copilot, то ось як раз хороша нагода - тепер він безкоштовний для VS Code, все, що потрібно - акаунт на github. Варто спробувати - чудес не очікуйте, але в цілому розраховуйте на непогану доповнювалку-підказувалку
https://code.visualstudio.com/blogs/2024/12/18/free-github-copilot
https://code.visualstudio.com/blogs/2024/12/18/free-github-copilot
Visualstudio
Announcing a free GitHub Copilot for VS Code
Announcing a free plan for GitHub Copilot in Visual Studio Code.
AI не забере роботу інженерів з розробки програмного забезпечення, будемо сподіватися🙂
https://www.oreilly.com/radar/the-end-of-programming-as-we-know-it/
https://www.oreilly.com/radar/the-end-of-programming-as-we-know-it/
O’Reilly Media
The End of Programming as We Know It
Давненько не писав сюди, тож сподіваюся у всіх все гаразд!
На днях натрапив на новину про Notepad у Windows - тепер в ньому з’являться функції форматування тексту, і можливість використання ШІ. Але цікаве інше - як базовий додаток однієї з найрозповсюдженіших операційних систем фактично конкурує з нашим улюбленим Grammarly. Так, тепер прямо в блокноті, наприклад, можна обрати стиль і тон тексту (ну круто ж) - а це було однією з ключових фіч Grammarly. Що будуть робити в компанії, які наступні кроки щоб втриматися в еру LLM? Побачимо, може вони вдало використають той 1 млрд доларів, який ось недавно залучили у якості фінансування.
Новина від Тома Воррена:
https://www.theverge.com/news/677474/microsoft-windows-notepad-bold-italic-text-formatting-markdown-support
На днях натрапив на новину про Notepad у Windows - тепер в ньому з’являться функції форматування тексту, і можливість використання ШІ. Але цікаве інше - як базовий додаток однієї з найрозповсюдженіших операційних систем фактично конкурує з нашим улюбленим Grammarly. Так, тепер прямо в блокноті, наприклад, можна обрати стиль і тон тексту (ну круто ж) - а це було однією з ключових фіч Grammarly. Що будуть робити в компанії, які наступні кроки щоб втриматися в еру LLM? Побачимо, може вони вдало використають той 1 млрд доларів, який ось недавно залучили у якості фінансування.
Новина від Тома Воррена:
https://www.theverge.com/news/677474/microsoft-windows-notepad-bold-italic-text-formatting-markdown-support
The Verge
Microsoft releases a bold new update for Notepad
Notepad is looking more and more like Microsoft Word.