Bite-sized actionable content, practical tutorials, and resources for programmers#94:Python Developer Tooling, Theia AI & IDE, Java 24’s Big Changes, and Diamond AI Code ReviewerLevel up your coding skills with the Python: From Beginner to Advanced Bundle by Packt. Learn to code and gain amazing insights from books like Learn Python Programming,Building AI Intensive Python Applications,Modern Time Series Forecasting with Python, and more. This library of 20+ programming books are perfect for novice coders and seasoned pros in growing your career. Plus, your purchase helps support the Python Software Foundation. Starting at US$1.Check out the Python Humble BundleHi ,Welcome to a brand new issue of ProgrammingPro.In today’s Expert Insight, we share an excerpt from our conversation with Fabrizio Romano, author of Learn Python Programming, Fourth Edition. He discusses Python’s strengths, limitations, evolving concurrency, AI-powered coding tools, and its future.News Highlights: Eclipse Foundation launches Theia AI and AI-powered Theia IDE; Java 24 launches with 24 new features, including generational GC and 32-bit x86 removal; Google’s Gemma 3, OpenAI’s Responses API, and Visual Studio's GPT-4o code completion debut; and Graphite unveils Diamond AI code reviewer.My top 5 picks from today’s learning resources:Python Developer Tooling Handbook📖Reverse Engineering OpenAI Code Execution to make it run C + JavaScript🔍Speeding up C++ code with template lambdas⚡Were multiple return values Go's biggest mistake?🤔Beyond Trends: A Practical Guide to Choosing the Right Message Broker📡But there’s more, so dive right in.Stay Awesome!Divya Anne SelvarajEditor-in-ChiefSign Up|Advertise🗞️News and Analysis🔎Eclipse Foundation unveils open source AI development tools: Theia AI (a customizable open-source AI integration framework) and an AI-powered Theia IDE (an AI-enhanced development environment), have been launched.Java 24 Delivers New Experimental and Many Final Features:Oracle has released Java 24 with 24 new features, including experimental generational garbage collection, and the removal of the Windows 32-bit x86 port and Security Manager.Mar 14, 2025: 10 AI updates from the past week: Updates include the release of Gemma 3 by google, launch of Responses API by OpenAI, availability of Boomi AI Studio and Visual Studio's GPT-4o code completion, and more.OpenSilver 3.2 Takes WPF Apps to Mobile with .NET MAUI Hybrid Integration: The open-source, WebAssembly-based reimplementation of the deprecated Microsoft Silverlight, now enables applications to run on mobile and desktop platforms while maintaining a single XAML/C# codebase.Graphite debuts Diamond AI code reviewer, insists “AI will never replace human code review”: The AI-powered code review tool detects bugs, style issues, and security vulnerabilities.GCC 15 compilers move toward completion: The version set for release in late April or early May, introduces a Cobol front end, defaults C compilation to C23, and adds C++23 and C++26 features.Oracle reveals five new features coming to Java: These include stable values (JDK 25), enhanced primitive boxing, null-restricted value classes, value classes and objects, and derived record creation.🎓Tutorials and Learning Resources💡Legend:🎓 Tutorial/Course | 💼 Case Study | 💡 Insight/Analysis | 📖Open Access BookPython📖Python Developer Tooling Handbook: A guide to navigating Python's development ecosystem, covering package management, linting, formatting, and dependency tools, structured using the Diátaxis framework with tutorials.💡Which Python GUI library should you use?: Compares Python GUI libraries available in 2025, evaluating their strengths, use cases, and licensing, with recommendations for different project types.For more Python resources, go to last week's PythonProC# and .NET🎓Delegates (C# Programming Guide): Covers the types' characteristics, usage, and related concepts like lambda expressions and multicast delegates.🎓Streamlining .NET 9 Deployment With GitHub Actions and Azure: Explains how to set up a CI/CD pipeline for .NET 9 applications using GitHub Actions and Azure App Service, covering automated builds, and more.🎓Neural Network Quantile Regression Using C#: Presents an end-to-end demonstration of neural network quantile regression in C#, explaining how to train a model that predicts numeric values with quantile-based confidence.C++ and C💡Speeding up C++ code with template lambdas: Explains different approaches, from basic template functions to C++20 template lambdas, and evaluates alternative strategies, including template metaprogramming.💡Polymorphic, Defaulted Equality: Uncovers the pitfalls of defaulted equality in polymorphic hierarchies and how to implement safe, efficient comparisons in C++.💡Stupid Smart Pointers in C: Introduces free_on_exit(), a function that automatically frees memory when a function returns by hijacking the return address using inline assemblyJava🎓Finding Java classes that are only used by tests: Explains how to identify and remove Java classes that are only referenced in tests by analyzing class dependencies, filtering test-only references, and systematically deleting unused code.💡Why Java endures: The foundation of modern enterprise development: Explores Java’s enduring relevance in enterprise development, highlighting its evolution, ecosystem, and adaptability to modern needs like AI.JavaScript and TypeScript💡Reverse Engineering OpenAI Code Execution to make it run C + JavaScript: Covers OpenAI’s code execution environment's secure sandbox structure, prompt injection vulnerabilities, and techniques to run C and JavaScript within the Python-based Jupyter kernel system.🎓Understanding DOM Node Types in JavaScript (With Examples!): ExplainsElement, Attribute, Text, Comment, Document, and Document Fragment nodes, with practical examples of their use.🎓Agentic TDD in Typescript with Minimal Dependencies: Demonstrates using an AI agent to iteratively generate and refine code until all tests pass, leveraging OpenAI’s SDK, Vitest, and Vite while minimizing dependencies.Go💡Were multiple return values Go's biggest mistake?: Critiques Go’s multiple return values, arguing that their lack of tuple support complicates error handling, concurrency, and generic abstractions, leading to unnecessary workarounds.💼My 6 months with the GoTH stack: Building front-ends with Go, HTML and a little duct tape: Reviews the author’s six-month experience using the GoTH stack (Go, Templ, Tailwind, and HTMX) highlighting its benefits and challenges.Rust💡Is Rust a good choice for business apps?: Argues that Rust is a poor choice for business applications due to its complex dependency ecosystem, strict borrow checker, painful async model, and higher development effort.📖The Embedded Rust Book: An introductory book about using the Rust Programming Language on "Bare Metal" embedded systems, such as Microcontrollers.Swift💡Behind the scenes of async functions: Explains how Swift Concurrency works internally, focusing on async functions, tasks, jobs, executors, and the Cooperative Thread Pool.SwiftUI Closures on the Main Thread: Why@MainActor Is a Game-Changer: Explains how @MainActor in SwiftUI ensures UI-related closures run on the main thread automatically, reducing the need for manual dispatching.PHP🎓Monitor HTTP Interactions with Laravel’s New Http::record() Method: Introduces Laravel’s new Http::record() method, which enables monitoring real HTTP requests without blocking them, making debugging, logging, and testing API interactions easier.SQL💡Think About SQL MERGE in Terms of a RIGHT JOIN: Demonstrating howthe SQL MERGE statement updates, inserts, or deletes records based on matching criteria between source and target tables.💡Optimizing Cloud SQL Memory Performance: An SRE’s Guide: Provides an SRE-focused guide to optimizing Cloud SQL memory performance, covering key memory metrics, their interpretation, and mitigation strategies.Ruby💡Ruby Debugging Tips and Recommendations in 2025: Provides updated Ruby debugging best practices for 2025, covering tools like Ruby LSP, debug.gem , and integration with IRB, along with configuration tips.Kotlin💡Using the Android Context and Manifest to Unveil the Android System Mechanics (2025 Edition): Explains how the Android Context and Manifest enable communication between applications and the Android system, manage app components, and facilitate inter-process communication.🧠Expert Insight: Exploring Python with Fabrizio Romano📚An author's insights on Python’s strengths, challenges, and futureExtracted from a converstation with Fabrizio Romano, co-author of Learn Python Programming, Fourth Edition.Fabrizio Romano, a seasoned software developer and author of Learn Python Programming (now in its fourth edition), has spent over a decade teaching Python. He has taught Python to professional software engineers and data students through collaborations with Oxford University and other institutions. In this part of the discussion, he shares his journey with Python, its strengths and limitations, and how the language continues to evolve.Discovering Python: A Journey from C# to SimplicityQ: What originally drew you to Python?Fabrizio: In the early 2000s, I was primarily working with C#, Java, and PHP. I also enjoyed competitive programming challenges in my spare time. On one of these platforms, I noticed another competitor using Python. His solutions were conceptually similar to mine but significantly more concise. That intrigued me—I decided to explore Python and was struck by its readability, indentation-based syntax, and expressive nature. What started as an experiment soon became a long-term professional relationship with the language.One of the platforms I used early on was Project Euler, which is heavily math-oriented. Solving problems with Python allowed me to learn its built-in data structures and understand which were optimal for different algorithms. Through these challenges, I developed a deep appreciation for Python’s efficiency and elegance.The Allure of Python: Why It Stands OutQ: Why would you recommend Python to new developers?Fabrizio: Python has a gentle learning curve, making it accessible to beginners. Its syntax is close to natural language, and its standard library and extensive third-party ecosystem reduce the need to reinvent the wheel. The language is also highly versatile, spanning web development, automation, machine learning, and more.Another key advantage is Python’s expressiveness. Compared to Java or C++, Python code is significantly shorter, allowing developers to focus on solving problems rather than dealing with verbose syntax. It also maintains consistency across different data structures. For example, regardless of the collection type, you can simply use len(collection) to get its size, eliminating inconsistencies found in other languages.Python is also backed by a strong global community, which means there is a vast amount of support available through documentation, tutorials, and open-source contributions. The ecosystem includes a wide range of tools that make development smoother, from testing frameworks to packaging solutions.Navigating Python’s LimitationsQ: Where does Python fall short?Fabrizio: Performance is often a consideration—while Python is flexible, it is not the fastest language. That’s why libraries like NumPy and TensorFlow, which handle computationally intensive tasks, are built in C. Python is also not ideal for mobile development. While frameworks like Kivy and BeeWare exist, native languages like Swift and Kotlin are better suited for mobile applications.Concurrency has traditionally been a challenge due to Python’s Global Interpreter Lock (GIL). However, Python 3.13 introduces an experimental free-threaded mode, signaling improvements in this area. Despite the GIL, many high-performance applications already circumvent these limitations using multiprocessing, async I/O, and JIT-compilation techniques.Additionally, while Python is widely used in back-end development, JavaScript and TypeScript still dominate the front-end space. That said, frameworks exist that allow Python to be used in front-end development by compiling into JavaScript, though it is still a translation layer rather than a native approach.The Role of AI in CodingQ: What are your thoughts on AI-powered coding assistants like GitHub Copilot?Fabrizio: AI tools are changing how developers write code. At Sohonet, we adopted GitHub Copilot across the team, and it has proven valuable in handling repetitive tasks and structuring code efficiently. It also helps developers by intelligently predicting test cases and speeding up refactoring.However, I caution against over-reliance on AI. Programming is not just about writing code—it’s about problem-solving and understanding logic. AI should be used to enhance productivity, not replace fundamental thinking skills. Developers should still challenge themselves with problems to keep their critical thinking skills sharp.Additionally, developers should be mindful of how AI suggestions influence their approach to coding. While AI can generate solutions, understanding why a particular approach is valid remains crucial. Developers should maintain a balance between leveraging AI’s speed and honing their own problem-solving skills.Looking AheadQ: How do you see Python evolving in the coming years?Fabrizio: Python continues to improve in performance, tooling, and concurrency management. The introduction of structural pattern matching, type annotations, and enhanced tooling like Black and Ruff simplifies development. Additionally, efforts to unify package management, such as the UV project, are making Python’s ecosystem more beginner-friendly.Python’s adaptability ensures it remains a dominant force across industries. With AI advancements and optimizations to the core language, it will continue to be a top choice for developers worldwide. The tooling around Python is also evolving—Jupyter Notebooks have revolutionized how we teach and document code, and deployment processes have been transformed by containerization and tools like Docker.Python’s strength lies in its ability to evolve while maintaining its core philosophy of simplicity and readability. As the ecosystem continues to grow, developers can expect even more powerful tools and streamlined workflows to enhance productivity.Author Bio:Fabrizio Romano holds a master’s degree in computer science engineering from the University of Padova and has been working as a professional software developer since 1999 and with Python since 2007. Today, he is the development manager of the Sohonet product development team.He gave talks at Europython (Berlin 2014, Bilbao 2015) and ProgSCon 2016, on the topics of teaching Python programmingto every employee of a whole company, and TDD and testing with Python. In 2022, he also collaborated with Oxford University, teaching Python to professional software engineers, and data science students. In his free time, he mostly enjoys playing the guitar and teaching meditation, maths, and Python programming.His book Learn Python Programming, Fourth Edition was published in November 2024.Buy along with the Humble Bundle for only $25!Get the eBook for $35.99$31.99🌟Advanced Concepts🚀Beyond Trends: A Practical Guide to Choosing the Right Message Broker: Examines key characteristics, such as ordering, throughput, auto-scaling, poison pill handling, and batch processing, and aligns them with common messaging patterns.The Hidden Burden of Architectural Decision Fatigue (And How to Fix It): Explains how to reduce architectural decision fatigue by implementing a structured decision-making process using an Architectural Decision Matrix and ADR.Four kinds of software: Categorizes software into four types—Control, Interactive, Streaming, and Computational—andexplores their architectural styles, design patterns, and implementation details.🛠️Useful Tools⚒️open_deep_research: An open-source AI assistant that automates research and report generation with customizable models, prompts, and search tools.build-your-own-x: A collection of guides for building technologies from scratch, aiding deep learning through hands-on projects.That’s all for today.We have an entire range of newsletters with focused content for tech pros. Subscribe to the ones you find the most usefulhere.If your company is interested in reaching an audience of developers, software engineers, and tech decision makers, you may want toadvertise with us.If you have any suggestions or feedback, or would like us to find you a learning resource on a particular subject, just respond to this email!*{box-sizing:border-box}body{margin:0;padding:0}a[x-apple-data-detectors]{color:inherit!important;text-decoration:inherit!important}#MessageViewBody a{color:inherit;text-decoration:none}p{line-height:inherit}.desktop_hide,.desktop_hide table{mso-hide:all;display:none;max-height:0;overflow:hidden}.image_block img+div{display:none}sub,sup{font-size:75%;line-height:0}#converted-body .list_block ol,#converted-body .list_block ul,.body [class~=x_list_block] ol,.body [class~=x_list_block] ul,u+.body .list_block ol,u+.body .list_block ul{padding-left:20px} @media (max-width: 100%;display:block}.mobile_hide{min-height:0;max-height:0;max-width: 100%;overflow:hidden;font-size:0}.desktop_hide,.desktop_hide table{display:table!important;max-height:none!important}}
Read more