News
Content:
-
June 1, 2023: Monitor Your TeamCity Builds with Datadog CI Visibility
-
May 30, 2023: TeamCity 2023.05: Dark Theme, Agent Terminal, and More
-
May 4, 2023: JetBrains Academy’s New Projects and Topics: May Update
-
April 6, 2023: JetBrains Academy’s New Projects and Topics: April Update
-
February 23, 2023: JetBrains Academy Plugin 2023.2 Is Available
February 3, 2023:
New month – new stories! The February edition of Java Annotated Monthly is here, featuring industry news and trends, helpful tutorials, and step-by-step screencasts. This JAM offers several interesting forecasts about Java and other technologies for the upcoming year. Finally, the Culture and Community section includes a detailed, by-the-numbers analysis of 2023.
Let’s see what people were talking about in the world of technology in January.
Java News
Java News Roundup 1, 2, 3, 4 – Read the blog posts to be sure you haven’t missed any important updates or improvements.
Time for pudding… and another Panama update – If you’ve been following the progress of JEP 434: Foreign Function & Memory API (Second Preview), this article may interest you.
Java’s Plans for 2023 – Inside Java Newscast – Nicolai Parlog gathered all of the plans for the current Java projects (Loom, Galahad and Leyden, Panama, Lilliput, Valhalla, and Amber) for 2023.
Quality Outreach Heads-up – JDK 21: JMX Subject Delegation & Fine-grained Security Deprecation – Don’t miss the features listed for deprecation in JDK 21.
Java Tutorials and Tips
Using Pattern Matching – Read this comprehensive tutorial to learn more about pattern matching and how to write cleaner code using its different variations. The article covers pattern matching for Instanceof, Switch, and Enhanced for statements, as well as guarded and record patterns.
Java 20: Colossal Sparse Memory Segments – Per Minborg, a Java Core Library Developer at Oracle, shares his knowledge about how mapped memory segments can help allocate 64TB of sparse data on a laptop.
Java 20: An Almost Infinite Memory Segment Allocator – This article continues the narrative of the previous one. In it, Minborg explains how to create a new InfiniteArena class that will help return an almost infinite amount of native memory without ever throwing an OutOfMemoryError.
Episode 28 “Java Language – State of the Union” – Listen to this episode to learn more about Project Amber’s Pattern Matching and String Templates features.
From ThreadLocal to ScopedValue with Loom – JEP Café #16 – In just 18 minutes, you will understand how ScopedValue works and how to use it as an incubator feature in JDK 20.
Secure Coding Guidelines for Java SE – This video episode is for you if you want to avoid insecure practices when using Java SE. It also includes an overview of the recent updates, including expanded guidance on topics such as deserialization, exception and error handling, and others.
Episode 29 “Helidon Níma & Virtual Threads” – Tomas Langer, the Helidon architect, explains Helidon Níma – the first Java microservices framework built from the ground up on virtual threads.
Getting Started With Java Development in 2023 — An Opinionated Guide – A detailed guide for Java beginners that includes key opinions and helpful links.
Hidden gems in Java 19, Part 2 – This article digs into underappreciated features included in the Java 19 release apart from the main seven that people have already discussed many times.
Why Picnic Picked Java – Sander Mak, Director Of Technology at Picnic Technologies, describes why and how his company picked Java as a programming language.
Building JavaFX with Gradle – This article contains examples of modular and non-modular versions of the build.gradle build script with explanations in the comments.
Java Development Trends 2023 – Do you follow the trends in programming or prefer more traditional approaches?
Handling Virtual Threads – This article introduces different strategies for implementing virtual threads.
Functional Classes – Should you subdivide a functional program into classes like an object-oriented program? Join the discussion.
Languages, Frameworks, Libraries, and Technologies
This Week in Spring – 1, 2, 3, 4 – All of the latest news and updates are conveniently grouped in these articles.
The new Spring Boot version validation and upgrade support in Spring Tools – Since Spring Boot releases are pretty frequent, you may want to learn the best practices for painless updates.
A Bootiful Podcast: Spring legend Ramnivas Laddad – Ramnivas Laddad is the founder of Spring Cloud Connectors and Cloud Foundry and an honored guest on the Bootiful podcast.
AsyncGetStackTrace: A better Stack Trace API for the JVM – Read this article to learn why AsyncGetStackTrace is a better version of AsyncGetCallTrace.
Cloud Run Health Checks — Spring Boot App – This article describes how Cloud Run services can configure startup and liveness probes for a running container.
Developer Docs + GenAI = ❤️ – If you are a technical writer interested in trending AI and machine learning technologies, this article is for you. You’ll learn how these innovations can help in your daily writing routine.
What’s New in Jakarta REST 3.1 in Jakarta EE 10? – Luqman Saeed explores two noteworthy features: a new API to bootstrap REST resources outside of a container and multipart support.
Writing a Profiler from Scratch: The Profiling Loop – This is the second post in a series describing how to write a profiler’s primary loop.
JVM Kubernetes: Optimizing Kubernetes for Java Developers – The problem with running Java applications in a Kubernetes environment is that the default settings that don’t work well for the JVM. Dariusz Wawer looks into this problem and offers a solution.
Interesting new filters on Spring Cloud Gateway 4.0 – Find out how the newly added filters help you get more insight into your applications. The following filters are described: CacheRequestBody, LocalCacheResponseBody, AddRequestHeadersIfNotPresent, and RemoveJsonAttributesResponseBody.
A Brief Overview of the Spring Cloud Framework – Read this article to get an overview of the Spring Cloud framework, a list of its main packages, and their relation to the Microservice Architectural patterns.
The Quest for REST – This blog post lists some of the issues with REST and provides hints at ways to solve them.
On Markdown in (Java) documentation comments… – Jonathan Gibbons explains why Oracle is investigating the possibility of supporting Markdown in Java documentation comments and what challenges they face.
An Opinionated Guide To Getting Started With Jakarta EE Development in 2023 – If you are just getting started with Jakarta EE and feel overwhelmed by all the information out there, Luqman Saeed has gathered all the helpful resources in the article.
Foojay Podcast #12: State and Future of the IDEs – Will IDEs survive in the future? How do they need to evolve, and what challenges do they face to stay up to date? These and other questions are discussed in this podcast.
How to Check Docker Images for Vulnerabilities – In this blog post, you’ll learn how to perform a vulnerability scan and fix the detected issues.
Kotlin Corner
Kotlin 1.8.0 Released – This release brings major updates like new experimental functions for the JVM that allow you to copy or delete directory content recursively, improved kotlin-reflect performance, and a new -Xdebug compiler option for a better debugging experience. More updates in this post!
Kotlin 1.8.0 Released – Kotlin 1.8.0 is out, bringing the possibility to recursively copy or delete directory content, improved kotlin-reflect performance, the new -Xdebug compiler option for a better debugging experience, and more.
Kotlin 1.8.0 Standard Library Update – In this video, Anton describes the updates for Kotlin 1.8.0 standard library, including stabilization of the existing features, an introduction of comparable and subtractable time marks, and java.nio.file.path extensions for recursive deleting and copying.
Creative Coding with Kotlin and Compose – Have you ever tried to be unconventional with Kotlin? Watch this video to see how Compose Multiplatform can help you reveal your creativity in coding.
Optimize Your Kotlin Performance – Profiling, Micro-optimizations, and Precomputing – Duncan McGregor shows how to improve the performance of the previously generated multi-word anagrams.
Running Kotlin coroutines on Project Loom – Read this article to learn how the virtual threads preview feature allows you to effectively turn the blocking code into something non-blocking while still being coroutine compatible.
Kotlin Is More Fun Than Java And This Is a Big Deal – Jasper Sprengers meditates on the perks of Java and Kotlin. Do you agree with his thoughts?
Project Loom And Kotlin: Some Experiments – Check out this article to dive into the performance of virtual threading functionality with Project Loom and Kotlin.
Culture and Community
Happy 0x7E7! – Take a deep dive into what the number 2023 can show us.
Empowering Women in STEM & Building Inclusive Teams through Cooking – Did you know that women typically leave STEM fields after 5–7 years? Listen to this podcast to learn what factors drive women away and how to find the key to creating an environment where people feel empowered.
Podcasts I listen to: more than 80 recommendations – If you’ve been lost in an infinite pool of technical podcasts, Tomasz Nurkiewicz has shortened his list to just 80.
Five books every developer should read – This is a nice selection of books for those still searching for their personal coding style.
Don’t be like Ebenezer Scrooge. A few words about workaholism – This blog post is a kind reminder to developers around the globe to take vacations and spend time with their loved ones.
How Behaviour-Driven Development Helps Those with Sleep Disorders Contribute Effectively – You’ll be surprised to learn how many people fight sleep disorders in the workplace. What can be done to help people with these conditions and allow them to work productively? Find out in this article.
2022 Year in Review: ADRs, Staff Plus, Platforms, Sustainability, and Culture Design – Several speakers discuss the past year’s trends and share their vision for 2023. The topics in question are the benefits of architecture decision records (ADRs), the role of Staff Plus engineers, treating platforms as products, the importance of sustainability and green IT, and the need to be deliberate with culture design.
Why Many Developers Don’t Write or Give Talks and How to Overcome Challenges – If you are one such developer but feel you have the expertise to share with the world, this article contains some handy solutions.
Quality and effort – Struggling to be more careful with your code or job in general? Read this article to find out what you can do about it.
Conferences and Events
6 Essential Tracks at QCon London, March 27-29, 2023: Architecture, FinTech, ML, and More! – The 17th edition of the QCon London international software conference returns March 27–29, exploring 15 tracks focused on the emerging trends and practices the organizers believe will have the greatest impact on software development. This article covers six stand-out tracks that you might be particularly interested in.
And Finally
IntelliJ IDEA 2023.1 EAP Is Open! – We’ve started a new release cycle and opened the Early Access Program. Join in to test new features and share your feedback.
IntelliJ IDEA: Managing Dependencies – Watch this screencast to learn how to add dependencies to your project and update and remove dependencies using Package Search.
Qodana and IntelliJ IDEA: How a Code Quality Platform Streamlined the Localization of an IDE – Find out how the IntelliJ IDEA team rose to the challenge of localizing the IDE’s entire UI into Chinese, Japanese, and Korean with the help of Qodana, the code quality platform from JetBrains.
Summary of IntelliJ IDEA Conf 2022 – If you missed any of the sessions we held during IntelliJ IDEA Conf 2022, you can find all of them gathered in this blog post for your convenience.
IntelliJ IDEA Ultimate: Package Checker – The Package Checker plugin bundled in IntelliJ IDEA Ultimate allows you to analyze your code and detect vulnerable dependencies.
February 23, 2023:
Today’s update brings an exciting change to the EduTools plugin. It has a new name – the JetBrains Academy plugin! This change reflects our new vision for the educational products and initiatives at JetBrains. Rest assured, all of the features and functionality that you’ve come to rely on are still present and have been improved in this release.
For this update, we’ve focused primarily on improving the plugin’s overall functionality by fixing bugs. Additionally, we’ve implemented a new feature for the course creators that enables learners to view the full text in the Answer Placeholder window without any limitations.
To check out the improvements, install the JetBrains Academy plugin or update to the latest version from Settings/Preferences | Plugins in your JetBrains IDE.
Add an extended text block to the Answer Placeholder window
We’ve added a vertical scroll bar to the Answer Placeholder window, allowing users to see the full text without limitations. Answer Placeholder is a feature that shows students exactly where to write the code. As a course creator, the updated scroll bar allows you to provide more detailed feedback to the learners when creating code exercises.
To create a placeholder, simply select a code fragment you want learners to fill in, invoke the Add Answer Placeholder command from the context menu, and add the placeholder text.
If you want to learn more about the plugin’s features for course creators, check out our Course creator start guide or drop us an email at academy@jetbrains.com.
Notable improvements and bug fixes:
-
EDU-5544: Python courses are now open in PyCharm as expected. The plugin automatically creates a virtual environment and installs Python dependencies without any issues.
-
EDU-5542: We’ve fixed the issue that was causing the appearance of an unexpected Trust and Open Project window when opening the AMazing course.
-
EDU-5524: The output tab in the Check details tool window has been renamed to Feedback.
-
EDU-5584: The time it takes to check code tasks on Hyperskill has been reduced.
-
EDU-5221: When unpacking archives with multiple SDK versions, the plugin will now use the same versions as in the creator’s project.
For the full list of issues addressed in the JetBrains Academy plugin 2023.2, see our issue tracker.
Please share your feedback with us in the comments section below or on Twitter, and use our issue tracker to report any issues or bugs you encounter.
April 2, 2023:
DataSpell 2023.1 EAP 2 is Out!
Many DataSpell users requested the ability to organize their work into multiple projects with completely separate environments and in DataSpell 2023.1 EAP 2 we have delivered!
This second EAP build also contains new features to convert a Jupyter Notebook into a Python script and vice versa, to drag and drop a CSV to create a Pandas DataFrame, and to change the default number of rows displayed for a DataFrame. Finally, debugging and package management just got easier with an interactive debug console in the Jupyter Notebook Debugger and a fully functional Python Packages Tool Window.
The Toolbox App is the easiest way to get EAP builds and keep your stable and EAP versions up to date. You can also manually download the EAP builds from our website.
Support Multiple Projects With Separate Environments
In DataSpell 2022.3, the IDE has a single workspace, to which you can attach notebooks and other files, directories, and projects. Existing projects are attached to the workspace as directories. By default, all directories and projects in the workspace share the same virtual environment or Python interpreter as the workspace. DataSpell’s workspace is, in essence, the default project.
However, many users requested the ability to manage multiple projects, each of which has its own separate virtual environment or interpreter rather than inheriting it from the workspace. This model is more in line with other JetBrains IDEs like PyCharm.
In DataSpell 2023.1 EAP 2, we introduce the option to continue to use the single workspace model with attached directories or to work with multiple completely separate projects each of which has its own virtual environment or Python interpreter and potentially a Git repository.
From DataSpell’s Welcome screen, select the Projects option in the left pane to see a list of existing projects, open projects or create new R or Python projects. You can also create and manage projects from the main File menu.
To continue to use DataSpell with a workspace, select the Quick Start option in the left pane of the Welcome screen, configure a default environment and click Launch DataSpell.
Convert a Jupyter Notebook to a Python Script and Vice Versa
In DataSpell 2023.1 EAP 2 you can convert a Python script (.py file) to a Jupyter Notebook (.ipynb file) and vice versa in a few clicks.
Convert a notebook to a Python script by opening the File context menu | Refactor | Convert To Python File. Convert a Python script to a notebook by opening the File context menu | Refactor | Convert To Jupyter Notebook.
Drag and Drop a CSV to a Create a Pandas DataFrame
Creating a Pandas DataFrame from the data in a CSV file is a common task in data science. In DataSpell 2023.1 EAP 2, you can drag and drop a CSV (.csv file type) into a Jupyter Notebook and a Pandas DataFrame will be automatically created from the contents of the file.
Change the Default Number of Rows Displayed for a DataFrame
In DataSpell 2022.3, when a DataFrame is displayed in tabular form, only the first 10 rows are shown and this default cannot be changed. You can now reset the default number of rows displayed per page by clicking on the number of rows at the top of the table to get a list of page sizes and then setting the desired number of rows using the Change Default dialog.
Interactive Debug Console in the Jupyter Notebook Debugger
In previous versions of DataSpell, the debug console was disabled when debugging Jupyter Notebooks. In DataSpell 2023.1 EAP 2, you can use the console to send commands to the Jupyter Debugger, and view outputs and error messages, while debugging Jupyter Notebook cells.
Replace Absent Kernel for a Jupyter Notebook
When the kernel listed in a Jupyter Notebook’s metadata is absent, e.g. when the Notebook has been copied from another machine, DataSpell 2023.1 EAP 2 ignores the metadata kernel and switches to using the default DataSpell kernel with the Notebook.
Notable Fixes
Cell Execution Start Time and Duration
In DataSpell 2023.1 EAP 1 we introduced a feature to show when a code cell was last executed and the duration of the cell execution. This information is displayed directly below Jupyter Notebook cells. DataSpell 2023.1 EAP 2 includes fixes which ensure that the correct cell execution duration is shown when cells are executed using Run All and when a file is closed and reopened.
-
DS-4597: Cell execution duration is wrong when execute cells using Run all
-
DS-4510: Execution time is dropped on editor reopening
Python Packages Tool Window
The Python Packages tool window is the quickest way to manage packages and preview package documentation for a particular environment or Python interpreter. DataSpell 2023.1 EAP 2 fixes an issue which caused incorrect packages to be shown for the Python interpreter of a project attached to the workspace.
The Python Packages tool window is enabled by default. You can find it in the lower group of the tool windows or open it from the main menu: Window | Tool Windows | Python Packages. You can preview package documentation in the documentation area.
-
PY-54800: “Python Packages” tool window doesn’t show packages for attached projects
These are the most important updates for DataSpell 2023.2 EAP 1. For the full list of improvements, check out the release notes.
April 6, 2023:
JetBrains Academy’s New Projects and Topics: April Update
At JetBrains Academy, we believe that learning can be both educational and entertaining. Our latest projects let you build your own traffic light, create a hospital appointment booking system, and even a password hacker project – not coincidentally combining learning and fun.
This month we’ve released 10 new projects and 36 topics across a variety of programming areas, including Java, Python, Flask, frontend, and data science. Let’s take a closer look at what’s new in our project repository.
Java
🆕 Project: Traffic Light (Beta). Medium
Do you know how traffic lights work? In this project, you’ll have the opportunity to create a simplified version of your own traffic light and learn a variety of new skills in the process. By the end of the project, you’ll be able to work with multithreading, handle exceptions, inherit classes, and use the circular queue data structure.
🆕 Project: Hospital Appointment Booking System (Beta). Hard
In this project, you’ll learn how to build REST services with Spring Boot and work with databases, JSON, and REST API basics. Using your newfound skills, you’ll develop an appointment system based on a REST API that will improve the management of hospitals. Patients can easily schedule appointments, the head physician can monitor doctors’ workloads, and doctors can better plan their days.
🆕 Project: Password Hacker (Beta). Challenging
Get ready to enter the world of hacking with our Java project! As a hacker, your mission is to connect to a secret server without knowing the password. Through this project, you’ll learn about the key tools and techniques used in hacking, including iterators, generators, and the itertools module in Java. You’ll also develop a client app and connect to a server using the socket module, all while gaining a deeper understanding of JSON and the time module.
Additionally, the Meal Planner project has been released from Beta.
🆕 Topics:
-
Code organization: Thread-safe singleton
-
Spring Boot: Custom queries with @Query, Testing repositories
Python
🆕 Project: Jeopardy! Question Answering Bot (Beta). Challenging
Challenge yourself with our Jeopardy!-style question-answering project, where you’ll create a bot that can answer questions from various fields of knowledge. Can you outdo IBM Watson, which famously beat humans at this game in 2011? Learn how to use sentence-embedding algorithms to separate user questions, and gain insights into preparing a corpus for creating a Q&A system.
🆕 Project: Marathon Runners (Beta). Hard
Get introduced to machine learning by implementing one of the most popular algorithms – the k-nearest neighbors (KNN) algorithm. In this project, you’ll use basic Python tools to code the KNN algorithm from scratch and solve classification problems. You’ll learn about basic data types, practice using Python functions, and get an introduction to object-oriented programming. Additionally, you’ll learn how to prepare and normalize data before feeding it into a machine learning algorithm.
🆕 Project: Learning Progress Tracker (Beta). Hard
Build an education platform to manage registrations, track learning progress, and provide detailed information for users and categories. You’ll practice using loops, flow controls, functional decomposition, and SOLID principles. Learn how to process strings and leverage the unittest framework to ensure error-free code. Suitable collections such as lists will be used to sort and filter data.
Furthermore, we’ve released the projects Simple Text Summarization, Sorting Tool, and Video Game Database from Beta, with improved features and functionality for learners.
Flask
🆕 Project: Movie Database API (Beta). Challenging
Movie buffs will love this new project. Using a movie database, you’ll learn how to use SQLAlchemy to design and implement database table mappings, insert and retrieve data, and filter data by building SQL queries. You’ll also gain valuable experience in implementing data models and relations in a database schema. Grab some popcorn and let’s get started!
Additionally, the Memorization Tool has been released from Beta.
Frontend
🆕 Project: URL Shortener (Beta) Medium.
In this project, you will create a web page to shorten website URLs using HTML and JavaScript. You will also practice manipulating the Document Object Model (DOM) to take input from the user and display the results dynamically. This is a great opportunity to apply your HTML and JavaScript skills in a practical setting and gain hands-on experience with web development.
🆕 Project: Dog Glossary (Beta). Hard
Who doesn’t love seeing cute dog pictures online? Create your web page to display random dog pictures and a list of dog breeds using a public API. This project will help you practice handling APIs and improve your HTML and JavaScript skills. Through fetching data from an API and displaying it on the web page, you’ll learn how to work with promises and handle different data structures.
🆕 Topics:
-
JavaScript: Local Storage
-
Node.js: Working with filesystem, Creation of HTTP server, Querystring module, What is module?
Data science
🆕 Machine learning project: Naive Bayes Classifier with Pen and Paper (Beta). Easy
In this project, you’ll gain insight into the process of converting words into numerical data and discover the inner workings of the Naive Bayes classifier. Through working on a simple dataset, you’ll develop familiarity with solving classification problems. You’ll also learn about language identification – a crucial task in natural language processing – and discover how to create a basic classifier with only a pen and paper.
Additionally, the projects Generating Randomness and Linear Regression from Scratch are now out of Beta.
🆕 Topics:
-
Tools: K-Means in sklearn
-
Machine learning: Basics of neural network architecture, MAE, Introduction to Question Answering
-
NLP: Knowledge-based QA, Machine Reading Comprehension & Logical Reasoning QA, Open-domain and close-domain QA
This month we have also released a new Game Development with Unity track and updated Introduction to Natural Language Processing. Check them out if you missed them.
Kotlin
The Contacts project has been released from Beta.
🆕 Topics:
-
Ktor: WebSockets
-
Control flow: Inline functions and reified types in Kotlin
-
Object-oriented programming: Infix functions, Operator overloading
-
Types and data structures: CharSequence, Type cast and smart cast
Bash (Unix shell)
The Enigma project is now out of Beta.
Android
🆕 Topic: Parcel and Bundle
Fundamentals
🆕 Topics:
-
Algorithms and structures: Ford-Fulkerson algorithm, DFS-based topological sort, Coding: overview
-
Dev tools: Introduction to Kubernetes
-
JVM: Parallel GC
-
SQL and Databases: Sequences, The WITH statement, Aggregate operations, Explain, Import and export CSV files, Date and Time data types in SQLite
Note that projects marked as Beta are still in the early stages of testing. If you’re interested in checking out Beta projects on the platform, make sure the Beta-tester feature is enabled in your profile settings.
That’s it for this month! We hope that you will find these updates valuable and that they will enhance your learning experience. As always, we welcome your feedback and suggestions, so please don’t hesitate to get in touch with us at academy@jetbrains.com or share your thoughts with us on Twitter or Facebook.
May 4, 2023:
JetBrains Academy’s New Projects and Topics: May Update
As we head into summer, we’re excited to announce our May content update which includes nine new projects for Python, Kotlin, Java, Flask, Android, and Bash, ranging from easy to challenging, as well as 55 new topics. 9 projects that were previously in Beta have also now been fully released!
At JetBrains Academy, we are dedicated to providing learners’ with the best possible learning experience, and we are constantly improving our content based on learners feedback. We encourage you to share your thoughts, especially on Beta projects and topics, as this feedback helps us to make our interactive platform even better.
Now let’s dive into the updates in more detail.
Python
🆕 Project: My First Project (Beta). Easy
This project is great for beginners who are just starting to learn Python programming. You’ll learn some of the basics of Python syntax, including integer arithmetic, variables, and how to take user input. The goal of the project is to help you create a simple tool that will calculate your net income for the first month of running a small corner shop.
🆕 Project: Spell Checker (Beta). Challenging
It’s hard to imagine a time before spell checkers, as we now rely on them heavily to ensure our writing is error-free. This project is a simple introduction to the world of NLP. You’ll learn how to create a simple spell checker using Python, the Levenshtein distance algorithm, n-gram models, and the Natural Language Toolkit (NLTK) library.
🆕 Topics:
-
Control flow: Introduction to Functional Programming and Recursion in Functional Programming
-
Python libraries: Introduction to AstroPy
-
Django topics: Forms and Validation
Furthermore, we’ve released the projects Maze Runner, Jeopardy! Question Answering Bot, Learning Progress Tracker, HotKitchen, School of Wizards and Magic Wars and Duskers from Beta, with improved features and functionality for learners.
Kotlin
🆕 Project: File Server (Beta). Challenging
Do you ever worry about losing your precious data? Storing files on a server can help prevent that, as it provides a reliable backup and allows you to access your files from anywhere. In this project, you will learn how to create your own file server that can handle multiple client connections. You’ll gain experience working with sockets in Kotlin and improve your multithreading and serialization skills.
🆕 Project: JSON Database (Beta). Challenging
JSON is a versatile data format that’s widely used in web development to exchange data
between servers and clients. In this project, you will create a client-server application in Kotlin that allows clients to store their data on the server in JSON format. You’ll learn how to implement parallelization and handle multiple client requests simultaneously, improving the overall performance of your application.
🆕 Topics:
-
Concurrency and parallelism: Flows: error handling, dispatching
-
Object-oriented programming: Class delegation, hashCode and equals, Sealed class and interface
-
Ktor topics: Koin for Ktor, CORS
Additionally, the Maze Runner has been released from Beta.
Flask
🆕 Project: Recipe Builder API (Beta). Challenging
In this project, you will create a web service with Flask that allows you to store, retrieve, update, and delete recipes. With a pre-uploaded list of recipes to choose from, you’ll be able to find your next meal in seconds. Through this project, you’ll gain experience with Flask, JSON, and the SQLAlchemy SQL toolkit, making it a great opportunity for beginners to learn about backend development.
🆕 Project: Above the Rim API (Beta). Challenging
Create your own API from scratch and improve it with new functionalities to post basketball game results right after a match is over. By the end of the project, you’ll have a fully functional API that can add new teams and game results, making it easier than ever to stay up-to-date with the latest scores.
Java
🆕 Project: Last Pencil (Beta). Easy
Become the mastermind of the Last Pencil game and challenge your friends to a match. In this project, you will create a simple but engaging game where you can decide who wins. You’ll practice the basics of Java programming, from creating variables and methods to using loops and conditionals to build a fully functional game.
🆕 Topics:
-
Additional instruments: Setting up a server with HttpServer and Kryo
-
Spring Boot: Events and listeners, Intro to H2 database, Spring Security architecture
Android
🆕 Project: Simple Bank Manager (Beta). Challenging
Want to learn how to manage your bank account and pay bills on-the-go? In this project, you will create a simplified version of a banking app using Android Studio and Kotlin. You will gain a better understanding of how to use Kotlin in the development process while building your first banking application.
Bash
🆕 Project: File Janitor (Beta). Easy
Learn how to master the command line and automate your work with Bash scripts. In this project, you’ll explore the basics of Bash scripting, including functions, arguments, and conditional statements. You’ll also discover useful utilities and learn how to automate tasks with shell scripts. Whether you’re a beginner or a seasoned Linux user, this project will help you sharpen your skills and take advantage of the power of the command line.
Frontend
🆕 Topics:
-
HTML: Buttons
-
CSS: Grid rows and columns, Grid alignment: part 1, object-fit and object-position
-
JavaScript: Introduction in websocket, Deep Copying Objects, Map, Shallow Copying Objects
-
Node.js: ECMAScript modules, Sending requests, Introduction to the HTTP module, Intro to assert module, Intro to path module
Additionally, the projects Amazing Prices and Dog Glossary are now out of Beta.
Data Science
🆕 Topics:
-
Instruments: Additional feature scaling techniques in sklearn, Feature scaling in sklearn, Polynomial Regression in sklearn
-
Machine learning: Silhouette coefficient and Feature scaling
-
NLP: OCR Implementation, Reading text from image, Information Retrieval and Question Answering, SARI, Text clustering, Topic modeling
Fundamentals
🆕 Topics:
-
Essentials: Understanding JSON Web Tokens
-
JVM: Serial GC
-
SQL and Databases: CHECK constraint, CUBE, ROLLUP and GROUPING SETS, Data models, Array query operations, Importing and exporting data, SQLite dot commands
-
System administration and DevOps: Customizing the on directive, Braces and parentheses, Introduction to Docker compose
Scala
🆕 Topic: High-order functions
Mobile
🆕 Topic: Recomposition
Projects marked as Beta are still in the early stages of testing. If you’re interested in checking out Beta projects on the platform, make sure the Beta-tester feature is enabled in your profile settings.
That’s it for this month! We hope that you will find these updates valuable and that they will enhance your learning experience.
May 30, 2023:
TeamCity 2023.05: Dark Theme, Agent Terminal, and More
TeamCity 2023.05 introduces some of the most anticipated features, including the dark theme, terminal access to agents, and multi-node setup enhancements.
The integration with Let’s Encrypt and the two-factor authentication for custom groups are here to further strengthen TeamCity’s security features.
With this release, we’re also rolling out the GitHub App connection, the ability to send custom Slack messages right from a running build, and more.
Let’s take a closer look at what TeamCity 2023.05 has in store for you.
Dark theme
We realize how important it is for developers to feel comfortable with the tools that they use on a daily basis. That’s why we’re happy to release one of the most upvoted features in TeamCity – the dark theme.
The dark theme can provide a more comfortable and productive working environment. It reduces eye strain, helps improve your focus by eliminating visual distractions, and extends your device’s battery life. Last but not least, some users find it more visually appealing.
The dark theme in TeamCity is available both for the Classic and Sakura UIs. In addition to the “Light” and “Dark” options, you can also choose “System theme” to automatically apply a theme that fits your current OS settings.
To switch between the themes, head over to your profile settings and choose your preferred theme:
You can also easily switch between the themes via the “Theme” drop-down that’s available right in the header:
Have you started using the dark theme yet? Feel free to share your feedback in the YouTrack issue.
Agent terminal
TeamCity 2023.05 comes with a convenient way to open remote terminals to agent machines directly from the TeamCity UI. With the help of remote terminals, you can view agent logs, check installed software, and debug specific agent issues.
This functionality comes especially handy when you need to troubleshoot any issues on an agent. Thanks to remote terminals, you don’t have to worry about maintaining SSH keys for connecting to agents. Mac, Linux, and Windows (with PowerShell) are supported.
To open the terminal, head over to Agents in the TeamCity header, select an agent, and click Open terminal at the top of the agent page:
Multi-node setup enhancements
With this release, we’re implementing an improved requests distribution logic that efficiently distributes the load between main and secondary nodes.
By making nodes fully interchangeable, we’re improving TeamCity’s scalability. All TeamCity nodes can now participate in balancing out user requests, which means the workload produced by web UI users can be evenly distributed between all the nodes.
The new distribution logic provides a smoother and more reliable experience for all and helps to ensure that the impact on users is minimal in the event of planned maintenance or an unexpected failover.
Assign the VCS polling responsibility to multiple nodes
TeamCity users no longer have to rely on a single node to handle the “VCS repositories polling” responsibility. With v2023.05, this function can now be assigned to multiple nodes, resulting in a more balanced workload, faster detection of new commits, and faster starting of builds. As a result, you can build, test, and deploy with greater efficiency, reducing delays and enhancing overall productivity.
Security features
At TeamCity, security is our top priority. To further strengthen the product’s resistance to data breaches and potential business disruptions, we’re implementing the following features.
Integration with Let’s Encrypt
Starting from version 2023.05, TeamCity integrates with Let’s Encrypt, a free and automated certificate authority that provides digital certificates for enabling HTTPS on websites. TeamCity can contact this certificate authority to automatically issue and set up a valid certificate. The certificate will then be updated automatically, without any actions required from the user.
Read more about TeamCity’s integration with Let’s Encrypt in our documentation.
Two-factor authentication
Previously, the mandatory two-factor authentication mode used to affect the whole server. With this release, we’re making it possible to create custom user groups where the 2FA mode will be mandatory even if the global mode is set to “Optional”.
GitHub App connection
It’s now possible to authorize TeamCity to work with GitHub as a GitHub App. With this new feature, you can run various actions and use the GitHub API without having to create separate service accounts or act on behalf of a user.
To configure GitHub App as a connection, head over to Project Settings | Connections | + Add connection and select “GitHub App” from the dropdown menu.
After that, if you don’t already have a GitHub App, follow the TeamCity instructions to create and install a new App with the required permissions.
One of the biggest benefits of using the GitHub App connection is that instead of accessing GitHub under a user’s credentials, TeamCity will use non-personal, short-lived, refreshable tokens issued for a GitHub App installation in the user’s GitHub organization/account. This comes in handy when a user leaves the organization or their permissions change.
Additionally, you can subscribe to various hooks from GitHub without the necessity to install any additional plugins. The connection works right out of the box, making the integration between TeamCity and GitHub seamless.
Head over to the docs to read more about how to configure a GitHub App connection in TeamCity.
Improved support for draft pull requests in the Pull Requests plugin
Earlier, in TeamCity Cloud version 2022.12, we introduced the ability to configure the Pull Requests build feature to ignore GitHub draft pull requests.
Now, this functionality is available to all TeamCity users. In this release, you can opt to ignore GitHub draft pull requests using the Pull Requests build feature. To do so, simply select the “Ignore Drafts” option in the feature settings. Draft pull requests will be ignored by TeamCity until their status changes.
Normally, the Pull Requests build feature retrieves information for GitHub draft pull requests, and runs builds on them by default. When a draft pull request is being built, the build page shows the pull request number with the “Draft” status and icon next to it.
Customizable notifications
TeamCity already offers the ability to send email and Slack notifications when triggered by certain events. With the 2023.05 release, we’re extending this functionality with the ability to send Slack messages and email notifications via service messages.
With the latest update, TeamCity has added the ##teamcity[notification...] service message that enables users to send email notifications, Slack direct messages, and Slack channel updates. It’s now also possible to send notifications to multiple people at once.
These messages are secured by built-in safety measures to prevent them from being delivered to the wrong recipient and to block links to untrusted external resources.
One scenario in which this functionality can be helpful is when you want to send a notification when certain conditions are met, or something outstanding happens, for example, when an ongoing deployment reports an error that should be reviewed while the build is still running.
Add and remove build tags via service messages
In addition to sending custom notifications, you can also add and remove build tags with the help of service messages.
Tagging builds provides you with the ability to label and systemize builds by certain criteria. For instance, you can use build tags for tagging the reasons why builds fail and then quickly finding builds with the same failure reason.
Head over to the documentation to learn more about how to set up build tags. Or, if you have already started using the feature, feel free to share your feedback in this YouTrack issue.
Podman support
With the 2023.05 release, we’re introducing support for Podman, a container engine that allows users to manage containers without requiring root privileges. It is fully compatible with Docker commands, making it easier to switch between engines.
Over to you
For the full list of new features, please make sure to check out our What’s New section in the documentation.
June 1, 2023:
Monitor Your TeamCity Builds with Datadog CI Visibility
This article was originally written by Nicholas Thomson and Kassen Qian of Datadog and published on the Datadog blog.
As the complexity of modern software development lifecycles increases, it’s important to have a comprehensive monitoring solution for your continuous integration (CI) pipelines so that you can quickly pinpoint and triage issues, especially when you have a large number of pipelines running.
Datadog now offers deep, end-to-end visibility into your TeamCity builds with the new TeamCity integration for CI Pipeline Visibility, helping you identify bottlenecks in your CI system, track and address performance regressions, and proactively improve the efficiency of your CI system.
Making data-driven decisions to increase the performance and reliability of your pipelines will help you improve end-user experience by allowing your team to push code releases faster and with fewer errors.
In this post, we’ll show you how to:
-
Integrate TeamCity with CI Visibility
-
Investigate pipeline failures to fix erroneous builds
Integrate TeamCity with CI Visibility
To configure the TeamCity integration with Datadog CI Visibility, first download the Datadog CI plugin on the TeamCity server. Then, ensure that the last build of your build chains is a composite build. Build chains in TeamCity map to pipelines in Datadog, and individual builds map to pipeline executions.
Add the following parameters to your project:
-
datadog.ci.api.key: your Datadog API key
-
datadog.ci.site: datadoghq.com
-
datadog.ci.enabled: true
Once you’ve enabled the integration, data from your TeamCity pipelines will automatically flow into Datadog. If you navigate to the Pipelines page, you can see TeamCity pipelines alongside any other providers you may have instrumented with CI Visibility.
Investigate pipeline failures to fix erroneous builds
After you enable the TeamCity integration in CI Visibility, you can use the Pipeline overview page to get a high-level view of the health and performance of your TeamCity build chains, with key metrics such as executions, failure rate, build duration, and more.
Say you’re an engineer at an e-commerce company where one of the checkout services for your primary application is undergoing a major revamp under a tight deadline. After pushing new code, you notice that your builds are extremely slow—much slower than normal. You can go to the Pipelines page in CI Visibility to confirm if your particular pipeline is experiencing high build durations. Then, you can click on the build chain from the Pipeline overview page to investigate the pipeline in more detail.
At the top of this Pipeline Detail view, you can see the status of the last build, with a link to the build chain in TeamCity. Below that are timeseries widgets illustrating the total number of builds, the error rate, build duration, and other key metrics that can help you determine when the build chain began to experience errors. In this case, you see the error rate spiking repeatedly over the past several days.
The Job Summary gives you more granular information about your build chain, such as which specific jobs in this pipeline failed the most, which ones took the longest, and which jobs have experienced performance regressions compared to the previous week. Information like this can help you identify the areas in your CI system where optimization will result in the greatest performance gains.
To investigate further, you can scroll down to see the individual builds for this pipeline. If you click on an execution, you can see a flame graph view that visually breaks down the pipeline execution into the individual jobs that ran sequentially and in parallel.
The flame graph shows you each build’s respective duration broken down by job and, if the build was erroneous, the exact parts of the build that failed. This can help you pinpoint problematic jobs that may be at the root of a failed build.
The Info tab shows you repository and commit information along with other git metadata, so you can easily see the source of each build. To investigate further, you reach out to the team member who pushed the commit for this build and discover that the issue is caused by a typo. (We strongly recommend that customers use a TeamCity username style that contains author email, so that Datadog can automatically detect git author email addresses and correlate commit information to pipeline data.)
Once resolved, the build chain functions without error so you can build and test successfully, and release your updated checkout service to customers on time.
Understand and optimize TeamCity build chain performance
CI Visibility support for TeamCity is now generally available, giving you deep visibility into your build chains so you can troubleshoot failed builds, identify performance regressions faster, and increase your release velocity.
For more information, see the Datadog documentation and blog post on the TeamCity Agent integration.
June 23, 2023:
DataSpell 2023.1.3 is Out!
DataSpell 2023.1.3 brings you fixes for disappearing notebook cells, invisible DataFrame rows and cell focus bugs.
Download the new version from our website, directly from the IDE, via the free Toolbox App, or use snaps for Ubuntu.
Disappearing notebook cells
In DataSpell 2023.1, when pasting text into a new notebook cell added using Select Cell | Add Code Cell Below, the new cell disappears. This behavior is corrected in DataSpell 2023.1.3.
Invisible DataFrame rows
When a DataFrame is displayed in table form in DataSpell 2023.1, a horizontal scroll bar overlaps the last displayed row. In DataSpell 2023.1.3 the table no longer has to be manually adjusted to view the final row.
Cell focus bugs
DataSpell 2023.1 contained several cell focus bugs which we have corrected in DataSpell 2023.1.3.
When the user edited a code cell in a Jupyter notebook, selected text in this cell and then created a new cell of any type, the cursor moved to a new cell but focus erroneously remained in the code cell. When the user then typed in the new cell, the typed text would appear in the old cell. [DS-4978]
When text was selected in a cell and a new cell was then added using an action on the toolbar, pasted text incorrectly appeared in the first cell, instead of in the new cell. [DS-5048]
July 12, 2023:
IntelliJ IDEA 2023.1.4 is Here!
We’ve just released IntelliJ IDEA 2023.1.4 with several valuable fixes.
You can update to this version from inside the IDE, using the Toolbox App, or using snaps if you are a Ubuntu user. You can also download it from our website.
Here are the most notable fixes included in v2023.1.4:
-
We fixed the issue with missing custom code style settings and they are now correctly preserved by the IDE. [IDEA-318457]
-
The Copy Reference action for files in non-java modules works as expected and copies the path from the content root. [IDEA-316752]
-
The @jakarta.validation.constraints.NotNull annotation is now interpreted correctly during nullability inspections. [IDEA-323547]
-
Starting up the IDE no longer fails with the “CannotActivateException: Address already in use: bind” error. [IDEA-323836]
-
The IDE now has full Wildfly 28 support. [IDEA-320285]
To find out more information about the issues resolved, please refer to the release notes.