POPULARITY
Nina Polshakova is a software engineer at Solo.io, where she's worked on Istio and API Gateway projects. She's been part of the Kubernetes release team since v1.27 and is currently serving as the Release Lead for v1.33. Do you have something cool to share? Some questions? Let us know: - web: kubernetespodcast.com - mail: kubernetespodcast@google.com - twitter: @kubernetespod - bluesky: @kubernetespodcast.com News of the week 229 new things Google announced at Next 25 MCO: Multi-Cluster Orchestrator Golden Kubestronaut Cloud Native Platform Engineering Associate The kube-scheduler-simulator K0s and k0smotron are now CNCF Sandbox projects Links from the interview Nina Polshakova Kubernetes Deprecation Policy Kubernetes Dev Google Group solo.io Istio API Gateway (General concept, linking to K8s Gateway API) Kubernetes Release Team GitHub Istio revisions Working in Public by Nadia Eghbal (Link to publisher's site about the book) Kubernetes Maintainers Read Mean Comments (KubeCon EU 2024) Kubernetes 1.33 release blog (Link to release announcement blog) Kubernetes Enhancement Proposals (KEPs) Sidecar Containers Multiple Service CIDR support (KEP link) Dynamic Resource Allocation (DRA) DRA support for partitioned devices (KEP link) DRA device taints and tolerations (KEP link) DRA: Prioritized Alternatives in Device Requests (KEP link) Kubernetes 1.33 sneak peak (Link to pre-release highlights) EndpointSlices API Kubernetes Gateway API node.status.nodeInfo.kubeProxyVersion is a lie (issue) KEP-4004: Deprecate the kubeProxyVersion field of v1.Node #4005 (KEP link) Kubelet Removal: Host network support for Windows pods (KEP link) Containerd SIG Windows HostProcess Containers (Windows) Removal: KEP-5040: Disable git_repo volume driver (KEP link) User Namespaces (Beta, Enabled by Default) CRI-O Runc In-place Resource Resize for Pods (Link to the alpha announcement, but now beta) Vertical Pod Autoscaler (VPA) KEP-5080: Ordered Namespace Deletion PyTorch Linkerd Terry Pratchett's Discworld series Tiffany Aching series Guards! Guards! Going Postal Kubernetes Slack New Contributor Orientation
We serve you a podcast about the new Java version every six months.Our regular guest, Simon Ritter, Deputy CTO of Azul, is known on social media as "speakjava." He is part of the OpenJDK vulnerability group, JCP executive committee, and expert group for the Java SE specification request so that he can share a lot of inside information with us. In this episode, we are joined by Hanno Embregts, a Java Developer by day and musician by night. He publishes a post on Foojay with all the details of every new Java release and prepared a long description of all the new features included in Java 24. Let's see what this new release brings us...Guests Simon Ritter https://www.linkedin.com/in/siritter/ https://bsky.app/profile/speakjava.bsky.social Hanno Embregts https://www.linkedin.com/in/hannotify/ https://bsky.app/profile/hanno.codes Content00:00 Introduction of the topic and guests00:58 Why 24 JEPs in release 24?02:16 Overview of the changes in Java 2403:37 The changes in Hotspot and GC JEP 404: Generational Shenandoah (Experimental) https://openjdk.org/jeps/404 JEP 450: Compact Object Headers (Experimental) https://openjdk.org/jeps/450 JEP 475: Late Barrier Expansion for G1 https://openjdk.org/jeps/475 04:46 JEP 483: Ahead-of-Time Class Loading & Linking https://openjdk.org/jeps/483 07:30 JEP 491: Synchronize Virtual Threads without Pinning https://openjdk.org/jeps/491 10:27 Security JEPs and Quantum resistance JEP 478: Key Derivation Function API (Preview) https://openjdk.org/jeps/478 JEP 496: Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism https://openjdk.org/jeps/496 JEP 497: Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm https://openjdk.org/jeps/497 13:00 Tools JEP 493: Linking Run-Time Images without JMODs https://openjdk.org/jeps/493 16:47 Repreviews and finalizations JEP 489: Vector API (Ninth Incubator) https://openjdk.org/jeps/489 18:27 JEP 484: Class-File API https://openjdk.org/jeps/484 19:13 JEP 485: Stream Gatherers https://openjdk.org/jeps/485 21:22 JEP 487: Scoped Values (Fourth Preview) https://openjdk.org/jeps/487 22:15 JEP 488: Primitive Types in Patterns, instanceof, and switch (Second Preview) https://openjdk.org/jeps/488 22:30 How JEPs get finalized and included23:44 JEP 492: Flexible Constructor Bodies (Third Preview) https://openjdk.org/jeps/492 24:09 JEP 494: Module Import Declarations (Second Preview) https://openjdk.org/jeps/494 25:07 JEP 495: Simple Source Files and Instance Main Methods (Fourth Preview) https://openjdk.org/jeps/495 29:24 JEP 499: Structured Concurrency (Fourth Preview) https://openjdk.org/jeps/499 34:04 Deprecations & Restrictions34:46 JEP 472: Prepare to Restrict the Use of JNI https://openjdk.org/jeps/472 37:15 JEP 486: Permanently Disable the Security Manager https://openjdk.org/jeps/486 38:53 JEP 490: ZGC: Remove the Non-Generational Mode https://openjdk.org/jeps/490 Trash Talk - Exploring the JVM memory management by Gerrit Grunwald https://www.youtube.com/watch?v=Jh79ojcror0 42:09 JEP 498: Warn upon Use of Memory-Access Methods in sun.misc.Unsafe https://openjdk.org/jeps/498 45:43 Removal of 32-bit support JEP 479: Remove the Windows 32-bit x86 Port https://openjdk.org/jeps/479 JEP 501: Deprecate the 32-bit x86 Port for Removal https://openjdk.org/jeps/501 47:37 Should we use Java 24 in production?51:09 Looking forward to the next LTS in September54:14 Conclusion
Jon and Ben discuss the highlights of the 1.76, 1.77, and 1.78 releases of Rust. This episode was recorded as part of a YouTube live stream on 2024-05-18, which you can still watch. Contributing to Rustacean Station Rustacean Station is a community project; get in touch with us if you'd like to suggest an idea for an episode or offer your services as a host or audio editor! Twitter: @rustaceanfm Discord: Rustacean Station Github: @rustacean-station Email: hello@rustacean-station.org Timestamps & referenced resources [@00:34] - Rust 1.76 [@01:18] - ABI compatibility updates The updated ABI section An interesting article on ABIs in Swift vs Rust [@08:53] - Type names from references type_name type_name_of_val [@10:35] - Stabilized APIs [@10:56] - Result::inspect [@13:53] - Arc::unwrap_or_clone [@15:25] - std::hash::DefaultHasher [@18:01] - ptr::addr_eq [@21:30] - Changelog deep-dive [@21:33] - Resize/hide rustdoc bars [@22:40] - Rust 1.77 [@22:51] - C-string literals std::ffi::CStr [@28:20] - Support for recursion in async fn [@31:43] - offset_of! [@36:32] - Enable strip in release profiles by default [@39:35] - Stabilized APIs [@39:36] - core::net [@40:59] - f64::round_ties_even [@42:05] - Mutex::clear_poison [@43:43] - File::create_new OpenOptions [@46:15] - Changelog deep-dive [@46:46] - Lint on references to static mut SyncUnsafeCell [@50:05] - Undeprecate unstable_features lint [@51:37] - Deny braced macro invocation in let-else Details from dtolnay comment [@55:45] - cargo:: in build scripts [@56:20] - Standardized package ID spec in Cargo [@57:36] - slice::first_chunk [@59:55] - Rust 1.77.1 Stripping debug info in release builds broke Windows. [@1:00:58] - Rust 1.77.2 Fixes CVE-2024-24576. Detailed advisory, fix, and current logic. [@1:04:54] - Rust 1.78 [@1:07:55] - Diagnostic attributes #[diagnostic] documentation [@1:13:13] - Asserting unsafe preconditions Implementation PR [@1:19:56] - Deterministic realignment [@1:23:24] - Stabilized APIs [@1:23:33] - impl Read for &Stdin [@1:24:03] - Relax bounds on Error trait implementations [@1:25:40] - Compatibility notes [@1:25:40] - Windows requirement bump Replace pthread RwLock Slim reader/writer locks [@1:29:25] - LLVM 18 brings *128 ABI change [@1:32:04] - Changelog deep-dive [@1:32:04] - Make non-PartialEq-typed consts as patterns a hard error [@1:34:59] - Suggest moving definition if non-found macro_rules! is defined later [@1:36:08] - Stabilize v4 of Cargo lockfile [@1:37:36] - cargo update highlights stale dependencies [@1:38:23] - Deprecate non-extension .cargo/config files [@1:39:19] - Clippy lint assigning_clones [@1:40:49] - Clippy lint incompatible_msrv [@1:42:22] - cargo new stopped commenting in Cargo.toml Credits Intro Theme: Aerocity Audio Editing: Aerocity Hosting Infrastructure: Jon Gjengset Show Notes: Jon Gjengset Hosts: Jon Gjengset and Ben Striegel
De Java 23 à WebAssembly, en passant par l'IA et les design patterns, on a tout passé au crible #java #swift #webassembly #wordpress #webcomponents #llm #mongodb #keycloak #fairsource Enregistré le 18 octobre 2024 Téléchargement de l'épisode LesCastCodeurs-Episode–317.mp3 News Langages Java 23 est sorti ! InfoQ liste toutes les JEPs intégrées à la nouvelle version https://www.infoq.com/news/2024/09/java23-released/ Et FooJay plonge dans le détail https://foojay.io/today/java–23-has-arrived-and-it-brings-a-truckload-of-changes/ JEP 455: Primitive Types in Patterns, instanceof, and switch (Preview) JEP 466: Class-File API (Second Preview) JEP 467: Markdown Documentation Comments JEP 469: Vector API (Eighth Incubator) JEP 471: Deprecate the Memory-Access Methods in sun.misc.Unsafe for Removal JEP 473: Stream Gatherers (Second Preview) JEP 474: ZGC: Generational Mode by Default JEP 476: Module Import Declarations (Preview) JEP 477: Implicitly Declared Classes and Instance Main Methods (Third Preview) JEP 480: Structured Concurrency (Third Preview) JEP 481: Scoped Values (Third Preview) JEP 482: Flexible Constructor Bodies (Second Preview) StringTemplate s'en va Un article sur l'API ClassFile qui sera un standard dans le JDK pour manipuler des classes (ala ASM) https://www.unlogged.io/post/class-file-api-not-your-everyday-java-api article long mais qui revient sur les raisons notamment parce que ASM est dans le JDK et qu'ils sont un problème de poule et d'oeuf et sur la forme de l'API a des exemples d'usage tout cela reste en preview dans le JDK des optimisation comme le lazy parsing et le constant pool sharing (en gros faire de la reference sur ce qui n'a pas changé Tip and Tail is back: cette fois une JEP https://openjdk.org/jeps/14 plus qu'une keynote provocative au language summit maintenant une JEP dite informative le language est un pu flou sur l'objectif entre regarder tip and tail pour vos librairies c'est bien et adoptons tous le meme tip du JDK jusqu'aux stack applicatives Apple annonce la sortie de son language Swift en version 6 https://www.swift.org/blog/announcing-swift–6/ Nouvelles plateformes : Swift 6 s'étend à de nouvelles plateformes (tous les grands OS déjà supportés), y compris les systèmes embarqués (sous ARM et Risc V). Swift Testing : Swift 6 introduit Swift Testing, une nouvelle bibliothèque de tests conçue pour Swift. Concurrence : Détection de data race en tant qu'erreur de compilation. Apple annonce travailler sur l'interopérabilité Swift / Java https://github.com/swiftlang/swift-java comme jextract mais dans l'autre sens The news Java https://www.infoq.com/news/2024/10/java-news-roundup-oct07–2024/ JDK 24 : Un calendrier pour la sortie de JDK 24 a été proposé. La première phase de réduction des fonctionnalités commencera le 5 décembre 2024. La version finale sera disponible le 18 mars 2025. JDK 24 introduira des mises à jour avec deux nouvelles API. La Vector API (JEP 489) facilitera les opérations sur des vecteurs, tandis que la Class-File API (JEP 484) permettra une manipulation plus efficace des fichiers de classes Java. Un changement de sécurité important est proposé avec JEP 486. Il prévoit de désactiver définitivement le Security Manager, qui a été déprécié. Cette décision signifie que cette fonctionnalité ne sera plus disponible dans les futures versions, car elle est considérée comme obsolète. Apache Tomcat et Cassandra : Les nouvelles versions de Tomcat (11.0.0) et de Cassandra (5.0.0) sont sorties. Elles incluent des améliorations et des corrections de bogues. Spring Framework : Des mises à jour pour Spring Framework (versions 3.4.0-M2, 3.3.3 et 3.2.8) ont été publiées. Elles intègrent le support d'une nouvelle API qui aide à la gestion de la mémoire. Quarkus : Red Hat a sorti la version 3.15 de Quarkus, qui apporte des corrections et des améliorations. Une nouvelle version, la 3.16, est prévue pour la fin octobre. Commonhaus Foundation : Une nouvelle organisation, la Commonhaus Foundation, a été créée pour aider les projets open source à être durables. Quarkus a rejoint cette fondation. Cassandra, Camel, Lamgchain, Micronaut, OpenLibery, JHipster, Ktor etc. Design patterns revisited: https://www.youtube.com/watch?v=kE5M6bwruhw Design and design patterns. Optional: patterns and anti-patterns. Iterator pattern. Lightweight Strategy. Factory Method using default methods. Laziness using Lambda Expressions. Decorator using Lambda Expressions. Creating Fluent interfaces. Execute Around Method Pattern. Creating a Closed Hierarchy with sealed classes. Popularité des langages de programmation https://www.techspot.com/news/105157-python-most-popular-coding-language-but-challengers-gaining.html Python reste le langage de programmation le plus populaire, surtout dans des domaines comme la science des données et le développement web. Il est apprécié pour sa simplicité et le grand nombre de bibliothèques disponibles, ce qui le rend facile à apprendre et à utiliser. De nombreuses entreprises, y compris des startups, utilisent Python pour diverses applications. Malgré sa dominance, d'autres langages comme JavaScript, Java et Go gagnent en popularité et pourraient défier la position de leader de Python. (Java est monté du poste 4 au 3, en 1 an) Les développeurs qui codent occasionnellement préfèrent Python, montrant ainsi son attrait au-delà des programmeurs professionnels. L'émergence d'outils comme ChatGPT facilite l'accès à la programmation, ce qui pourrait influencer les tendances futures en matière de langages de programmation. Librairies Paramétrer ses tests JUnit 5 avec @CsvSource https://mikemybytes.com/2021/10/19/parameterize-like-a-pro-with-junit–5-csvsource/ l'annotation permet d'avoir ses données de test au plus près de la méthode on écrit les données de test sous forme de CSV (éventuellement avec des délimiteurs de son choix pour plus de lisibilité, pour bien séparer les valeurs) par exemple -> ou maps to les valeurs peut être les paramètres de la method mai aussi les valeur de description du test Infrastructure Turbocharged Development: The Speed and Efficiency of WebAssembly par Danielle Lancashire https://devsummit.infoq.com/presentation/munich2024/turbocharged-development-speed-and-efficiency-webassembly L'utilisation de WebAssembly avec Serverless. Faire tourner des applications plus facilement dans le cloud.WebAssembly est rapide et sûr pour exécuter du code. Cela aide à déployer les applications plus rapidement et à utiliser moins de ressources. De nombreuses entreprises utilisent WebAssembly pour des tâches comme le traitement d'images et de données. Des plateformes comme Cloudflare Workers et AWS Lambda. La communauté autour de WebAssembly granèit. De nouveaux outils et bibliothèques sont créés. Cependant, il y a encore des défis à relever, comme la compatibilité et les performances. Malgré cela, l'avenir de WebAssembly est prometteur. Web C'est la guerre chez Wordpress https://techcrunch.com/2024/09/26/wordpress-vs-wp-engine-drama-explained/ une boite nommée WP Engine fait du hosting de WordPress mais ne contribue pas Automatic, les gens derrière WordPress leur onbt demandé de résoudre ce probleme, soit en payant des droits de trademark soit en contribuant de l'engineering upstream à auteur de 8% de leurs revenus WP Engine dit non Automatic coupe l'accès aux mises a jours de thèmes et de plugins à WP Engine mettant des sites à risque (securité) WP Engine dit que c'est un abus de position du CEO d'Automatic sur les accès WordPress.org Bref c'est le drame le CEO d'automatic propose à ses employés 6 mois de salaire si ils ne sont pas d'accord avec la stratégie https://www.cio.com/article/3550331/one-twelfth-of-automattic-staff-leave-over-wordpress-wp-engine-spat.html 8% ont pris l'offre Les WebComposants ne sont pas le fuitur https://dev.to/ryansolid/web-components-are-not-the-future–48bh un article d'un auteur proéminent de framework JavaScript Discute les avantages et les inconvenients de la standardisation qui permet d'élever le débat mais aussi bloque des avenues d'optimisations beaucoup d'exemples d'inovations en frameworks JS qui auraient été bloqués Les commentaires apres l'article sont interessants aussi (en contre perspective) mais tout le monde n'est pas d'accord avec cet article https://www.abeautifulsite.net/posts/web-components-are-not-the-future-they-re-the-present/ Data et Intelligence Artificielle Conseils et bonnes pratiques lors de l'intégration de LLM dans une application https://glaforge.dev/posts/2024/09/23/some-good-practices-when-integrating-an-llm-in-your-application/ management de prompt effectif versionnage et externalisation des prompts fixer la version des modèles optimisation et caching mettre en place des rails de sécurité évaluer et monitorer le comportement et la performance prioriser la sécurité des données privées Encore une nouvelle version de LangChain4j, avec la version 0.35 ! Guillaume couvre les nouveautés côté Gemini et Google Cloud https://glaforge.dev/posts/2024/09/29/lots-of-new-cool-gemini-stuff-in-langchain4j/ Support des toutes nouvelles versions de Gemini 1.5 (version 002) Un “document loader” pour charger des documents à partir de Google Cloud Storage Un “scoring model” qui permet de faire du “reranking” de résultat, pour trouver les résultats les plus pertinents pour une requête donnée Support de nouveaux paramètres des embedding models (choix de la dimensionalité des vecteurs, du troncage des textes en entrée) Ajout d'un “embedding model” pour le module Google AI Gemini Un estimateur de token pour Google AI Gemini Support des chat listeners Support des enums pour la sortie structurée JSON Et plein de mise à jour de la documentation pour refleter tous ces changements et aditions Self Correction Algo LLM https://www.infoq.com/news/2024/10/google-deepmind-score/ Google DeepMind a récemment publié SCoRe, une nouvelle méthode d'auto-correction pour les modèles de langage (LLM). Elle améliore la capacité des LLM à corriger leurs erreurs lorsqu'ils résolvent des problèmes de mathématiques ou de programmation. Contrairement aux méthodes antérieures, SCoRe utilise des données générées par le modèle lui-même pour créer des dialogues d'auto-correction. Cela permet au modèle de s'améliorer via un processus d'apprentissage par renforcement (RL) en deux étapes. Les modèles ajustés avec cette technique ont montré des améliorations significatives, surpassant les performances des modèles de base. Cette méthode pourrait ouvrir de nouvelles pistes pour rendre les LLM plus précis et robustes dans leurs réponses. MongoDB 8 est sorti https://www.mongodb.com/products/updates/version-release La version 8.0 est plus rapide, avec des lectures plus rapides, une meilleure gestion des mises à jour et des agrégations de séries temporelles jusqu'à 60 % plus rapides. De nouvelles fonctionnalités incluent le support des Query pour les données chiffrées, rendant le traitement des données sensibles plus facile. Beaucoup d'ameliorations pour la performance et scalabilité Guillaume explore les techniques avancées de Retrieval Augmented Generation pour améliorer la qualité des résultats de recherche dans ses propres documents, avec les LLMs https://glaforge.dev/talks/2024/10/14/advanced-rag-techniques/ Présentations et vidéos données lors de la conférence Devoxx Belgique Code des exemples disponibles sur Github Techniques de chunking : sliding window, hypothetical questions, semantic chunking, context retrieval chunking Techniques de retrieval : hypothetical document embedding, query compression, metadata filtering Outillage Article sur les cache alias en Infinispan https://infinispan.org/blog/2024/10/07/cache-aliases-redis-databases Explique comment on peut utiliser Infinispan pour remplacer Redis Explique la différence entre les database de Redis et les caches d'Infinispan Explique l'utilité des alias en général Explique comment on peut avoir un mapping des databases de Redis vers des caches d'Infinispan Sécurité Keycloak 26 est sorti: https://www.keycloak.org/2024/10/keycloak–2600-released Organizations feature: permet aux administrateurs de créer et gérer des structures organisationnelles, facilitant la gestion des rôles et des permissions. Persistent user sessions: Les sessions des utilisateurs sont maintenant stockées par default dans la base de donnée ce qui améliore la cohérence, surtout avec plusieurs instances. Login Theme: Offre un design plus propre et une option de mode sombre qui s'adapte aux préférences des utilisateurs. L'amélioration du déploiement multi-sites renforce la fiabilité et réduit le temps d'arrêt lors des demandes des utilisateurs. Admin recovery: une méthode simple pour récupérer l'accès administrateur si tous les comptes sont bloqués, en créant un compte temporaire via des variables d'environnement. Pour les utilisateurs qui migrent vers cette version, il est important de prêter attention aux changements liés à la gestion des caches et aux sessions persistantes. Loi, société et organisation Introduction des licences fair source https://techcrunch.com/2024/09/22/some-startups-are-going-fair-source-to-avoid-the-pitfalls-of-open-source-licensing/ Certaines startups utilisent des licences “fair source” pour partager leur code tout en protégeant leurs intérêts commerciaux. Les licences FSL (Functional Source License) et BUSL (Business Source License) permettent d'ouvrir le code après 2 ou 4 ans. Ces licences empêchent les concurrents de vendre des produits similaires tout de suite, offrant une protection temporaire. Certains critiques pensent que ces licences sont compliquées et pourraient limiter l'innovation, car elles ne sont pas totalement ouvertes. Le “fair source” est encore un concept nouveau, mais il pourrait devenir un bon compromis entre open source et logiciel privé. definition de fair source: code lisible publique, peut etre utilise et modifié avec des “restrictions minimales” pour proteger le business modele du producteur ; et devient open source de maniere deferée “any purpose other than a Competing Use. A Competing Use means use of the Software in or for a commercial product or service that competes with the Software or any other product or service we offer using the Software as of the date we make the Software available” Outils de l'épisode Un petit outil sympa pour les utilisateurs de Macs avec un écran “wide”, pour partager un écran virtuel : https://github.com/Stengo/DeskPad les écrans larges sont partagés entierement et ceui fait un rendu 16:9 pour les gens qui le voient cet écran acte comme un écran mais il est virtuel et on peut mettre les applications que l'on veut dedans on ne l'a pas testé Conférences La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs : 17–18 octobre 2024 : DevFest Nantes - Nantes (France) 17–18 octobre 2024 : DotAI - Paris (France) 30–31 octobre 2024 : Agile Tour Nantais 2024 - Nantes (France) 30–31 octobre 2024 : Agile Tour Bordeaux 2024 - Bordeaux (France) 31 octobre 2024–3 novembre 2024 : PyCon.FR - Strasbourg (France) 6 novembre 2024 : Master Dev De France - Paris (France) 7 novembre 2024 : DevFest Toulouse - Toulouse (France) 8 novembre 2024 : BDX I/O - Bordeaux (France) 13–14 novembre 2024 : Agile Tour Rennes 2024 - Rennes (France) 16–17 novembre 2024 : Capitole Du Libre - Toulouse (France) 20–22 novembre 2024 : Agile Grenoble 2024 - Grenoble (France) 21 novembre 2024 : DevFest Strasbourg - Strasbourg (France) 21 novembre 2024 : Codeurs en Seine - Rouen (France) 27–28 novembre 2024 : Cloud Expo Europe - Paris (France) 28 novembre 2024 : Who Run The Tech ? - Rennes (France) 2–3 décembre 2024 : Tech Rocks Summit - Paris (France) 3 décembre 2024 : Generation AI - Paris (France) 3–5 décembre 2024 : APIdays Paris - Paris (France) 4–5 décembre 2024 : DevOpsRex - Paris (France) 4–5 décembre 2024 : Open Source Experience - Paris (France) 5 décembre 2024 : GraphQL Day Europe - Paris (France) 6 décembre 2024 : DevFest Dijon - Dijon (France) 22–25 janvier 2025 : SnowCamp 2025 - Grenoble (France) 30 janvier 2025 : DevOps D-Day #9 - Marseille (France) 6–7 février 2025 : Touraine Tech - Tours (France) 25 mars 2025 : ParisTestConf - Paris (France) 3 avril 2025 : DotJS - Paris (France) 10–12 avril 2025 : Devoxx Greece - Athens (Greece) 16–18 avril 2025 : Devoxx France - Paris (France) 7–9 mai 2025 : Devoxx UK - London (UK) 12–13 juin 2025 : DevLille - Lille (France) 24 juin 2025 : WAX 2025 - Aix-en-Provence (France) 18–19 septembre 2025 : API Platform Conference - Lille (France) & Online 9–10 octobre 2025 : Volcamp - Clermont-Ferrand (France) Nous contacter Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs Contactez-nous via twitter https://twitter.com/lescastcodeurs Faire un crowdcast ou une crowdquestion Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/
OpenJDK (Java) 23 is here! This version introduces three new features to the language and runtime, many bug fixes, small improvements, and a longer list of preview features. What are the most important facts about this release? Let's find out...GuestsSimon Ritterhttps://www.linkedin.com/in/siritter/ https://mastodon.social/@speakjavahttps://twitter.com/speakjava Artur Skowrońskihttps://www.linkedin.com/in/arturskowronski/https://x.com/ArturSkowronskiContent00:00 Introduction 00:49 What OpenJDK version are we on? Foojay post by Loic Mathieu: https://foojay.io/today/java-23-whats-new/ 01:26 Why switch to OpenJDK 23? 02:45 JEP 467: Markdown Documentation Comments https://openjdk.org/jeps/467 04:15 JEP 474: ZGC: Generational Mode by Defaulthttps://openjdk.org/jeps/474 https://www.azul.com/blog/what-should-i-know-about-garbage-collection-as-a-java-developer/ https://newrelic.com/resources/report/2024-state-of-the-java-ecosystem 14:17 JEP 471: Deprecate the Memory-Access Methods in sun.misc.Unsafe for Removal https://openjdk.org/jeps/471 Foojay post by Bazlur Rahman: https://foojay.io/today/unsafe-is-finally-going-away-embracing-safer-memory-access-with-jep-471/ 22:04 Preview and incubator features 22:31 JEP 466: Class-File API (Second Preview) https://openjdk.org/jeps/466 25:48 JEP 455: Primitive Types in Patterns, instanceof, and switch (Preview) https://openjdk.org/jeps/455 https://openjdk.org/projects/valhalla 30:52 JEPs leading to cleaner code https://openjdk.org/projects/amber 32:28 JEP 469: Vector API (Eighth Incubator) https://openjdk.org/jeps/469 35:28 JEP 473: Stream Gatherers (Second Preview) https://openjdk.org/jeps/473 38:07 JEP 476: Module Import Declarations (Preview) https://openjdk.org/jeps/476 Overview of projects with modules: https://docs.google.com/spreadsheets/u/2/d/e/2PACX-1vQbHhKXpM1_Vop5X4-WNjq_qkhFRIOp7poAF79T0PAjaQUgfuRFRjSOMvki3AeypL1pYR50Rxj1KzzK/pubhtml 43:03 JEP 477: Implicitly Declared Classes and Instance Main Methods (Third Preview) https://openjdk.org/jeps/477 45:40 JEP 480: Structured Concurrency (Third Preview) https://openjdk.org/jeps/480 46:26 JEP 481: Scoped Values (Third Preview) https://openjdk.org/jeps/481 46:40 JEP 482: Flexible Constructor Bodies (Second Preview) https://openjdk.org/jeps/482 48:56 Removal of String templates https://openjdk.org/jeps/430 (OpenJDK 21): String Templates (Preview) https://openjdk.org/jeps/459 (OpenJDK 22): String Templates (Second Preview) Nice description on the mailing list: https://mail.openjdk.org/pipermail/amber-spec-experts/2024-March/004010.html 53:21 Process of releases 55:25 Predictions for next LTS 25 57:48 License changes for Oracle JDK 17 58:38 About JVM Weekly by Artur (and Scala, AI, LLMs) JVM Weekly Newsletter: https://www.linkedin.com/newsletters/7097859802881540096/ https://webtechie.be/tags/jfx-in-action/ 1:06:18 Conclusions
This week on Marketing O'Clock, Google breaks hearts by breaking links and Microsoft Advertising has a “Brand-Aid” for advertisers who want to remove branded queries from Pmax. Plus, Google announces that the cookies won't be crumbling after all. Thank you Optmyzr for sponsoring this week's show! Optmyzr is the all-in-one paid search management platform for Google and Microsoft. Start your free trial. Free Trial - https://www.optmyzr.com/?utm_source=sponsorship&utm_medium=referral&utm_campaign=marketingoclock Or, browse 90+ interviews with digital marketing experts through PPC Town Hall. Town Hall - http://optmyzr.com/ppctownhall/?utm_source=sponsorship&utm_medium=referral&utm_campaign=marketingoclock Visit us at - https://marketingoclock.com/
Emmanuel, Guillaume et Arnaud discutent des nouvelles de l'été. JEPs, transactional outbox pattern avec Spring, LLM dans Chrome, faille polyfill.io, TOTP, congés illimités et IDE payant ou pas payant ? Enregistré le 12 juillet 2024 Téléchargement de l'épisode LesCastCodeurs-Episode-314.mp3 News Langages Les fonctionnalités de JDK 23 ont été figées début Juin (release prévue en septembre) https://openjdk.org/projects/jdk/23/ https://www.youtube.com/watch?v=kzjGp7LmW0I JEPs finales: 467: Markdown Documentation Comments 471: Deprecate the Memory-Access Methods in sun.misc.Unsafe for Removal 474: ZGC: Generational Mode by Default JEPs en incubation / preview 455: Primitive Types in Patterns, instanceof, and switch (Preview) 466: Class-File API (Second Preview) 469: Vector API (Eighth Incubator) 473: Stream Gatherers (Second Preview) 476: Module Import Declarations (Preview) 477: Implicitly Declared Classes and Instance Main Methods (Third Preview) 480: Structured Concurrency (Third Preview) 481: Scoped Values (Third Preview) 482: Flexible Constructor Bodies (Second Preview) Librairies Le transactional outbox pattern avec Spring Boot https://www.wimdeblauwe.com/blog/2024/06/25/transactional-outbox-pattern-with-spring-boot/ transactional outbox permet d'éviter des 2PC ou des désynchronisations de resources: typiquement un commit dans une base et un envoie de message dans un bus on ecrit le message dans une table de la base de données, et un process séparé récupère les messages et les envoient dans le bus implémentation utilise Spring Integration dans l'article, la seconde resource est l'envoie d'email montre une approche de tests le flow descrit pas psring integration est pas super trivial a lire quand on est pas familier mais cela poll la table toutes les secondes et envoie email et si succes de l'appel de service, vide le message de la table Deuxieme exemple avec Spring modulith qui a un event bus interne qui peut être persisté décrit les differences avec spring integration et les limites de l'approche modulith (message order, retry etc) Comment tester des valeurs de propriétés différentes dans un test Quarkus https://quarkus.io/blog/overriding-configuration-from-test-code/ on a tendance a ne pas tester les propriétés de config ce blog montre 5 (enfin 4 utiles) façons de le faire avec Quarkus. les profils de test, mocker l'objet de config, les test components (experimental), l'injection dans les constructeurs Quarkus 3.12 https://quarkus.io/blog/quarkus-3-12-0-released/ centralisation des configs TLS support pour le load shedding (reject requests on service overload) événements JFR specific a Quarkus native image agent support Spring Boot 3 (compat layer) Support Kotlin 2 etc Cloud On vous parlait dans un épisode précédent de ce problème de coûts S3 sur des requêtes non autorisées. C'est Graphana Loki qui a mis ce problème sous les projecteurs https://grafana.com/blog/2024/06/27/grafana-security-update-grafana-loki-and-unintended-data-write-attempts-to-amazon-s3-buckets/ le problème venait des valeurs par défaut des buckets déclarés dans le chart helm de Loki, en particulier celui nommé ‘chunks' Data et Intelligence Artificielle Guillaume avait partagé l'information sur la disponibilité prochaine d'un mini modele LLM dans chrome. C'est maintenant une réalité et vous pouvez le tester. https://ai-sdk-chrome-ai.vercel.app/ Nécessite Chrome 127 (version stable à partir de mi-juillet) Utilise le SDK Vercel AI Guillaume nous parle de toutes les nouveautés liées au modèle Gemini de Google dans la dernière release de LangChain4j https://glaforge.dev/posts/2024/07/05/latest-gemini-features-support-in-langchain4j/ Outillage 1% des utilisateurs de Maven Central utilisent 83% de sa bande passante. Installez un repository manager qui fait proxy (et cela pour tous les types de dépendances)!!! https://www.sonatype.com/blog/maven-central-and-the-tragedy-of-the-commons rien n'est réellement gratuit et l'abus d'une minorité peut nuire à l'ensemble. Cela fait maintenant plus de 20 ans que les communautés le répète: installer un gestionnaire de dépendances dans votre infrastructure (nexus, artifactory, CodeArtifact, …). En plus de protéger le bien commun cela vous permet de raffiner le filtrage des dépendances, d'assurer la reproductibilité de vos builds, d'optimiser les performances (et réduire les coûts) en ne téléchargeant que depuis votre propre infrastructure, etc … Maven Central est un commun qui ne coute rien à l'utilisteur mais qui est indispensable à tous 1000 milliards de téléchargements l'année dernière 83% de la bande passante consommé par 1% des IPs Beaucoup des ces IP viennent des companies les plus larges proxy pour réduire charge sur central, réduire couts ingress/egress ils vont implementer un mécanisme de throttling question est-ce que la concentration des IPs veut juste dire que c'est le dernier noeud mais que cacher n'est pas effectif pour eux et qu'il y a des milliers de clients derrière une IP? le trotting ferait mal et le proxy ne marche plus dans un monde ou le dev est dans le cloud et distribue géographiquement Comment mettre en place backstage, ici avec un projet Spring Boot utilisant CircleCi, Renovate, SonarCloud… https://piotrminkowski.com/2024/06/13/getting-started-with-backstage/ Cet article explique comment utiliser backstage pour fournir à vos équipes un template d'une application spring-boot. Elle est automatiquement crée sous forme d'un repository git(hub) avec les integrations classiques pour gérer la CI (via CircleCI), la qualité (via SonarCloud), la mise à jour de dépendances (via Renovate) et bien sur son référencement sur le portail backstage. tutoriel tres complet tres facilement remplacable pour un project avec votre technologie preferee (pas specifique a Spring Boot, ou Java) Architecture Que se passe t'il quand vous faites un push sur GitHub? https://github.blog/2024-06-11-how-we-improved-push-processing-on-github/ GitHub explique comment ils ont amélioré leur architecture, notamment en mettant en place Kafka pour distribuer les actions qui découlent d'un push sur GitHub. paralelisation des taches (avant sequentiel) limitation des dependances entre etapes effectuées lors d'un push plus de taches peuvent faire un retry un classique de decoupling via un EDA Sécurité Attaque du CDN polyfill.io https://sansec.io/research/polyfill-supply-chain-attack polyfill c'est un support de nouvelles fonctionalites dans les ancien navigateurs servi par cdn notamment une societe chinoise a achete le domaine et le github et injecte du malware qui pointe sur des serveurs qui servent le malware selectivement (device, admin ou pas, heure de la journée) Fastly et Cloudflare on des deploiements alternatiuve Une faille de sécurité, de type Remote Code Execution, vieille de 10ans, dans CocoaPods, un gestionnaire de dépendances très utilisé dans le monde Apple (macOS et iOS) https://securityboulevard.com/2024/07/cocoapods-apple-vulns-richixbw/ https://cocoapods.org/ / https://cocoapods.org/ est un gestionnaire de dépendances pour les projets Xcode. Les dependances (Pods) sont publiées sous forme de Specs qui sont référencées dans un Specs Repo (une sorte de Maven central mais seulement avec des metadonnées) CVE-2024-38366 est une vulnérabilité de type remote code execution avec un score CVSS de 10 La faille existait depuis 10 ans et a été corrigée en Sept 2023. Elle permettait d'avoir un accès root sur trunk.cocoapods.org qui stock les Specs. Elles auraient donc pu être modifiées sans que les auteurs ne s'en apperçoivent. Pas de preuve pour l'instant que la faille ait été exploitée Mieux comprendre la double authentification avec TOTP https://hendrik-erz.de/post/understanding-totp-two-factor-authentication-eli5 Cet article revient sur le fonctionnement de TOTP et comment l'implementer avec des exemples en python the QR code est une URL qui contient: le secret en base 32. le nom du totp, qui a fournit le TOTP, combien de chiffres et la durée de vie du TOTP pour generer les chiffres, prends le secret, le temps et hash le tout, prendre 4 bytes et les convertir le chiffres typiquement le serveur genere les deux d'avant, les deux d'apres et le courant pour comparer Loi, société et organisation L'équipe Apache Maven gagne le troisième prix BlueHats https://nlnet.nl/bluehatsprize/2024/3.html le projet remporte un gain de 10000€. Ce prix est organisé par le gouvernement français afin de récompenser les projets open sources les plus impactants. La clause de congés illimités en Europe https://www.osborneclarke.com/insights/why-your-unlimited-vacation-policy-may-be-of-limited-use-in-europe Les politiques de congés illimités, populaires aux États-Unis, ne sont pas aussi avantageuses en Europe. En Europe, les employeurs doivent suivre les congés pris pour respecter les minima légaux de quatre semaines par an donc ils ne peuvent pas economiser sur le faire de ne plus les gérer. Les congés illimités permettent aux US de ne plus à devoir les payer au départ de l'employé. En Europe les employeurs doivent payer les congés non utilisés lors de la fin du contrat. Les employés européens pourraient prendre davantage de congés, car ils sont mieux protégés contre le licenciement. Les jours de maladie sont plus cadrés en europe. Un employé qui souffre d'une maladie longue pourrait utiliser les congés illimités mais ce ne sont pas les même règles qui s'appliquent OpenDNS n'est plus disponible en France et au Portugal https://support.opendns.com/hc/en-us/articles/27951404269204-OpenDNS-Service-Not-Available-To-Users-In-France-and-Portugal A priori Cisco qui opère openDNS en a marre des demandes de restrictions spécifiques à nos pays et préfère donc retirer entièrement l'accès au service plutôt que de se conformer à la nième demande de restrictions qui faisait suite à la plainte du groupe Canal+ portant sur l'accès à des sites illicites de streaming pour du sport Ask Me Anything Salut ! Êtes-vous plutôt IDE payants (ex : IJ Ultimate, ou des plugins payants), ou ne jurez-vous que par des outils gratuits ? Un peu des deux ? Si adaptes du payant, ça ne vous déprime pas qu'un nombre considérable d'employeurs rechignent à nous payer nos outils ? Que “de toute façon VSCode c'est gratuit” (à prononcer avec une voix méprisante) ? Quid du confort, ou de la productivité et/ou qualité accrue quand on maîtrise de tels outils ? Merci ! Conférences La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs : 6 septembre 2024 : JUG Summer Camp - La Rochelle (France) 6-7 septembre 2024 : Agile Pays Basque - Bidart (France) 17 septembre 2024 : We Love Speed - Nantes (France) 17-18 septembre 2024 : Agile en Seine 2024 - Issy-les-Moulineaux (France) 19-20 septembre 2024 : API Platform Conference - Lille (France) & Online 25-26 septembre 2024 : PyData Paris - Paris (France) 26 septembre 2024 : Agile Tour Sophia-Antipolis 2024 - Biot (France) 2-4 octobre 2024 : Devoxx Morocco - Marrakech (Morocco) 7-11 octobre 2024 : Devoxx Belgium - Antwerp (Belgium) 8 octobre 2024 : Red Hat Summit: Connect 2024 - Paris (France) 10 octobre 2024 : Cloud Nord - Lille (France) 10-11 octobre 2024 : Volcamp - Clermont-Ferrand (France) 10-11 octobre 2024 : Forum PHP - Marne-la-Vallée (France) 11-12 octobre 2024 : SecSea2k24 - La Ciotat (France) 16 octobre 2024 : DotPy - Paris (France) 16-17 octobre 2024 : NoCode Summit 2024 - Paris (France) 17-18 octobre 2024 : DevFest Nantes - Nantes (France) 17-18 octobre 2024 : DotAI - Paris (France) 30-31 octobre 2024 : Agile Tour Nantais 2024 - Nantes (France) 30-31 octobre 2024 : Agile Tour Bordeaux 2024 - Bordeaux (France) 31 octobre 2024-3 novembre 2024 : PyCon.FR - Strasbourg (France) 6 novembre 2024 : Master Dev De France - Paris (France) 7 novembre 2024 : DevFest Toulouse - Toulouse (France) 8 novembre 2024 : BDX I/O - Bordeaux (France) 13-14 novembre 2024 : Agile Tour Rennes 2024 - Rennes (France) 20-22 novembre 2024 : Agile Grenoble 2024 - Grenoble (France) 21 novembre 2024 : DevFest Strasbourg - Strasbourg (France) 21 novembre 2024 : Codeurs en Seine - Rouen (France) 27-28 novembre 2024 : Cloud Expo Europe - Paris (France) 28 novembre 2024 : Who Run The Tech ? - Rennes (France) 3-5 décembre 2024 : APIdays Paris - Paris (France) 4-5 décembre 2024 : DevOpsRex - Paris (France) 4-5 décembre 2024 : Open Source Experience - Paris (France) 6 décembre 2024 : DevFest Dijon - Dijon (France) 22-25 janvier 2025 : SnowCamp 2025 - Grenoble (France) 16-18 avril 2025 : Devoxx France - Paris (France) Nous contacter Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs Contactez-nous via twitter https://twitter.com/lescastcodeurs Faire un crowdcast ou une crowdquestion Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/
This Week in Startups is brought to you by… Vanta. Compliance and security shouldn't be a deal-breaker for startups to win new business. Vanta makes it easy for companies to get a SOC 2 report fast. TWiST listeners can get $1,000 off for a limited time at http://www.vanta.com/twist Uizard. Struggling to transform innovative ideas into concrete product designs? Uizard can help you turn your visions into polished UI designs in a fraction of the time, while enhancing collaboration across your entire team. Get 25% off Uizard Pro for an entire year at uizard.io/twist Experimentation is how generation-defining companies win. Accelerate your experimentation velocity with Eppo. Visit geteppo.com/twist * Todays show: Jason welcomes Melengo's Justin Kwong to the show to discuss how his company simplifies the process of developing, financing, and scaling apparel lines for brands and creators. The two dive into Melengo's business model, initial customers, fundraising, and much more (1:49). Then, Jason breaks down his A.D.D. framework, designed to enhance efficiency and focus within companies (36:50)! * Timestamps: (0:00) Jason kicks off the show (1:48) Justin Kwong from Melengo joins Jason (4:38) Justin demos Melengo and its use cases (9:45) Vanta - Get $1000 off your SOC 2 at http://www.vanta.com/twist (10:37) Melengo's business model, initial customers, and fundraising (22:19) Uizard - Get 25% off Uizard Pro for an entire year at http://uizard.io/twist (23:26) Building Melengo's team and the next steps for finding product-market-fit (36:50) Eppo. Accelerate your experimentation velocity with Eppo. Visit geteppo.com/twist (37:50) Jason's A.D.D. framework (Automate, Deprecate, Delegate) * Check out: Melengo - https://www.melengo.com A.D.D. Framework - https://calacanis.substack.com/p/startup-productivity-in-the-age-of LAUNCH Accelerator - https://launchaccelerator.co Founder University - https://www.founder.university The Syndicate - https://thesyndicate.com * Subscribe to This Week in Startups on Apple: https://rb.gy/v19fcp * Follow Justin: X: https://twitter.com/jkwong LinkedIn: https://www.linkedin.com/in/justinckwong * Follow Jason: X: https://twitter.com/Jason LinkedIn: https://www.linkedin.com/in/jasoncalacanis * Thank you to our partners: (9:45) Vanta - Get $1000 off your SOC 2 at http://www.vanta.com/twist (22:19) Uizard - Get 25% off Uizard Pro for an entire year at http://uizard.io/twist (36:50) Eppo. Accelerate your experimentation velocity with Eppo. Visit geteppo.com/twist * Great 2023 interviews: Steve Huffman, Brian Chesky, Aaron Levie, Sophia Amoruso, Reid Hoffman, Frank Slootman, Billy McFarland * Check out Jason's suite of newsletters: https://substack.com/@calacanis * Follow TWiST: Substack: https://twistartups.substack.com Twitter: https://twitter.com/TWiStartups YouTube: https://www.youtube.com/thisweekin Instagram: https://www.instagram.com/thisweekinstartups TikTok: https://www.tiktok.com/@thisweekinstartups * Subscribe to the Founder University Podcast: https://www.founder.university/podcast
Topics covered in this episode: Habits of great software engineers Flask 3.0 Build Conway's Game of Life With Python polars business Extras Joke Watch on YouTube About the show Sponsored by Scout APM Connect with the hosts Michael: @mkennedy@fosstodon.org Brian: @brianokken@fosstodon.org Show: @pythonbytes@fosstodon.org Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Tuesdays at 11am PT. Older video versions available there too. Brian #1: Habits of great software engineers As we wind up the year, many people are thinking about goals for the new year. Here's a decent list to think about Focusing beyond the code Efficiency / Antifragility Joy of tinkering Knowing the why Thinking in systems Tech detox The art of approximation Transferring Knowledge to Other Problems Making Hard Things Easy Playing the Long Game Developing a Code Nose Strong Opinions loosely held Michael #2: Flask 3.0 Deprecate the __version__ attribute. Use feature detection, or importlib.metadata.version("flask"), instead. #5230 How do you even do that? This is news to me: [build-system] requires = ["setuptools", "wheel"] build-backend = "setuptools.build_meta" [metadata] name = "your-package-name" version = "0.1.0" Remove previously deprecated code. #5223 Brian #3: Build Conway's Game of Life With Python Leodanis Pozo Ramos CLI curses version Nice walk through of breaking the problem into parts. Michael #4: polars business It's a plugin for Polars, which allows you to do business day arithmetic. The big advantage of using this directly (as opposed to converting to pandas/numpy, using their business day tools, and then converting back) is that polars-business fits right in with the Polars lazy API. This means you'll still be able to get the gains from the Polars query optimiser without having to step into eager execution. All you need to use is it is pip install polars-business Written in Rust, but end-users doesn't need Rust to run it, Python is all you need. Extras Brian: BLACKFRIDAY code still works for 50% off The Complete pytest Course, Full Course + Community Access, through Nov 30 Also Debugging chapter is up, and it includes a small TDD example. Michael: Dear Python Community by Kenneth Reitz Python 3.13a2 out and Major new features of the 3.13 series, compared to 3.12 Thank you Black Friday supporters. Joke: ai vs dev
Dans cet épisode Charles Sabourdin interview Jean-Michel Doudoux sur la sortie de la nouvelle version LTS de Java en 2023: Java 21. Enregistré le 5 septembre 2023 Téléchargement de l'épisode LesCastCodeurs-Episode-300.mp3 Java 21 The art of long-term support and what LTS means for the Java ecosystem JDK 21 444: Virtual Threads 453: Structured Concurrency (Preview) 446: Scoped Values (Preview) 440: Record Patterns 441: Pattern Matching for switch 430: String Templates (Preview) 443: Unnamed Patterns and Variables (Preview) 445: Unnamed Classes and Instance Main Methods (Preview) 431: Sequenced Collections 439: Generational ZGC 451: Prepare to Disallow the Dynamic Loading of Agents 452: Key Encapsulation Mechanism API 442: Foreign Function & Memory API (Third Preview) 448: Vector API (Sixth Incubator) 449: Deprecate the Windows 32-bit x86 Port for Removal À propos de Jean-Michel Doudoux Développons en Java https://www.jmdoudoux.fr http://blog.sciam.fr/. À propos de ParisJug https://www.parisjug.org/ https://www.jchateau.org/ https://javaday.parisjug.org/ Nous contacter Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs Contactez-nous via twitter https://twitter.com/lescastcodeurs Faire un crowdcast ou une crowdquestion Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/
Buckle up as the Real Identity Podcast and Max Parris take us on a journey through today's changing landscape. Follow along from the top of the roller coaster and the actual deprecation of third-party cookies in Chrome to all the twists and turns of privacy, interoperability, blockchain strategies for the future, self-sovereign identity and the metaverse.LinkedIn profile: https://www.linkedin.com/in/maxparris/Twitter: https://twitter.com/liverampCompany website: https://liveramp.com/Thanks for listening! Follow us on Twitter and Instagram or find us on Facebook.
Coming in with fresh water works this week, while the event is still raw. I'm reflecting with you on a time where I felt ashamed and embarrassed to be the host of Walnut Wednesday the podcast. This moment brought up a deep reflection as to why I felt I needed to make myself the butt of a joke in the first place and also elicited a brave conversation with an external party, simply explaining how something made me feel, without needing to know if that was the intent or not. Never be afraid to be yourself or to express that you have big feelings. And if you come to find that you are, know that I am here on the Walnut Journey with you – we've got this! Connect with me further at www.walnutwednesday.com/link-in-bio FB Group: The Walnut Tree IG: @walnutwednesday Book: Walnut Wednesday the book
3 misure di sicurezza allora osannate oggi deprecate - impariamo a capireAutenticazione a due fattori.Cambio frequente delle password.Divieto del copia e incolla.Ci sono regole ferree che diventano ridicolmente dannose.Impariamo a riconoscerle e capire i meccanismi che portano a raccomandare pratiche sbagliate.
I talk about the two most known uses of this word in English, one the very common "self-deprecating," and the other, the less well-known sense in computing. Along the way, I discover that the two big dictionaries, the Oxford English Dictionary and the Merriam-Webster Unabridged, don't include the latter meaning, and the definition in the OED hasn't been updated fully in a long time.Wikipediahttps://en.wikipedia.org/wiki/Unicode_character_property#DeprecatedCollins COBUILD Dictionaryhttps://www.collinsdictionary.com/dictionary/english/deprecate (scroll down)Dictionary of Computer Science, Engineering and Technology (editor: Philip A. Laplante), Boca Raton, FL: CRC Press, 2017
Topics covered ------------------------- 0:39 - About EIP-6049 1:16 - About William Entriken 1:44 - Start of the talk 1:45 - About EIP-6049 by William Entriken 2:37 - What is SELFDESTRUCT? 4:40 - Problems with SELFDESTRUCT 6:13 - About CREATE2 8:50 - Polymorphic smart contract 10:11 - What kind of applications will be affected by deprecating SELFDESTRUCT? 13:28 - EIP Motivation 18:21 - Why choose Meta EIP? 21:04 - What advantage or relationship do we see with the rest of the SELFDESTRUCT EIP? 22:44 - What are other 'Core' proposals for SELFDESTRUCT? Is there a possibility of having one of these core proposals included in the Cancun upgrade? 34:27 - Where is SELFDESTRUCT on the priority list? 38:00 - Thoughts on EIP Process, forking the EIP repository 44:40 - Communication of "Core" EIPs 46:22 - Message to the community Resources: ----------------- EIP-6049: https://eips.ethereum.org/EIPS/eip-6049 PEEPanEIP - https://www.youtube.com/playlist?list=PL4cwHXAawZxqu0PKKyMzG_3BJV_xZTi1F Shapella - https://www.youtube.com/playlist?list=PL4cwHXAawZxpok0smGmq-dFGVHQzW84a2 Questions for Guests - https://docs.google.com/forms/d/e/1FAIpQLSdsmujnH_ncIlSEJ23s9jzXAKwfpTGNeJqjREWPloBbkJVQTA/viewform Check out upcoming EIPs in Peep an EIP series at https://github.com/ethereum-cat-herders/PM/projects/2 Follow at Twitter William Entriken @fulldecent | Pooja Ranjan @poojaranjan19 Contact Ethereum Cat Herders --------------------------------------------------- Discord: https://discord.io/ethereumcatherders Twitter: https://twitter.com/EthCatHerders Medium: https://medium.com/ethereum-cat-herders Website: https://www.ethereumcatherders.com/
I read from deprecate to depressed. The word of the episode is "deprenyl". Theme music from Jonah Kraut https://jonahkraut.bandcamp.com/ Merchandising! https://www.teepublic.com/user/spejampar "The Dictionary - Letter A" on YouTube "The Dictionary - Letter B" on YouTube "The Dictionary - Letter C" on YouTube "The Dictionary - Letter D" on YouTube Featured in a Top 10 Dictionary Podcasts list! https://blog.feedspot.com/dictionary_podcasts/ Backwards Talking on YouTube: https://www.youtube.com/playlist?list=PLmIujMwEDbgZUexyR90jaTEEVmAYcCzuq dictionarypod@gmail.com https://www.facebook.com/thedictionarypod/ https://twitter.com/dictionarypod https://www.instagram.com/dictionarypod/ https://www.patreon.com/spejampar https://www.tiktok.com/@spejampar 917-727-5757
(Sponsored by amazon.co.jp) Get the keys to unlock your career potential with "Gaishikei Urawaza Eigo - Kihon no KEY"! This podcast is hosted by two comedians, BJ Fox and Terumi Ishii, who have experience working for foreign companies. You can enjoy learning English that you can use right away on a variety of business topics such as presentations, brainstorming, negotiation, and more. Recommended for those who work in the global arena, as well as for those who want to improve their English communication skills and advance their careers. New episodes available every Thursday, on your favorite podcast app! Follow and stay tuned for the latest episode. Tap for a direct link to your favorite podcast app: • Amazon Music https://amzn.to/3xeNlQb • Apple Podcast https://apple.co/3RQqouB • Spotify https://spoti.fi/3BtjaHG • Google Podcast https://bit.ly/3qo4u6b Learn more about your ad choices. Visit podcastchoices.com/adchoices
veryshortstoriesforyou@gmail.com
Freethought Fam - Friends - Family, and new coming community, it is a privilege to share these messages of humanity with you; from the voices of the people.With the help of Dr. Feeby and Dr Mark, we are able to delve into a much maligned and improperly humanized conversation about: Mental Health, Trauma, and the unique independent/interdependent relationship between them. They hold the key in the creation of who we are as individuals, and the path we walk in life. As sols attempting to thrive in a world that sees us less as humans, and more as tools to economic enrichment, our health is parlayed as an extravagance; and if the scars don't show it doesn't exist- walk it off.We wanted to give a heartfelt understanding of the ways we are so often held captive, by a life of unresolved trauma. The effects of trauma, and most significantly what is trauma relative to another's. What impact does trauma have in the development of a neural divergent sol, and what does it mean to be labeled as abnormally functioning. How do we gain a better foot in our own path to “normalcy”, while still being cognizant of others. Suicide is a often a taboo topic, but a real life event that has touched most lives. With the intimate and vulnerable share of personal testimony we get to understand what the thoughts are behind such a final act of submission.But of course we end with ways to enrich and liven your own life. This is a topic we all need, but far too many never get the chance to hear. 2 Pieces & a Biscuit: Thank you for listening, sharing, rating, and the rest of tha digs; be blessed!. It is a privilege to share with you these messages to #Humanizeus. #ShowyourHumanity and take the time to see people. #BeRevolutionary it makes ya solglow.Appreciation Appreciation: Thank you to Aryanna (@v0dka.aunt)for the art and delivery of this pod in 1000 words. Dr. Feeby and Dr. Mark for the continued couch time- off the clock. We, Freethought, and the world are better for the insightful heartfelt guidance you both share. So.jirn (@so.jirn)creating songs that are so impactful they evoke tears is a talent of few, we are proud to see your star continually ascending and being able to share it with others.***Freethought Revolution: Interactive Artistic Podcast***We are a community of artists sharing a meme of #HumanizeUs, our podcasts are coupled with art of all mediums. If you would like to have your art, music, voice, or story shared to further enhance a wildly diverse community contact at Freethoughtrev@gmail, or reach out on Instagram @freethoughtrevolution.Support the show (https://ko-fi.com/freethoughtrevolution)
PHP Internals News: Episode 98: Deprecating utf8_encode and utf8_decode London, UK Thursday, March 3rd 2022, 09:02 GMT In this episode of "PHP Internals News" I chat with Rowan Tommins (GitHub, Website, Twitter) about the "Deprecate and Remove utf8_encode and utf8_decode" RFC. The RSS feed for this podcast is https://derickrethans.nl/feed-phpinternalsnews.xml, you can download this episode's MP3 file, and it's available on Spotify and iTunes. There is a dedicated website: https://phpinternals.news Transcript Derick Rethans 0:14 Hi, I'm Derick. Welcome to PHP Internals News, a podcast dedicated to explaining the latest developments in the PHP language. This is episode 98. Today I'm talking with Rowan Tommins about the "Deprecate and remove UTF8_encode and UTF8_decode" RFC that he's proposing. Hi, Rowan, would you please introduce yourself? Rowan Tommins 0:38 Hi, I'm Rowan Tommins. I'm a PHP software architect by day and try and contribute back to the community and have been hanging around in the internals mailing list for about 10 years and contributed to make the language better, where I can. Derick Rethans 0:57 Excellent. Yeah, that's how I started out as well, many, many more years before that, to be honest. This RFC, what problem is this trying to solve? Rowan Tommins 1:08 PHP has these two functions, utf8_encode and utf8_decode, which, in themselves, they're not broken. They do what they are designed to do. But they are very frequently misunderstood. Mostly because of their name. And because Character Encodings in general, are not very well understood. People use them wrong, and end up getting in all sorts of pickles that are worse than if the functions weren't there in first place. Derick Rethans 1:37 What are you proposing with the RFC then? Rowan Tommins 1:39 Fundamentally, I'm proposing to remove the functions. As of PHP 8.2, there will be a deprecation notice whenever you use them, and then in 9.0, they would be gone forever, and you wouldn't be able to use them by mistake, because they just wouldn't be there. Derick Rethans 1:56 I reckon there's going to be a way to actually do what people originally intended to do with it at some point, right? Rowan Tommins 2:02 So yeah, there are alternatives to these functions, which are much clearer in what you're doing, and much more flexible in what you can do with them so that they cover the cases that these functions sound like they're going to do, but don't actually do when you understand what they're really doing. Derick Rethans 2:20 I think we'll get back to that a little bit later on. You're wanting to deprecate these functions. But what do these functions actually do? Rowan Tommins 2:27 What they actually do is convert between a character encoding called Latin-1, ISO 8859-1, and UTF-8. So utf8_encode converts from Latin-1 into UTF-8, utf8_decode does the opposite. And that's all they do. Their names make it sound like they're some kind of fix all the UTF 8 things in my text. But they are actually just these one very specific conversion, which is occasionally useful, but not clear from their names. Derick Rethans 3:01 It's certainly how I have seen it used in the past, where people just throw everything and the kitchen sink at it, and expecting it to be valid UTF 8, and then at the end, decode. I mean, the decoding was not even part much of this, right? It's just throw everything at it, and then magically it will all be UTF 8. But I reckon that's not really quite the case. When and how does that go wrong? Rowan Tommins 3:26 So what actually ends up happening is, because text doesn't know what encoding it's in. Something that people misunderstand about character encoding is they think it's like, the text is a certain colour, and the computer knows what colour it is. And if you tell the computer to make it a different colour, then it will work. But it's not like that. In the computer, there's just the sequence of binary. And the encoding is how to read that binary as text. And if you tell the computer to read it as Latin 1, it will read it as Latin 1. If you take to convert from Latin 1 to UTF 8, it will assume the input is Latin 1, it will convert to UTF 8 on that basis. If your text actually wasn't Latin 1 in the first place, you're just going to end up with garbage. And some of the worst cases of that is when you already have UTF 8, and then you run utf8_encode on it, because the language doesn't know that you've already got UTF 8, so it tries to read its Latin 1, write it out ass UTF 8 and you get this weird Mojibake. I don't know pronouncing that right. Derick Rethans 4:27 I think it's pronounced Mojibake. Rowan Tommins 4:30 Mojibake. Derick Rethans 4:31 It's a Japanese term, because clearly these things, these issues happened with Japanese text quite a lot because they have a lot more different and difficult characters and encodings as well. With which things often go wrong though? Rowan Tommins 4:44 Using an unco on text that's already UTF 8 is obviously a big one. Usually obvious, but occasionally people just getting a muddle with that. The other thing that often happens is confusing with similar encoding. Latin 1 is often mistaken for a different coding windows 1252. To the extent that web pages labelled as Latin 1, web browsers will assume that they're actually in Windows 1252. These PHP functions don't make that assumption. If your text is actually in Windows 1252, and it's been mislabelled Latin 1, you might still think you're doing the right thing. So I've got Latin 1 text, but you haven't. And then the characters that are different, are going to get mangled again. And there's a few other related encodings that often look the same. There are a few other encodings that look the same at a glance that again, will go wrong on any character that's different between the different encodings. Derick Rethans 5:43 How could a function tell which encoding a certain text was in? Rowan Tommins 5:49 It's tricky. There are libraries out there that try to do it. Some encodings that are sequences of bits that aren't a valid character. So if any of those appear, it's definitely not in that encoding. Unfortunately, a lot of encodings, every pattern of bits has a meaning. It's just not necessarily mean. So you can't look at the string and just tell at a glance. The only way I've seen that does it effectively, is trying to guess based on what language text it might be in. If your text suddenly has a load of symbols in the middle of sentences, you're probably using the wrong encoding. If it's suddenly got a load of capital letters, in the middle of words, you're probably using the wrong encoding. So you can make guesses like that, that ultimately, there are only ever guesses. Derick Rethans 6:38 It's only always going to be a guess, right? You can't really tell for certain what it it is, which I've seen people assume that she can just tell. We have concluded that utf8_encode and decode don't actually do what they say they don't magically encode everything to UTF 8. What if things go wrong? How are errors handled? Rowan Tommins 6:58 If you're converting from Latin 1 into UTF 8, there Latin 1 covers all 256 possible eight bit binary strings. Those will correspond directly to a single mapping in Unicode and therefore in UTF 8. So there are no errors as such, when that happens, but it might not be what you want. One of the most notable ones that's different between these encodings is Latin 1 was standardized in 1985, the Euro didn't exist, then. The euro symbol doesn't have an encoding in Latin 1. If you've got a euro sign, you haven't got Latin 1 text, but you might think you've got Latin 1 text, and it will just encode it to what to a control character, which is where the windows 1252 code page puts the euro symbol, it replaces some control characters in Latin 1. One of the reasons why these character encodings are so easily confused is they've all nicely built to being compatible on top of each other. Latin 1 is deliberately an extension of ASCII. Windows 1252 is deliberately an extension of Latin 1, replacing some control characters. UTF 8 is also based on Latin 1, the first section of Unicode is actually the Latin 1, characters UTF 8 will encode and slightly differently so that it can carry on above 256. So in that direction, you can't actually get an error, you could just get a string, that doesn't make sense. Going back the other way. Unicode has, I think, potentially 11 million or something, and actually, at least a million assigned code points. Latin 1 only has 256. So you can't map all those back. And this function, the utf8_decode just replaces any that it can't match with the question mark. Similarly, if the input string isn't valid UTF 8. Again, if you've just misunderstood what strings doing and you haven't actually got a UTF 8 string in the first place, any sequence that doesn't look like valid UTF 8, again, just gets replaced with a question mark. Completely silently you get no warnings in your logs or anything. So you'll just get a few question marks. And problem is, a lot of people are writing text, mostly in English. So it's mostly ASCII. And all of these encodings agree on those first 127 things including all the letters and digits, most of your text will look fine. But if you're using utf8_encode, some of the accented letters will just look a bit funny. If using utf8_decode some of the characters will just turn into question marks. And you might just not notice that for a while until your applications been in production. And now all your strings a messed up. Derick Rethans 9:48 And I reckon that there's no way to fix that? Rowan Tommins 9:52 No. If you've saved saved the text, particularly with the decode direction. Run utf8_encode wrong, if you're careful and tracked carefully where what you've used, you can retrace your steps back to the original string. But if you've not understood what it was doing in the first place, you might have run it more than once, or put it into a system and then re interpreted it in a different way. And it can sometimes be quite hard to trace back what the original string was. You'll sometimes just have to edit it by hand. And guess that, oh, that's probably any acute because that was the word that was trying to be there. That was probably a curly quote mark that somebody was trying to type and those kinds of things. Derick Rethans 10:35 Talking about curly quote marks, I just found out that those are actually are code points in the windows 1252 encoding. Because I just had to edit a document that had these things in there. But the file was set as... this is UTF 8, which was a lie. It was a lie to begin with. We've established that these functions are pretty much destructive to text potentially, as well as not really doing what they say they do: encode every random stuff to UTF 8 or the other way around. I saw any RFC that you've done some research into their usage, didn't bring up anything interesting to talk about? Rowan Tommins 11:13 Yes, so there's a few things. So what I downloaded, it was last year, actually, I kind of had to pause on this RFC for real life happened a bit to me. So last year, I downloaded the 1000, I think top packages on Packagist, I'm most popular downloads, and went through all the uses, I could say of these functions. There were a handful that were using them correctly, they were checking that their input was Latin 1, or the output they needed was Latin 1. And using these, there were a few of those that were questionable, where they might have mistaken Latin 1 for Windows 1252. And actually, they were going to mess up any Euro signs or any of those few extra things that Microsoft added over the top of those control characters. There were a few using strftime, which can do translated Date Time strings. Those it turns out that functions been deprecated itself now, that will become a non issue, some people will have to find a different solution to that anyway. One of the odder ones that I've seen, which technically works, but only accidentally is people use it for what I describe as armour, where they've got a system that wants UTF 8 text, often encoding as JSON or something like that, where it needs to be UTF 8, they've got some unknown encoding that's not UTF 8, they encode to UTF 8, transmitted through the system. And then on the other end, run utf8_decode and they'll get back the string that they put in, because it never errors, there will always be a mapping of any string of bits that this function will give in UTF 8, it just won't be a meaningful string. You could put a JPEG image through utf8_encode, and you will get a string that is valid UTF 8, it's just not going to be very useful UTF 8. It's kind of a bit of a weird way of doing the thing you might do with base 64, or quoted printable encoding or something like that almost something for transport, it technically works. But this probably isn't the function you want to be doing it with. It's not a very useful encoding. And then there were a good number, which just tried throwing all the functions they could. And I kind of I don't want to call out the people with this. I think they were genuine mistakes, they were genuinely trying to solve a problem. But some of them just in hindsight looking at them or kind of hilarious. I think the one that makes me laugh most is the person who raised the StackOverflow question because their CSV file, some of the fields had grown to 32 kilobytes long, because they'd repeatedly run the same string through utf8_encode so many times, that each time it was encoding a single byte to multiple bytes, and then single bytes of that to multiple bytes. And only when it got to 32 kilobytes in one field, did they question whether they were doing the right thing? By which time their text was probably irrevocably lost in whatever other processing they've done on this file. Derick Rethans 14:22 Excellent encryption. Rowan Tommins 14:24 Yes. Derick Rethans 14:25 The RFC talks about a few other approaches to instead of deprecating utf8_encode and decode. What are the things that you look at? And why did you reject them in the end? Rowan Tommins 14:36 One of the most obvious things you could do? The biggest problem is the name of the functions. Could you just rename them? The problem with that is you'd have to spend a long time doing it because you want to introduce the new name in one version of PHP, then deprecate in a later later version of PHP, and then finally remove. And then at the end of it, you'd have these very specific functions. We could call them latin1_to_utf8 and utf8_to_latin1. If we were designing those functions, if you put an RFC to, to add those functions to the language, it wouldn't pass. There's they're very why, why would we have these specific functions, and we'd still have this problem of Windows 1252, and other related encodings, like Latin 9, which is the official successor to Latin 1, and also has a few differences amongst it. They still wouldn't solve a lot of people's problems. A lot of the people that actually want Latin 1 are going to need the euro symbol. So they don't probably don't actually use Latin 1 any more. Because I guess Canadian French, and Mexican Spanish, need to probably that in one's probably still a decent encoding for but the Western European languages it was originally designed for, probably everyone's going to want a euro symbol. Changing the name just leaves us with these awkward functions still. You could instead or as well add options to them, you could add a parameter to them that indicated what the source or destination encoding was. That defaulted initially to Latin 1, and then you were forced to add it later. And then at least you'd be spelling out what encoding it was. The problem with that is, the more encodings, you add, there's actually quite a lot of code that would need to then be added to the function, and it will be duplicating functions we've already got. Derick Rethans 16:31 Such as? Rowan Tommins 16:32 So we've actually in PHP got three functions that can convert between any pair of encodings, including the ones that these functions do. They're all unfortunately in extensions, which are technically optional. Which is something that the way PHP is modular, means that a lot of things that you'd think were kind of just part of the language are technically optional, for one reason or another. But we've got mb_convert_encoding from the mbstring extension. We've got iconv, which uses an external library of the same name. Derick Rethans 17:09 Are you sure it just doesn't use a GCC function or the glib functionality in PHP? Rowan Tommins 17:14 The iconv function uses whatever iconv is available on the system, and seems to vary quite a lot between systems. Oddly, one online code running tool I tried, doesn't actually recognize 8859-1 as an encoding in the iconv function. I don't know why. Just something about the libraries, that version of PHP was built, built against. The most powerful one we've got but also the least documented is the intl extension, which is built on the ICU library, made by the Unicode Consortium. That has a lot of options around how you handle errors and missing characters and supports a lot of different character sets. Some was completely undocumented, I've tried to write a manual page for it, which will hopefully get merged and put live soon. So at least, there will be some documentation there's a, there's an object that you can use with lots of options. But there's a static method, which just takes a from and to encoding. So that's one option. The mb_convert_encoding is probably the most widely available. And maybe we should be looking at making that MB string, less optional. I don't know what that looks like, because of the way, unless you force people to compile it in a lot of the Linux distros. Distribute every module they can separately, they make optional. Derick Rethans 18:39 But they also make it easy for you to install them then. Rowan Tommins 18:42 They make it very easy to install. So I don't know how many people actually run PHP with just its minimal set of modules. And how many just install a default set. The default set is a bit vaguely defined, unfortunately. So that's one of the my main hesitation with this removal, that although we've got these alternatives, we've got these three alternatives. They've all got slight problems, and they're all optional. Derick Rethans 19:08 But considering that utf8_encode and decode don't actually really do well, they say they do, everybody that had to do character set conversions correctly, would have already been using these functions. Rowan Tommins 19:23 Indeed, yes. So I've seen people misuse all of these. Again, people do just generally misunderstand character encoding. MB string does have a function to guess character encoding. As you're saying earlier, people just kind of assume that that will work. A lot of the time, it can't really tell the difference between different character encodings. It can tell you whether a string is valid UTF 8, it can't tell you whether it's Latin 1 or Windows 1252, or any of these others that are single byte encodings. Derick Rethans 19:52 I think ICU actually as functionality for guessing an encoding as well, but it will give you back an array of possibilities and perhaps even with a confidence. But it's a long, long time since I've looked at that. So I'll have to revisit it. Rowan Tommins 20:08 Yeah, that would at least be a more kind of transparent way of doing it that. And that's I guess what I'm trying to do with removing these, is that if you're forced to specify a pair of encodings, as you do for these other functions, at least hopefully, somewhere in your mind, you're going to be thinking about what encodings you might have, rather than just reaching for the first function you find. Derick Rethans 20:31 Yep, exactly. What is the feedback being so far? Rowan Tommins 20:34 Generally positive. There hasn't been a lot of a lot of comments. But those that have been have generally been supportive. I liked somebody said: All the times they've seen it used, including when they've used it themselves, it's been a misunderstanding. I'd like to hear more feedback of anyone. Anyone does have quite. The main feedback I have had has been around making sure there are alternatives to recommend to people. So anyone who is using these correctly, or nearly correctly, what we tell them to use instead, how do we make sure that's clear, and clearly documented, and we're recommending the right thing. I'm going to think a bit more about that, whether we should be being more definite in recommending one of these options. Particularly I think iconv does seem to have these odd platform issues. They used to be a fourth option. While I was looking at this, they used to be another library called recode. That one seems to have been discontinued. Some references in the PHP manual still refer to recode as an optional option for doing this. But that's been long since shelved. So MB string has the benefit that it doesn't rely on any third party libraries. It's technically a third party library, but it's shipped with PHP, and I don't think anything other than PHP uses it any more. And there have been a lot of there's been a lot of work on that library recently, particularly somebody called Alex Douward, apologies, if you're listening to this, and I pronounce your surname wrong, has done a lot of great work. I've seen recently improving that extension, making sure the detection algorithm is doing as sensible results as it can and improving the test test coverage of that extension and things like that. So that gives me a bit more confidence in that extension, which initially was one of those PHP reinventing the wheel, it felt a bit like, so probably update the RFC to more explicitly say, that's the number one recommended path. Derick Rethans 22:27 And of course, you can link that from the utf8_encode and utf8_decode manual pages as well. Please don't use this instead, do this, right? Rowan Tommins 22:36 Yeah. And that's again, where it can be a nice clear drop in replacement, so that people are using it right. Here's exactly what to what to use instead. But hopefully, while they're replacing it, they may be at least think about whether it was doing what they what they were hoping for in the first place. Derick Rethans 22:55 When do you think you'll be bringing this up for a vote? Rowan Tommins 22:59 Unless I get more feedback, further changes? I'll probably tweak that wording in terms of the recommendation that we'll put to users. Otherwise, probably in the next couple of weeks, unless I hear any more, to see if any last minute criticism comes out the woodwork when people are asked to vote on it. Derick Rethans 23:18 Yeah that always happens, right? No comments when there isn't a request for comments. But loads of comments if people are voting on it, and it makes it to Twitter. Okay, Rowan, thank you for taking the time today then to talk about this RFC. Rowan Tommins 23:32 Thank you very much for having me. Derick Rethans 23:39 Thank you for listening to this installment of PHP internals news, a podcast dedicated to demystifying the development of the PHP language. I maintain a Patreon account for supporters of this podcast, as well as the Xdebug debugging tool. You can sign up for Patreon at https://drck.me/patreon. If you have comments or suggestions, feel free to email them to derick@phpinternals.news. Thank you for listening, and I'll see you next time. Show Notes RFC: Deprecate and Remove utf8_encode and utf8_decode Credits Music: Chipper Doodle v2 — Kevin MacLeod (incompetech.com) — Creative Commons: By Attribution 3.0
Watch the live stream: Watch on YouTube About the show Sponsored by Datadog: pythonbytes.fm/datadog Special guest: Dean Langsam Brian #1: A Better Pygame Mainloop Glyph Doing some game programming is a great way to work on coding for early devs (and experienced devs). pygame is a popular package for writing games in Python But… the normal example of a main loop, which listens for events and dispatches actions based on events, has some problems: it's got a while 1: that wastes power, too much busy waiting looks bad, due to “screen tearing” which is writing to a screen while your in the middle of drawing it This post discusses the problems, and walks through to an async main loop that creates a better gaming experience. Michael #2: awesome sqlalchemy A few notable ones SQLAlchemy-Continuum: Versioning and auditing extension for SQLAlchemy. SQLAlchemy-Utc: SQLAlchemy type to store aware datetime.datetime values. SQLAlchemy-Utils: Various utility functions, new data types and helpers for SQLAlchemy filedepot: DEPOT is a framework for easily storing and serving files in web applications. SQLAlchemy-ImageAttach: SQLAlchemy-ImageAttach is a SQLAlchemy extension for attaching images to entity objects. SQLAlchemy-Searchable: Full-text searchable models for SQLAlchemy. sqlalchemy_schemadisplay: This module generates images from SQLAlchemy models. Can we also get a shoutout to SQLModel? Dean #3: ThreadPoolExecutor in Python: The Complete Guide Long, but worth it (80-120 minutes). Could be consumed in parts. It's mostly a collection of other blogposts on superfastpython Many examples LifeCycle Usage patterns Map and was as_completed vs sequentially callbacks IO-Bound vs CPU-bound Common Questions Comparison vs. ProcessPoolExecutor vs. threading.Thread vs. AsyncIO Brian #4: Chaining comparison operators Rodrigo Girão Serrão I use chained expressions all the time, mostly with ranges: min
Today I want to discuss the Deprecate dynamic properties RFC in PHP 8 and give you my view on breaking changes in software development. Changelog New YT short PHP Union Data types You can watch me struggle to get the new PHP course that I'm building to level 9 of PHPStan I did that live on Tuesday. Over on Twitch I connected Googles YouTube API to https://howtocodewell.fm I've started to use the new GitHub projects beta tool which lets you create a project that can have tasks from multiple repos which is proving very handy. I've started to look into the blockchain and how it works. I can't promise that I will do a course or a tutorial on that but I'm trying to wrap my brain around how it all works I have my new M1 Max MacBook Pro. I haven't had much chance using it as I've been so busy of late. Get in contact and ask me a question My web development courses ➡️ Learn How to build a JavaScript Tip Calculator ➡️ Learn JavaScript arrays ➡️ Learn PHP arrays ➡️ Learn Python ✉️ Get my weekly newsletter ⏰ My current live coding schedule (Times are GMT) Tuesdays 18:00 = Live Podcast YouTube Thursdays 20:00 = Live Podcast YouTube Saturday 14:30 - Live coding on Twitch
Watch the live stream: Watch on YouTube About the show Special guest: Yael Mintz Sponsored by us: Check out the courses over at Talk Python And Brian's book too! Michael #1: awesome-htmx An awesome list of resources about htmx such as articles, posts, videos, talks and more. Good for all sorts of examples and multiple languages We get a few nice shoutouts, thanks Brian #2: Python 3.10 is here !!!! As of Monday. Of course I have it installed on Mac and Windows. Running like a charm. You can watch the Release Party recording. It's like 3 hours. And starts with hats. Pablo's is my fav. Also a What's New video which aired before that with Brandt Bucher, Lukasz Llanga ,and Sebastian Ramirez (33 min) Includes a deep dive into structural pattern matching that I highly recommend. Reminder of new features: PEP 623 -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject. PEP 604 -- Allow writing union types as X | Y PEP 612 -- Parameter Specification Variables PEP 626 -- Precise line numbers for debugging and other tools. PEP 618 -- Add Optional Length-Checking To zip. bpo-12782: Parenthesized context managers are now officially allowed. PEP 632 -- Deprecate distutils module. PEP 613 -- Explicit Type Aliases PEP 634 -- Structural Pattern Matching: Specification PEP 635 -- Structural Pattern Matching: Motivation and Rationale PEP 636 -- Structural Pattern Matching: Tutorial PEP 644 -- Require OpenSSL 1.1.1 or newer PEP 624 -- Remove Py_UNICODE encoder APIs PEP 597 -- Add optional EncodingWarning Takeaway I wasn't expecting: black doesn't handle Structural Pattern Matching yet. Yael #3: Prospector (almost) All Python analysis tools together Instead of running pylint, pycodestyle, mccabe and other separately, prospector allows you to bundle them all together Includes the common Pylint and Pydocstyle / Pep257, but also some other less common goodies, such as Mccabe, Dodgy, Vulture, Bandit, Pyroma and many others Relatively easy configuration that supports profiles, for different cases Built-in support for celery, Flask and Django frameworks https://soshace.com/how-to-use-prospector-for-python-static-code-analysis/ Michael #4: Rich Pandas DataFrames via Avi Perl, by Khuyen Tran Create animated and pretty Pandas Dataframe or Pandas Series (in the terminal, using Rich) I just had Will over on Talk Python last week BTW: Terminal magic with Rich and Textual Can limit rows, control the animation speed, show head or tail, go “full screen” with clear, etc. Example: from sklearn.datasets import fetch_openml from rich_dataframe import prettify speed_dating = fetch_openml(name='SpeedDating', version=1)['frame'] table = prettify(speed_dating) Brian #5: Union types, baby! From Python 3.10: “PEP 604 -- Allow writing union types as X | Y” Use as possibly not intended, to avoid Optional: def foo(x: str | None = None) -> None: pass 3.9 example: from typing import Optional def foo(x: Optional[str] = None) -> None: pass But here's the issue. I need to support Python 3.9 at least, and probably early, what should I do? For 3.7 and above, you can use from __future__ import annotations. And of course Anthony Sottile worked this into pyupgrade and Adam Johnson wrote about it: Python Type Hints - How to Upgrade Syntax with pyupgrade This article covers: PEP 585 added generic syntax to builtin types. This allows us to write e.g. list[int] instead of using typing.List[int]. PEP 604 added the | operator as union syntax. This allows us to write e.g. int | str instead of typing.Union[int, str], and int | None instead of typing.Optional[int]. How to use these. What they look like. And how to use pyupgrade to just convert your code for you if you've already written it the old way. Awesome. Yael #6: Make your code darker - Improving Python code incrementally The idea behind Darker is to reformat code using Black (and optionally isort), but only apply new formatting to regions which have been modified by the developer Instead of having one huge PR, darker allows you to reformat the code gradually, when you're touching the code for other reasons.. Every modified line, will be black formatted Once added to Git pre-commit-hook, or added to PyCharm **/ VScode the formatting will happen automatically Extras Brian: I got a couple PRs accepted into pytest. So that's fun: 9133: Add a deselected parameter to assert_outcomes() 9134: Add a pythonpath setting to allow paths to be added to sys.path I've tested, provided feedback, written about, and submitted issues to the project before. I've even contributed some test code. But these are the first source code contributions. It was a cool experience. Great team there at pytest. Michael: New htmx course: HTMX + Flask: Modern Python Web Apps, Hold the JavaScript auto-optional: Due to the comments on the show I remembered to add support for Union[X, None] and python 10's X | None syntax. Coverage 6.0 released Django 3.2.8 released Yael: data-oriented-programming - an innovative approach to coding without OOP, with an emphasis on code and data separation, which simplifies state management and eases concurrency Help us to make Cornell awesome
So is time to celebrate! We got a new box of toys with the new release of Java! This is also a Long-Term-Support release which means that's usually a "good one" to jump into! Switch Expressions! Helpful Nullpointers, Sealed Classes... there is a TON that's new And we got the best Doctor in town to walk us through all of them. We're of course talking about Stuart Marks! (AKA Dr. Deprecator). We cover most of the important features from 11 to 17 (there's a ton that was left out, so keep following the links to know more!) http://www.javapubhouse.com/datadog We thank DataDogHQ for sponsoring this podcast episode Don't forget to SUBSCRIBE to our cool NewsCast OffHeap! http://www.javaoffheap.com/ Language Features Pattern Matching for instanceof https://docs.oracle.com/en/java/javase/16/language/pattern-matching-instanceof-operator.html Switch Expressions https://docs.oracle.com/en/java/javase/13/language/switch-expressions.html Sealed Classes https://docs.oracle.com/en/java/javase/15/language/sealed-classes-and-interfaces.html Text Blocks https://docs.oracle.com/en/java/javase/13/text_blocks/index.html Debugging Features Helpful NullPointerExceptions https://www.baeldung.com/java-14-nullpointerexception Performance Features New Garbage Collectors (Shenandoah, ZGC) https://blogs.oracle.com/javamagazine/post/understanding-the-jdks-new-superfast-garbage-collectors Unix-Domain Socket Channels https://openjdk.java.net/jeps/380 Deprecation & Platform evolution Remove the Nashorn JavaScript Engine (Plug Graal!) https://openjdk.java.net/jeps/372 Deprecate the Security Manager for Removal and Applets https://openjdk.java.net/jeps/411 Strongly Encapsulate JDK Internals https://openjdk.java.net/jeps/403 Warnings for Value-Based Classes https://openjdk.java.net/jeps/390 Do you like the episodes? Want more? Help us out! Buy us a beer! https://www.javapubhouse.com/beer And Follow us! https://www.twitter.com/javapubhouse
Diesmal ist das Importsystem von Python Thema. Johannes, Dominik und Jochen sitzen endlich mal wieder zusammen vor Ort im Wintergarten. Im News-Teil ist gleich mal ein blöder Fehler, weil Jochen den Artikel über den Umstieg von scipy auf das Meson Buildsystem nicht genau genug gelesen hat (meson ist nur 4 statt 100 mal schneller, sry). Wer Lust auf ein kleines Audioexperiment hat folge bitte dem Permalink. Hier nochmal die aktuelle Episode, allerdings nur von Ultraschall gerendert und nicht durch Auphonic veredelt. Wer Lust hat, kann sich die beiden Audiodateien ja mal im Vergleich anhören. Ich finde, dass das Auphonic-Audio von oben tatsächlich ein bisschen besser anhört (vor allem bei der loudness-Normalisierung). Aber vielleicht habe ich ja auch Ultraschall falsch eingestellt. Ich wäre jedenfalls durchaus daran interessiert herauszufinden, was ich da noch verbessern kann :). Folgende Plugins habe ich bei Ultraschall aktiviert: Equalizer (ultraschall 5) Ambience (ultraschall Studio) Ultraschall Dynamics LUFS_Loudness auf dem Master Shownotes Unsere E-Mail für Fragen, Anregungen & Kommentare: hallo@python-podcast.de News aus der Szene Apple Adds a Backdoor to iMesssage and iCloud Storage Linus über Impfungen PEP 632 -- Deprecate distutils module | Moving SciPy to the Meson build system Python 3.10.0rc1 - first 3.10 release candidate Github Copilot ‘Tortured phrases’ give away fabricated research papers - Colossal Data :) Podcast Episode: Yann LeCun über self supervised learning etc.. | Attention Is All You Need Importsystem Python behind the scenes #11: how the Python import system works | Diskussion auf Hacker News The import system (Referenzdokumentation) Artikel auf Realpython: Python import: Advanced Techniques and Tips Podcast Episode: Episode 72: Starting With FastAPI and Examining Python's Import System Singleton marshal — Internal Python object serialization | shelve — Python object persistence | About Dill Benutzung von importlib in den Tests: Make wagtailmedia media chooser compatible with wagtail 2.13 #136 | Erster Stream zum wagtailmedia PR Picks GitHub octo oh my git: An open source game about learning Git! pre-commit A framework for managing and maintaining multi-language pre-commit hooks. Öffentliches Tag auf konektom
Watch the live stream: Watch on YouTube About the show Sponsored by us: Check out the courses over at Talk Python And Brian's book too! Special guest: Juan Pedro Araque Espinosa (Youtube Chanel: Commit that Line) Michael #1: State of the community (via Jet Brains) This report presents the combined results of the fifth annual Developer Ecosystem Survey conducted by JetBrains Not just Python, but all of us Python is more popular than Java in terms of overall usage, while Java is more popular than Python as a main language. The 5 fastest growing languages are Python, TypeScript, Kotlin, SQL, and Go. A majority of the respondents (71%) develop for web backend. Does fall into the trap of “Hi, I'm a CSS developer, nice to meet you” though Women are more likely than men to be involved in data analysis, machine learning, and UX/UI design or research. Women are less likely than men to be involved in infrastructure development and DevOps, system administration, or Deployment. Brian #2: Cornell - record & replay mock server Suggested by Yael Mintz (and it's her project) Introduction blog post “Cornell makes it dead simple, via its record and replay features to perform end-to-end testing in a fast and isolated testing environment. When your application integrates with multiple web-based services, end-to-end testing is crucial before deploying to production. Mocking is often a tedious task. It becomes even more tiresome when working with multiple APIs from multiple vendors. vcrpy is an awesome library that records and replays HTTP interactions for unit tests. Its output is saved to reusable "cassette" files. By wrapping vcrpy with Flask, Cornell provides a lightweight record and replay server that can be easily used during distributed system testing and simulate all HTTP traffic needed for your tests.” Juanpe #3: Factory boy (with Pydantic by chance) Factory_boy allows creating factories to generate objects that could be used as text fixtures Briefly mentioned in the past in episode 193 A factory takes a base object and allows to very easily and naturally define default values for each field of the object. One can have many factories for the same object that could be used define different types of fixtures of the same object It works with ORM objects (Django, Mongo, SQLAlchemy…) If you have a project that uses Pydantic to define your objects, factory boy also supports Pydantic although it is not documented and does it by a side effect Internally factory boy generates a parameters dictionary that that is unpacked when constructing the model at hands. This works perfectly with pydantic and can be used to generate pydantic objects on the fly with the full power of factory boy Michael #4: pyinstrument Call stack profiler for Python. Shows you why your code is slow! Instead of writing python script.py, type pyinstrument script.py Your script will run as normal, and at the end (or when you press ^C), Pyinstrument will output a colored summary showing where most of the time was spent. Async support! Pyinstrument now detects when an async task hits an await, and tracks time spent outside of the async context under this await. Pyinstrument also has a Python API. Just surround your code with Pyinstrument Nice middleware examples for Flask & Django Brian #5: Python 3.10 is now in Release Candidate phase. RC1 just released. RC2 planned for 2021-09-06 official release is planned for 2021-10-04 It is strongly encourage maintainers of third-party Python projects to prepare their projects for 3.10 compatibility during this phase Reminder of major changes: PEP 623 -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject. PEP 604 -- Allow writing union types as X | Y PEP 612 -- Parameter Specification Variables PEP 626 -- Precise line numbers for debugging and other tools. PEP 618 -- Add Optional Length-Checking To zip. bpo-12782: Parenthesized context managers are now officially allowed. PEP 632 -- Deprecate distutils module. PEP 613 -- Explicit Type Aliases PEP 634 -- Structural Pattern Matching: Specification PEP 635 -- Structural Pattern Matching: Motivation and Rationale PEP 636 -- Structural Pattern Matching: Tutorial PEP 644 -- Require OpenSSL 1.1.1 or newer PEP 624 -- Remove Py_UNICODE encoder APIs PEP 597 -- Add optional EncodingWarning Juanpe #6: time-machine Time-machine mock datetime and time related calls globally noticeably faster than other well known tools like freezgun. The mocking is achieved by replacing the c-level calls by whatever value we want which means the library does not need to mock individual imports. Mocking datetime cannot be done with patch.object and needs to be patched everywhere it is used which can turn mocking everything into a tedious (and/or slow) process. Datetime methods (now, today, utcnow…) can be mocked by setting a frozen time or by letting the time tick since the mock call is made. It provides a simple context manager to use it as well as pytest fixture that makes using it very simple from datetime import datetime import time_machine @time_machine.travel("2021-01-01 21:00") def test_in_the_past(): assert datetime.now() == datetime(2021, 1, 1, 21, 0) --------------------------------- # The time_machine fixture can also be used with pytest def test_in_the_past(time_machine): time_machine.move_to(datetime(2021, 1, 1, 21, 0)) assert datetime.now() == datetime(2021, 1, 1, 21, 0) Extras Michael Credit-card stealing malware found in official Python repository and Software downloaded 30,000 times from PyPI ransacked developers' machines (via Joe Riedly) Brian Flavors of TDD - Test & Code episode 162 Working on tox and CI chapter of 2nd edition of pytest book, hoping that to be released within the next week. Joke JavaScript Developer Bouncing from framework to framework
Antonio, Guillaume et Emmanuel discutent de pleins de choses dont des analyses de l'écosystème de la JVM, de la generation de code via intelligence Artificielle avec CoPilot, mais pas que. Enregistré le 16 juillet 2021 Téléchargement de l'épisode [LesCastCodeurs-Episode-999.mp3](https://traffic.libsyn.com/lescastcodeurs/LesCastCodeurs-Episode-999.mp3) ## News ### Langages [Les prédictions d'Adam Bien pour la seconde moitié de 2021](https://adambien.blog/roller/abien/entry/mid_year_2021_observations_and) * Kube a gagné la guerre. Les cloud providers fournissent des solutions dérivées plus simplifiées. La compatibilité kubernetes devient moins cruciale * FaaS est utilise pour son usage listener et point d'intégration et plus en général purpose tool * Prix du cloud et repatriation. Bouger une app existante dans le cloud n'amène pas d'avantage. Le monolith devient une best pratice * Coût du cloud pousse a merger des microsercices dans un cadre de cloud cost driven development * Cloud deviennent intéressant pour les services unique (text to speech, image recognition, etc). En parallèle la sécurité des cloud providers est reconnu. Donc boring load on prem, projects innovants dans le cloud. * Serverless va être le trend de 2021 (fonction mais aussi db, workflow, event streams etc) idée est scale down to zero * La montée des frameworks next gen Micronaut et Quarkus est indisputable. Build time deployment. * La popularité de quarkus a explosé, difficile de trouver un développeur Java qui n'a pas expérimenté. Le cocktail GraalVM api familières Jakarta ee et micro profile, sa do so mémoire et temps de démarrage lui donne un avantage. Mais la compétition ne dors pas (Helidon et micronaut) * Moins de langages alternatifs parce que l'innovation dans Java a accéléré * Lombok moins populaire parce que Java Records. * Kafka sera plus un data store immuable et source de vérité que un remplacement pour JMS * Kafka et réactive en combo va rendre la programmation réactive populaire * Le projet Loom eliminera la programmation reactive pour les resources non-reactives * ARM sur le serveur * GraalVM pour remplacer OpenJDK car rapide et multi langage. Et competitor a GraalVM qui arrive * Visual studio code et ses features pour Java pas forcément connu et donc va croître encore. * Payara cloud serverless server ou l'app server est un opérateur Kube et on déploie un thin jar. [GraalVM offre des plugins Gradle et Maven pour la compilation native](https://medium.com/graalvm/gradle-and-maven-plugins-for-native-image-with-initial-junit-testing-support-dde00a8caf0b) * Tester les libraires en natif avec les tests junit 5 qui tournent en natif * Après tourne les tests en JVM, ils sont loggués et ajoutés en réflection et complication native. * Et un binaire de test est créé * plugin Gradle * License Oracle Universal Permissive * probablement un dérivé de [Universal Permissive License](https://opensource.org/licenses/UPL) [Le rapport sur l'écosystème JVM](https://snyk.io/jvm-ecosystem-report-2021) par Snyk * Sondage effectué durant six semaines (entre février et mars 2021) au prêt de 2000 developeurs et comparé à GitHub et Google Trends * Mon (Emmanuel) intuition c'est qu'il y un biais dans les gens mesurés * 44% des Dev Java utilisent adoptopenjdk en prod. Oracle openjdk 28 et Oracle JDG 23 * 60% utilisent Java 11 en prod. Et 12 la dernière mais encore 60% de 8 en prod * Java 91% kotlin 18% groovy 13 et scala 10 * IntelliJ 70% eclipse 25 et vscode 23. 50% sont bi IDE * Maven 76% gradle 38% ant 12W yah * Spring Boot 58% Spring MVC 29% Jakarta ee 13% Quarkus 11% [JDK 17 en ramp down phase 2](https://mail.openjdk.java.net/pipermail/jdk-dev/2021-March/005266.html) Schedule * 2021/07/15 Rampdown Phase Two * 2021/08/05 Initial Release Candidate * 2021/08/19 Final Release Candidate * 2021/09/14 General Availability Features integrated in JDK 17: * [JEP 306: Restore Always-Strict Floating-Point Semantics](https://openjdk.java.net/jeps/306) * [JEP 356: Enhanced Pseudo-Random Number Generators](https://openjdk.java.net/jeps/356) * [JEP 382: New macOS Rendering Pipeline](https://openjdk.java.net/jeps/382) * [JEP 391: macOS/AArch64 Port ](https:/*openjdk.java.net/jeps/391)*/ * [JEP 398: Deprecate the Applet API for Removal](https://openjdk.java.net/jeps/398) * [JEP 403: Strongly Encapsulate JDK Internals](https://openjdk.java.net/jeps/403) (sauf pour `sun.misc.Unsafe`) * [JEP 406: Pattern Matching for switch (Preview)](https://openjdk.java.net/jeps/406) * [JEP 407: Remove RMI Activation ](https://openjdk.java.net/jeps/407) * [JEP 409: Sealed Classes ](https://openjdk.java.net/jeps/409) * [JEP 410: Remove the Experimental AOT and JIT Compiler](https://openjdk.java.net/jeps/410) * [JEP 411: Deprecate the Security Manager for Removal](https://openjdk.java.net/jeps/411) * [JEP 412: Foreign Function & Memory API (Incubator)](https://openjdk.java.net/jeps/412) * [JEP 414: Vector API (Second Incubator)](https://openjdk.java.net/jeps/414) * [JEP 415: Context-Specific Deserialization Filters](https://openjdk.java.net/jeps/415) ### Librairies [Spring Native 0.10.0](https://spring.io/blog/2021/06/14/spring-native-0-10-0-available-now) * Utilise Native testing de GraalVM * Passe au plugin Gradle de l'équipe GraalVM * Ahead of time proxies pour les classes [Quarkus 2.0 est sorti](https://quarkus.io/blog/quarkus-2-0-0-final-released/) * Guide de migration mais les applis devraient essentiellement fonctionner (extensions ont plus de taf) * JDK 11+ GraalVM 21.1 * Vert.x 4 * Microprofile 4 * Continuous testing : les tests impactes tournent automatiquement en Dev mode. Les tests qui cassent sur un changement sont visible tout de suite et en continu. Comme infinitest mais sans plugin IDE. * Quarkus a une CLI pour simplifier l'interaction vs les plugins maven ou gradle. Notamment création de projetas. * JDK 11+ GraalVM 21.1 * Vert.x 4 * Microprofile 4 * GraphQL client (smallrye), CDI decorators supportés, transaction pour MongoDB avec Panache, * Support kotlin grandement amélioré : resteasy rezctive, rest client, reactive messaging extensions supportent tous les coroutines * Support d'Amazon services system manager [Crafting rolling releases for a Quarkus CLI application](https://andresalmiray.com/crafting-rolling-releases-for-a-quarkus-cli-application/) * Y'a encore du chemin pour faire simplement des CLI avec graalVM en comparaison de go * [JReleaser](https://jreleaser.org) outils permettant de livrer automatiquement des projets Java vers différentes plateforme (Homebrew, Snapcraft, Scoop) * Inspiré de GoReleaser et jbang * Le blog package l'outil `kcctl` créé par Gunnar avec JReleaser * Pas mal de conf (Windows vs Linux/MacOS) mais à la fin il y arrive ### Infrastructure [Amazon sort son OpenSearch 1.0 et OpenSearch Dashboard, leur fork d'Elastic Search et Kibana](https://opensearch.org/blog/updates/2021/07/opensearch-general-availability-announcement/) * 1.0 sortie de [OpenSearch](https://opensearch.org) ([GitHub](https://github.com/opensearch-project)) * Suppression du code propriétaire * Upgrading: mise a jour d'ElasticSearch et Kibana vers OpenSearch et OpenSearch Dashboard aussi simple qu'une mise a jour de version * Compatibility: travaux de reflexion autour de la compatibilité avec les outils existants * Testing: infrastructure de test moderne et flexible * Supporte les architecture for Linux ARM64 * Minimal artifacts for embedding of OpenSearch and OpenSearch Dashboards into existing products and services, * Data stream support for OpenSearch Dashboards, * Span attribute visibility and filtering in the Trace Analytics plugin, * Scheduling and tenant support in the Reporting plugin. * Aussi mentionne la roadmap [Kubernetes 1.22 enlève le support des vieilles versions de ressource](https://kubernetes.io/blog/2021/07/14/upcoming-changes-in-kubernetes-1-22/#api-changes) * Faites le ménage en continu pas des grosses migrations tous les 3 ans * Release prévue en aout * Il vont supprimer des APIs qui étaient en beta ### Cloud [Un tweet lance un faux service AWS InfiniDash qui a été repris par des devs et des boîtes](https://siliconangle.com/2021/07/05/fake-amazon-cloud-service-aws-infinidash-quickly-goes-viral/) * La théorie est que la plupart des devs n'entendront parler de technologie que via les tweets et les articles. * Aussi le métier de devrel c'est de surfer la vague du social media. Les dev rels AWS ont continué la farce (je crois) * Werner Vogels, oui pour sur. * gros effet boulle de neige ### Outillage [GitHub copilot](https://copilot.github.com/) * itellisense boosté par les projets visible et hostés dans GitHub et autre données publiques * via l'intelligence artificelle, essaie de comprendre l'intention via le contexte * uniquement le fichier édité en contxte pour l'instant * VSCode extension donc tourne partout où les plugins VSCode tournent * 0,1% de copie exacte * le code nous appartient en tant qu'utilisateur * le code contexte est transmis a GitHub qui l'utilise pour ses telemetries et améliorer les modèles ML * pas toujours du code de qualité * [des secrets valides sont générés](https://twitter.com/alexjc/status/1411966249437995010) (du corpus originali e.g. SendGrid) * [propose du code GPL (derivation?)](https://drewdevault.com/2021/07/04/Is-GitHub-a-derivative-work.html) * attaque de sécurité vont venir :) [Audacity 3 spyware ou pas après le rachat](https://arstechnica.com/gadgets/2021/07/no-open-source-audacity-audio-editor-is-not-spyware/) * la communauté "niveau 2" s'est emballée, a crée une dizaine de forks. * C'était déjà annoncé et discuté avec la communauté Audacity. * OS, pays, cpu, erreurs, reports de crash * Protection légale « law enforcement ». Les 13 ans, juste pour éviter des restrictions légales us * 3.0.2 n'a pas le code des collections de données * Avec feedback initial passe de Google analytics à un hébergement propre. * Quand compile le project c'est off par défaut (donc seuls les binaires distribués l'ont par défaut) donc pas dans les distros linux ### Sécurité [LinkedIn la brèche qui donne des infos de 92% de ses utilisateurs y compris les salaires inférés](https://9to5mac.com/2021/06/29/linkedin-breach/amp/?__twitter_impression=true) * API LinkedIn abusée. * Email, noms, telephone, adresse physique, de 700M d'utilisateurs * Presque interessé de fouiller pour voir mon salaire théorique :) * Dispo sur le dark web ### Loi, société et organisation [Lettre à ceux qui veulent faire tourner la France sur l'ordinateur de quelqu'un d'autre](https://www.codeforfrance.fr/publications) par [Tariq Krim](https://twitter.com/tariqkrim) * [Télécharger l'ebook au format PDF](https://www.codeforfrance.fr/assets/ebook/cloud_14Juillet2021.pdf). Très documenté et référencé * Coulisses et manoeuvres pour installer les GAFAM au coeur de l'État * 17 mai 2021, Bercy présente la nouvelle stratégie Cloud du Gouvernement * GAM (Googla Amazon Microsoft) * À part OVH Cloud, aucun des acteurs français n'a été mentionné par les Ministres * Les lois américaines dites FISA et Cloud Act permettent d'obliger les grandes sociétés US à fournir à la justice américaine les données situées sur leurs serveurs européens * Si l'on met de côté les questions de souveraineté, les services de sociétés comme Amazon, Microsoft et Google sont très ergonomiques * Les Américains offrent des services clé en main, les services “made in France” demandent de combiner plusieurs produits issus de sociétés différentes * Apple, Google, Facebook, Amazon ont embauché des dizaines de milliers d'ingénieurs, dont de très talentueux Français * Les clouds GAM pourraient décrocher le label SecNum Cloud (le plus haut niveau de sécurisation de l'État) * Après avoir délocalisé notre industrie (le fameux “Fabless” de Serge Tchuruk ancien patron d'Alcatel), l'État et les grandes entreprises ont délocalisé leur informatique vers les grandes SSII qui se sont mises à produire des projets à la chaîne ## Nous contacter Soutenez Les Cast Codeurs sur Patreon [Faire un crowdcast ou une crowdquestion](https://lescastcodeurs.com/crowdcasting/) Contactez-nous via twitter sur le groupe Google ou sur le site web
Antonio, Guillaume et Emmanuel discutent de pleins de choses dont des analyses de l'écosystème de la JVM, de la generation de code via intelligence Artificielle avec CoPilot, mais pas que. Enregistré le 16 juillet 2021 Téléchargement de l'épisode LesCastCodeurs-Episode–999.mp3 News Langages Les prédictions d'Adam Bien pour la seconde moitié de 2021 Kube a gagné la guerre. Les cloud providers fournissent des solutions dérivées plus simplifiées. La compatibilité kubernetes devient moins cruciale FaaS est utilise pour son usage listener et point d'intégration et plus en général purpose tool Prix du cloud et repatriation. Bouger une app existante dans le cloud n'amène pas d'avantage. Le monolith devient une best pratice Coût du cloud pousse a merger des microsercices dans un cadre de cloud cost driven development Cloud deviennent intéressant pour les services unique (text to speech, image recognition, etc). En parallèle la sécurité des cloud providers est reconnu. Donc boring load on prem, projects innovants dans le cloud. Serverless va être le trend de 2021 (fonction mais aussi db, workflow, event streams etc) idée est scale down to zero La montée des frameworks next gen Micronaut et Quarkus est indisputable. Build time deployment. La popularité de quarkus a explosé, difficile de trouver un développeur Java qui n'a pas expérimenté. Le cocktail GraalVM api familières Jakarta ee et micro profile, sa do so mémoire et temps de démarrage lui donne un avantage. Mais la compétition ne dors pas (Helidon et micronaut) Moins de langages alternatifs parce que l'innovation dans Java a accéléré Lombok moins populaire parce que Java Records. Kafka sera plus un data store immuable et source de vérité que un remplacement pour JMS Kafka et réactive en combo va rendre la programmation réactive populaire Le projet Loom eliminera la programmation reactive pour les resources non-reactives ARM sur le serveur GraalVM pour remplacer OpenJDK car rapide et multi langage. Et competitor a GraalVM qui arrive Visual studio code et ses features pour Java pas forcément connu et donc va croître encore. Payara cloud serverless server ou l'app server est un opérateur Kube et on déploie un thin jar. GraalVM offre des plugins Gradle et Maven pour la compilation native Tester les libraires en natif avec les tests junit 5 qui tournent en natif Après tourne les tests en JVM, ils sont loggués et ajoutés en réflection et complication native. Et un binaire de test est créé plugin Gradle License Oracle Universal Permissive probablement un dérivé de Universal Permissive License Le rapport sur l'écosystème JVM par Snyk Sondage effectué durant six semaines (entre février et mars 2021) au prêt de 2000 developeurs et comparé à GitHub et Google Trends Mon (Emmanuel) intuition c'est qu'il y un biais dans les gens mesurés 44% des Dev Java utilisent adoptopenjdk en prod. Oracle openjdk 28 et Oracle JDG 23 60% utilisent Java 11 en prod. Et 12 la dernière mais encore 60% de 8 en prod Java 91% kotlin 18% groovy 13 et scala 10 IntelliJ 70% eclipse 25 et vscode 23. 50% sont bi IDE Maven 76% gradle 38% ant 12W yah Spring Boot 58% Spring MVC 29% Jakarta ee 13% Quarkus 11% JDK 17 en ramp down phase 2 Schedule 2021/07/15 Rampdown Phase Two 2021/08/05 Initial Release Candidate 2021/08/19 Final Release Candidate 2021/09/14 General Availability Features integrated in JDK 17: JEP 306: Restore Always-Strict Floating-Point Semantics JEP 356: Enhanced Pseudo-Random Number Generators JEP 382: New macOS Rendering Pipeline JEP 391: macOS/AArch64 Port */ JEP 398: Deprecate the Applet API for Removal JEP 403: Strongly Encapsulate JDK Internals (sauf pour sun.misc.Unsafe) JEP 406: Pattern Matching for switch (Preview) JEP 407: Remove RMI Activation JEP 409: Sealed Classes JEP 410: Remove the Experimental AOT and JIT Compiler JEP 411: Deprecate the Security Manager for Removal JEP 412: Foreign Function & Memory API (Incubator) JEP 414: Vector API (Second Incubator) JEP 415: Context-Specific Deserialization Filters Librairies Spring Native 0.10.0 Utilise Native testing de GraalVM Passe au plugin Gradle de l'équipe GraalVM Ahead of time proxies pour les classes Quarkus 2.0 est sorti Guide de migration mais les applis devraient essentiellement fonctionner (extensions ont plus de taf) JDK 11+ GraalVM 21.1 Vert.x 4 Microprofile 4 Continuous testing : les tests impactes tournent automatiquement en Dev mode. Les tests qui cassent sur un changement sont visible tout de suite et en continu. Comme infinitest mais sans plugin IDE. Quarkus a une CLI pour simplifier l'interaction vs les plugins maven ou gradle. Notamment création de projetas. JDK 11+ GraalVM 21.1 Vert.x 4 Microprofile 4 GraphQL client (smallrye), CDI decorators supportés, transaction pour MongoDB avec Panache, Support kotlin grandement amélioré : resteasy rezctive, rest client, reactive messaging extensions supportent tous les coroutines Support d'Amazon services system manager Crafting rolling releases for a Quarkus CLI application Y'a encore du chemin pour faire simplement des CLI avec graalVM en comparaison de go JReleaser outils permettant de livrer automatiquement des projets Java vers différentes plateforme (Homebrew, Snapcraft, Scoop) Inspiré de GoReleaser et jbang Le blog package l'outil kcctl créé par Gunnar avec JReleaser Pas mal de conf (Windows vs Linux/MacOS) mais à la fin il y arrive Infrastructure Amazon sort son OpenSearch 1.0 et OpenSearch Dashboard, leur fork d'Elastic Search et Kibana 1.0 sortie de OpenSearch (GitHub) Suppression du code propriétaire Upgrading: mise a jour d'ElasticSearch et Kibana vers OpenSearch et OpenSearch Dashboard aussi simple qu'une mise a jour de version Compatibility: travaux de reflexion autour de la compatibilité avec les outils existants Testing: infrastructure de test moderne et flexible Supporte les architecture for Linux ARM64 Minimal artifacts for embedding of OpenSearch and OpenSearch Dashboards into existing products and services, Data stream support for OpenSearch Dashboards, Span attribute visibility and filtering in the Trace Analytics plugin, Scheduling and tenant support in the Reporting plugin. Aussi mentionne la roadmap Kubernetes 1.22 enlève le support des vieilles versions de ressource Faites le ménage en continu pas des grosses migrations tous les 3 ans Release prévue en aout Il vont supprimer des APIs qui étaient en beta Cloud Un tweet lance un faux service AWS InfiniDash qui a été repris par des devs et des boîtes La théorie est que la plupart des devs n'entendront parler de technologie que via les tweets et les articles. Aussi le métier de devrel c'est de surfer la vague du social media. Les dev rels AWS ont continué la farce (je crois) Werner Vogels, oui pour sur. gros effet boulle de neige Outillage GitHub copilot itellisense boosté par les projets visible et hostés dans GitHub et autre données publiques via l'intelligence artificelle, essaie de comprendre l'intention via le contexte uniquement le fichier édité en contxte pour l'instant VSCode extension donc tourne partout où les plugins VSCode tournent 0,1% de copie exacte le code nous appartient en tant qu'utilisateur le code contexte est transmis a GitHub qui l'utilise pour ses telemetries et améliorer les modèles ML pas toujours du code de qualité des secrets valides sont générés (du corpus originali e.g. SendGrid) propose du code GPL (derivation?) attaque de sécurité vont venir :) Audacity 3 spyware ou pas après le rachat la communauté “niveau 2” s'est emballée, a crée une dizaine de forks. C'était déjà annoncé et discuté avec la communauté Audacity. OS, pays, cpu, erreurs, reports de crash Protection légale « law enforcement ». Les 13 ans, juste pour éviter des restrictions légales us 3.0.2 n'a pas le code des collections de données Avec feedback initial passe de Google analytics à un hébergement propre. Quand compile le project c'est off par défaut (donc seuls les binaires distribués l'ont par défaut) donc pas dans les distros linux Sécurité LinkedIn la brèche qui donne des infos de 92% de ses utilisateurs y compris les salaires inférés API LinkedIn abusée. Email, noms, telephone, adresse physique, de 700M d'utilisateurs Presque interessé de fouiller pour voir mon salaire théorique :) Dispo sur le dark web Loi, société et organisation Lettre à ceux qui veulent faire tourner la France sur l'ordinateur de quelqu'un d'autre par Tariq Krim Télécharger l'ebook au format PDF. Très documenté et référencé Coulisses et manoeuvres pour installer les GAFAM au coeur de l'État 17 mai 2021, Bercy présente la nouvelle stratégie Cloud du Gouvernement GAM (Googla Amazon Microsoft) À part OVH Cloud, aucun des acteurs français n'a été mentionné par les Ministres Les lois américaines dites FISA et Cloud Act permettent d'obliger les grandes sociétés US à fournir à la justice américaine les données situées sur leurs serveurs européens Si l'on met de côté les questions de souveraineté, les services de sociétés comme Amazon, Microsoft et Google sont très ergonomiques Les Américains offrent des services clé en main, les services “made in France” demandent de combiner plusieurs produits issus de sociétés différentes Apple, Google, Facebook, Amazon ont embauché des dizaines de milliers d'ingénieurs, dont de très talentueux Français Les clouds GAM pourraient décrocher le label SecNum Cloud (le plus haut niveau de sécurisation de l'État) Après avoir délocalisé notre industrie (le fameux “Fabless” de Serge Tchuruk ancien patron d'Alcatel), l'État et les grandes entreprises ont délocalisé leur informatique vers les grandes SSII qui se sont mises à produire des projets à la chaîne Nous contacter Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs Faire un crowdcast ou une crowdquestion Contactez-nous via twitter https://twitter.com/lescastcodeurs sur le groupe Google https://groups.google.com/group/lescastcodeurs ou sur le site web https://lescastcodeurs.com/
Why do I do this to myself
PHP Internals News: Episode 83: Deprecate implicit non-integer-compatible float to int conversions London, UK Thursday, April 29th 2021, 09:11 BST In this episode of "PHP Internals News" I talk with George Peter Banyard (Website, Twitter, GitHub, GitLab) about the "Deprecate implicit non-integer-compatible float to int conversions" RFC that he has proposed. The RSS feed for this podcast is https://derickrethans.nl/feed-phpinternalsnews.xml, you can download this episode's MP3 file, and it's available on Spotify and iTunes. There is a dedicated website: https://phpinternals.news Transcript Derick Rethans 0:14 Hi, I'm Derick. Welcome to PHP internals news, a podcast dedicated to explaining the latest developments in the PHP language. This is episode 83. Today I'm talking with George Peter Banyard, about another tidying up RFC, George, would you please introduce yourself? George Peter Banyard 0:31 Hello, my name is George and I work on PHP in my free time. Derick Rethans 0:35 Excellent. I was just talking to Larry Garfield, and he was wondering whether you or himself, are the second often guests on this podcast, but I haven't run a stats. But it's good to have you on again. Following on for from other numeric RFCs, so to speak. This one is titled deprecate implicit non integer compatible floats to int conversions. That is a lovely small title you have come up with. George Peter Banyard 1:01 Yeah, not the best title. Derick Rethans 1:03 What is the problem that this RFC is trying to solve, or rather, what's the change that is in this RFC is trying to solve? George Peter Banyard 1:11 Currently in PHP, which is a dynamic language, types are not known at the statically at compile time, so it's so everything's mostly runtime. And most type conversions are relatively sane now in PHP 8, because like numeric strings have been kind of fixed. But one last standing issue is that floats will pass an integer check, without any notices or warnings. Although floats, don't usually fit in integer will have like extra data which can't be represented as an integer. For example, they can have a fractional part, or they can be infinity, or not a number if you divide, like infinity by infinity, or 0 over 0 or other things like that. Derick Rethans 1:55 These are specific features of floating point numbers on computers? George Peter Banyard 1:59 Yes. Derick Rethans 2:00 Is there any prior work that is RFC is building on top of George Peter Banyard 2:03 It builds up on top on the saner numeric string RFC, because it tries to like make the whole numericness of PHP, as a concept better and like less error prone, but in essence it's mostly self contained. If you use a floating point number, were you should be using an integer. If the floating point number, is considered an integer because it only has like decimal zeros, and it fits in the integer range, then you'll have like no error. So if you use 15.0 as an array key, it gets converted to 15, you'll get don't get any error because it's like well it's just 15 like it doesn't mind. But if you do 15.5, then you'll get like a, like a deprecation notice which will tell you it's like, well, here's the key gets implicitly converted, you should be aware of this because if you use 15 somewhere else, you'd be overriding the value. Derick Rethans 2:54 And that currently doesn't happen yet. And you say, fits in the integer range, what ranges are we talking about here? George Peter Banyard 3:01 On 32 bit, which I would imagine most people don't use any more, is a very just like minus 2 billion to 2 billion, because PHP integers are signed, and on 64 bits, it's like nine quintillion? Derick Rethans 3:15 It is a 64 bit range. George Peter Banyard 3:17 You should be fine by not hitting them, but like if you do some maths computation with it, you might hit like the boundaries, or you do like very edge cases where you try to like mess up with PHP, like that so it's something which you can do it. Derick Rethans 3:30 From what I understand floating point numbers they store, integer things as well as fractional things, and from what I remember is that the range that floating point numbers can store things in without losing any precision is something like 53 bits I think. So if it's larger than 53 bits, then it would have to store something in its floating point part of it, and hence starts losing numbers. George Peter Banyard 3:56 Yeah, I'm not the expert on floating point numbers. Derick Rethans 4:00 They are tricky. George Peter Banyard 4:01 They are tricky and the standard is very confusing at times, especially with like NaNs and like signalling NaNs and like, but the basic concept is like exponential numbers like exponential like scientific notation. You have like your base number, and then you have like a power, and then just gives you like a larger range, but with exponential scientific notation, you also lose like precision, because you don't really care about like the minute numbers. Derick Rethans 4:24 This is why there is a conversion issue both ways right, a floating point number, without fraction or NaN or INF, will always fit in the 64 bit integer. George Peter Banyard 4:32 Yeah. Derick Rethans 4:33 But although you can represent a 64 bit integer in a floating point number. You can't do that without losing data if the integer takes up more than 53 bits, so the round trip conversion also has issues. George Peter Banyard 4:44 That's why, like, that's the check. I'm using, because initially I was just doing an F mod check, because I was like oh just check for like fractional parts, and then Nikita was like: Well, you probably should do round trip checks. Because you also catch infinity, not a number, which also has like some interesting implications, that like if your floating string is considered infinity and you cast it to an integer, you get max int. If it's a floating point number, you'll get zero, which is an handy thing that needs to be like also dealt with, because I just discovered that while working on that. Trying to already get rid of like conversions, is I think a good first step on making most things sane. And we already do that with string offsets. So it's also just like making it more of a global aspect of the language. Derick Rethans 5:35 So this RFC only talks about converting floats to int, but not int to float? George Peter Banyard 5:40 Yeah, because mostly integer to float is a, is a safe conversion, because you can, it fits usually in a floating point number, except apparently 64 bits. Derick Rethans 5:52 I think it is something that we actually should also look at and this is not something I'd realized because I originally thought that before reading the RFC, this that is what you were trying to get, but it's they other way, the other the way around here; so I can see another upcoming RFC to do the other side of the conversion as well. George Peter Banyard 6:11 I imagine so. I put that on my to do list, which is already growing larger and larger with every small idea. I encountered in the language which I'm like, why on earth is PHP doing that? Derick Rethans 6:22 But to get back to this RFC in which kind of situations can this trip up developers? George Peter Banyard 6:27 I would expect most of the time it shouldn't, because this every time you use integers, floating points is mostly maths code, or, if you're doing something very weird, like storing money as a floating point number, which you shouldn't do, but people do it anyway. Derick Rethans 6:45 Does PHP have an arbitrary precision type? George Peter Banyard 6:48 No we don't. But you can use GMP. Derick Rethans 6:52 I don't know what it stands for either, what GMP stands for. They also used to be BCMath, is that's still around as well? George Peter Banyard 6:58 Yeah, BCMath is still around. Most of the time you don't need arbitrary precision, at least for traditional PHP code which is a web based and possibly like E commerce so you're not hitting like insane numbers, but it is mostly full of direct cases or also with like string conversions to like integers, that's I think like, my main point is to try make also string conversions to then numeric type like to make them safer. I think was the previous RFC was the saner numeric string, there's maybe an expectation that you can finally bypass the strict type mode, because everything is strings in HTTP land. So if you get a value, and you just wanted to let like the engine, take care of like making it, it's a valid number and it doesn't lose precision, and you get an integer. That makes it helpful that you get these warnings and notices that hopefully in PHP nine which is who knows how many years away, we finally can like lock down on these edge case behaviours. Derick Rethans 7:57 The RFC is not making this stop working, but rather it will throw a deprecation notice? George Peter Banyard 8:04 Yes. Currently, yes. Derick Rethans 8:06 Why do you say currently? George Peter Banyard 8:07 The plan is in PHP nine, to make this a type error, which initially, I wanted to make it a warning instead of a deprecation notice, but then people on list were, well, like a warning is too strong, and it doesn't imply anything. And if you want to change this to like a type error you should make it a deprecation notice because it means the behaviour will stop working in the, in the later version. So that's why I changed it to the deprecation notice in the second iteration of the RFC. Derick Rethans 8:34 Because, I mean, she just said that could potentially impact already existing code. What kind of BC issues are ever this, by introducing this deprecation warning? George Peter Banyard 8:43 There are various operators, that will implicitly convert floating or float strings to integers. So those are like bitwise operators, shift operators, the modulo operator, the assignment operators of the above. If you try to assign a float to an integer type property. If you try to pass a float to a parameter integer type, or as a return type. Those will show deprecation notices. And then only for floats, not float strings, is the bitwise NOT operator, because that one works with strings as well. And if you use a float string it will use the normal string semantics. And then, as an array key because floating strings already so I noticed was as an array key. Derick Rethans 9:28 Do you think it is better to have a deprecation notice than in stead PHP silently truncating data? George Peter Banyard 9:35 Yeah, if you want that behaviour of like implicitly truncating, you can always use an int, cast, which will do the job for you. Which makes the code explicit and tells the intention of the developer, instead of just like, oh I got a float here, pass it to an integer. Derick Rethans 9:49 What's the reaction to this been so far? George Peter Banyard 9:51 Not many reaction on list, but voters currently one weekend, and it's been unanimously approved, so I'm pretty happy that most people are for it. Derick Rethans 10:02 It's always good to hear unanimous agreement, maybe I should switch my vote to No. As you have said the reaction has been fairly good. And obviously this RFC passed, so the reaction was good enough for this to pass. Do you think there will be some follow up RFCs for ironing out more things like this? George Peter Banyard 10:20 Possibly, I don't know if I'll get them into PHP 8.1. Because time, and I've got some other projects. But I think, maybe, to see you, I've just learned that like some integers lose precision as in floating point numbers, which I wasn't aware of. What's maybe a bit more controversial is to change the behaviour of casting floats, which don't fit into an integer range to now produce Max int, or minimum Int, instead of zero. You will need to put like deprecation notices or warnings when you use an explicit cast, which I don't know how people will feel about that. Derick Rethans 10:58 I see what you mean there. It will be an interesting discussion for when that happens I would say. George Peter Banyard 11:04 Yep. Derick Rethans 11:05 Would you have anything else out about is RFC itself? George Peter Banyard 11:08 Not really it's mostly straightforward. All the details are in the RFC, all the BC breaks are in the RFC. If you're an extension maintainer, there's only one BC break with like a function. When you take Zval and you convert it to an integer, you'll get a notice, which I expect most extension maintainers want their users to know that this is going to like throw at the later point. But you can also then do it manually if you want to support this behaviour implicitly in your extension. Derick Rethans 11:36 I think it is important that extension, that for extensions be if it doesn't suddenly change, but forcing an API change on them is often a better way than deciding to changing an existing API, I think. George Peter Banyard 11:47 The problem is is the API I'm using is used all over the PHP source code, changing that everywhere, felt a bit like hassle, but I've added like a C function which is long compatible, so you can check in advance if it will also do stuff like that. And then there's also a version which, which doesn't serve any notices so you can do it anyway. Derick Rethans 12:08 And that is a new function I suppose? George Peter Banyard 12:10 Yes. Derick Rethans 12:11 I think it's something that extension authors should look at in any case, I mean, we have this lovely upgrading dot internals file, where this certainly should fit in as well in that case, I suppose. George Peter Banyard 12:22 Yeah, it'll fit in. It's currently not that big as a file that usually gets big, a bit before feature freeze because all the changes, land then. Derick Rethans 12:30 I know how this goes. This is also exactly the next debug starts breaking again because of API changes. So far I have been lucky there, so there's not been too many in PHP eight one. Do you know actually how much time there is until feature freeze? George Peter Banyard 12:45 I would imagine it's end of July, as usual, that's the usual timeline. I don't know because RM selection hasn't happened yet, so I don't know how long that usually takes. Derick Rethans 12:54 You're talking about RM for release manager selection here. Once this happens all hope to talk to the new release managers as well, and get them to introduce themselves here. George Peter Banyard 13:02 Seems like a good idea. Derick Rethans 13:03 To chats about any favourite things for PHP eight one. All right, George, thank you for taking the time this afternoon to talk to me about another tweak to PHP's handling of numbers in general, and I'm sure it won't be the last one. George Peter Banyard 13:19 Thanks for having me, and I'll talk to you soon. Derick Rethans 13:22 Hopefully in a pub with a pint. George Peter Banyard 13:24 Yeah, that would be nice. Derick Rethans 13:27 Thank you for listening to this instalment of PHP internals news, a podcast dedicated to demystifying the development of the PHP language. I maintain a Patreon account for supporters of this podcast as well as the Xdebug debugging tool, you can sign up for Patreon at https://drck.me/patreon. If you have comments or suggestions, feel free to email them to derick@phpinternals.news. Thank you for listening and I'll see you next time. Show Notes RFC: Deprecate implicit non-integer-compatible float to int conversions RFC: Saner Numeric Strings Episode #62: Saner Numeric Strings Credits Music: Chipper Doodle v2 — Kevin MacLeod (incompetech.com) — Creative Commons: By Attribution 3.0
In this episode, we have a chat about being humble and how it could be hindering rather than helping you. For our 5 Minutes with, we talk about how to have better meetings. What are the dynamics that you need to be mindful of and how do you ensure you get the most of the meeting. F*ck being humble! TED Talk by Stefanie Sword Williams https://www.youtube.com/watch?v=oduEj9n9nEA FBH https://www.fuckbeinghumble.com/ Struggling with COVID fatigue? Citigroup will roll out 'Zoom Free Fridays' to give workers a break https://eu.usatoday.com/story/tech/2021/03/23/zoom-fatigue-citigroup-gives-workers-friday-break-platform/6963484002/ Art of Gathering by Priya Parker https://www.priyaparker.com/ Find Rebecca: Twitter: https://twitter.com/rebecca7roberts https://twitter.com/threadandfable Linkedin: Rebecca Roberts Website: https://threadandfable.com/ Podcast: The Hear It podcast Find Harriet: Twitter: https://twitter.com/HarrietSmallies Linkedin: Harriet Small Website: https://www.commsoveracoffee.com/
PHP Internals News: Episode 76: Deprecate null, and Array Unpacking London, UK Thursday, February 18th 2021, 09:04 GMT In this episode of "PHP Internals News" I chat with Nikita Popov (Twitter, GitHub, Website) about two RFCs: Deprecate passing null to non-nullable arguments of internal functions, and Array Unpacking with String Keys. The RSS feed for this podcast is https://derickrethans.nl/feed-phpinternalsnews.xml, you can download this episode's MP3 file, and it's available on Spotify and iTunes. There is a dedicated website: https://phpinternals.news Transcript Derick Rethans 0:14 Hi I'm Derick. Welcome to PHP internals news, a podcast dedicated to explain the latest developments in the PHP language. This is Episode 76. In this episode, I'm talking with Nikita Popov about a few more RFCs that he has been working on over the past few months. Nikita, would you please introduce yourself. Nikita Popov 0:34 Hi, I'm Nikita. I work on PHP core development on behalf of JetBrains. Derick Rethans 0:39 In the last few PHP releases PHP is handling of types with regards to internal functions and user land functions, has been getting closer and closer, especially with types now. But there's still one case where type mismatches behave differently between internal and user land functions. What is this outstanding difference? Nikita Popov 0:59 Since PHP 8.0 on the remaining difference is the handling of now. So PHP 7.0 introduced scalar types for user functions. But scalar types already existed for internal functions at that time. Unfortunately, or maybe like pragmatically, we ended up with slightly different behaviour in both cases. The difference is that user functions, don't accept null, unless you explicitly allow it using nullable type or using a null default value. So this is the case for all user types, regardless of where or how they occur as parameter types, return values, property types, and independent if it's an array type or integer type. For internal functions, there is this one exception where if you have a scalar type like Boolean, integer, float, or a string, and you're not using strict types, then these arguments also accept null values silently right now. So if you have a string argument and you pass null to it, then it will simply be converted into an empty string, or for integers into zero value. At least I assume that the reason why we're here is that the internal function behaviour existed for a long time, and the use of that behaviour was chosen to be consistent with the general behaviour of other types at the time. If you have an array type, it also doesn't accept now and just convert it to an empty array or something silly like that. So now we are left with this inconsistency. Derick Rethans 2:31 Is it also not possible for extensions to check whether null was passed, and then do a different behaviour like picking a default value? Nikita Popov 2:40 That's right, but that's a different case. The one I'm talking about is where you have a type like string, while the one you have in mind is where you effectively have a type like string or null. Derick Rethans 2:51 Okay. Nikita Popov 2:52 In that case, of course, accepting null is perfectly fine. Derick Rethans 2:56 Even though it might actually end up being different defaults. Nikita Popov 3:01 Yeah. Nowadays we would prefer to instead, actually specify a default value. Instead of using null, but using mull as a default and then assigning something else is also fine. Derick Rethans 3:13 What are you proposing to change here, or what are you trying to propose to change that into? Nikita Popov 3:18 To make the behaviour of user land and internal functions match, which means that internal functions will no longer accept null for scalar arguments. For now it's just a deprecation in PHP 8.1, and then of course later on that's going to become a type error. Derick Rethans 3:35 Have you checked, how many open source projects are going to have an issue with this? Nikita Popov 3:40 No, I haven't. Because it's not really possible to determine this using static analysis, or at least not robustly because usually null will be a runtime value. No one does this like intentionally calling strlen with a null argument, so it's like hard to detect this just through code analysis. I do think that this is actually a fairly high impact change. I remember that when PHP 7.2, I think, introduced to a warning for passing null to count(). That actually affected quite a bit of code, including things like Laravel for example. I do expect that similar things could happen here again so against have like strlen of null is pretty similar to count of null, but yeah that's why it's deprecation for now. So, it should be easy to at least see all the cases where it occurs and find out what should be fixed. Derick Rethans 4:35 What is the time frame of actually making this a type error? Nikita Popov 4:38 Unless it turns out that this has a larger impact than expected. Just going to be the next major version as usual so PHP 9. Derick Rethans 4:45 Which we expect to be about five years from now. Nikita Popov 4:49 Something like that, at least if we follow the usual cycle. Derick Rethans 4:52 Yes. Are there any other concerns for this one? Nikita Popov 4:55 No, not really. Derick Rethans 4:57 Maybe people don't realize it. Nikita Popov 4:58 Yeah, possibly. You can't predict these things, I mean like, this is going to have like way more practical impact for legacy code than the damn short tags. But for short tags, we get 200 mails and here we get not a lot. Derick Rethans 5:14 I think this low impact WordPress a lot. Nikita Popov 5:17 Possibly but at least the thing they've been complaining about is that something throws error without deprecation, and now they're getting the deprecation so everyone should be happy. Derick Rethans 5:28 Which is to be fair I think is a valid concern. Nikita Popov 5:30 Yes, it is. I've actually been thinking if we should like backport some deprecations to PHP 7.4 under an INI flag. Not like my favourite thing to work on, but people did complain? Derick Rethans 5:47 Which ones would you put in there? Nikita Popov 5:48 I think generally some cases where things went from no diagnostics to error. I think something that's mentioned this vprintf and round, and possibly the changes to comparison semantics. I did have a patch that like throws a deprecation warning, when that changes and that sort of something that could be included. Derick Rethans 6:12 I would say that if we were in January 2020 here, when these things popped up, then probably would have made sense to add these warnings and deprecations behind the flag for PHP seven four, but because we've now have done 15 releases of it, I'm not sure how useful this is now to do. Nikita Popov 6:30 I guess people are going to be upgrading for a long time still. I don't know I actually not sure about how, like distros, for example Ubuntu LTS update PHP seven four. If they actually follow the patch releases, because if they don't, then this is just going to be useless. Derick Rethans 6:48 Oh there's that. Yeah. Derick Rethans 6:50 There is one more RFC that I would like to talk to you about, which is the array unpacking with string keys RFC. That's quite a mouthful. What does the background story here? Nikita Popov 7:00 The background is that we have unpacking in calls. If you have the arguments for the call in an array, then you write the three dots, and the array is unpacked into actual arguments. Derick Rethans 7:14 I'd love to call it the splat operator. Nikita Popov 7:16 Yes, it is also lovingly called the splat operator. And I think it has a couple more names. So then, PHP 7.4 added the same support in arrays, in which case it means that you effectively merge, one array to the other one. Both call unpacking and array unpacking, at the time, we're limited to only integer keys, because in that case, are the semantics are fairly clear. We just ignore the keys, and we treat the values as a list. Now with PHP 8.0 for calls, we also support string keys and the meaning there is that the string keys are treated as parameter names. That's how you can like do a dynamic named parameter call. Actually, this probably was one of the larger backwards compatibility breaks in PHP eight. Not for unpacking but for call_user_func_arg, where people expected the keys to be thrown away, and suddenly they had a meaning, but that's just a side note. Derick Rethans 8:21 It broke some of my code. Nikita Popov 8:23 Now what this RFC is about is to do same change for array unpacking. So allow you to also use string keys. This is where originally, there was a bit of disagreement about semantics, because there are multiple ways in which you can merge arrays in PHP, because PHP has this weird hybrid structure where arrays are a mix between dictionaries and lists, and you're never quite sure how you should interpret them. Derick Rethans 8:54 It's a difference between array_merge and plus, but which way around, I can ever remember either. Nikita Popov 9:00 What array_merge does is for integer keys, it ignores the keys and just appends the elements and for string keys, it overwrites the string keys. So if you have the same string key one time earlier and again later than it takes the later one. Plus always preserves keys, before integer keys. It doesn't just ignore them, but also uses overriding semantics. The same is the other way round. If you have something in the first array, a key in the first array and the key in the second array, then we take the one from the first array, which I personally find fairly confusing and unintuitive, so for example the common use case for using plus is having an array with some defaults, in which case you have to, like, add or plus the default as the second operand, otherwise you're going to overwrite keys that are set with the defaults which you don't want. I don't know why PHP chose this order, probably there is some kind of idea behind it. Derick Rethans 10:01 It's behaviour that's been there for 20 plus years that might just have organically grown into what it is. Nikita Popov 10:07 I would hope that 20 years ago at least someone thought about this. But okay, it is what it is. So ultimately choice for the unpacking with string keys is between using the array_merge behaviour, the behaviour of the plus operator, and the third option is to just always ignore the keys and always just append the values. And some people actually argue that we should do the last one, because we already have array_merge and plus for the other behaviours. So this one should implement the one behaviour that we don't support yet. Derick Rethans 10:40 But that would mean throwing away keys. Nikita Popov 10:43 Yes. Just like we already throw away integer keys, so it's like not completely out there. So yeah, that is not the popular option, I mean if you want to throw away keys can just call array_values and go that way. So in the end, the semantics it uses is array_merge Derick Rethans 10:58 The array_merge semantics are.. Nikita Popov 11:01 append, like ignore integer keys just append, and for string keys, use the last occurrence of the key. Derick Rethans 11:07 So it overwrites. Nikita Popov 11:08 It overwrites, exactly. Which is actually also the semantics you get if you just write out an array literal where the same key occurs multiple times. Unpacking is like kind of a programmatic way to write a function call or an array literal, so it makes sense that the semantics are consistent. Derick Rethans 11:26 I think I agree with that actually, yes. Are there any changes that could break existing code here? Nikita Popov 11:32 Not really because right now we're throwing an exception if you have string keys in array unpacking. So it could only break if you're like explicitly catching that exception and doing something with it, which is not something where we provide any guarantees I think. So generally I think that, removing an exception doesn't count as a backwards compatibility break. Derick Rethans 11:55 I think that's right. Do you have anything else to add here? Nikita Popov 11:59 No, I think that's a simple proposal. Derick Rethans 12:02 Thank you, Nikita for taking the time to explain these several RFCs to me today. Nikita Popov 12:07 Thanks for having me Derick. Derick Rethans 12:11 Thank you for listening to this instalment of PHP internals news, a podcast dedicated to demystifying the development of the PHP language. I maintain a Patreon account for supporters of this podcast, as well as the Xdebug debugging tool. You can sign up for Patreon at https://drck.me/patreon. If you have comments or suggestions, feel free to email them to derick@phpinternals.news. Thank you for listening, and I'll see you next time. Show Notes RFC: Array unpacking with string keys RFC: Deprecate passing null to non-nullable arguments of internal functions Credits Music: Chipper Doodle v2 — Kevin MacLeod (incompetech.com) — Creative Commons: By Attribution 3.0
I speak with a returning guest Mark O'Shea around the changes we've seen recently in Microsoft 365, especially around device management and Microsoft Endpoint Manager. The whole device deployment and management landscape is changing fast. It all used to be about Intune but now the focus is really Endpoint Manager and Mark helps us understand the why's and what fors. I've also got a swag of Microsoft Cloud news to share with you to bring up to date with the latest happenings. As always, thanks for being a subscriber and don't hesitate to share what I do with others. This episode was recorded using Microsoft Teams and produced with Camtasia 2020 Resources @intunedin Intunedin.net @directorcia What's New with Microsoft 365 | November 2020 [VIDEO] What’s New in Microsoft Teams | November 2020 Teams Breakout rooms go GA Microsoft Edge v.88: Deprecate support for FTP protocol Microsoft Edge v.88: Adobe Flash support will be removed Microsoft Edge v.88: Alerts if your passwords are found in an online leak Add to OneDrive is generally available Introducing the SharePoint Success Site – Drive adoption and get the most out of SharePoint Threat actor leverages coin miner techniques to stay under the radar – here’s how to spot them New datacenters for Sweden, Denmark, and Chile CIAOPS Patron community
Sponsored by DigitalOcean: pythonbytes.fm/digitalocean - $100 credit for new users to build something awesome. Michael #1: Waiting in asyncio by Hynek Schlawack One of the main appeals of using Python’s asyncio is being able to fire off many coroutines and run them concurrently. How many ways do you know for waiting for their results? The simplest case is to await your coroutines: result_f = await f() result_g = await g() Drawbacks: The coroutines do not run concurrently. g only starts executing after f has finished. You can’t cancel them once you started awaiting. asyncio.Tasks wrap your coroutines and get independently scheduled for execution by the event loop whenever you yield control to it task_f = asyncio.create_task(f()) task_g = asyncio.create_task(g()) await asyncio.sleep(0.1) #
Mozilla has announced its intention to remove support for FTP from the Firefox browser, citing concerns about security and the degree of effort required to keep this functionality current. Join our hosts as they discuss this announcement and its potential effects as well as the considerations that go into choosing when to drop support for outdated, unpopular, or sub-optimal capabilities in technology products.
Topics Fibre's are dead - long live "Virtual Threads" Undelimited continuations are not functions R2DBC 0.8.0 goes GA - Reactive database clients for Java RUST: Shipping a compiler every 6 weeks User reported stable regressions Bisecting Rust Compiler Regressions with cargo-bisect-rustc Microsoft: We're creating a new Rust-based programming language for secure coding https://www.reddit.com/r/rust/comments/e5040i/microsoft_creating_new_rustbased_safe_language/ https://www.reddit.com/r/rust/comments/e5kjyr/more_info_on_micrsoft_moving_away_from_rust/ I.e. they're not, this is just another research language. MS is however still heavily looking at rust, and employing rust developers. Unleashing the (Armed) Bear past Java 11 Using Jlink to shrink your webservices… including nativeimages in the followup tweets Style guide for Text Blocks Lambda performance in node - regressions: Version 13.5.0 -- Questionable Changes? "My testing indicates that the for...of construct is about 60-70% slower as opposed to a classic for(let i; i; i++)." JEPs for JDK 14 JEP 305: Pattern Matching for instanceof (Preview) was proposed to target. JEP 343: Packaging Tool (Incubator) was proposed to target. JEP 345: NUMA-Aware Memory Allocation for G1 was integrated. JEP 349: JFR Event Streaming was integrated. JEP 352: Non-Volatile Mapped Byte Buffers was targeted. JEP 358: Helpful NullPointerExceptions was integrated. JEP 359: Records (Preview) was integrated. JEP 361: Switch Expressions (Standard) was integrated. JEP 362: Deprecate the Solaris and SPARC Ports JEP 363: Remove the Concurrent Mark Sweep (CMS) Garbage Collector was targeted. JEP 364: ZGC on macOS was targeted. JEP 366: Deprecate the ParallelScavenge + SerialOld GC Combination was proposed to target. JEP 367: Remove the Pack200 Tools and API was targeted to JDK 14. JEP 368: Text Blocks (Second Preview) was proposed to target. Thread suspend/resume are now deprecated for removal (build 21) Added LuxTrust Global Root 2 Certificate (build 24) NUMA JEP mentioned last week now has an Implementation merged for "NUMA-Aware Memory Allocation for G1": http://hg.openjdk.java.net/jdk/jdk/rev/fce1fa1bdc91?revcount=1000 http://hg.openjdk.java.net/jdk/jdk/rev/df6f2350edfa?revcount=1000 http://hg.openjdk.java.net/jdk/jdk/rev/6530de931b8e?revcount=1000 New JEPs JEP 370: Foreign-Memory Access API Draft JEP: Elastic Metaspace
PHP Internals News: Episode 34: Deprecate Backtick Operator London, UK Thursday, October 31st 2019, 09:34 GMT In this episode of "PHP Internals News" I chat with Mark Randall (GitHub) about an RFC that he proposed that would deprecate the backtick operator. The RSS feed for this podcast is https://derickrethans.nl/feed-phpinternalsnews.xml, you can download this episode's MP3 file, and it's available on Spotify and iTunes. There is a dedicated website: https://phpinternals.news Show Notes RFC: Deprecate Backtick Operator Credits Music: Chipper Doodle v2 — Kevin MacLeod (incompetech.com) — Creative Commons: By Attribution 3.0
FORTRAN Welcome to the History of Computing Podcast, where we explore the history of information technology. Because by understanding the past, we're better prepared for the innovations of the future! Todays episode is on one of the oldest of the programming languages, FORTRAN - which has influenced most modern languages. We'll start this story with John Backus. This guy was smart. He went to med school and was diagnosed with a brain tumor. He didn't like the plate that was left behind in his head. So he designed a new one. He then moved to New York and started to work on radios while attending Columbia for first a bachelor's degree and then a master's degree in math. That's when he ended up arriving at IBM. He walked in one day definitely not wearing the standard IBM suit - and when he said he was a grad student in math they took him upstairs, played a little stump the chump, and hired him on the spot. He had not idea what a programmer was. By 1954 he was a trusted enough resource that he was allowed to start working on a new team, to define a language that could provide a better alternative to writing code in icky assembly language. This was meant to boost sales of the IBM 704 mainframe by making it easier to hire and train new software programmers. That language became FORTRAN, an acronym for Formula Translation. The team was comprised of 10 geniuses. Lois Haibt, probably one of the younger on the team said of this phase: "No one was worried about seeming stupid or possessive of his or her code. We were all just learning together." She built the arithmetic expression analyzer and helped with the first FORTRAN manual, which was released in 1956. Roy Nutt was also on that team. He wrote an assembler for the IBM 704 and was responsible for the format command which managed data as it came in and out of FORTRAN programs. He went on to be a co-founder of Computer Science Corporation, or CSC with Fletcher Jones in 1959, landing a huge contract with Honeywell. CSC grew quickly and went public in the 60s. They continued to prosper until 2017 when they merged with HP Enteprirse services, which had just merged with Silicon Graphics. Today they have a pending merger with Cray. David Sayre was also on that team. He discovered the Sayre crystallography equation, and molter moved on to pioneer electron beam lithography and push the envelope of X-ray microscopy. Harlan Herrick on the team invented the DO and GO TO commands and ran the first working FORTRAN program. Cuthbert Herd was recruited from the Atomic Energy Commission and invented the concept of a general purpose computer. Frances Allen was a math teacher that joined up with the group to help pay off college debts. She would go on to teach Fortran and in 1989 became the first female IBM Fellow Emeritus. Robert Nelson was a cryptographer who handled a lot of the technical typing and designing some of the more sophisticated sections of the compiler. Irving Ziller designed the methods for loops and arrays. Peter Sheridan, aside from having a fantastic mustache, invented much of the compiler code used for decades after. Sheldon Best optimized the use of index registers, along with Richard Goldberg. As Backus would note in his seminal paper, the History Of FORTRAN I, II, and III, the release of FORTRAN in 1957 changed the economics of programming. While still scientific in nature, the appearance of the first true high-level language using the first real compiler meant you didn't write in machine or assembly, which was hard to teach, hard to program, and hard to debug. Instead, you'd write machine independent code that could perform complex mathematical expressions and once compiled it would run maybe 20% slower, but development was 5 times faster. IBM loved this because customers needed to buy faster computers. But customers had a limit for how much they could spend and the mainframes at the time had a limit for how much they could process. To quote Backus “To this day I believe that our emphasis on object program efficiency rather than on language design was basically correct.” Basically they spent more time making the compiler efficient than they spent developing the programming language itself. As with the Constitution of the United States, simplicity was key. Much of the programming language pieces were designed by Herrick, Ziller, and Backus. The first release of FORTRAN had 32 statements that did things that might sound similar today like PRINT, READ, FORMAT, CONTINUE, GO TO, ASSIGN and of course IF. This was before terminals and disk files so programs were punched into 80 column cards. The first 72 columns were converted into 12 36 bit words. 1-5 were labels for control statements like PRINT, FORMAT, ASSIGN or put a C in column 1 to comment out the code. Column 6 was boolean where a 1 told it a new statement was coming or a 0 continued the statement from the previous card. Columns 7 through 72 were the statement, which ignored whitespace, and the other columns were ignored. FORTRAN II came onto the scene very shortly thereafter in 1958 and the SUBROUTINE, FUNCTION, END, CALL, RETURN, and COMMON statements were added. COMMON was important because it gave us global variables. FORTRAN III came in 1958 as well but was only available for specific computers and never shipped. 1401 FORTRAN then came for the 1401 mainframe. The compiler ran from tape and kept the whole program in memory, allowing for faster runtime. FORTRAN IV came in the early 60s and brought us into the era of the System/360. Here, we got booleans, logical IF instead of that used in arithmetic, the LOGICAL data type, and then came one of the most important versions, FORTRAN 66 - which merged all those dialects from IV into not quite a new version. Here, ANSI, or the American National Standards Institute stepped in and started to standardize. We sill use DO for loops, and every language has its own end of file statement, commenting structures, and logical IFs. Once things get standardized, they move slower. Especially where compiler theory is concerned. Dialects had emerged but FORTRAN 66 stayed put for 11 years. In 1968, the authors of BASIC were already calling FORTRAN old fashioned. A new version was started in 66 but wasn't completed until 1977 and formally approved in 1978. Here, we got END IF statements, the ever so important ELSE, with new types of I/O we also got OPEN and CLOSE, and persistent variable controls with SAVE. The Department of Defense also insisted on lexical comparison strings. And we actually removed things, which these days we call DEPRECATE. 77 also gave us new error handling methods, and programmatic ways to manage really big programs (because over the last 15 years some had grown pretty substantial in size). The next update took even longer. While FORTRAN 90 was released in 1991, we learned some FORTRAN 77 in classes at the University of Georgia. Fortran 90 changed the capitalization so you weren't yelling at people and added recursion, pointers, developer-controlled data types, object code for parallelization, better argument passing, 31 character identifiers, CASE, WHERE, and SELeCT statements, operator overloading, inline commenting, modules, POINTERs (however Ken Thompson felt about those didn't matter ‘cause he had long hair and a beard), dynamic memory allocation (malloc errors woohoo), END DO statements for loop terminations, and much more. They also deprecated arithmetic IF statements, PAUSE statements, branching END IF, the ASSIGN statement, statement functions, and a few others. Fortran 95 was a small revision, adding FORALL and ELEMENTAL procedures, as well as NULL pointers. But FORTRAN was not on the minds of many outside of the scientific communities. 1995 is an important year in computing. Mainframes hadn't been a thing for awhile. The Mac languished in the clone era just as Windows 95 had brought Microsoft to a place of parity with the Mac OS. The web was just starting to pop. The browser wars between Netscape and Microsoft were starting to heat up. C++ turned 10 years old. We got Voice over IP, HTML 2.0, PHP, Perl 5, the ATX mother board, Windows NT, the Opera browser, the card format, CD readers that cost less than a grand, the Pentium Pro, Java, JavaScript, SSL, the breakup of AT&T, IBM's DEEP BLUE, WebTV, Palm Pilot, CPAN, Classmates.com, the first Wiki, Cygwin, the Jazz drive, Firewire, Ruby, and NumPy kickstarted the modern machine learning era. Oh and Craigslist, Yahoo!, eBay, and Amazon.com. Audible was also established that year but they weren't owned by Amazon just yet. Even at IBM, they were buys buying Lotus and trying to figure out how they were going to beat Kasparov with Deep Blue. Hackers came out that year, and they were probably also trying to change their passwords from god. With all of this rapid innovation popping in a single year it's no wonder there was a backlash as can be seen in The Net, with Sandra Bullock, also from 1995. And as though they needed even more of a kick that this mainframe stuff was donezo, Konrad Zuse passed away in 1995. I was still in IT at the university watching all of this. Sometimes I wonder if it's good or bad that I wasn't 2 or 3 years older… Point of all of this is that many didn't notice when Fortran continued on becoming more of a niche language. At this point, programming wasn't just for math. Fortran 2003 brought object oriented enhancements, polymorphism, and interoperability with C. Fortran 2008 came and then Fortran 2018. Yes, you can still find good jobs in Fortran. Or COBOL for that matter. Fortran leaves behind a legacy (and a lot of legacy code) that established many of the control statements and structures we use today. Much as Grace Hopper pioneered the idea of a compiler, FORTRAN really took that concept and put it to the masses, or at least the masses of programmers of the day. John Backus and that team of 10 programmers increased the productivity of people who wrote programs by 20 fold in just a few years. These types of productivity gains are rare. You have the assembly line, the gutenberg press, the cotton gin, the spinning Jenny, the watt steam engine, and really because of the derivative works that resulted from all that compiled code from all those mainframes and since, you can credit that young, diverse, and brilliant team at IBM for kickstarting the golden age of the mainframe. Imagine if you will, Backus walks into IBM and they said “sorry, we don't have any headcount on our team.” You always make room for brilliant humans. Grace Hopper's dream would have resulted in COBOL, but without the might of IBM behind it, we might still be writing apps in machine language. Backus didn't fit in with the corporate culture at IBM. He rarely wore suits in an era where suit makers in Armonk were probably doing as well as senior management. They took a chance on a brilliant person. And they assembled a diverse team of brilliant people who weren't territorial or possessive, a team who authentically just wanted to learn. And sometimes that kind of a team lucks up and change sthe world. Who do you want to take a chance on? Mull over that until the next episode. Thank you so very much for tuning into another episode of the History of Computing Podcast. We're lucky to have you. Have a great day! The History of FORTRAN I, II, and III :: http://www.softwarepreservation.org/projects/FORTRAN/paper/p165-backus.pdf
PHP Internals News: Episode 23: Deprecated Short Open Tags, again London, UK Thursday, August 15th 2019, 09:23 BST In this episode of "PHP Internals News" I chat with George Banyard (Website, Twitter, GitHub, GitLab) about his second RFC "Deprecate Short Open Tags, again". The RSS feed for this podcast is https://derickrethans.nl/feed-phpinternalsnews.xml, you can download this episode's MP3 file, and it's available on Spotify and iTunes. There is a dedicated website: https://phpinternals.news Show Notes RFC: Deprecate PHP Short open tags RFC: Deprecate short open tags, again PHP-CS-Fixer Credits Music: Chipper Doodle v2 — Kevin MacLeod (incompetech.com) — Creative Commons: By Attribution 3.0
PHP Internals News: Episode 19: Deprecate curly brace syntax London, UK Thursday, July 18th 2019, 09:19 BST In this episode of "PHP Internals News" I chat with Theodore Brown (Twitter, Website, GitHub) about the "Deprecate curly brace syntax for accessing array elements and string offsets" RFC. The RSS feed for this podcast is https://derickrethans.nl/feed-phpinternalsnews.xml, you can download this episode's MP3 file, and it's available on Spotify and iTunes. There is a dedicated website: https://phpinternals.news Show Notes RFC: Deprecate curly brace syntax for accessing array elements and string offsets Credits Music: Chipper Doodle v2 — Kevin MacLeod (incompetech.com) — Creative Commons: By Attribution 3.0
PHP Internals News: Episode 10: LSP and Operator Precedence London, UK Thursday, May 16th 2019, 09:10 BST In this tenth episode of "PHP Internals News" we talk to Nikita Popov (Twitter, GitHub) about a few RFCs that are related to LSP and operator precedence. The RSS feed for this podcast is https://phpinternals.news/feed.rss, you can download this episode's MP3 file, and it's available on Spotify and iTunes. There is a dedicated website: https://phpinternals.news Show Notes RFC: Always generate fatal error for incompatible method signatures Associativity RFC: Deprecate left-associative ternary operator RFC: Change the precedence of the concatenation operator Credits Music: Chipper Doodle v2 — Kevin MacLeod (incompetech.com) — Creative Commons: By Attribution 3.0
В этот раз мы собирались дружной компанией в офисе New.HR и обсудили различные новые API, которые появились в браузерах, всевозможные предложения по улучшению и развитию языка и API, известные TC39 и много что ещё. В этом выпуске принимали участие: * Константин Буркалёв * Александр Майоров * Андрей Смирнов * Сергей Рубанов * Иван Бурнаев Некоторые ссылки про то, о чем говорили в выпуске: * The Reporting API (https://developers.google.com/web/updates/2018/09/reportingapi) * WebAssembly proposals (https://github.com/WebAssembly/proposals) * Calls between JavaScript and WebAssembly are finally fast (https://hacks.mozilla.org/2018/10/calls-between-javascript-and-webassembly-are-finally-fast-%F0%9F%8E%89/) * Making calls to WebAssembly fast and implementing anyref (https://blog.benj.me/2018/07/04/mozilla-2018-faster-calls-and-anyref/) * V8 release v7.0 (https://v8.dev/blog/v8-release-70) * Class field declarations for JavaScript (https://github.com/tc39/proposal-class-fields) * Summary: Objections to fields (as opposed to alternatives), especially the private field syntax (https://github.com/tc39/proposal-class-fields/issues/150) * Итоги сентябрьской встречи TC39 (https://github.com/tc39/tc39-notes/tree/master/es9/2018-09) * JEP 335: Deprecate the Nashorn JavaScript Engine (https://bugs.java.com/view_bug.do?bug_id=JDK-8202786) * GraalVM (https://www.graalvm.org/) * Temporal Proposal (https://github.com/tc39/proposal-temporal) * Телеграм-канал Сергея Рубанова «Juliarderity» (https://t.me/juliarderity), где он публикует информацию о различных новых спецификациях, инсайдах TC39, WebAssembly и прочие интересности
Sean experiences a frustrating Ruby bug while building tooling to enforce module boundaries in Shopfiy's monolith. Derek deprecates Rails functionality instead of preparing his talk. TracePoint documentation Unicode Normalization Forms Buildkite Struct inheritance is overused Deprecate controller level force_ssl XFINITY Data Usage Center — FAQ
Thursday, September 14, 2017 - Episode 020 of Marriage Ain't for SuckaZ with Quest and Dave
Thursday, September 14, 2017 - Episode 020 of Marriage Ain't for SuckaZ with Quest and Dave
Thursday, September 7, 2017 - Episode 019 of Marriage Ain't for SuckaZ with Quest and Dave
Thursday, September 7, 2017 - Episode 019 of Marriage Ain't for SuckaZ with Quest and Dave
Lumina Desktop 1.3 is out, we show you a Plasma 5 on FreeBSD tutorial, explore randomness, and more. This episode was brought to you by Headlines Lumina Desktop v1.3 released (https://lumina-desktop.org/version-1-3-0-released/) Notable Changes: New Utility: lumina-mediaplayer. Lumina Media Player is a graphic interface for the Qt QMediaPlayer Class, with Pandora internet radio streaming integration. Lumina Media Player supports many audio formats, including .ogg, .mp3, .mp4, .flac, and .wmv. It is also possible to increase the number of playable formats by installing gstreamer-plugins. This utility is found in the Applications → Utilities section, or opened by typing lumina-mediaplayer in a command line. New Utility: lumina-xdg-entry. This is another simple utility designed to help users create .desktop entries and shortcuts. Find it in the Utilities application category, or open it by typing lumina-xdg-entry in a command line. Lumina Desktop: Desktop folders are integrated, and can now be manipulated directly from the desktop. Added the automatic settings migration of a desktop monitor (single monitor only, for now). Numerous speed and performance improvements with how icons load and the system interacts with the desktop. Lumina-FM: Now fully integrated with lumina-archiver. A “System directory” tree pane is available. Options to enable/disable it are being added later, as it is on by default. Numerous speed improvements with caching and loading icons. Lumina Texteditor: There is a new json manifest file format for syntax highlighting support. Users can open this file, customize their highlighting options, and immediately see their changes without rebuilding the utility. The text editor now supports more than 10 different file formats. Added options for file-wide preferences in syntax files. Options include: word wrap, character per line limits, excess whitespace highlighting, font style restrictions, and tab-width settings. LTE supports tabs with detach, drag'n'drop, and location customization with the View menu option. Add checkable menu option to show the “unsaved changes” dialogue box on close. Lumina Screenshot: Adjustments to the lumina-screenshot interface. Add an adjustable warning to lumina-screenshot when closing with an unsaved image. Add functionality to select a specific area of the screen for screenshots. Lumina Archiver: Functionality improvements. Bug fixes. Interface changes. General Improvements: Permission checks for settings files (all utilities). When launched with sudo, all tools use or create a root-permissioned copy of the user's settings file. This prevents a settings file being locked by root. UI text reworks to help re-unify style. Add hooks to update the desktop with icons for the /media directory when a system uses USB automounting functionality. Fix Fluxbox bug with windows workspace assignments. Work on new utility lumina-notify (not fully functional yet). Fix panel reporting error crashing lumina-config. Bug fix for dbus-send calls for Gentoo. Clean up automatic DPI scaling support. Bug fix for the panel clock. Compton compositor is now disabled by default (but can be manually enabled). Translation file updates. Documentation updates. *** FreeBSD 11.0 and Plasma 5 HowTo (https://euroquis.nl/bobulate/?p=1609) Here's a step-by-step guide to getting a machine with FreeBSD 11 in it, running X, and KDE Plasma 5 Desktop and KDE Applications. It's the latest thing! (Except that 11-STABLE is in the middle of the pack of what's supported .. but the KDE bits are fresh. I run 10.3 with KDE4 or Plasma 5 on my physical machines, myself, so the FreeBSD version isn't that important except that packages are readily available for 11-STABLE, not for 10-STABLE.) We skip the part about installing FreeBSD (it's in there if you need it) and get right to the important parts that you need: An X Server and a backup X11 environment (ancient): pkg install xorg xterm twm Desktop technologies (modern): pkg install hal dbus echo haldenable=YES >> /etc/rc.conf echo dbusenable=YES >> /etc/rc.conf Next up, test whether the X server works by running startx and exiting out of twm. If running with ZFS, it's a good idea to snapshot now, just so you can easily roll back to the it-works-with-basic-X11 setup you have now. zfs snapshot -r zroot@x11 Now swap out the default FreeBSD package repository, for the KDE-FreeBSD community one. This is documented also on the Area51 page (https://community.kde.org/FreeBSD/Setup/Area51). mkdir -p /usr/local/etc/pkg/repos cd /usr/local/etc/pkg/repos cat > FreeBSD.conf > /etc/rc.conf Log in as your test user, and set up .xinitrc to start Plasma 5: cat > .xinitrc
This week, the Monsterhearts finale!! Theme is Deprecate by Mark Castle, used under the Creative Commons license: https://creativecommons.org/licenses/by/4.0/ Patreon: https://www.patreon.com/user?u=4045304
This week we follow the King to his lair, tensions rise, secrets out. Theme is Deprecate by Mark Castle, used under the Creative Commons license: https://creativecommons.org/licenses/by/4.0/ Patreon: https://www.patreon.com/user?u=4045304
As Lisa arrives on the scene, the situation intensifies as the group prepares to make an important phone call. Theme is Deprecate by Mark Castle, used under the Creative Commons license: https://creativecommons.org/licenses/by/4.0/ Patreon: https://www.patreon.com/user?u=4045304
As the bonfire takes a turn for the spooky, Arnold struggles with his more primal side. Theme is Deprecate by Mark Castle, used under the Creative Commons license: https://creativecommons.org/licenses/by/4.0/ Patreon: https://www.patreon.com/user?u=4045304
In this week's episode, Morris and Sergio chat about security: Sergio's background in security, pen testing, the evolution of security threats, security auditing, defensive practices, careers in security, and recent developments.Show NotesFollow us on Twitter!Like us on Facebook!Rate us in iTunesSubscribe in OvercastChanging your Windows 3.1 Wallpaper. Incidentally, this is what the web looked like in the 90s: Loud colorful repeating background images, completely nonstandard navigation, strange text colors, a simple list with no context, and a link (‘unzip’) pointing directly at an EXE file on an FTP server.Intros are tiny demos. A couple modern 4k intros. 1kb JavaScript intros.Animate (YouTube) was the 4k intro that blew Morris’ mind in 1995. He never imagined his 386 PC was capable of realtime 3D animation, let alone that it could be produced by a 4KB executable.Black hat (Wikipedia)Stuxnet (Wikipedia)Evolution of Security Threats (PDF) The first five slides of this presentation provide an excellent overview of how security threats have evolved.Zero day (Wikipedia)Hacking Team (Wikipedia) A cybersecurity firm that has been criticized for providing surveillance tools to oppressive governments.Black Lives Matter organizers monitored by a cyber security firm (Mother Jones)Penetration test (Wikipedia)Chaos Monkey (Netflix)HJDL Episode 7: IoT SecurityIntent to Deprecate and Remove: Trust in Existing Symantec-Issued Certificates (Hacker News)Let’s Encrypt and Phishing SitesCeci n’est pas une pipeMacBook Pro’s new Touch Bar is powered by iOS (Cult of Mac)“The hidden dangers inside the platform” by Mickey Shkatov & Jesse Michael (YouTube). Two security researchers from Intel demonstrate a hack targeting an LTE modem inside a tablet.Behavioral Game Theory in Defensive Security (SlideShare) by Kelly ShortridgeGoogle’s Project Zero
Now we really meet Arnold, Nadia, and Anthony. Bonfires, snails, and so, so much shade! Theme is Deprecate by Mark Castle, used under the Creative Commons license: https://creativecommons.org/licenses/by/4.0/ Patreon: https://www.patreon.com/user?u=4045304
Character creation, systems introduction, and meeting the Class of 2017 at Balboa high this week! Theme is Deprecate by Mark Castle, used under the Creative Commons license: https://creativecommons.org/licenses/by/4.0/ Patreon: https://www.patreon.com/user?u=4045304
Masato Abe - "Silky Lake with Swan" - Author Swin Deorin - "Soma Haoma" - Moonflower EP BVBEL - "Why I'm Still Doing This?" - PRDX² Saylavees - "Morning Glow" - Live at WFMU with Gaylord Fields, 1/29/2017 Lobo Loco - "Roll Preachers" - Jazzy Hokum Dr. Sparkles - "Tarzan (On A Saturday Afternoon)" - Now That's What I Call Smash Hits Los Pilotos - "Nebula of Many Names" - The Living Omnipresence Formicophilia - "Cockroachfeces" - The Noise Compilation (V/A) Samni - "Funkin Glitchy" - めぐりあい宇宙 Mark Castle - "Deprecate" - Deprecate (Single) BVBEL - "Third World Submvrine" - ONE WVY TAPE Glasscarpenter - "Pretty Boys" - New School Electronic Fuckfest S-21 - "Power Abuse" - Live on Hello Children with Faye, 1/15/2017 Hrenopushichka - "Mu Moon Lighiting" - FMA EP Will Austin - "Drone Wrangler" - 69 Drone Wrangler Balkan Peppers - "Flower and the Bee" - Live at 2017 Golden Festival https://www.wfmu.org/playlists/shows/71199
Masato Abe - "Silky Lake with Swan" - Author Swin Deorin - "Soma Haoma" - Moonflower EP BVBEL - "Why I'm Still Doing This?" - PRDX² Saylavees - "Morning Glow" - Live at WFMU with Gaylord Fields, 1/29/2017 Lobo Loco - "Roll Preachers" - Jazzy Hokum Dr. Sparkles - "Tarzan (On A Saturday Afternoon)" - Now That's What I Call Smash Hits Los Pilotos - "Nebula of Many Names" - The Living Omnipresence Formicophilia - "Cockroachfeces" - The Noise Compilation (V/A) Samni - "Funkin Glitchy" - めぐりあい宇宙 Mark Castle - "Deprecate" - Deprecate (Single) BVBEL - "Third World Submvrine" - ONE WVY TAPE Glasscarpenter - "Pretty Boys" - New School Electronic Fuckfest S-21 - "Power Abuse" - Live on Hello Children with Faye, 1/15/2017 Hrenopushichka - "Mu Moon Lighiting" - FMA EP Will Austin - "Drone Wrangler" - 69 Drone Wrangler Balkan Peppers - "Flower and the Bee" - Live at 2017 Golden Festival http://www.wfmu.org/playlists/shows/71199
Harken unto the DTABM boys as they take you on a journey of drunken belligerence! In episode 11 of the DTABM podcast, we talk about Metallica with Phil and Zac from Reaver, we talk to our listening audience, we discuss Thrash Em All, music videos, politics in metal, the demise of the Legion Festival and more. If we achieved nothing else with this episode, we at least facilitated a sex act between Brent Logan and Phil McDermott for your viewing (dis)pleasure. DTABM theme song by Stephen Layzell of Beyond the Crescent Moon. BANDS WE PLAYED: Siberian Hell Sounds https://siberianhellsounds.bandcamp.com/album/svengali Urfaust https://urfaust.bandcamp.com/album/empty-space-meditation Abigail https://nuclearwarnowproductions.bandcamp.com/album/the-final-damnation Anaal Nathrakh https://anaalnathrakh.bandcamp.com/album/the-whole-of-the-law Ulcerate https://ulcerate.bandcamp.com/album/shrines-of-paralysis Vermin Womb https://verminwomb.bandcamp.com/ Deathspell Omega https://deathspellomega.bandcamp.com/album/the-synarchy-of-molten-bones Mesarthim https://avantgardemusic.bandcamp.com/album/- Offensive Behemoth https://www.facebook.com/OffensiveBehemoth/ Thanks for listening m/
We talk about a widespread DNS outage and what steps you might take to avoid or limit your application's exposure to these things in the future. Deprecate the behavior of AR::Dirty inside of after_(create|update|save) callbacks Distributed Denial of Service attack on DNS Provider Dyn What is an ALIAS Record? ANAME records Why can't a CNAME record be used at the apex (aka root) of a domain? Avoid using non-standard DNS entries Is Your Site Leaking Password Reset Links? with Comments from Hacker News
Richard Schneeman joins The Bike Shed to discuss ruby memory use, horizontal scaling, and tackling open source issues big and small. This episode of The Bike Shed is sponsored by: Code School: Entertaining online learning for existing and aspiring developers. Leave a review on our iTunes page to be entered to win a free month of Code School. Links & Show Notes Speed Science - Richard's Railsconf 2015 talk mail gem memory use mime-types memory use Deprecate *_path methods in mailers XKCD: Evey change breaks someone's workflow Why does 6 times 9 equal 42? The Language Strangeness Budget Code Triage Docs Doctor Ruby Together Keep Ruby Weird Richard on Twitter
Pokémon enthusiast Adam and pop culture ignoramus Wilko pick five of the best or take your recommendations each fortnight. Contact us on Facebook & Twitter (Sorry about the slightly tinny sound quality, we thought we would record this show in a canyon)Is it a plane? Is it a pepper pot? - http://m.bbc.co.uk/newsbeat/article/32346867/star-wars-plane-being-launched-by-all-nippon-airways-later-this-yearFree gift for driving like a driver should - http://m.bbc.co.uk/news/blogs-news-from-elsewhere-32380496Awkward like Beckham - http://www.huffingtonpost.com/2015/04/20/brooklyn-beckham-dad_n_7100664.html?cps=gravity_2377_3291502132009716880Let it go (no, really) - http://fox13now.com/2015/04/19/u-s-senators-ringtone-is-frozens-let-it-go-and-it-interrupted-a-committee-hearing/Is YOUR beanie baby worth thousands? - http://www.independent.co.uk/news/world/europe/rarest-beanie-baby-of-them-all-could-be-sold-for-62500-on-ebay-10186769.html
Join Julian "8 Mile" Stern and Monique "Slight OCD" Madrid (Bad Jokes Worse Drawings, Splitsider) on our first tenth episode!! Julian and Monique appreciate deprecate and being able to self deprecate. Julian reveals how anxious he really is, why we record in the dark, and how 8 Mile changed his life. Monique is a comedian, writer, actor, make up artist, AND Levar Burton's best friend. Rock Darlington, if you're out there, please contact us at 1-800-Word-With-Friend. Monique co-hosts and produces a monthly show in Hollywood, 2 Girls 1 Pup. It's the comedy show you can bring your dog to! It's in a pet store! Visit Monique's site to find out more. Follow her on Twitter! Follow Julian Follow Word With Friend Subscribe on iTunes Remember this?