ProgrammingPro #16: New Coding Features in Bard, Apple’s Generative AI Tools, and Highest Paying Programming Languages
Bite-sized actionable content, practical tutorials, and resources for programmers.
Hi,
“We shall do a much better programming job, provided we approach the task with a full appreciation of its tremendous difficulty, provided that we respect the intrinsic limitations of the human mind and approach the task as very humble programmers.”
Turing’s thoughts can very well be considered the golden rule of thumb for programmers everywhere. We’re all too often focused on what we can do as programmers, rather than also factoring into the equation the limitations of the human mind and of the machine we’re so passionately programming. Enter AI, which is now redefining the coding experience, expanding possibilities in a whole new way. Google Bard’s recent major updates bear testimony to how useful AI agents can be as active junior programmers by your side.
Welcome to this week’s newsletter edition where we’ll walk you through the latest buzz in the field of Programming including the release of the Golang Vulnerability Checker that’ll help you identify known Go vulnerabilities, Clojure emergence as the highest paying programming language in the USA followed by Python, and Wing Cloud raising $20M for its new cloud programming language.
Looking to amp up your coding skills or hunting for some inspiring code ideas? Check out our curated collection of secret knowledge, resources, and tutorials on Forth: the mysterious self-writing programming language, Enums and pattern matching in Rust, Packt’s upcoming 5 days of free access, and exploring NLP in JavaScript.
We’ve also handpicked some amazing GitHub repos including useful libraries that you might find useful.
Our promise with this newsletter is to act as your personal assistant and help you navigate and keep up-to-date with what's happening in the world of software development. What did you think of today's newsletter? Please consider taking the short survey below to share your thoughts and you will get a free PDF of the “Cybersecurity: The Beginner’s Guide” eBook upon completion.
Thanks for reading.
Kartikey Pandey, Vidhu Jain
Editor-in-Chiefs
Tell Us What You Think, Get a Packt eBook!
Learn for Free – 5 Days of Unlimited Access
Coming soon! From 24th – 28th July, you will be able to access the entire Packt library for FREE.
Access thousands of titles covering the latest in tech, programming languages, machine learning, LLMs, and more. Our extensive, constantly expanding library provides endless opportunities for professional growth and curious exploration. The best part? No credit card information is required, and there's absolutely no obligation to buy. Just pure learning for five days.
But that's not all. To enhance your learning experience, we are releasing some exciting new features for you to access:
Packt Companion: A GPT-4-powered virtual assistant to answer your tech queries
Summarize It: A chatbot to give you high-level overviews and deep insights
Code Context Explainer: An AI assistant to explain code snippets and answer your follow-up questions
Text-to-Speech: Brings your learning experience to life with immersive audio
Packt SYS: Direct the development of our platform. Vote and provide feedback on new features
⚡ TechWave: News and Analysis
Apple’s Generative AI Tools to Catchup with OpenAI: Apple is secretly working on artificial intelligence tools that could challenge those of OpenAI, Google, and others, but the company has yet to devise a clear strategy for releasing the technology to consumers. As part of this initiative, Apple is creating an AI framework, Ajax, and a chatbot service, Apple GPT, as part of its push to compete in the large language model space. While Apple's AI efforts are still experimental, we might expect a significant announcement next year.
Golang Vulnerability Checker: A New Tool for Identifying Known Go Vulnerabilities: The Go security team has introduced Govulncheck, a command-line utility that uses the Go vulnerability database to identify known vulnerabilities in Go source code and Go binaries. This tool, which has reached its 1.0.0 status, is designed to reduce noise by prioritizing vulnerabilities in functions that the code is calling. Govulncheck uses static analysis of source code or a binary's symbol table to limit its reports to only vulnerabilities that could affect a particular application. However, it does have some limitations, including potential false positives, lack of support for silencing vulnerability findings, and inability to show call graphs for detected vulnerabilities.
Clojure Highest Paying Programming Language in the USA Followed by Python: Data from Payscale.com, Indeed.com, and Glassdoor.com has yielded a list of programming languages that offer the highest average salaries for developers in the US. The languages are ranked in ascending order of their average salaries, starting from C++ with $76,000 and ending with Clojure with $115,000. The data places JavaScript as the most widely used programming language with approximately 16.5 million engineers globally with Python following closely with its 11.3 million engineers, primarily utilized in data science and ML. Java, with over 9 million developers, has gained renewed popularity. Other popular languages include PHP, C#, and C++.
Wing Cloud Raises $20M for Its New Cloud Programming Language: Wing Cloud, a company that aims to simplify cloud development with a unified programming model that works across different cloud providers and services, created Winglang, an open-source programming language that integrates cloud infrastructure and application code into one package. Winglang can generate code for various cloud platforms such as AWS, Azure, GCP, Kubernetes, and serverless. Wing Cloud also offers a visual cloud management solution that gives developers and operators a shared view of the application's architecture and data flow. Wing Cloud has now raised $20 million in seed funding from several investors and angel investors, including the president of Datadog and the co-founder of HashiCorp.
Google's Bard Chatbot Launches Globally with New Coding Features: Google has announced the global launch of its generative AI chatbot Bard, which can create content from simple prompts. Bard is now available in more than 40 languages, including in the European Union, where it faced data privacy issues. Bard also has new features that allow users to change the tone and style of its responses, hear its voice with text-to-speech, export code to Replit, use images in prompts, and share its responses with links. Bard now supports Arabic, Spanish, Chinese, German, and Hindi. Bard’s export capabilities for code are being continually expanded and with the latest update, it can now export Python code to Replit as well as Google Colab.
GitHub Introduces Passkeys: a Passwordless and Secure Authentication Method for Developers: The popular code version control system has launched a public beta of passkey authentication, a new way to sign in to GitHub.com without passwords or two-factor authentication (2FA) for a more secure experience for developers. Passkeys are based on security keys, but with easier configuration and enhanced recoverability. Passkeys are unique per website, so they cannot be used to track users across different sites. GitHub hopes that passkeys will help eradicate password-based breaches and provide more flexibility, reliability, and security for users.
📚 Secret Knowledge: Learning Resources
The React Ecosystem in 2023: A great overview and layout of the current landscape of React tools and frameworks for routing, client and server state management, and testing. It also contains modules for other common use cases, such as styling, form handling, animation, and data visualization. It’s a great refresher on the current latest React offerings in web development.
Forth: Unraveling the Self-Writing Programming Language: Dive into the intriguing world of Forth, a unique programming language that has the ability to write itself. This article takes you on a journey through the history and principles of Forth, highlighting its stack-based, concatenative nature and its use of postfix notation. Discover how Forth's simplicity and flexibility have led to its use in a wide range of applications, from space exploration to embedded systems. The post also delves into the concept of "concatenative programming" and the role of combinators in Forth. Additionally, it explores the impact of Forth's design on software and the potential of Forth-like languages in the future of computing.
Rust Programming: How Enums and Pattern Matching Enhance Type Safety and Expressivity: The article explains the benefits of using enums and pattern matching in the system programming language Rust. Enums in Rust are data types that can have different variants, each carrying zero or more values. Pattern matching is a feature that allows checking and extracting data from data structures in a single operation. Learn how these features work together to provide a high level of type safety, exhaustiveness, and clarity, especially for error handling and complex data structures. Explore some code examples to understand the concepts.
Pioneering IDEs that Transformed the Landscape of Software Development: The evolution of Integrated Development Environments (IDEs) has significantly transformed the software development process. This article explores the top 10 most influential IDEs over the past three decades. One such IDE is THINK C, which simplified programming on the original Macintosh. Released by Think Technologies in 1986, it was lauded for its user-friendly GUI and competitive pricing. It also included a source code level debugger, a feature we now take for granted. Another noteworthy IDE is Asymetrix ToolBook, once popular for multimedia but now largely forgotten. These IDEs have played a pivotal role in shaping the software development industry, making programming more accessible and efficient.
Structs vs Interfaces in Go: A Comprehensive Guide: This article explores the advantages and considerations of returning structs and interfaces from functions in Go. It explains how structs provide explicitness and direct control over the object’s fields and methods, while interfaces offer a higher level of abstraction, polymorphism, and loose coupling. It also discusses the factors that influence the choice between structs and interfaces, such as application requirements, code reusability, modularity, and future flexibility. The article aims to help readers make informed decisions and craft elegant, maintainable, and adaptable code in Go.
🔍 HackerHub: Tools & Launches
chfritz/lineselect: A shell utility that enables developers to interactively select lines from standard input (stdin) and output them to standard output (stdout). With this utility, developers can conveniently pause the pipeline and manually choose specific lines before allowing the pipeline or other composed commands to proceed.
ocornut/imgui: A lightweight C++ GUI library that empowers developers with a bloat-free solution. With minimal dependencies, it provides optimized vertex buffers for efficient rendering, making it ideal for content creation tools, debug tools, and real-time 3D applications.
fffaraz/awesome-cpp: This curated list compiles an extensive selection of remarkable C++ (or C) frameworks, libraries, resources, and exciting tools. A valuable resource for developers seeking quality C++ (or C) resources.
avelino/awesome-go: A diverse range of exceptional Go frameworks, libraries, and software. It serves as a valuable resource for developers seeking quality tools and resources for their Go projects.
go-gorm/gorm: This outstanding Golang ORM library offers a wide range of features, including associations, hooks, eager loading, transactions, and more.
kudoai/chatgpt.js: A robust open-source JavaScript library that facilitates effortless interaction with ChatGPT through the Document Object Model (DOM). Developers can seamlessly integrate ChatGPT into their web applications, enabling rich and dynamic conversational experiences.
dmlc/xgboost: This scalable and portable library offers gradient boosting (GBDT, GBRT, or GBM) capabilities for various programming languages including Python, R, Java, Scala, C++, and more. It can be utilized on a single machine or integrated with distributed computing frameworks like Hadoop, Spark, Dask, Flink, and DataFlow.
✨ Tutorials and Guides
Unlocking the Power of FastAPI: A Comprehensive Guide to Building Lightning-Fast Python APIs: Explore FastAPI, a high-performance web framework for building APIs with Python. Read the post to know FastAPI’s advantages over traditional API frameworks, such as exceptional performance, automatic data validation, interactive API documentation, and support for modern Python syntax. It then guides you through the installation process of FastAPI and uvicorn, an Asynchronous Gateway Interface for your server. The tutorial further delves into creating a backend API using FastAPI and explains how to access the Swagger UI for interactive documentation.
Navigating Parameter Substitutions in Visual Studio Project Templates: If you're transitioning to C# 8 / .NET 7 and recreating your project templates, you might encounter some challenges. This tutorial explains how to handle the removal of the Application Guid in the new .NET 7 version, which was previously preloaded by the IDE when creating a Winforms project. You'll learn how to add an AssemblyInfo.cs file and generate a new Guid. The tutorial also covers how to replace the "fixed stuff" in your "templatable" project with template parameters. Read the post to understand how to effectively use parameter substitutions in Visual Studio Project Templates.
Exploring Linked Lists in C: A Beginner's Guide to Creating Dynamic Data Structures: Understand the role of linked lists in C programming. We discuss the structure of a linked list, which comprises nodes containing data and references to the next node. Unlike arrays, linked lists offer flexible memory management without requiring contiguous memory allocation. The post provides step-by-step instructions on defining the node structure, initializing a linked list with a head node, and performing common insertion operations, including adding nodes at the end, at the beginning, and at specific positions.
Exploring NLP in JavaScript: A Comprehensive Guide: This tutorial series dives into the world of NLP in JavaScript, equipping developers with the tools and techniques to understand, interpret, and generate human language. NLP plays a vital role in a wide range of applications, from sentiment analysis to chatbots and search engines. In this session, we focus on key topics such as Part-of-Speech (POS) tagging, topic modeling, text classification, and language translation. Learn how POS tagging helps in understanding the grammatical structure of a sentence and explore the implementation of POS tagging in JavaScript using the "natural" library.