https://hal.archives-ouvertes.fr/hal-02117588/document
"Dealing With Software Collapse" (aka "bit rot").
The paper talks about situation with Scientific Software but pretty relevant to all of Software Development. The author introduces the notion of time scale of changes in a project and suggests different "collapse mitigation strategies" based on the estimated scale of the project and prospective dependencies.
The author concludes with a personal story dealing with collapse of Scientific Python ecosystem years before Python 3 became a must. Which was rather surprising for me and is pretty concerning.
"Dealing With Software Collapse" (aka "bit rot").
The paper talks about situation with Scientific Software but pretty relevant to all of Software Development. The author introduces the notion of time scale of changes in a project and suggests different "collapse mitigation strategies" based on the estimated scale of the project and prospective dependencies.
The author concludes with a personal story dealing with collapse of Scientific Python ecosystem years before Python 3 became a must. Which was rather surprising for me and is pretty concerning.
More innovation!
While browsing a Github repository, press the period key
While browsing a Github repository, press the period key
. . This opens the repository in a full-fledged VS Code-based web editor for easy browsing, pushing changes and evaluating PRs. More info.GitHub Docs
The github.dev web-based editor - GitHub Docs
Use the github.dev web-based editor from your repository or pull request to create and commit changes.
https://doi.org/10.1017/S0956796821000113
"How to design co-programs" by Jeremy Gibbons
Статья призывает расширить подход How to Design Programs (aka HtDP, серия курсов, обучающих студентов программированию с нуля, плюс два издания одноимённой книги: https://htdp.org/ если кто не знает) за счёт введения понятия ко-рекурсивных функций и соответствующих паттернов для их построения.
Говоря по-простому, ко-рекурсивные функции — это такие, которые строят свой результат "по кусочкам", используя конструкторы соответствующего (алгебраического) типа данных, вместо того (или вместе с тем) чтобы разбирать входные данные "на кусочки" при помощи сопоставления с образцом (aka [datatype] pattern matching).
Я безусловно согласен с Гиббонсом в том, что ко-рекурсивные функции — очень полезный инструмент в арсенале разработчика, особенно, начинающего. Тем не менее, на мой взгляд, эта тема требует намного более тщательной методической проработки чтобы органично встроиться в общую канву HtDP.
Более того, самая интересная часть этой статьи — ещё одна статья, которая не была написана, к сожалению. 😊 В середине повествования Гиббонс обсуждает "генеративную рекурсию" (generative recursion, термин из HtDP), и показывает как функции (изначально) в форме общей генеративной рекурсии могут быть представлены в виде композиции структурно-рекурсивной и ко-рекурсивной функции (так же известной как "иломорфизм" или "хиломорфизм" — hylomorphism). К сожалению, за кадром остаются самые важные и интересные вопросы: как понять, что данную конкретную функцию можно представить в виде такой композиции, или придётся использовать генеративную рекурсию общего вида? как выбрать подходящую промежуточную структуру для рекурсии и ко-рекурсии? Возможно, эти вопросы удастся прояснить тем, кто интегрирует тему ко-рекурсивных функций в свои учебные программы. 😊
"How to design co-programs" by Jeremy Gibbons
Статья призывает расширить подход How to Design Programs (aka HtDP, серия курсов, обучающих студентов программированию с нуля, плюс два издания одноимённой книги: https://htdp.org/ если кто не знает) за счёт введения понятия ко-рекурсивных функций и соответствующих паттернов для их построения.
Говоря по-простому, ко-рекурсивные функции — это такие, которые строят свой результат "по кусочкам", используя конструкторы соответствующего (алгебраического) типа данных, вместо того (или вместе с тем) чтобы разбирать входные данные "на кусочки" при помощи сопоставления с образцом (aka [datatype] pattern matching).
Я безусловно согласен с Гиббонсом в том, что ко-рекурсивные функции — очень полезный инструмент в арсенале разработчика, особенно, начинающего. Тем не менее, на мой взгляд, эта тема требует намного более тщательной методической проработки чтобы органично встроиться в общую канву HtDP.
Более того, самая интересная часть этой статьи — ещё одна статья, которая не была написана, к сожалению. 😊 В середине повествования Гиббонс обсуждает "генеративную рекурсию" (generative recursion, термин из HtDP), и показывает как функции (изначально) в форме общей генеративной рекурсии могут быть представлены в виде композиции структурно-рекурсивной и ко-рекурсивной функции (так же известной как "иломорфизм" или "хиломорфизм" — hylomorphism). К сожалению, за кадром остаются самые важные и интересные вопросы: как понять, что данную конкретную функцию можно представить в виде такой композиции, или придётся использовать генеративную рекурсию общего вида? как выбрать подходящую промежуточную структуру для рекурсии и ко-рекурсии? Возможно, эти вопросы удастся прояснить тем, кто интегрирует тему ко-рекурсивных функций в свои учебные программы. 😊
Cambridge Core
How to design co-programs | Journal of Functional Programming | Cambridge Core
How to design co-programs - Volume 31
❤1
Do you like ultra-modern, fresh-from-the-future programming languages and development environments? Are you developing one? Take part in http://marianoguerra.github.io/review-jam/ ! 😃
The thing is still forming, contact the organiser with your own ideas and suggestions.
The thing is still forming, contact the organiser with your own ideas and suggestions.
Третьего дня забрал с почты https://madebyknock.com/products/gold-titanium-feld47 — это, конечно, оргазм на кухне.
Я сравниваю с https://www.hario.co.uk/products/hario-ceramic-burr-canister-hand-coffee-grinder которая, хочется верить, не самая плохая ручная кофемолка. И тем не менее, разница — небо и земля. Помимо некоторых просчётов в UX данной модели Hario (банально неудобно держать, потому что сильно "пузатая"), имеется приличный (или неприличный? 😒) люфт, который ведёт к небольшим "заеданиям" и заметной неравномерности помола.
Field 47 — прямая противоположность: ни малейшего люфта нигде, при этом работа механизма невероятно плавная и "лёгкая". Однородность на высоте. При этом и скорость помола выше в 2-3 раза (20-25 секунд на ~17-18 г. против 60+ секунд).
В общем, качество завариваемого кофе увеличилось, вместе с чем увеличилось и качество жизни. Чего и вам желаю! 😊
Я сравниваю с https://www.hario.co.uk/products/hario-ceramic-burr-canister-hand-coffee-grinder которая, хочется верить, не самая плохая ручная кофемолка. И тем не менее, разница — небо и земля. Помимо некоторых просчётов в UX данной модели Hario (банально неудобно держать, потому что сильно "пузатая"), имеется приличный (или неприличный? 😒) люфт, который ведёт к небольшим "заеданиям" и заметной неравномерности помола.
Field 47 — прямая противоположность: ни малейшего люфта нигде, при этом работа механизма невероятно плавная и "лёгкая". Однородность на высоте. При этом и скорость помола выше в 2-3 раза (20-25 секунд на ~17-18 г. против 60+ секунд).
В общем, качество завариваемого кофе увеличилось, вместе с чем увеличилось и качество жизни. Чего и вам желаю! 😊
Made By Knock
Feld47 Titanium Burr Manual Coffee Grinder
The Feld47 by Knock has always been our top of the range model with bigger burrs, bigger capacity and a larger crank arm than our other models. In 2021, we pushed things even further by adding titanium nitrided burrs for a faster, cleaner and an even smoother…
Самая сильная логическая система, которая только может быть: http://inutile.club/estatis/falso/
Мало кто знает, но уже много лет существует поддержка прямо в Isabelle/HOL и Coq! 😂
Мало кто знает, но уже много лет существует поддержка прямо в Isabelle/HOL и Coq! 😂
https://jupyterbook.org/intro.html
Что-то вроде продвинутого MD-book с возможностью вставки интерактивных Jupyter-backed примеров кода. Может пригодиться для подготовки учебных материалов.
Что-то вроде продвинутого MD-book с возможностью вставки интерактивных Jupyter-backed примеров кода. Может пригодиться для подготовки учебных материалов.
Интересно, почему Slack загружает свой интерфес, а потом всё стирает и загружает его заново? 🤔
https://monto-editor.github.io/about/
Анонсировано как что-то типа ещё более модульного Language Server Protocol для тех, кто хочет написать один раз плагин и использовать во всех редакторах.
Анонсировано как что-то типа ещё более модульного Language Server Protocol для тех, кто хочет написать один раз плагин и использовать во всех редакторах.
https://github.com/svenkeidel/sturdy
A Haskell library for specifying sound and modular abstract interpreters. The authors promise (or even claim having formally proven it) your abstract interpreter will be sound-by-construction because you build it gluing together sound components (with combinators that preserve soundness). Sounds very cool.
A Haskell library for specifying sound and modular abstract interpreters. The authors promise (or even claim having formally proven it) your abstract interpreter will be sound-by-construction because you build it gluing together sound components (with combinators that preserve soundness). Sounds very cool.
GitHub
GitHub - svenkeidel/sturdy: Sturdy is a library for developing sound static analyses in Haskell.
Sturdy is a library for developing sound static analyses in Haskell. - GitHub - svenkeidel/sturdy: Sturdy is a library for developing sound static analyses in Haskell.
Прикольная инфографика. Самое интересное — компании, про которые я бы и не вспомнил. 😅
https://ethanzuckerman.com/2016/06/22/the-worst-thing-i-read-this-year-and-what-it-taught-me-or-can-we-design-sociotechnical-systems-that-dont-suck/
Отличная статья, иллюстрирующая проблемы "решенее-ориентированного" мышления "инженеров". Все указанные эффекты проявляются не только в контексте решения социальных проблем, но и технических — слишком часто мы бежим "писать код" раньше, чем по-настоящему поймём, какую проблему нужно решить, в чём она заключается и чем обусловлена.
Ну и классическое "да чего там может быть сложного?!" в отношении проблем, про которые мы не имеем ни малейшего понятия. 😊
Отличная статья, иллюстрирующая проблемы "решенее-ориентированного" мышления "инженеров". Все указанные эффекты проявляются не только в контексте решения социальных проблем, но и технических — слишком часто мы бежим "писать код" раньше, чем по-настоящему поймём, какую проблему нужно решить, в чём она заключается и чем обусловлена.
Ну и классическое "да чего там может быть сложного?!" в отношении проблем, про которые мы не имеем ни малейшего понятия. 😊
Ethan Zuckerman
The worst thing I read this year, and what it taught me... or Can we design sociotechnical systems that don't suck? - Ethan Zuckerman
Note: Shane Snow wrote a long and thoughtful email to me about this post. While we agree to disagree on some substantive issues, primarily our thoughts about the future of VR, we also found quite a bit of common ground. He noted that my essay, while mostly…
https://blog.codefrau.net/2021/08/what-is-croquet-anyways.html
Crazy JavaScript (and Wasm in the future?) tech: VMs running in a browser synchronized through a mesh of repeaters. Even end-to-end encrypted for a good measure. Instantly multi-user collaborative persistent apps.
Crazy JavaScript (and Wasm in the future?) tech: VMs running in a browser synchronized through a mesh of repeaters. Even end-to-end encrypted for a good measure. Instantly multi-user collaborative persistent apps.
blog.codefrau.net
Frontend-only Multi-Player. Unlimited Bandwidth. Or: What is Croquet.io, really?
A multi-player web app needs a backend, right? What if I told you, it doesn’t? Read on for how Croquet gets rid of servers. No, really . I...
https://esoteric.codes/blog/jon-corbett
Абсолютно другой подход к языку программирования как концепции. Плюс некоторые инсайты в культуру индейцев и её конфликт с нашей культурой.
Абсолютно другой подход к языку программирования как концепции. Плюс некоторые инсайты в культуру индейцев и её конфликт с нашей культурой.
esoteric.codes
Interview with Jon Corbett
Corbett discusses how Cree#, which began as a
https://qntm.org/clean
Жёсткая критика книги Clean Code Боба нашего Мартина. 😊
Я-то, конечно же, Clean Code не читал, не испытывая пиитета перед Мартином, но согласен со многими его высказываниями. С другой стороны, с автором заметки я тоже в основном согласен: примеры кода, которые он выдернул из книги — это жесть! 😂
Тем не менее, местами автор явно придирается к Мартину и к его коду. Кроме того, не знаю, что он имеет против SOLID как такового.
В целом, конечно, если кто-то говорит правильные вещи, но сам делает через задницу — это как минимум странный человек. Но я лично если слышу разумные советы — мотаю на ус и стараюсь им следовать вне зависимости от того, следует ли им сам автор.
Жёсткая критика книги Clean Code Боба нашего Мартина. 😊
Я-то, конечно же, Clean Code не читал, не испытывая пиитета перед Мартином, но согласен со многими его высказываниями. С другой стороны, с автором заметки я тоже в основном согласен: примеры кода, которые он выдернул из книги — это жесть! 😂
Тем не менее, местами автор явно придирается к Мартину и к его коду. Кроме того, не знаю, что он имеет против SOLID как такового.
В целом, конечно, если кто-то говорит правильные вещи, но сам делает через задницу — это как минимум странный человек. Но я лично если слышу разумные советы — мотаю на ус и стараюсь им следовать вне зависимости от того, следует ли им сам автор.
qntm.org
It's probably time to stop recommending Clean Code
It may not be possible for us to ever reach empirical definitions of "good code" or "clean code", which means that any one person's opinions about another person's opinions about "clean code" are necessarily highly subjective. I cannot review Robert C. Martin's…
https://esoteric.codes/blog/bouk-monkey-satirical-code-used-by-people-who-dont-get-the-joke
Кое-что про программистов, язык Go, Open Source и внимание к лицензиям. 😏
Кое-что про программистов, язык Go, Open Source и внимание к лицензиям. 😏
esoteric.codes
Monkey: the satirical Go package used unwittingly by Arduino and SalesForce
Arduino, SalesForce, and other high-profile software projects were recently revealed to break the license agreement for Monkey. That license, created for good reason: no one should use it, ever.
Exciting (promising or provocative) upcoming talks from SPLASH'21:
https://conf.researchr.org/details/aplas-2021/aplas-2021-keynote-talks/1/-Solidifying-and-Advancing-the-Software-Foundations
https://conf.researchr.org/details/sas-2021/sas-2021-papers/4/Exploiting-Verified-Neural-Networks-via-Floating-Point-Numerical-Error (trollface)
https://conf.researchr.org/details/sle-2021/sle-2021-papers/15/SLE-Keynote-Integrating-Usability-into-Programming-Language-Design (finally something tangible on programming languages ease of use?)
https://conf.researchr.org/details/sle-2021/sle-2021-papers/8/Vision-The-Next-700-Language-Workbenches (will we finally get people actually using Language Workbenches at scale? 😃)
https://conf.researchr.org/details/aplas-2021/aplas-2021-papers/11/A-compilation-method-for-dynamic-typing-in-ML (a Standard ML modernization at last! 😂 Actually the authors talk about native compilation of dynamic types along with static types which is interesting.)
https://conf.researchr.org/details/gpce-2021/gpcegpce+2021+-+20th+international+conference+on+generative+programming%3A+concepts+%26+experiences2021/3/A-Variational-Database-Management-System
https://conf.researchr.org/details/gpce-2021/gpcegpce+2021+-+20th+international+conference+on+generative+programming%3A+concepts+%26+experiences2021/13/On-Stack-Replacement-for-Program-Generators-and-Source-to-Source-Compilers (on-stack replacement as a source-level program transformation... sounds simple! 😂)
https://2021.splashcon.org/details/splash-2021-rebase/4/A-Retrospective-on-the-Design-of-the-Swift-Programming-Language (Swift is already so old they're doing a retrospective on it! 😱)
https://2021.splashcon.org/details/splash-2021-oopsla/6/Efficient-Compilation-of-Algebraic-Effect-Handlers
https://2021.splashcon.org/details/splash-2021-Onward-papers/4/Language-guided-Programming (the promise of natural language programming never gets old 😏)
https://2021.splashcon.org/details/splash-2021-Onward-Essays/2/Programming-as-Architecture-Design-and-Urban-Planning
https://2021.splashcon.org/details/splash-2021-splash-keynotes/1/Integrated-Scientific-Modeling-and-Lab-Automation (I suspect Cardelli will tell the same story as before but it's so fascinating! 😃)
https://2021.splashcon.org/details/splash-2021-oopsla/30/Gradually-Structured-Data
https://2021.splashcon.org/details/splash-2021-oopsla/27/Well-Typed-Programs-Can-Go-Wrong-A-Study-of-Typing-Related-Bugs-in-JVM-Compilers (trollface)
https://2021.splashcon.org/details/splash-2021-oopsla/59/How-Statically-Typed-Functional-Programmers-Write-Code (I was one of the subjects so it's interesting what they infer 😃)
https://2021.splashcon.org/details/agere-2021-papers/3/Session-Types-in-Elixir (Exactly what Elixir programmers were missing! 😁)
https://2021.splashcon.org/details/rebls-2021-papers/1/ShapeRank-Rank-Polymorphism-meets-Reactive-Streams (APL punks not dead!)
https://2021.splashcon.org/details/vmil-2021-papers/6/Reflections-on-a-decade-of-MoarVM-a-runtime-for-the-Raku-programming-language (Ever heard of Raku? Perl 6 maybe? And they're doing some interesting stuff...)
https://2021.splashcon.org/details/hatra-2021-papers/10/User-driven-design-and-evaluation-of-Liquid-Types-in-Java (Do Java users need Liquid Types? Indeed... 😁)
https://2021.splashcon.org/details/splash-2021-recent-sigplan/22/Reasoning-about-the-Garden-of-Forking-Paths (We'll finally be able to reason about computational complexity of lazy programs. In Coq! 😈)
https://2021.splashcon.org/details/splash-2021-recent-sigplan/71/Python-3-Types-in-the-Wild-A-Tale-of-Two-Type-Systems ("Surprisingly, when developers use static types, the code rarely type-checks..." Surprisingly? 🤔)
https://conf.researchr.org/details/aplas-2021/aplas-2021-keynote-talks/1/-Solidifying-and-Advancing-the-Software-Foundations
https://conf.researchr.org/details/sas-2021/sas-2021-papers/4/Exploiting-Verified-Neural-Networks-via-Floating-Point-Numerical-Error (trollface)
https://conf.researchr.org/details/sle-2021/sle-2021-papers/15/SLE-Keynote-Integrating-Usability-into-Programming-Language-Design (finally something tangible on programming languages ease of use?)
https://conf.researchr.org/details/sle-2021/sle-2021-papers/8/Vision-The-Next-700-Language-Workbenches (will we finally get people actually using Language Workbenches at scale? 😃)
https://conf.researchr.org/details/aplas-2021/aplas-2021-papers/11/A-compilation-method-for-dynamic-typing-in-ML (a Standard ML modernization at last! 😂 Actually the authors talk about native compilation of dynamic types along with static types which is interesting.)
https://conf.researchr.org/details/gpce-2021/gpcegpce+2021+-+20th+international+conference+on+generative+programming%3A+concepts+%26+experiences2021/3/A-Variational-Database-Management-System
https://conf.researchr.org/details/gpce-2021/gpcegpce+2021+-+20th+international+conference+on+generative+programming%3A+concepts+%26+experiences2021/13/On-Stack-Replacement-for-Program-Generators-and-Source-to-Source-Compilers (on-stack replacement as a source-level program transformation... sounds simple! 😂)
https://2021.splashcon.org/details/splash-2021-rebase/4/A-Retrospective-on-the-Design-of-the-Swift-Programming-Language (Swift is already so old they're doing a retrospective on it! 😱)
https://2021.splashcon.org/details/splash-2021-oopsla/6/Efficient-Compilation-of-Algebraic-Effect-Handlers
https://2021.splashcon.org/details/splash-2021-Onward-papers/4/Language-guided-Programming (the promise of natural language programming never gets old 😏)
https://2021.splashcon.org/details/splash-2021-Onward-Essays/2/Programming-as-Architecture-Design-and-Urban-Planning
https://2021.splashcon.org/details/splash-2021-splash-keynotes/1/Integrated-Scientific-Modeling-and-Lab-Automation (I suspect Cardelli will tell the same story as before but it's so fascinating! 😃)
https://2021.splashcon.org/details/splash-2021-oopsla/30/Gradually-Structured-Data
https://2021.splashcon.org/details/splash-2021-oopsla/27/Well-Typed-Programs-Can-Go-Wrong-A-Study-of-Typing-Related-Bugs-in-JVM-Compilers (trollface)
https://2021.splashcon.org/details/splash-2021-oopsla/59/How-Statically-Typed-Functional-Programmers-Write-Code (I was one of the subjects so it's interesting what they infer 😃)
https://2021.splashcon.org/details/agere-2021-papers/3/Session-Types-in-Elixir (Exactly what Elixir programmers were missing! 😁)
https://2021.splashcon.org/details/rebls-2021-papers/1/ShapeRank-Rank-Polymorphism-meets-Reactive-Streams (APL punks not dead!)
https://2021.splashcon.org/details/vmil-2021-papers/6/Reflections-on-a-decade-of-MoarVM-a-runtime-for-the-Raku-programming-language (Ever heard of Raku? Perl 6 maybe? And they're doing some interesting stuff...)
https://2021.splashcon.org/details/hatra-2021-papers/10/User-driven-design-and-evaluation-of-Liquid-Types-in-Java (Do Java users need Liquid Types? Indeed... 😁)
https://2021.splashcon.org/details/splash-2021-recent-sigplan/22/Reasoning-about-the-Garden-of-Forking-Paths (We'll finally be able to reason about computational complexity of lazy programs. In Coq! 😈)
https://2021.splashcon.org/details/splash-2021-recent-sigplan/71/Python-3-Types-in-the-Wild-A-Tale-of-Two-Type-Systems ("Surprisingly, when developers use static types, the code rarely type-checks..." Surprisingly? 🤔)
conf.researchr.org
Solidifying and Advancing the Software Foundations (APLAS 2021 - Keynote Talks) - APLAS 2021
Zhendong Su, ETH Zurich
Title: Solidifying and Advancing the Software Foundations
Abstract
Software applications and technologies are built on top of foundational systems such as compilers, databases, and theorem provers. Such foundations form the trusted…
Title: Solidifying and Advancing the Software Foundations
Abstract
Software applications and technologies are built on top of foundational systems such as compilers, databases, and theorem provers. Such foundations form the trusted…